@cornerstonejs/dicom-image-loader 2.1.4 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dynamic-import/031089e563a18ada8441.wasm +0 -0
- package/dist/dynamic-import/20fc4c659b85ccd2a9c0.wasm +0 -0
- package/dist/dynamic-import/5004fdc02f329ce53b69.wasm +0 -0
- package/dist/dynamic-import/54.min.js +2 -0
- package/dist/dynamic-import/54.min.js.map +1 -0
- package/dist/dynamic-import/548.min.js +2 -0
- package/dist/dynamic-import/548.min.js.map +1 -0
- package/dist/dynamic-import/918.min.js +2 -0
- package/dist/dynamic-import/918.min.js.map +1 -0
- package/dist/dynamic-import/958.min.js +3 -0
- package/dist/dynamic-import/958.min.js.LICENSE.txt +5 -0
- package/dist/dynamic-import/958.min.js.map +1 -0
- package/dist/dynamic-import/c22b37c3488e1d6c3aa4.wasm +0 -0
- package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js +1 -1
- package/dist/dynamic-import/cornerstoneDICOMImageLoader.min.js.map +1 -1
- package/dist/esm/init.js +1 -2
- package/package.json +3 -3
- package/dist/dynamic-import/4de9823ef4bef156227c.js +0 -1
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(this.webpackChunk=this.webpackChunk||[]).push([[54],{54:function(s,e){!function(t){if("object"==typeof e&&void 0!==s)s.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).jpeg=t()}}((function(){return function s(e,t,o){function r(a,n){if(!t[a]){if(!e[a]){var l="function"==typeof require&&require;if(!n&&l)return l(a,!0);if(i)return i(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var c=t[a]={exports:{}};e[a][0].call(c.exports,(function(s){var t=e[a][1][s];return r(t||s)}),c,c.exports,s,e,t,o)}return t[a].exports}for(var i="function"==typeof require&&require,a=0;a<o.length;a++)r(o[a]);return r}({1:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||function(){this.hSamp=0,this.quantTableSel=0,this.vSamp=0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ComponentSpec)},{}],2:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||function(s,e,t){this.buffer=new Uint8Array(s,e,t),this.index=0},o.lossless.DataStream.prototype.get16=function(){var s=(this.buffer[this.index]<<8)+this.buffer[this.index+1];return this.index+=2,s},o.lossless.DataStream.prototype.get8=function(){var s=this.buffer[this.index];return this.index+=1,s},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.DataStream)},{}],3:[function(s,e,t){var o,r=r||{};r.lossless=r.lossless||{},r.lossless.DataStream=r.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),r.lossless.HuffmanTable=r.lossless.HuffmanTable||(void 0!==s?s("./huffman-table.js"):null),r.lossless.QuantizationTable=r.lossless.QuantizationTable||(void 0!==s?s("./quantization-table.js"):null),r.lossless.ScanHeader=r.lossless.ScanHeader||(void 0!==s?s("./scan-header.js"):null),r.lossless.FrameHeader=r.lossless.FrameHeader||(void 0!==s?s("./frame-header.js"):null),r.lossless.Utils=r.lossless.Utils||(void 0!==s?s("./utils.js"):null),r.lossless.Decoder=r.lossless.Decoder||function(s,e){this.buffer=s,this.frame=new r.lossless.FrameHeader,this.huffTable=new r.lossless.HuffmanTable,this.quantTable=new r.lossless.QuantizationTable,this.scan=new r.lossless.ScanHeader,this.DU=r.lossless.Utils.createArray(10,4,64),this.HuffTab=r.lossless.Utils.createArray(4,2,12800),this.IDCT_Source=[],this.nBlock=[],this.acTab=r.lossless.Utils.createArray(10,1),this.dcTab=r.lossless.Utils.createArray(10,1),this.qTab=r.lossless.Utils.createArray(10,1),this.marker=0,this.markerIndex=0,this.numComp=0,this.restartInterval=0,this.selection=0,this.xDim=0,this.yDim=0,this.xLoc=0,this.yLoc=0,this.numBytes=0,this.outputData=null,this.restarting=!1,this.mask=0,void 0!==e&&(this.numBytes=e)},r.lossless.Decoder.IDCT_P=[0,5,40,16,45,2,7,42,21,56,8,61,18,47,1,4,41,23,58,13,32,24,37,10,63,17,44,3,6,43,20,57,15,34,29,48,53,26,39,9,60,19,46,22,59,12,33,31,50,55,25,36,11,62,14,35,28,49,52,27,38,30,51,54],r.lossless.Decoder.TABLE=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],r.lossless.Decoder.MAX_HUFFMAN_SUBTREE=50,r.lossless.Decoder.MSB=2147483648,r.lossless.Decoder.RESTART_MARKER_BEGIN=65488,r.lossless.Decoder.RESTART_MARKER_END=65495,r.lossless.Decoder.prototype.decompress=function(s,e,t){return this.decode(s,e,t).buffer},r.lossless.Decoder.prototype.decode=function(s,e,t,o){var i,a,n,l,h=0,c=[],u=[],f=[];if(void 0!==s&&(this.buffer=s),void 0!==o&&(this.numBytes=o),this.stream=new r.lossless.DataStream(this.buffer,e,t),this.buffer=null,this.xLoc=0,this.yLoc=0,65496!==(i=this.stream.get16()))throw new Error("Not a JPEG file");for(i=this.stream.get16();i>>4!=4092||65476===i;){switch(i){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,r.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(i>>8!=255)throw new Error("ERROR: format throw new IOException! (decode)")}i=this.stream.get16()}if(i<65472||i>65479)throw new Error("ERROR: could not handle arithmetic code!");this.frame.read(this.stream),i=this.stream.get16();do{for(;65498!==i;){switch(i){case 65476:this.huffTable.read(this.stream,this.HuffTab);break;case 65484:throw new Error("Program doesn't support arithmetic coding. (format throw new IOException)");case 65499:this.quantTable.read(this.stream,r.lossless.Decoder.TABLE);break;case 65501:this.restartInterval=this.readNumber();break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:this.readApp();break;case 65534:this.readComment();break;default:if(i>>8!=255)throw new Error("ERROR: format throw new IOException! (Parser.decode)")}i=this.stream.get16()}switch(this.precision=this.frame.precision,this.components=this.frame.components,this.numBytes||(this.numBytes=parseInt(Math.ceil(this.precision/8))),1==this.numBytes?this.mask=255:this.mask=65535,this.scan.read(this.stream),this.numComp=this.scan.numComp,this.selection=this.scan.selection,1===this.numBytes?3===this.numComp?(this.getter=this.getValueRGB,this.setter=this.setValueRGB,this.output=this.outputRGB):(this.getter=this.getValue8,this.setter=this.setValue8,this.output=this.outputSingle):(this.getter=this.getValue16,this.setter=this.setValue16,this.output=this.outputSingle),this.selection){case 2:this.selector=this.select2;break;case 3:this.selector=this.select3;break;case 4:this.selector=this.select4;break;case 5:this.selector=this.select5;break;case 6:this.selector=this.select6;break;case 7:this.selector=this.select7;break;default:this.selector=this.select1}for(this.scanComps=this.scan.components,this.quantTables=this.quantTable.quantTables,a=0;a<this.numComp;a+=1)n=this.scanComps[a].scanCompSel,this.qTab[a]=this.quantTables[this.components[n].quantTableSel],this.nBlock[a]=this.components[n].vSamp*this.components[n].hSamp,this.dcTab[a]=this.HuffTab[this.scanComps[a].dcTabSel][0],this.acTab[a]=this.HuffTab[this.scanComps[a].acTabSel][1];for(this.xDim=this.frame.dimX,this.yDim=this.frame.dimY,1==this.numBytes?this.outputData=new Uint8Array(new ArrayBuffer(this.xDim*this.yDim*this.numBytes*this.numComp)):this.outputData=new Uint16Array(new ArrayBuffer(this.xDim*this.yDim*this.numBytes*this.numComp)),h+=1;;){for(u[0]=0,f[0]=0,a=0;a<10;a+=1)c[a]=1<<this.precision-1;if(0===this.restartInterval){for(i=this.decodeUnit(c,u,f);0===i&&this.xLoc<this.xDim&&this.yLoc<this.yDim;)this.output(c),i=this.decodeUnit(c,u,f);break}for(l=0;l<this.restartInterval&&(this.restarting=0==l,i=this.decodeUnit(c,u,f),this.output(c),0===i);l+=1);if(0===i&&(0!==this.markerIndex?(i=65280|this.marker,this.markerIndex=0):i=this.stream.get16()),!(i>=r.lossless.Decoder.RESTART_MARKER_BEGIN&&i<=r.lossless.Decoder.RESTART_MARKER_END))break}65500===i&&1===h&&(this.readNumber(),i=this.stream.get16())}while(65497!==i&&this.xLoc<this.xDim&&this.yLoc<this.yDim&&0===h);return this.outputData},r.lossless.Decoder.prototype.decodeUnit=function(s,e,t){return 1==this.numComp?this.decodeSingle(s,e,t):3==this.numComp?this.decodeRGB(s,e,t):-1},r.lossless.Decoder.prototype.select1=function(s){return this.getPreviousX(s)},r.lossless.Decoder.prototype.select2=function(s){return this.getPreviousY(s)},r.lossless.Decoder.prototype.select3=function(s){return this.getPreviousXY(s)},r.lossless.Decoder.prototype.select4=function(s){return this.getPreviousX(s)+this.getPreviousY(s)-this.getPreviousXY(s)},r.lossless.Decoder.prototype.select5=function(s){return this.getPreviousX(s)+(this.getPreviousY(s)-this.getPreviousXY(s)>>1)},r.lossless.Decoder.prototype.select6=function(s){return this.getPreviousY(s)+(this.getPreviousX(s)-this.getPreviousXY(s)>>1)},r.lossless.Decoder.prototype.select7=function(s){return(this.getPreviousX(s)+this.getPreviousY(s))/2},r.lossless.Decoder.prototype.decodeRGB=function(s,e,t){var o,i,a,n,l,h,c,u;for(s[0]=this.selector(0),s[1]=this.selector(1),s[2]=this.selector(2),l=0;l<this.numComp;l+=1)for(n=this.qTab[l],i=this.acTab[l],a=this.dcTab[l],h=0;h<this.nBlock[l];h+=1){for(c=0;c<this.IDCT_Source.length;c+=1)this.IDCT_Source[c]=0;if((o=this.getHuffmanValue(a,e,t))>=65280)return o;for(s[l]=this.IDCT_Source[0]=s[l]+this.getn(t,o,e,t),this.IDCT_Source[0]*=n[0],u=1;u<64;u+=1){if((o=this.getHuffmanValue(i,e,t))>=65280)return o;if(u+=o>>4,15&o)this.IDCT_Source[r.lossless.Decoder.IDCT_P[u]]=this.getn(t,15&o,e,t)*n[u];else if(!(o>>4))break}}return 0},r.lossless.Decoder.prototype.decodeSingle=function(s,e,t){var o,i,a,n;for(this.restarting?(this.restarting=!1,s[0]=1<<this.frame.precision-1):s[0]=this.selector(),i=0;i<this.nBlock[0];i+=1){if((o=this.getHuffmanValue(this.dcTab[0],e,t))>=65280)return o;if((n=(a=this.getn(s,o,e,t))>>8)>=r.lossless.Decoder.RESTART_MARKER_BEGIN&&n<=r.lossless.Decoder.RESTART_MARKER_END)return n;s[0]+=a}return 0},r.lossless.Decoder.prototype.getHuffmanValue=function(s,e,t){var o,i;if(t[0]<8?(e[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),e[0]|=i):t[0]-=8,(o=s[e[0]>>t[0]])&r.lossless.Decoder.MSB){if(0!==this.markerIndex)return this.markerIndex=0,65280|this.marker;e[0]&=65535>>16-t[0],e[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),e[0]|=i,o=s[256*(255&o)+(e[0]>>t[0])],t[0]+=8}if(t[0]+=8-(o>>8),t[0]<0)throw new Error(`index=${t[0]} temp=${e[0]} code=${o} in HuffmanValue()`);return t[0]<this.markerIndex?(this.markerIndex=0,65280|this.marker):(e[0]&=65535>>16-t[0],255&o)},r.lossless.Decoder.prototype.getn=function(s,e,t,o){var r,i;if(0===e)return 0;if(16===e)return s[0]>=0?-32768:32768;if(o[0]-=e,o[0]>=0){if(o[0]<this.markerIndex&&!this.isLastPixel())return this.markerIndex=0,(65280|this.marker)<<8;r=t[0]>>o[0],t[0]&=65535>>16-o[0]}else{if(t[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=i,o[0]+=8,o[0]<0){if(0!==this.markerIndex)return this.markerIndex=0,(65280|this.marker)<<8;t[0]<<=8,255===(i=this.stream.get8())&&(this.marker=this.stream.get8(),0!==this.marker&&(this.markerIndex=9)),t[0]|=i,o[0]+=8}if(o[0]<0)throw new Error(`index=${o[0]} in getn()`);if(o[0]<this.markerIndex)return this.markerIndex=0,(65280|this.marker)<<8;r=t[0]>>o[0],t[0]&=65535>>16-o[0]}return r<1<<e-1&&(r+=1+(-1<<e)),r},r.lossless.Decoder.prototype.getPreviousX=function(s){return this.xLoc>0?this.getter(this.yLoc*this.xDim+this.xLoc-1,s):this.yLoc>0?this.getPreviousY(s):1<<this.frame.precision-1},r.lossless.Decoder.prototype.getPreviousXY=function(s){return this.xLoc>0&&this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc-1,s):this.getPreviousY(s)},r.lossless.Decoder.prototype.getPreviousY=function(s){return this.yLoc>0?this.getter((this.yLoc-1)*this.xDim+this.xLoc,s):this.getPreviousX(s)},r.lossless.Decoder.prototype.isLastPixel=function(){return this.xLoc===this.xDim-1&&this.yLoc===this.yDim-1},r.lossless.Decoder.prototype.outputSingle=function(s){this.xLoc<this.xDim&&this.yLoc<this.yDim&&(this.setter(this.yLoc*this.xDim+this.xLoc,this.mask&s[0]),this.xLoc+=1,this.xLoc>=this.xDim&&(this.yLoc+=1,this.xLoc=0))},r.lossless.Decoder.prototype.outputRGB=function(s){var e=this.yLoc*this.xDim+this.xLoc;this.xLoc<this.xDim&&this.yLoc<this.yDim&&(this.setter(e,s[0],0),this.setter(e,s[1],1),this.setter(e,s[2],2),this.xLoc+=1,this.xLoc>=this.xDim&&(this.yLoc+=1,this.xLoc=0))},r.lossless.Decoder.prototype.setValue8=function(s,e){this.outputData[s]=e},r.lossless.Decoder.prototype.getValue8=function(s){return this.outputData[s]},(o=new ArrayBuffer(2),new DataView(o).setInt16(0,256,!0),256===new Int16Array(o)[0])?(r.lossless.Decoder.prototype.setValue16=r.lossless.Decoder.prototype.setValue8,r.lossless.Decoder.prototype.getValue16=r.lossless.Decoder.prototype.getValue8):(r.lossless.Decoder.prototype.setValue16=function(s,e){this.outputData[s]=(255&e)<<8|e>>8&255},r.lossless.Decoder.prototype.getValue16=function(s){var e=this.outputData[s];return(255&e)<<8|e>>8&255}),r.lossless.Decoder.prototype.setValueRGB=function(s,e,t){this.outputData[3*s+t]=e},r.lossless.Decoder.prototype.getValueRGB=function(s,e){return this.outputData[3*s+e]},r.lossless.Decoder.prototype.readApp=function(){var s=0,e=this.stream.get16();for(s+=2;s<e;)this.stream.get8(),s+=1;return e},r.lossless.Decoder.prototype.readComment=function(){var s,e="",t=0;for(s=this.stream.get16(),t+=2;t<s;)e+=this.stream.get8(),t+=1;return e},r.lossless.Decoder.prototype.readNumber=function(){if(4!==this.stream.get16())throw new Error("ERROR: Define number format throw new IOException [Ld!=4]");return this.stream.get16()},"undefined"!==typeof e&&e.exports&&(e.exports=r.lossless.Decoder)},{"./data-stream.js":2,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-header.js":9,"./utils.js":10}],4:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||(void 0!==s?s("./component-spec.js"):null),o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.FrameHeader=o.lossless.FrameHeader||function(){this.components=[],this.dimX=0,this.dimY=0,this.numComp=0,this.precision=0},o.lossless.FrameHeader.prototype.read=function(s){var e,t,r,i,a=0;for(e=s.get16(),a+=2,this.precision=s.get8(),a+=1,this.dimY=s.get16(),a+=2,this.dimX=s.get16(),a+=2,this.numComp=s.get8(),a+=1,t=1;t<=this.numComp;t+=1){if(a>e)throw new Error("ERROR: frame format error");if(r=s.get8(),(a+=1)>=e)throw new Error("ERROR: frame format error [c>=Lf]");i=s.get8(),a+=1,this.components[r]||(this.components[r]=new o.lossless.ComponentSpec),this.components[r].hSamp=i>>4,this.components[r].vSamp=15&i,this.components[r].quantTableSel=s.get8(),a+=1}if(a!==e)throw new Error("ERROR: frame format error [Lf!=count]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.FrameHeader)},{"./component-spec.js":1,"./data-stream.js":2}],5:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),o.lossless.HuffmanTable=o.lossless.HuffmanTable||function(){this.l=o.lossless.Utils.createArray(4,2,16),this.th=[],this.v=o.lossless.Utils.createArray(4,2,16,200),this.tc=o.lossless.Utils.createArray(4,2),this.tc[0][0]=0,this.tc[1][0]=0,this.tc[2][0]=0,this.tc[3][0]=0,this.tc[0][1]=0,this.tc[1][1]=0,this.tc[2][1]=0,this.tc[3][1]=0,this.th[0]=0,this.th[1]=0,this.th[2]=0,this.th[3]=0},o.lossless.HuffmanTable.MSB=2147483648,o.lossless.HuffmanTable.prototype.read=function(s,e){var t,o,r,i,a,n,l=0;for(t=s.get16(),l+=2;l<t;){if(l+=1,(r=15&(o=s.get8()))>3)throw new Error("ERROR: Huffman table ID > 3");if((i=o>>4)>2)throw new Error("ERROR: Huffman table [Table class > 2 ]");for(this.th[r]=1,this.tc[r][i]=1,a=0;a<16;a+=1)this.l[r][i][a]=s.get8(),l+=1;for(a=0;a<16;a+=1)for(n=0;n<this.l[r][i][a];n+=1){if(l>t)throw new Error("ERROR: Huffman table format error [count>Lh]");this.v[r][i][a][n]=s.get8(),l+=1}}if(l!==t)throw new Error("ERROR: Huffman table format error [count!=Lf]");for(a=0;a<4;a+=1)for(n=0;n<2;n+=1)0!==this.tc[a][n]&&this.buildHuffTable(e[a][n],this.l[a][n],this.v[a][n]);return 1},o.lossless.HuffmanTable.prototype.buildHuffTable=function(s,e,t){var r,i,a,n,l;for(i=0,a=0;a<8;a+=1)for(n=0;n<e[a];n+=1)for(l=0;l<256>>a+1;l+=1)s[i]=t[a][n]|a+1<<8,i+=1;for(a=1;i<256;a+=1,i+=1)s[i]=a|o.lossless.HuffmanTable.MSB;for(r=1,i=0,a=8;a<16;a+=1)for(n=0;n<e[a];n+=1){for(l=0;l<256>>a-7;l+=1)s[256*r+i]=t[a][n]|a+1<<8,i+=1;if(i>=256){if(i>256)throw new Error("ERROR: Huffman table error(1)!");i=0,r+=1}}},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.HuffmanTable)},{"./data-stream.js":2,"./utils.js":10}],6:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ComponentSpec=o.lossless.ComponentSpec||(void 0!==s?s("./component-spec.js"):null),o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Decoder=o.lossless.Decoder||(void 0!==s?s("./decoder.js"):null),o.lossless.FrameHeader=o.lossless.FrameHeader||(void 0!==s?s("./frame-header.js"):null),o.lossless.HuffmanTable=o.lossless.HuffmanTable||(void 0!==s?s("./huffman-table.js"):null),o.lossless.QuantizationTable=o.lossless.QuantizationTable||(void 0!==s?s("./quantization-table.js"):null),o.lossless.ScanComponent=o.lossless.ScanComponent||(void 0!==s?s("./scan-component.js"):null),o.lossless.ScanHeader=o.lossless.ScanHeader||(void 0!==s?s("./scan-header.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),"undefined"!==typeof e&&e.exports&&(e.exports=o)},{"./component-spec.js":1,"./data-stream.js":2,"./decoder.js":3,"./frame-header.js":4,"./huffman-table.js":5,"./quantization-table.js":7,"./scan-component.js":8,"./scan-header.js":9,"./utils.js":10}],7:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.Utils=o.lossless.Utils||(void 0!==s?s("./utils.js"):null),o.lossless.QuantizationTable=o.lossless.QuantizationTable||function(){this.precision=[],this.tq=[],this.quantTables=o.lossless.Utils.createArray(4,64),this.tq[0]=0,this.tq[1]=0,this.tq[2]=0,this.tq[3]=0},o.lossless.QuantizationTable.enhanceQuantizationTable=function(s,e){var t;for(t=0;t<8;t+=1)s[e[0+t]]*=90,s[e[32+t]]*=90,s[e[16+t]]*=118,s[e[48+t]]*=49,s[e[40+t]]*=71,s[e[8+t]]*=126,s[e[56+t]]*=25,s[e[24+t]]*=106;for(t=0;t<8;t+=1)s[e[0+8*t]]*=90,s[e[4+8*t]]*=90,s[e[2+8*t]]*=118,s[e[6+8*t]]*=49,s[e[5+8*t]]*=71,s[e[1+8*t]]*=126,s[e[7+8*t]]*=25,s[e[3+8*t]]*=106;for(t=0;t<64;t+=1)s[t]>>=6},o.lossless.QuantizationTable.prototype.read=function(s,e){var t,r,i,a,n=0;for(t=s.get16(),n+=2;n<t;){if(n+=1,(i=15&(r=s.get8()))>3)throw new Error("ERROR: Quantization table ID > 3");if(this.precision[i]=r>>4,0===this.precision[i])this.precision[i]=8;else{if(1!==this.precision[i])throw new Error("ERROR: Quantization table precision error");this.precision[i]=16}if(this.tq[i]=1,8===this.precision[i]){for(a=0;a<64;a+=1){if(n>t)throw new Error("ERROR: Quantization table format error");this.quantTables[i][a]=s.get8(),n+=1}o.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[i],e)}else{for(a=0;a<64;a+=1){if(n>t)throw new Error("ERROR: Quantization table format error");this.quantTables[i][a]=s.get16(),n+=2}o.lossless.QuantizationTable.enhanceQuantizationTable(this.quantTables[i],e)}}if(n!==t)throw new Error("ERROR: Quantization table error [count!=Lq]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.QuantizationTable)},{"./data-stream.js":2,"./utils.js":10}],8:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.ScanComponent=o.lossless.ScanComponent||function(){this.acTabSel=0,this.dcTabSel=0,this.scanCompSel=0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ScanComponent)},{}],9:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.DataStream=o.lossless.DataStream||(void 0!==s?s("./data-stream.js"):null),o.lossless.ScanComponent=o.lossless.ScanComponent||(void 0!==s?s("./scan-component.js"):null),o.lossless.ScanHeader=o.lossless.ScanHeader||function(){this.ah=0,this.al=0,this.numComp=0,this.selection=0,this.spectralEnd=0,this.components=[]},o.lossless.ScanHeader.prototype.read=function(s){var e,t,r,i=0;for(e=s.get16(),i+=2,this.numComp=s.get8(),i+=1,t=0;t<this.numComp;t+=1){if(this.components[t]=new o.lossless.ScanComponent,i>e)throw new Error("ERROR: scan header format error");this.components[t].scanCompSel=s.get8(),i+=1,r=s.get8(),i+=1,this.components[t].dcTabSel=r>>4,this.components[t].acTabSel=15&r}if(this.selection=s.get8(),i+=1,this.spectralEnd=s.get8(),i+=1,r=s.get8(),this.ah=r>>4,this.al=15&r,(i+=1)!==e)throw new Error("ERROR: scan header format error [count!=Ns]");return 1},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.ScanHeader)},{"./data-stream.js":2,"./scan-component.js":8}],10:[function(s,e,t){var o=o||{};o.lossless=o.lossless||{},o.lossless.Utils=o.lossless.Utils||{},o.lossless.Utils.createArray=function(s){var e=new Array(s||0),t=s;if(arguments.length>1)for(var r=Array.prototype.slice.call(arguments,1);t--;)e[s-1-t]=o.lossless.Utils.createArray.apply(this,r);return e},o.lossless.Utils.makeCRCTable=function(){for(var s,e=[],t=0;t<256;t++){s=t;for(var o=0;o<8;o++)s=1&s?3988292384^s>>>1:s>>>1;e[t]=s}return e},o.lossless.Utils.crc32=function(s){for(var e=new Uint8Array(s.buffer),t=o.lossless.Utils.crcTable||(o.lossless.Utils.crcTable=o.lossless.Utils.makeCRCTable()),r=~0,i=0;i<e.length;i++)r=r>>>8^t[255&(r^e[i])];return~r>>>0},"undefined"!==typeof e&&e.exports&&(e.exports=o.lossless.Utils)},{}]},{},[6])(6)}))}}]);
|
|
2
|
+
//# sourceMappingURL=54.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"54.min.js","mappings":"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","sources":["webpack:///./codecs/jpegLossless.js"],"sourcesContent":["/* eslint-disable */\n\n(function (f) {\n if (typeof exports === 'object' && typeof module !== 'undefined') {\n module.exports = f();\n } else if (typeof define === 'function' && define.amd) {\n define([], f);\n } else {\n var g;\n\n if (typeof window !== 'undefined') {\n g = window;\n } else if (typeof global !== 'undefined') {\n g = global;\n } else if (typeof self !== 'undefined') {\n g = self;\n } else {\n g = this;\n }\n g.jpeg = f();\n }\n})(function () {\n var define, module, exports;\n\n return (function e(t, n, r) {\n function s(o, u) {\n if (!n[o]) {\n if (!t[o]) {\n var a = typeof require === 'function' && require;\n\n if (!u && a) {\n return a(o, !0);\n }\n if (i) {\n return i(o, !0);\n }\n var f = new Error(\"Cannot find module '\" + o + \"'\");\n\n throw ((f.code = 'MODULE_NOT_FOUND'), f);\n }\n var l = (n[o] = { exports: {} });\n\n t[o][0].call(\n l.exports,\n function (e) {\n var n = t[o][1][e];\n\n return s(n ? n : e);\n },\n l,\n l.exports,\n e,\n t,\n n,\n r\n );\n }\n\n return n[o].exports;\n }\n var i = typeof require === 'function' && require;\n\n for (var o = 0; o < r.length; o++) {\n s(r[o]);\n }\n\n return s;\n })(\n {\n 1: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n\n /*** Constructor ***/\n jpeg.lossless.ComponentSpec =\n jpeg.lossless.ComponentSpec ||\n function () {\n this.hSamp = 0; // Horizontal sampling factor\n this.quantTableSel = 0; // Quantization table destination selector\n this.vSamp = 0; // Vertical\n };\n\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.ComponentSpec;\n }\n },\n {},\n ],\n 2: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n\n /*** Constructor ***/\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n function (data, offset, length) {\n // Note: DataView is much slower than Int8Array\n // this.buffer = new DataView(data, offset, length);\n this.buffer = new Uint8Array(data, offset, length);\n this.index = 0;\n };\n jpeg.lossless.DataStream.prototype.get16 = function () {\n // var value = this.buffer.getUint16(this.index, false);\n var value =\n (this.buffer[this.index] << 8) + this.buffer[this.index + 1]; // DataView is big-endian by default\n\n this.index += 2;\n\n return value;\n };\n jpeg.lossless.DataStream.prototype.get8 = function () {\n // var value = this.buffer.getUint8(this.index);\n var value = this.buffer[this.index];\n\n this.index += 1;\n\n return value;\n };\n\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.DataStream;\n }\n },\n {},\n ],\n 3: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n jpeg.lossless.HuffmanTable =\n jpeg.lossless.HuffmanTable ||\n (typeof require !== 'undefined'\n ? require('./huffman-table.js')\n : null);\n jpeg.lossless.QuantizationTable =\n jpeg.lossless.QuantizationTable ||\n (typeof require !== 'undefined'\n ? require('./quantization-table.js')\n : null);\n jpeg.lossless.ScanHeader =\n jpeg.lossless.ScanHeader ||\n (typeof require !== 'undefined'\n ? require('./scan-header.js')\n : null);\n jpeg.lossless.FrameHeader =\n jpeg.lossless.FrameHeader ||\n (typeof require !== 'undefined'\n ? require('./frame-header.js')\n : null);\n jpeg.lossless.Utils =\n jpeg.lossless.Utils ||\n (typeof require !== 'undefined' ? require('./utils.js') : null);\n\n /*** Constructor ***/\n\n /**\n * The Decoder constructor.\n * @property {number} xDim - size of x dimension\n * @property {number} yDim - size of y dimension\n * @property {number} numComp - number of components\n * @property {number} numBytes - number of bytes per component\n * @type {Function}\n */\n jpeg.lossless.Decoder =\n jpeg.lossless.Decoder ||\n function (buffer, numBytes) {\n this.buffer = buffer;\n this.frame = new jpeg.lossless.FrameHeader();\n this.huffTable = new jpeg.lossless.HuffmanTable();\n this.quantTable = new jpeg.lossless.QuantizationTable();\n this.scan = new jpeg.lossless.ScanHeader();\n this.DU = jpeg.lossless.Utils.createArray(10, 4, 64); // at most 10 data units in a MCU, at most 4 data units in one component\n this.HuffTab = jpeg.lossless.Utils.createArray(4, 2, 50 * 256);\n this.IDCT_Source = [];\n this.nBlock = []; // number of blocks in the i-th Comp in a scan\n this.acTab = jpeg.lossless.Utils.createArray(10, 1); // ac HuffTab for the i-th Comp in a scan\n this.dcTab = jpeg.lossless.Utils.createArray(10, 1); // dc HuffTab for the i-th Comp in a scan\n this.qTab = jpeg.lossless.Utils.createArray(10, 1); // quantization table for the i-th Comp in a scan\n this.marker = 0;\n this.markerIndex = 0;\n this.numComp = 0;\n this.restartInterval = 0;\n this.selection = 0;\n this.xDim = 0;\n this.yDim = 0;\n this.xLoc = 0;\n this.yLoc = 0;\n this.numBytes = 0;\n this.outputData = null;\n this.restarting = false;\n this.mask = 0;\n\n if (typeof numBytes !== 'undefined') {\n this.numBytes = numBytes;\n }\n };\n\n /*** Static Pseudo-constants ***/\n\n jpeg.lossless.Decoder.IDCT_P = [\n 0, 5, 40, 16, 45, 2, 7, 42, 21, 56, 8, 61, 18, 47, 1, 4, 41, 23, 58,\n 13, 32, 24, 37, 10, 63, 17, 44, 3, 6, 43, 20, 57, 15, 34, 29, 48,\n 53, 26, 39, 9, 60, 19, 46, 22, 59, 12, 33, 31, 50, 55, 25, 36, 11,\n 62, 14, 35, 28, 49, 52, 27, 38, 30, 51, 54,\n ];\n jpeg.lossless.Decoder.TABLE = [\n 0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12,\n 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32,\n 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50,\n 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63,\n ];\n jpeg.lossless.Decoder.MAX_HUFFMAN_SUBTREE = 50;\n jpeg.lossless.Decoder.MSB = 0x80000000;\n jpeg.lossless.Decoder.RESTART_MARKER_BEGIN = 0xffd0;\n jpeg.lossless.Decoder.RESTART_MARKER_END = 0xffd7;\n\n /*** Prototype Methods ***/\n\n /**\n * Returns decompressed data.\n * @param {ArrayBuffer} buffer\n * @param {number} [offset]\n * @param {number} [length]\n * @returns {ArrayBufer}\n */\n jpeg.lossless.Decoder.prototype.decompress = function (\n buffer,\n offset,\n length\n ) {\n return this.decode(buffer, offset, length).buffer;\n };\n jpeg.lossless.Decoder.prototype.decode = function (\n buffer,\n offset,\n length,\n numBytes\n ) {\n /*jslint bitwise: true */\n\n var current,\n scanNum = 0,\n pred = [],\n i,\n compN,\n temp = [],\n index = [],\n mcuNum;\n\n if (typeof buffer !== 'undefined') {\n this.buffer = buffer;\n }\n\n if (typeof numBytes !== 'undefined') {\n this.numBytes = numBytes;\n }\n\n this.stream = new jpeg.lossless.DataStream(\n this.buffer,\n offset,\n length\n );\n this.buffer = null;\n\n this.xLoc = 0;\n this.yLoc = 0;\n current = this.stream.get16();\n\n if (current !== 0xffd8) {\n // SOI\n throw new Error('Not a JPEG file');\n }\n\n current = this.stream.get16();\n\n while (current >> 4 !== 0x0ffc || current === 0xffc4) {\n // SOF 0~15\n switch (current) {\n case 0xffc4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xffcc: // DAC\n throw new Error(\n \"Program doesn't support arithmetic coding. (format throw new IOException)\"\n );\n case 0xffdb:\n this.quantTable.read(\n this.stream,\n jpeg.lossless.Decoder.TABLE\n );\n break;\n case 0xffdd:\n this.restartInterval = this.readNumber();\n break;\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n this.readApp();\n break;\n case 0xfffe:\n this.readComment();\n break;\n default:\n if (current >> 8 !== 0xff) {\n throw new Error(\n 'ERROR: format throw new IOException! (decode)'\n );\n }\n }\n\n current = this.stream.get16();\n }\n\n if (current < 0xffc0 || current > 0xffc7) {\n throw new Error('ERROR: could not handle arithmetic code!');\n }\n\n this.frame.read(this.stream);\n current = this.stream.get16();\n\n do {\n while (current !== 0x0ffda) {\n // SOS\n switch (current) {\n case 0xffc4: // DHT\n this.huffTable.read(this.stream, this.HuffTab);\n break;\n case 0xffcc: // DAC\n throw new Error(\n \"Program doesn't support arithmetic coding. (format throw new IOException)\"\n );\n case 0xffdb:\n this.quantTable.read(\n this.stream,\n jpeg.lossless.Decoder.TABLE\n );\n break;\n case 0xffdd:\n this.restartInterval = this.readNumber();\n break;\n case 0xffe0:\n case 0xffe1:\n case 0xffe2:\n case 0xffe3:\n case 0xffe4:\n case 0xffe5:\n case 0xffe6:\n case 0xffe7:\n case 0xffe8:\n case 0xffe9:\n case 0xffea:\n case 0xffeb:\n case 0xffec:\n case 0xffed:\n case 0xffee:\n case 0xffef:\n this.readApp();\n break;\n case 0xfffe:\n this.readComment();\n break;\n default:\n if (current >> 8 !== 0xff) {\n throw new Error(\n 'ERROR: format throw new IOException! (Parser.decode)'\n );\n }\n }\n\n current = this.stream.get16();\n }\n\n this.precision = this.frame.precision;\n this.components = this.frame.components;\n\n if (!this.numBytes) {\n this.numBytes = parseInt(Math.ceil(this.precision / 8));\n }\n\n if (this.numBytes == 1) {\n this.mask = 0xff;\n } else {\n this.mask = 0xffff;\n }\n\n this.scan.read(this.stream);\n this.numComp = this.scan.numComp;\n this.selection = this.scan.selection;\n\n if (this.numBytes === 1) {\n if (this.numComp === 3) {\n this.getter = this.getValueRGB;\n this.setter = this.setValueRGB;\n this.output = this.outputRGB;\n } else {\n this.getter = this.getValue8;\n this.setter = this.setValue8;\n this.output = this.outputSingle;\n }\n } else {\n this.getter = this.getValue16;\n this.setter = this.setValue16;\n this.output = this.outputSingle;\n }\n\n switch (this.selection) {\n case 2:\n this.selector = this.select2;\n break;\n case 3:\n this.selector = this.select3;\n break;\n case 4:\n this.selector = this.select4;\n break;\n case 5:\n this.selector = this.select5;\n break;\n case 6:\n this.selector = this.select6;\n break;\n case 7:\n this.selector = this.select7;\n break;\n default:\n this.selector = this.select1;\n break;\n }\n\n this.scanComps = this.scan.components;\n this.quantTables = this.quantTable.quantTables;\n\n for (i = 0; i < this.numComp; i += 1) {\n compN = this.scanComps[i].scanCompSel;\n this.qTab[i] =\n this.quantTables[this.components[compN].quantTableSel];\n this.nBlock[i] =\n this.components[compN].vSamp * this.components[compN].hSamp;\n this.dcTab[i] = this.HuffTab[this.scanComps[i].dcTabSel][0];\n this.acTab[i] = this.HuffTab[this.scanComps[i].acTabSel][1];\n }\n\n this.xDim = this.frame.dimX;\n this.yDim = this.frame.dimY;\n if (this.numBytes == 1) {\n this.outputData = new Uint8Array(\n new ArrayBuffer(\n this.xDim * this.yDim * this.numBytes * this.numComp\n )\n );\n } else {\n this.outputData = new Uint16Array(\n new ArrayBuffer(\n this.xDim * this.yDim * this.numBytes * this.numComp\n )\n );\n }\n\n scanNum += 1;\n\n while (true) {\n // Decode one scan\n temp[0] = 0;\n index[0] = 0;\n\n for (i = 0; i < 10; i += 1) {\n pred[i] = 1 << (this.precision - 1);\n }\n\n if (this.restartInterval === 0) {\n current = this.decodeUnit(pred, temp, index);\n\n while (\n current === 0 &&\n this.xLoc < this.xDim &&\n this.yLoc < this.yDim\n ) {\n this.output(pred);\n current = this.decodeUnit(pred, temp, index);\n }\n\n break; //current=MARKER\n }\n\n for (mcuNum = 0; mcuNum < this.restartInterval; mcuNum += 1) {\n this.restarting = mcuNum == 0;\n current = this.decodeUnit(pred, temp, index);\n this.output(pred);\n\n if (current !== 0) {\n break;\n }\n }\n\n if (current === 0) {\n if (this.markerIndex !== 0) {\n current = 0xff00 | this.marker;\n this.markerIndex = 0;\n } else {\n current = this.stream.get16();\n }\n }\n\n if (\n !(\n current >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN &&\n current <= jpeg.lossless.Decoder.RESTART_MARKER_END\n )\n ) {\n break; //current=MARKER\n }\n }\n\n if (current === 0xffdc && scanNum === 1) {\n //DNL\n this.readNumber();\n current = this.stream.get16();\n }\n } while (\n current !== 0xffd9 &&\n this.xLoc < this.xDim &&\n this.yLoc < this.yDim &&\n scanNum === 0\n );\n\n return this.outputData;\n };\n jpeg.lossless.Decoder.prototype.decodeUnit = function (\n prev,\n temp,\n index\n ) {\n if (this.numComp == 1) {\n return this.decodeSingle(prev, temp, index);\n } else if (this.numComp == 3) {\n return this.decodeRGB(prev, temp, index);\n }\n\n return -1;\n };\n jpeg.lossless.Decoder.prototype.select1 = function (compOffset) {\n return this.getPreviousX(compOffset);\n };\n jpeg.lossless.Decoder.prototype.select2 = function (compOffset) {\n return this.getPreviousY(compOffset);\n };\n jpeg.lossless.Decoder.prototype.select3 = function (compOffset) {\n return this.getPreviousXY(compOffset);\n };\n jpeg.lossless.Decoder.prototype.select4 = function (compOffset) {\n return (\n this.getPreviousX(compOffset) +\n this.getPreviousY(compOffset) -\n this.getPreviousXY(compOffset)\n );\n };\n jpeg.lossless.Decoder.prototype.select5 = function (compOffset) {\n return (\n this.getPreviousX(compOffset) +\n ((this.getPreviousY(compOffset) -\n this.getPreviousXY(compOffset)) >>\n 1)\n );\n };\n jpeg.lossless.Decoder.prototype.select6 = function (compOffset) {\n return (\n this.getPreviousY(compOffset) +\n ((this.getPreviousX(compOffset) -\n this.getPreviousXY(compOffset)) >>\n 1)\n );\n };\n jpeg.lossless.Decoder.prototype.select7 = function (compOffset) {\n return (\n (this.getPreviousX(compOffset) + this.getPreviousY(compOffset)) /\n 2\n );\n };\n jpeg.lossless.Decoder.prototype.decodeRGB = function (\n prev,\n temp,\n index\n ) {\n /*jslint bitwise: true */\n\n var value, actab, dctab, qtab, ctrC, i, k, j;\n\n prev[0] = this.selector(0);\n prev[1] = this.selector(1);\n prev[2] = this.selector(2);\n\n for (ctrC = 0; ctrC < this.numComp; ctrC += 1) {\n qtab = this.qTab[ctrC];\n actab = this.acTab[ctrC];\n dctab = this.dcTab[ctrC];\n for (i = 0; i < this.nBlock[ctrC]; i += 1) {\n for (k = 0; k < this.IDCT_Source.length; k += 1) {\n this.IDCT_Source[k] = 0;\n }\n\n value = this.getHuffmanValue(dctab, temp, index);\n\n if (value >= 0xff00) {\n return value;\n }\n\n prev[ctrC] = this.IDCT_Source[0] =\n prev[ctrC] + this.getn(index, value, temp, index);\n this.IDCT_Source[0] *= qtab[0];\n\n for (j = 1; j < 64; j += 1) {\n value = this.getHuffmanValue(actab, temp, index);\n\n if (value >= 0xff00) {\n return value;\n }\n\n j += value >> 4;\n\n if ((value & 0x0f) === 0) {\n if (value >> 4 === 0) {\n break;\n }\n } else {\n this.IDCT_Source[jpeg.lossless.Decoder.IDCT_P[j]] =\n this.getn(index, value & 0x0f, temp, index) * qtab[j];\n }\n }\n }\n }\n\n return 0;\n };\n jpeg.lossless.Decoder.prototype.decodeSingle = function (\n prev,\n temp,\n index\n ) {\n /*jslint bitwise: true */\n\n var value, i, n, nRestart;\n\n if (this.restarting) {\n this.restarting = false;\n prev[0] = 1 << (this.frame.precision - 1);\n } else {\n prev[0] = this.selector();\n }\n\n for (i = 0; i < this.nBlock[0]; i += 1) {\n value = this.getHuffmanValue(this.dcTab[0], temp, index);\n if (value >= 0xff00) {\n return value;\n }\n\n n = this.getn(prev, value, temp, index);\n nRestart = n >> 8;\n\n if (\n nRestart >= jpeg.lossless.Decoder.RESTART_MARKER_BEGIN &&\n nRestart <= jpeg.lossless.Decoder.RESTART_MARKER_END\n ) {\n return nRestart;\n }\n\n prev[0] += n;\n }\n\n return 0;\n };\n // Huffman table for fast search: (HuffTab) 8-bit Look up table 2-layer search architecture, 1st-layer represent 256 node (8 bits) if codeword-length > 8\n // bits, then the entry of 1st-layer = (# of 2nd-layer table) | MSB and it is stored in the 2nd-layer Size of tables in each layer are 256.\n // HuffTab[*][*][0-256] is always the only 1st-layer table.\n //\n // An entry can be: (1) (# of 2nd-layer table) | MSB , for code length > 8 in 1st-layer (2) (Code length) << 8 | HuffVal\n //\n // HuffmanValue(table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n // ):\n // return: Huffman Value of table\n // 0xFF?? if it receives a MARKER\n // Parameter: table HuffTab[x][y] (ex) HuffmanValue(HuffTab[1][0],...)\n // temp temp storage for remainded bits\n // index index to bit of temp\n // in FILE pointer\n // Effect:\n // temp store new remainded bits\n // index change to new index\n // in change to new position\n // NOTE:\n // Initial by temp=0; index=0;\n // NOTE: (explain temp and index)\n // temp: is always in the form at calling time or returning time\n // | byte 4 | byte 3 | byte 2 | byte 1 |\n // | 0 | 0 | 00000000 | 00000??? | if not a MARKER\n // ^index=3 (from 0 to 15)\n // 321\n // NOTE (marker and marker_index):\n // If get a MARKER from 'in', marker=the low-byte of the MARKER\n // and marker_index=9\n // If marker_index=9 then index is always > 8, or HuffmanValue()\n // will not be called\n jpeg.lossless.Decoder.prototype.getHuffmanValue = function (\n table,\n temp,\n index\n ) {\n /*jslint bitwise: true */\n\n var code, input, mask;\n\n mask = 0xffff;\n\n if (index[0] < 8) {\n temp[0] <<= 8;\n input = this.stream.get8();\n if (input === 0xff) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n temp[0] |= input;\n } else {\n index[0] -= 8;\n }\n\n code = table[temp[0] >> index[0]];\n\n if ((code & jpeg.lossless.Decoder.MSB) !== 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n\n return 0xff00 | this.marker;\n }\n\n temp[0] &= mask >> (16 - index[0]);\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xff) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n code = table[(code & 0xff) * 256 + (temp[0] >> index[0])];\n index[0] += 8;\n }\n\n index[0] += 8 - (code >> 8);\n\n if (index[0] < 0) {\n throw new Error(\n `index=${index[0]} temp=${temp[0]} code=${code} in HuffmanValue()`\n );\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n\n return 0xff00 | this.marker;\n }\n\n temp[0] &= mask >> (16 - index[0]);\n\n return code & 0xff;\n };\n jpeg.lossless.Decoder.prototype.getn = function (\n PRED,\n n,\n temp,\n index\n ) {\n /*jslint bitwise: true */\n\n var result, one, n_one, mask, input;\n\n one = 1;\n n_one = -1;\n mask = 0xffff;\n\n if (n === 0) {\n return 0;\n }\n\n if (n === 16) {\n if (PRED[0] >= 0) {\n return -32768;\n }\n\n return 32768;\n }\n\n index[0] -= n;\n\n if (index[0] >= 0) {\n if (index[0] < this.markerIndex && !this.isLastPixel()) {\n // this was corrupting the last pixel in some cases\n this.markerIndex = 0;\n\n return (0xff00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= mask >> (16 - index[0]);\n } else {\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xff) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n\n if (index[0] < 0) {\n if (this.markerIndex !== 0) {\n this.markerIndex = 0;\n\n return (0xff00 | this.marker) << 8;\n }\n\n temp[0] <<= 8;\n input = this.stream.get8();\n\n if (input === 0xff) {\n this.marker = this.stream.get8();\n if (this.marker !== 0) {\n this.markerIndex = 9;\n }\n }\n\n temp[0] |= input;\n index[0] += 8;\n }\n\n if (index[0] < 0) {\n throw new Error(`index=${index[0]} in getn()`);\n }\n\n if (index[0] < this.markerIndex) {\n this.markerIndex = 0;\n\n return (0xff00 | this.marker) << 8;\n }\n\n result = temp[0] >> index[0];\n temp[0] &= mask >> (16 - index[0]);\n }\n\n if (result < one << (n - 1)) {\n result += (n_one << n) + 1;\n }\n\n return result;\n };\n jpeg.lossless.Decoder.prototype.getPreviousX = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.xLoc > 0) {\n return this.getter(\n this.yLoc * this.xDim + this.xLoc - 1,\n compOffset\n );\n } else if (this.yLoc > 0) {\n return this.getPreviousY(compOffset);\n }\n\n return 1 << (this.frame.precision - 1);\n };\n\n jpeg.lossless.Decoder.prototype.getPreviousXY = function (\n compOffset\n ) {\n /*jslint bitwise: true */\n\n if (this.xLoc > 0 && this.yLoc > 0) {\n return this.getter(\n (this.yLoc - 1) * this.xDim + this.xLoc - 1,\n compOffset\n );\n }\n\n return this.getPreviousY(compOffset);\n };\n jpeg.lossless.Decoder.prototype.getPreviousY = function (compOffset) {\n /*jslint bitwise: true */\n\n if (this.yLoc > 0) {\n return this.getter(\n (this.yLoc - 1) * this.xDim + this.xLoc,\n compOffset\n );\n }\n\n return this.getPreviousX(compOffset);\n };\n jpeg.lossless.Decoder.prototype.isLastPixel = function () {\n return this.xLoc === this.xDim - 1 && this.yLoc === this.yDim - 1;\n };\n jpeg.lossless.Decoder.prototype.outputSingle = function (PRED) {\n if (this.xLoc < this.xDim && this.yLoc < this.yDim) {\n this.setter(\n this.yLoc * this.xDim + this.xLoc,\n this.mask & PRED[0]\n );\n\n this.xLoc += 1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc += 1;\n this.xLoc = 0;\n }\n }\n };\n jpeg.lossless.Decoder.prototype.outputRGB = function (PRED) {\n var offset = this.yLoc * this.xDim + this.xLoc;\n\n if (this.xLoc < this.xDim && this.yLoc < this.yDim) {\n this.setter(offset, PRED[0], 0);\n this.setter(offset, PRED[1], 1);\n this.setter(offset, PRED[2], 2);\n\n this.xLoc += 1;\n\n if (this.xLoc >= this.xDim) {\n this.yLoc += 1;\n this.xLoc = 0;\n }\n }\n };\n\n jpeg.lossless.Decoder.prototype.setValue8 = function (index, val) {\n this.outputData[index] = val;\n };\n\n jpeg.lossless.Decoder.prototype.getValue8 = function (index) {\n return this.outputData[index]; // mask should not be necessary because outputData is either Int8Array or Int16Array\n };\n\n var littleEndian = (function () {\n var buffer = new ArrayBuffer(2);\n\n new DataView(buffer).setInt16(0, 256, true /* littleEndian */);\n // Int16Array uses the platform's endianness.\n return new Int16Array(buffer)[0] === 256;\n })();\n\n if (littleEndian) {\n // just reading from an array is fine then. Int16Array will use platform endianness.\n jpeg.lossless.Decoder.prototype.setValue16 =\n jpeg.lossless.Decoder.prototype.setValue8;\n jpeg.lossless.Decoder.prototype.getValue16 =\n jpeg.lossless.Decoder.prototype.getValue8;\n } else {\n // If platform is big-endian, we will need to convert to little-endian\n jpeg.lossless.Decoder.prototype.setValue16 = function (index, val) {\n this.outputData[index] =\n ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n };\n\n jpeg.lossless.Decoder.prototype.getValue16 = function (index) {\n var val = this.outputData[index];\n\n return ((val & 0xff) << 8) | ((val >> 8) & 0xff);\n };\n }\n\n jpeg.lossless.Decoder.prototype.setValueRGB = function (\n index,\n val,\n compOffset\n ) {\n // this.outputData.setUint8(index * 3 + compOffset, val);\n this.outputData[index * 3 + compOffset] = val;\n };\n\n jpeg.lossless.Decoder.prototype.getValueRGB = function (\n index,\n compOffset\n ) {\n // return this.outputData.getUint8(index * 3 + compOffset);\n return this.outputData[index * 3 + compOffset];\n };\n jpeg.lossless.Decoder.prototype.readApp = function () {\n var count = 0,\n length = this.stream.get16();\n\n count += 2;\n\n while (count < length) {\n this.stream.get8();\n count += 1;\n }\n\n return length;\n };\n jpeg.lossless.Decoder.prototype.readComment = function () {\n var sb = '',\n count = 0,\n length;\n\n length = this.stream.get16();\n count += 2;\n\n while (count < length) {\n sb += this.stream.get8();\n count += 1;\n }\n\n return sb;\n };\n jpeg.lossless.Decoder.prototype.readNumber = function () {\n var Ld = this.stream.get16();\n\n if (Ld !== 4) {\n throw new Error(\n 'ERROR: Define number format throw new IOException [Ld!=4]'\n );\n }\n\n return this.stream.get16();\n };\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.Decoder;\n }\n },\n {\n './data-stream.js': 2,\n './frame-header.js': 4,\n './huffman-table.js': 5,\n './quantization-table.js': 7,\n './scan-header.js': 9,\n './utils.js': 10,\n },\n ],\n 4: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n jpeg.lossless.ComponentSpec =\n jpeg.lossless.ComponentSpec ||\n (typeof require !== 'undefined'\n ? require('./component-spec.js')\n : null);\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n\n /*** Constructor ***/\n jpeg.lossless.FrameHeader =\n jpeg.lossless.FrameHeader ||\n function () {\n this.components = []; // Components\n this.dimX = 0; // Number of samples per line\n this.dimY = 0; // Number of lines\n this.numComp = 0; // Number of component in the frame\n this.precision = 0; // Sample Precision (from the original image)\n };\n /*** Prototype Methods ***/\n\n jpeg.lossless.FrameHeader.prototype.read = function (data) {\n /*jslint bitwise: true */\n\n var count = 0,\n length,\n i,\n c,\n temp;\n\n length = data.get16();\n count += 2;\n\n this.precision = data.get8();\n count += 1;\n\n this.dimY = data.get16();\n count += 2;\n\n this.dimX = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count += 1;\n for (i = 1; i <= this.numComp; i += 1) {\n if (count > length) {\n throw new Error('ERROR: frame format error');\n }\n\n c = data.get8();\n count += 1;\n\n if (count >= length) {\n throw new Error('ERROR: frame format error [c>=Lf]');\n }\n\n temp = data.get8();\n count += 1;\n\n if (!this.components[c]) {\n this.components[c] = new jpeg.lossless.ComponentSpec();\n }\n\n this.components[c].hSamp = temp >> 4;\n this.components[c].vSamp = temp & 0x0f;\n this.components[c].quantTableSel = data.get8();\n count += 1;\n }\n\n if (count !== length) {\n throw new Error('ERROR: frame format error [Lf!=count]');\n }\n\n return 1;\n };\n\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.FrameHeader;\n }\n },\n { './component-spec.js': 1, './data-stream.js': 2 },\n ],\n 5: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n jpeg.lossless.Utils =\n jpeg.lossless.Utils ||\n (typeof require !== 'undefined' ? require('./utils.js') : null);\n\n /*** Constructor ***/\n jpeg.lossless.HuffmanTable =\n jpeg.lossless.HuffmanTable ||\n function () {\n this.l = jpeg.lossless.Utils.createArray(4, 2, 16);\n this.th = [];\n this.v = jpeg.lossless.Utils.createArray(4, 2, 16, 200);\n this.tc = jpeg.lossless.Utils.createArray(4, 2);\n\n this.tc[0][0] = 0;\n this.tc[1][0] = 0;\n this.tc[2][0] = 0;\n this.tc[3][0] = 0;\n this.tc[0][1] = 0;\n this.tc[1][1] = 0;\n this.tc[2][1] = 0;\n this.tc[3][1] = 0;\n this.th[0] = 0;\n this.th[1] = 0;\n this.th[2] = 0;\n this.th[3] = 0;\n };\n /*** Static Pseudo-constants ***/\n\n jpeg.lossless.HuffmanTable.MSB = 0x80000000;\n\n /*** Prototype Methods ***/\n\n jpeg.lossless.HuffmanTable.prototype.read = function (data, HuffTab) {\n /*jslint bitwise: true */\n\n var count = 0,\n length,\n temp,\n t,\n c,\n i,\n j;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count += 1;\n t = temp & 0x0f;\n if (t > 3) {\n throw new Error('ERROR: Huffman table ID > 3');\n }\n\n c = temp >> 4;\n if (c > 2) {\n throw new Error('ERROR: Huffman table [Table class > 2 ]');\n }\n\n this.th[t] = 1;\n this.tc[t][c] = 1;\n\n for (i = 0; i < 16; i += 1) {\n this.l[t][c][i] = data.get8();\n count += 1;\n }\n\n for (i = 0; i < 16; i += 1) {\n for (j = 0; j < this.l[t][c][i]; j += 1) {\n if (count > length) {\n throw new Error(\n 'ERROR: Huffman table format error [count>Lh]'\n );\n }\n\n this.v[t][c][i][j] = data.get8();\n count += 1;\n }\n }\n }\n\n if (count !== length) {\n throw new Error('ERROR: Huffman table format error [count!=Lf]');\n }\n\n for (i = 0; i < 4; i += 1) {\n for (j = 0; j < 2; j += 1) {\n if (this.tc[i][j] !== 0) {\n this.buildHuffTable(\n HuffTab[i][j],\n this.l[i][j],\n this.v[i][j]\n );\n }\n }\n }\n\n return 1;\n };\n // Build_HuffTab()\n // Parameter: t table ID\n // c table class ( 0 for DC, 1 for AC )\n // L[i] # of codewords which length is i\n // V[i][j] Huffman Value (length=i)\n // Effect:\n // build up HuffTab[t][c] using L and V.\n jpeg.lossless.HuffmanTable.prototype.buildHuffTable = function (\n tab,\n L,\n V\n ) {\n /*jslint bitwise: true */\n\n var currentTable, temp, k, i, j, n;\n\n temp = 256;\n k = 0;\n\n for (i = 0; i < 8; i += 1) {\n // i+1 is Code length\n for (j = 0; j < L[i]; j += 1) {\n for (n = 0; n < temp >> (i + 1); n += 1) {\n tab[k] = V[i][j] | ((i + 1) << 8);\n k += 1;\n }\n }\n }\n\n for (i = 1; k < 256; i += 1, k += 1) {\n tab[k] = i | jpeg.lossless.HuffmanTable.MSB;\n }\n\n currentTable = 1;\n k = 0;\n\n for (i = 8; i < 16; i += 1) {\n // i+1 is Code length\n for (j = 0; j < L[i]; j += 1) {\n for (n = 0; n < temp >> (i - 7); n += 1) {\n tab[currentTable * 256 + k] = V[i][j] | ((i + 1) << 8);\n k += 1;\n }\n\n if (k >= 256) {\n if (k > 256) {\n throw new Error('ERROR: Huffman table error(1)!');\n }\n\n k = 0;\n currentTable += 1;\n }\n }\n }\n };\n\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.HuffmanTable;\n }\n },\n { './data-stream.js': 2, './utils.js': 10 },\n ],\n 6: [\n function (require, module, exports) {\n /*jslint browser: true, node: true */\n /*global require, module */\n\n /*** Imports ****/\n\n /**\n * jpeg\n * @type {*|{}}\n */\n var jpeg = jpeg || {};\n\n /**\n * jpeg.lossless\n * @type {*|{}}\n */\n jpeg.lossless = jpeg.lossless || {};\n\n jpeg.lossless.ComponentSpec =\n jpeg.lossless.ComponentSpec ||\n (typeof require !== 'undefined'\n ? require('./component-spec.js')\n : null);\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n jpeg.lossless.Decoder =\n jpeg.lossless.Decoder ||\n (typeof require !== 'undefined' ? require('./decoder.js') : null);\n jpeg.lossless.FrameHeader =\n jpeg.lossless.FrameHeader ||\n (typeof require !== 'undefined'\n ? require('./frame-header.js')\n : null);\n jpeg.lossless.HuffmanTable =\n jpeg.lossless.HuffmanTable ||\n (typeof require !== 'undefined'\n ? require('./huffman-table.js')\n : null);\n jpeg.lossless.QuantizationTable =\n jpeg.lossless.QuantizationTable ||\n (typeof require !== 'undefined'\n ? require('./quantization-table.js')\n : null);\n jpeg.lossless.ScanComponent =\n jpeg.lossless.ScanComponent ||\n (typeof require !== 'undefined'\n ? require('./scan-component.js')\n : null);\n jpeg.lossless.ScanHeader =\n jpeg.lossless.ScanHeader ||\n (typeof require !== 'undefined'\n ? require('./scan-header.js')\n : null);\n jpeg.lossless.Utils =\n jpeg.lossless.Utils ||\n (typeof require !== 'undefined' ? require('./utils.js') : null);\n\n /*** Exports ***/\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg;\n }\n },\n {\n './component-spec.js': 1,\n './data-stream.js': 2,\n './decoder.js': 3,\n './frame-header.js': 4,\n './huffman-table.js': 5,\n './quantization-table.js': 7,\n './scan-component.js': 8,\n './scan-header.js': 9,\n './utils.js': 10,\n },\n ],\n 7: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n jpeg.lossless.Utils =\n jpeg.lossless.Utils ||\n (typeof require !== 'undefined' ? require('./utils.js') : null);\n\n /*** Constructor ***/\n jpeg.lossless.QuantizationTable =\n jpeg.lossless.QuantizationTable ||\n function () {\n this.precision = []; // Quantization precision 8 or 16\n this.tq = []; // 1: this table is presented\n this.quantTables = jpeg.lossless.Utils.createArray(4, 64); // Tables\n\n this.tq[0] = 0;\n this.tq[1] = 0;\n this.tq[2] = 0;\n this.tq[3] = 0;\n };\n /*** Static Methods ***/\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable = function (\n qtab,\n table\n ) {\n /*jslint bitwise: true */\n\n var i;\n\n for (i = 0; i < 8; i += 1) {\n qtab[table[0 * 8 + i]] *= 90;\n qtab[table[4 * 8 + i]] *= 90;\n qtab[table[2 * 8 + i]] *= 118;\n qtab[table[6 * 8 + i]] *= 49;\n qtab[table[5 * 8 + i]] *= 71;\n qtab[table[1 * 8 + i]] *= 126;\n qtab[table[7 * 8 + i]] *= 25;\n qtab[table[3 * 8 + i]] *= 106;\n }\n\n for (i = 0; i < 8; i += 1) {\n qtab[table[0 + 8 * i]] *= 90;\n qtab[table[4 + 8 * i]] *= 90;\n qtab[table[2 + 8 * i]] *= 118;\n qtab[table[6 + 8 * i]] *= 49;\n qtab[table[5 + 8 * i]] *= 71;\n qtab[table[1 + 8 * i]] *= 126;\n qtab[table[7 + 8 * i]] *= 25;\n qtab[table[3 + 8 * i]] *= 106;\n }\n\n for (i = 0; i < 64; i += 1) {\n qtab[i] >>= 6;\n }\n };\n\n /*** Prototype Methods ***/\n\n jpeg.lossless.QuantizationTable.prototype.read = function (\n data,\n table\n ) {\n /*jslint bitwise: true */\n\n var count = 0,\n length,\n temp,\n t,\n i;\n\n length = data.get16();\n count += 2;\n\n while (count < length) {\n temp = data.get8();\n count += 1;\n t = temp & 0x0f;\n\n if (t > 3) {\n throw new Error('ERROR: Quantization table ID > 3');\n }\n\n this.precision[t] = temp >> 4;\n\n if (this.precision[t] === 0) {\n this.precision[t] = 8;\n } else if (this.precision[t] === 1) {\n this.precision[t] = 16;\n } else {\n throw new Error('ERROR: Quantization table precision error');\n }\n\n this.tq[t] = 1;\n\n if (this.precision[t] === 8) {\n for (i = 0; i < 64; i += 1) {\n if (count > length) {\n throw new Error('ERROR: Quantization table format error');\n }\n\n this.quantTables[t][i] = data.get8();\n count += 1;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(\n this.quantTables[t],\n table\n );\n } else {\n for (i = 0; i < 64; i += 1) {\n if (count > length) {\n throw new Error('ERROR: Quantization table format error');\n }\n\n this.quantTables[t][i] = data.get16();\n count += 2;\n }\n\n jpeg.lossless.QuantizationTable.enhanceQuantizationTable(\n this.quantTables[t],\n table\n );\n }\n }\n\n if (count !== length) {\n throw new Error('ERROR: Quantization table error [count!=Lq]');\n }\n\n return 1;\n };\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.QuantizationTable;\n }\n },\n { './data-stream.js': 2, './utils.js': 10 },\n ],\n 8: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n\n /*** Constructor ***/\n jpeg.lossless.ScanComponent =\n jpeg.lossless.ScanComponent ||\n function () {\n this.acTabSel = 0; // AC table selector\n this.dcTabSel = 0; // DC table selector\n this.scanCompSel = 0; // Scan component selector\n };\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.ScanComponent;\n }\n },\n {},\n ],\n 9: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n jpeg.lossless.DataStream =\n jpeg.lossless.DataStream ||\n (typeof require !== 'undefined'\n ? require('./data-stream.js')\n : null);\n jpeg.lossless.ScanComponent =\n jpeg.lossless.ScanComponent ||\n (typeof require !== 'undefined'\n ? require('./scan-component.js')\n : null);\n\n /*** Constructor ***/\n jpeg.lossless.ScanHeader =\n jpeg.lossless.ScanHeader ||\n function () {\n this.ah = 0;\n this.al = 0;\n this.numComp = 0; // Number of components in the scan\n this.selection = 0; // Start of spectral or predictor selection\n this.spectralEnd = 0; // End of spectral selection\n this.components = [];\n };\n\n /*** Prototype Methods ***/\n\n jpeg.lossless.ScanHeader.prototype.read = function (data) {\n /*jslint bitwise: true */\n\n var count = 0,\n length,\n i,\n temp;\n\n length = data.get16();\n count += 2;\n\n this.numComp = data.get8();\n count += 1;\n\n for (i = 0; i < this.numComp; i += 1) {\n this.components[i] = new jpeg.lossless.ScanComponent();\n\n if (count > length) {\n throw new Error('ERROR: scan header format error');\n }\n\n this.components[i].scanCompSel = data.get8();\n count += 1;\n\n temp = data.get8();\n count += 1;\n\n this.components[i].dcTabSel = temp >> 4;\n this.components[i].acTabSel = temp & 0x0f;\n }\n\n this.selection = data.get8();\n count += 1;\n\n this.spectralEnd = data.get8();\n count += 1;\n\n temp = data.get8();\n this.ah = temp >> 4;\n this.al = temp & 0x0f;\n count += 1;\n\n if (count !== length) {\n throw new Error('ERROR: scan header format error [count!=Ns]');\n }\n\n return 1;\n };\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.ScanHeader;\n }\n },\n { './data-stream.js': 2, './scan-component.js': 8 },\n ],\n 10: [\n function (require, module, exports) {\n /*\n * Copyright (C) 2015 Michael Martinez\n * Changes: Added support for selection values 2-7, fixed minor bugs &\n * warnings, split into multiple class files, and general clean up.\n *\n * 08-25-2015: Helmut Dersch agreed to a license change from LGPL to MIT.\n */\n\n /*\n * Copyright (C) Helmut Dersch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n /*jslint browser: true, node: true */\n /*global require, module */\n /*** Imports ***/\n var jpeg = jpeg || {};\n\n jpeg.lossless = jpeg.lossless || {};\n\n /*** Constructor ***/\n jpeg.lossless.Utils = jpeg.lossless.Utils || {};\n\n /*** Static methods ***/\n\n // http://stackoverflow.com/questions/966225/how-can-i-create-a-two-dimensional-array-in-javascript\n jpeg.lossless.Utils.createArray = function (length) {\n var arr = new Array(length || 0),\n i = length;\n\n if (arguments.length > 1) {\n var args = Array.prototype.slice.call(arguments, 1);\n\n while (i--) {\n arr[length - 1 - i] = jpeg.lossless.Utils.createArray.apply(\n this,\n args\n );\n }\n }\n\n return arr;\n };\n\n // http://stackoverflow.com/questions/18638900/javascript-crc32\n jpeg.lossless.Utils.makeCRCTable = function () {\n var c;\n var crcTable = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;\n }\n crcTable[n] = c;\n }\n\n return crcTable;\n };\n\n jpeg.lossless.Utils.crc32 = function (dataView) {\n var uint8view = new Uint8Array(dataView.buffer);\n var crcTable =\n jpeg.lossless.Utils.crcTable ||\n (jpeg.lossless.Utils.crcTable =\n jpeg.lossless.Utils.makeCRCTable());\n var crc = 0 ^ -1;\n\n for (var i = 0; i < uint8view.length; i++) {\n crc = (crc >>> 8) ^ crcTable[(crc ^ uint8view[i]) & 0xff];\n }\n\n return (crc ^ -1) >>> 0;\n };\n\n /*** Exports ***/\n\n var moduleType = typeof module;\n\n if (moduleType !== 'undefined' && module.exports) {\n module.exports = jpeg.lossless.Utils;\n }\n },\n {},\n ],\n },\n {},\n [6]\n )(6);\n});\n"],"names":["f","exports","module","define","amd","window","global","self","this","jpeg","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","lossless","ComponentSpec","hSamp","quantTableSel","vSamp","DataStream","data","offset","buffer","Uint8Array","index","prototype","get16","value","get8","HuffmanTable","QuantizationTable","ScanHeader","FrameHeader","Utils","Decoder","numBytes","frame","huffTable","quantTable","scan","DU","createArray","HuffTab","IDCT_Source","nBlock","acTab","dcTab","qTab","marker","markerIndex","numComp","restartInterval","selection","xDim","yDim","xLoc","yLoc","outputData","restarting","mask","IDCT_P","TABLE","MAX_HUFFMAN_SUBTREE","MSB","RESTART_MARKER_BEGIN","RESTART_MARKER_END","decompress","decode","current","compN","mcuNum","scanNum","pred","temp","stream","read","readNumber","readApp","readComment","precision","components","parseInt","Math","ceil","getter","getValueRGB","setter","setValueRGB","output","outputRGB","getValue8","setValue8","outputSingle","getValue16","setValue16","selector","select2","select3","select4","select5","select6","select7","select1","scanComps","quantTables","scanCompSel","dcTabSel","acTabSel","dimX","dimY","ArrayBuffer","Uint16Array","decodeUnit","prev","decodeSingle","decodeRGB","compOffset","getPreviousX","getPreviousY","getPreviousXY","actab","dctab","qtab","ctrC","k","j","getHuffmanValue","getn","nRestart","table","input","PRED","result","isLastPixel","val","DataView","setInt16","Int16Array","count","sb","c","th","v","tc","buildHuffTable","tab","L","V","currentTable","ScanComponent","tq","enhanceQuantizationTable","ah","al","spectralEnd","arr","Array","arguments","args","slice","apply","makeCRCTable","crcTable","crc32","dataView","uint8view","crc"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(this.webpackChunk=this.webpackChunk||[]).push([[548],{548:function(e,r){var n={Unkown:0,Grayscale:1,AdobeRGB:2,RGB:3,CYMK:4};!function(){"use strict";var e=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,o=799,a=3406,t=2276,s=1567,i=3784,c=5793,l=2896;function f(e,r){for(var n,o,a=0,t=[],s=16;s>0&&!e[s-1];)s--;t.push({children:[],index:0});var i,c=t[0];for(n=0;n<s;n++){for(o=0;o<e[n];o++){for((c=t.pop()).children[c.index]=r[a];c.index>0;)c=t.pop();for(c.index++,t.push(c);t.length<=n;)t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i;a++}n+1<s&&(t.push(i={children:[],index:0}),c.children[c.index]=i.children,c=i)}return t[0].children}function h(e,r,n){return 64*((e.blocksPerLine+1)*r+n)}function u(r,n,o,a,t,s,i,c,l){o.precision,o.samplesPerLine,o.scanLines;var f=o.mcusPerLine,u=o.progressive,b=(o.maxH,o.maxV,n),v=0,m=0;function p(){if(m>0)return m--,v>>m&1;if(255==(v=r[n++])){var e=r[n++];if(e)throw"unexpected marker: "+(v<<8|e).toString(16)}return m=7,v>>>7}function d(e){for(var r,n=e;null!==(r=p());){if("number"==typeof(n=n[r]))return n;if("object"!=typeof n)throw"invalid huffman sequence"}return null}function k(e){for(var r=0;e>0;){var n=p();if(null===n)return;r=r<<1|n,e--}return r}function w(e){var r=k(e);return r>=1<<e-1?r:r+(-1<<e)+1}var C=0;var P,g=0;function y(e,r,n,o,a){var t=n%f;r(e,h(e,(n/f|0)*e.v+o,t*e.h+a))}function D(e,r,n){r(e,h(e,n/e.blocksPerLine|0,n%e.blocksPerLine))}var L,x,T,A,U,I,q=a.length;I=u?0===s?0===c?function(e,r){var n=d(e.huffmanTableDC),o=0===n?0:w(n)<<l;e.blockData[r]=e.pred+=o}:function(e,r){e.blockData[r]|=p()<<l}:0===c?function(r,n){if(C>0)C--;else for(var o=s,a=i;o<=a;){var t=d(r.huffmanTableAC),c=15&t,f=t>>4;if(0!==c){var h=e[o+=f];r.blockData[n+h]=w(c)*(1<<l),o++}else{if(f<15){C=k(f)+(1<<f)-1;break}o+=16}}}:function(r,n){for(var o=s,a=i,t=0;o<=a;){var c=e[o];switch(g){case 0:var f=d(r.huffmanTableAC),h=15&f;if(t=f>>4,0===h)t<15?(C=k(t)+(1<<t),g=4):(t=16,g=1);else{if(1!==h)throw"invalid ACn encoding";P=w(h),g=t?2:3}continue;case 1:case 2:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:0==--t&&(g=2==g?3:0);break;case 3:r.blockData[n+c]?r.blockData[n+c]+=p()<<l:(r.blockData[n+c]=P<<l,g=0);break;case 4:r.blockData[n+c]&&(r.blockData[n+c]+=p()<<l)}o++}4===g&&0==--C&&(g=0)}:function(r,n){var o=d(r.huffmanTableDC),a=0===o?0:w(o);r.blockData[n]=r.pred+=a;for(var t=1;t<64;){var s=d(r.huffmanTableAC),i=15&s,c=s>>4;if(0!==i){var l=e[t+=c];r.blockData[n+l]=w(i),t++}else{if(c<15)break;t+=16}}};var G,M,z,H,O=0;for(M=1==q?a[0].blocksPerLine*a[0].blocksPerColumn:f*o.mcusPerColumn,t||(t=M);O<M;){for(x=0;x<q;x++)a[x].pred=0;if(C=0,1==q)for(L=a[0],U=0;U<t;U++)D(L,I,O),O++;else for(U=0;U<t;U++){for(x=0;x<q;x++)for(z=(L=a[x]).h,H=L.v,T=0;T<H;T++)for(A=0;A<z;A++)y(L,I,O,T,A);O++}if(m=0,(G=r[n]<<8|r[n+1])<=65280)throw"marker was not found";if(!(G>=65488&&G<=65495))break;n+=2}return n-b}function b(e,n,f){var h,u,b,v,m,p,d,k,w,C,P=e.quantizationTable;for(C=0;C<64;C++)f[C]=e.blockData[n+C]*P[C];for(C=0;C<8;++C){var g=8*C;0!==f[1+g]||0!==f[2+g]||0!==f[3+g]||0!==f[4+g]||0!==f[5+g]||0!==f[6+g]||0!==f[7+g]?(h=c*f[0+g]+128>>8,u=c*f[4+g]+128>>8,b=f[2+g],v=f[6+g],m=l*(f[1+g]-f[7+g])+128>>8,k=l*(f[1+g]+f[7+g])+128>>8,p=f[3+g]<<4,d=f[5+g]<<4,w=h-u+1>>1,h=h+u+1>>1,u=w,w=b*i+v*s+128>>8,b=b*s-v*i+128>>8,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=h-v+1>>1,h=h+v+1>>1,v=w,w=u-b+1>>1,u=u+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+g]=h+k,f[7+g]=h-k,f[1+g]=u+d,f[6+g]=u-d,f[2+g]=b+p,f[5+g]=b-p,f[3+g]=v+m,f[4+g]=v-m):(w=c*f[0+g]+512>>10,f[0+g]=w,f[1+g]=w,f[2+g]=w,f[3+g]=w,f[4+g]=w,f[5+g]=w,f[6+g]=w,f[7+g]=w)}for(C=0;C<8;++C){var y=C;0!==f[8+y]||0!==f[16+y]||0!==f[24+y]||0!==f[32+y]||0!==f[40+y]||0!==f[48+y]||0!==f[56+y]?(h=c*f[0+y]+2048>>12,u=c*f[32+y]+2048>>12,b=f[16+y],v=f[48+y],m=l*(f[8+y]-f[56+y])+2048>>12,k=l*(f[8+y]+f[56+y])+2048>>12,p=f[24+y],d=f[40+y],w=h-u+1>>1,h=h+u+1>>1,u=w,w=b*i+v*s+2048>>12,b=b*s-v*i+2048>>12,v=w,w=m-d+1>>1,m=m+d+1>>1,d=w,w=k+p+1>>1,p=k-p+1>>1,k=w,w=h-v+1>>1,h=h+v+1>>1,v=w,w=u-b+1>>1,u=u+b+1>>1,b=w,w=m*t+k*a+2048>>12,m=m*a-k*t+2048>>12,k=w,w=p*o+d*r+2048>>12,p=p*r-d*o+2048>>12,d=w,f[0+y]=h+k,f[56+y]=h-k,f[8+y]=u+d,f[48+y]=u-d,f[16+y]=b+p,f[40+y]=b-p,f[24+y]=v+m,f[32+y]=v-m):(w=c*f[C+0]+8192>>14,f[0+y]=w,f[8+y]=w,f[16+y]=w,f[24+y]=w,f[32+y]=w,f[40+y]=w,f[48+y]=w,f[56+y]=w)}for(C=0;C<64;++C){var D=n+C,L=f[C];L=L<=-2056/e.bitConversion?0:L>=2024/e.bitConversion?255/e.bitConversion:L+2056/e.bitConversion>>4,e.blockData[D]=L}}function v(e,r){for(var n=r.blocksPerLine,o=r.blocksPerColumn,a=new Int32Array(64),t=0;t<o;t++)for(var s=0;s<n;s++){b(r,h(r,t,s),a)}return r.blockData}function m(e){return e<=0?0:e>=255?255:0|e}class p{}Object.setPrototypeOf(p.prototype,{load:function(e){var r=function(e){this.parse(e),this.onload&&this.onload()}.bind(this);if(e.indexOf("data:")>-1){for(var n=e.indexOf("base64,")+7,o=atob(e.substring(n)),a=new Uint8Array(o.length),t=o.length-1;t>=0;t--)a[t]=o.charCodeAt(t);r(o)}else{var s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onload=function(){var e=new Uint8Array(s.response);r(e)}.bind(this),s.send(null)}},parse:function(r){function o(){var e=r[c]<<8|r[c+1];return c+=2,e}function a(){var e=o(),n=r.subarray(c,c+e-2);return c+=n.length,n}function t(e){for(var r=Math.ceil(e.samplesPerLine/8/e.maxH),n=Math.ceil(e.scanLines/8/e.maxV),o=0;o<e.components.length;o++){J=e.components[o];var a=Math.ceil(Math.ceil(e.samplesPerLine/8)*J.h/e.maxH),t=Math.ceil(Math.ceil(e.scanLines/8)*J.v/e.maxV),s=r*J.h,i=64*(n*J.v)*(s+1);J.blockData=new Int16Array(i),J.blocksPerLine=a,J.blocksPerColumn=t}e.mcusPerLine=r,e.mcusPerColumn=n}var s,i,c=0,l=(r.length,null),h=null,b=[],m=[],p=[],d=o();if(65496!=d)throw"SOI not found";for(d=o();65497!=d;){var k,w;switch(d){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var C=a();65504===d&&74===C[0]&&70===C[1]&&73===C[2]&&70===C[3]&&0===C[4]&&(l={version:{major:C[5],minor:C[6]},densityUnits:C[7],xDensity:C[8]<<8|C[9],yDensity:C[10]<<8|C[11],thumbWidth:C[12],thumbHeight:C[13],thumbData:C.subarray(14,14+3*C[12]*C[13])}),65518===d&&65===C[0]&&100===C[1]&&111===C[2]&&98===C[3]&&101===C[4]&&0===C[5]&&(h={version:C[6],flags0:C[7]<<8|C[8],flags1:C[9]<<8|C[10],transformCode:C[11]});break;case 65499:for(var P=o()+c-2;c<P;){var g=r[c++],y=new Int32Array(64);if(g>>4){if(g>>4!=1)throw"DQT: invalid table spec";for(k=0;k<64;k++){y[e[k]]=o()}}else for(k=0;k<64;k++){y[e[k]]=r[c++]}b[15&g]=y}break;case 65472:case 65473:case 65474:if(s)throw"Only single frame JPEGs supported";o(),(s={}).extended=65473===d,s.progressive=65474===d,s.precision=r[c++],s.scanLines=o(),s.samplesPerLine=o(),s.components=[],s.componentIds={};var D,L=r[c++],x=0,T=0;for(S=0;S<L;S++){D=r[c];var A=r[c+1]>>4,U=15&r[c+1];x<A&&(x=A),T<U&&(T=U);var I=r[c+2];w=s.components.push({h:A,v:U,quantizationTable:b[I],quantizationTableId:I,bitConversion:255/((1<<s.precision)-1)}),s.componentIds[D]=w-1,c+=3}s.maxH=x,s.maxV=T,t(s);break;case 65476:var q=o();for(S=2;S<q;){var G=r[c++],M=new Uint8Array(16),z=0;for(k=0;k<16;k++,c++)z+=M[k]=r[c];var H=new Uint8Array(z);for(k=0;k<z;k++,c++)H[k]=r[c];S+=17+z,(G>>4?m:p)[15&G]=f(M,H)}break;case 65501:o(),i=o();break;case 65498:o();var O=r[c++],R=[];for(S=0;S<O;S++){var V=s.componentIds[r[c++]];J=s.components[V];var Y=r[c++];J.huffmanTableDC=p[Y>>4],J.huffmanTableAC=m[15&Y],R.push(J)}var j=r[c++],B=r[c++],X=r[c++],E=u(r,c,s,R,i,j,B,X>>4,15&X);c+=E;break;case 65535:255!==r[c]&&c--;break;default:if(255==r[c-3]&&r[c-2]>=192&&r[c-2]<=254){c-=3;break}throw"unknown JPEG marker "+d.toString(16)}d=o()}switch(this.width=s.samplesPerLine,this.height=s.scanLines,this.jfif=l,this.adobe=h,this.components=[],s.components.length){case 1:this.colorspace=n.Grayscale;break;case 3:this.adobe?this.colorspace=n.AdobeRGB:this.colorspace=n.RGB;break;case 4:this.colorspace=n.CYMK;break;default:this.colorspace=n.Unknown}for(var S=0;S<s.components.length;S++){var J;(J=s.components[S]).quantizationTable||null===J.quantizationTableId||(J.quantizationTable=b[J.quantizationTableId]),this.components.push({output:v(0,J),scaleX:J.h/s.maxH,scaleY:J.v/s.maxV,blocksPerLine:J.blocksPerLine,blocksPerColumn:J.blocksPerColumn,bitConversion:J.bitConversion})}},getData16:function(e,r){if(1!==this.components.length)throw"Unsupported color mode";var n,o,a,t,s,i,c=this.width/e,l=this.height/r,f=0,u=this.components.length,b=new Uint16Array(e*r*u),v=new Uint16Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<u;i++){for(var m,p,d,k=(n=this.components[i]).blocksPerLine,w=n.blocksPerColumn,C=k<<3,P=0,g=0;g<w;g++)for(var y=g<<3,D=0;D<k;D++){var L=h(n,g,D),x=(f=0,D<<3);for(m=0;m<8;m++){P=(y+m)*C;for(p=0;p<8;p++)v[P+x+p]=n.output[L+f++]}}for(o=n.scaleX*c,a=n.scaleY*l,f=i,s=0;s<r;s++)for(t=0;t<e;t++)d=(0|s*a)*C+(0|t*o),b[f]=v[d],f+=u}return b},getData:function(e,r){var n,o,a,t,s,i,c,l,f,u,b,v,p,d,k,w=this.width/e,C=this.height/r,P=0,g=this.components.length,y=e*r*g,D=new Uint8Array(y),L=new Uint8Array((this.components[0].blocksPerLine<<3)*this.components[0].blocksPerColumn*8);for(i=0;i<g;i++){for(var x,T,A,U=(n=this.components[i]).blocksPerLine,I=n.blocksPerColumn,q=U<<3,G=0,M=0;M<I;M++)for(var z=M<<3,H=0;H<U;H++){var O=h(n,M,H),R=(P=0,H<<3);for(x=0;x<8;x++){G=(z+x)*q;for(T=0;T<8;T++)L[G+R+T]=n.output[O+P++]*n.bitConversion}}for(o=n.scaleX*w,a=n.scaleY*C,P=i,s=0;s<r;s++)for(t=0;t<e;t++)A=(0|s*a)*q+(0|t*o),D[P]=L[A],P+=g}switch(g){case 1:case 2:break;case 3:if(k=!0,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],v=m(c-179.456+1.402*(f=D[i+2])),p=m(c+135.459-.344*l-.714*f),d=m(c-226.816+1.772*l),D[i]=v,D[i+1]=p,D[i+2]=d;break;case 4:if(!this.adobe)throw"Unsupported color mode (4 components)";if(k=!1,this.adobe&&this.adobe.transformCode?k=!0:void 0!==this.colorTransform&&(k=!!this.colorTransform),k)for(i=0;i<y;i+=g)c=D[i],l=D[i+1],u=m(434.456-c-1.402*(f=D[i+2])),b=m(119.541-c+.344*l+.714*f),c=m(481.816-c-1.772*l),D[i]=u,D[i+1]=b,D[i+2]=c;break;default:throw"Unsupported color mode"}return D}})}()}}]);
|
|
2
|
+
//# sourceMappingURL=548.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"548.min.js","mappings":"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","sources":["webpack:///./codecs/jpeg.js"],"sourcesContent":["// jshint ignore: start\n/* eslint-disable */\n\n/*\n Copyright 2011 notmasteryet\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n// (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n// - The JFIF specification can be found in the JPEG File Interchange Format\n// (www.w3.org/Graphics/JPEG/jfif3.pdf)\n// - The Adobe Application-Specific JPEG markers in the Supporting the DCT Filters\n// in PostScript Level 2, Technical Note #5116\n// (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n\nvar ColorSpace = { Unkown: 0, Grayscale: 1, AdobeRGB: 2, RGB: 3, CYMK: 4 };\nvar JpegImage = (function jpegImage() {\n 'use strict';\n var dctZigZag = new Int32Array([\n 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36,\n 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61,\n 54, 47, 55, 62, 63,\n ]);\n\n var dctCos1 = 4017; // cos(pi/16)\n var dctSin1 = 799; // sin(pi/16)\n var dctCos3 = 3406; // cos(3*pi/16)\n var dctSin3 = 2276; // sin(3*pi/16)\n var dctCos6 = 1567; // cos(6*pi/16)\n var dctSin6 = 3784; // sin(6*pi/16)\n var dctSqrt2 = 5793; // sqrt(2)\n var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0,\n code = [],\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) length--;\n code.push({ children: [], index: 0 });\n var p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive\n ) {\n var precision = frame.precision;\n var samplesPerLine = frame.samplesPerLine;\n var scanLines = frame.scanLines;\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n var maxH = frame.maxH,\n maxV = frame.maxV;\n\n var startOffset = offset,\n bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData == 0xff) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw (\n 'unexpected marker: ' + ((bitsData << 8) | nextByte).toString(16)\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n var bit;\n while ((bit = readBit()) !== null) {\n node = node[bit];\n if (typeof node === 'number') return node;\n if (typeof node !== 'object') throw 'invalid huffman sequence';\n }\n return null;\n }\n\n function receive(length) {\n var n = 0;\n while (length > 0) {\n var bit = readBit();\n if (bit === null) return;\n n = (n << 1) | bit;\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n var n = receive(length);\n if (n >= 1 << (length - 1)) return n;\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[offset] = component.pred += diff;\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) break;\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[offset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, offset) {\n component.blockData[offset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n function decodeACFirst(component, offset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart,\n e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, offset) {\n var k = spectralStart,\n e = spectralEnd,\n r = 0;\n while (k <= e) {\n var z = dctZigZag[k];\n switch (successiveACState) {\n case 0: // initial state\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) throw 'invalid ACn encoding';\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n } else {\n r--;\n if (r === 0) successiveACState = successiveACState == 2 ? 3 : 0;\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n } else {\n component.blockData[offset + z] =\n successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += readBit() << successive;\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) successiveACState = 0;\n }\n }\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0)\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n else decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0,\n marker;\n var mcuExpected;\n if (componentsLength == 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n if (!resetInterval) {\n resetInterval = mcuExpected;\n }\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength == 1) {\n component = components[0];\n for (n = 0; n < resetInterval; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < resetInterval; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n\n // find marker\n bitsCount = 0;\n marker = (data[offset] << 8) | data[offset + 1];\n if (marker <= 0xff00) {\n throw 'marker was not found';\n }\n\n if (marker >= 0xffd0 && marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n }\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // \"Practical Fast 1-D DCT Algorithms with 11 Multiplications\",\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable;\n var v0, v1, v2, v3, v4, v5, v6, v7, t;\n var i;\n\n // dequant\n for (i = 0; i < 64; i++) {\n p[i] = component.blockData[blockBufferOffset + i] * qt[i];\n }\n\n // inverse DCT on rows\n for (i = 0; i < 8; ++i) {\n var row = 8 * i;\n\n // check for all-zero AC coefficients\n if (\n p[1 + row] === 0 &&\n p[2 + row] === 0 &&\n p[3 + row] === 0 &&\n p[4 + row] === 0 &&\n p[5 + row] === 0 &&\n p[6 + row] === 0 &&\n p[7 + row] === 0\n ) {\n t = (dctSqrt2 * p[0 + row] + 512) >> 10;\n p[0 + row] = t;\n p[1 + row] = t;\n p[2 + row] = t;\n p[3 + row] = t;\n p[4 + row] = t;\n p[5 + row] = t;\n p[6 + row] = t;\n p[7 + row] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 + row] + 128) >> 8;\n v1 = (dctSqrt2 * p[4 + row] + 128) >> 8;\n v2 = p[2 + row];\n v3 = p[6 + row];\n v4 = (dctSqrt1d2 * (p[1 + row] - p[7 + row]) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p[1 + row] + p[7 + row]) + 128) >> 8;\n v5 = p[3 + row] << 4;\n v6 = p[5 + row] << 4;\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 + row] = v0 + v7;\n p[7 + row] = v0 - v7;\n p[1 + row] = v1 + v6;\n p[6 + row] = v1 - v6;\n p[2 + row] = v2 + v5;\n p[5 + row] = v2 - v5;\n p[3 + row] = v3 + v4;\n p[4 + row] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (i = 0; i < 8; ++i) {\n var col = i;\n\n // check for all-zero AC coefficients\n if (\n p[1 * 8 + col] === 0 &&\n p[2 * 8 + col] === 0 &&\n p[3 * 8 + col] === 0 &&\n p[4 * 8 + col] === 0 &&\n p[5 * 8 + col] === 0 &&\n p[6 * 8 + col] === 0 &&\n p[7 * 8 + col] === 0\n ) {\n t = (dctSqrt2 * p[i + 0] + 8192) >> 14;\n p[0 * 8 + col] = t;\n p[1 * 8 + col] = t;\n p[2 * 8 + col] = t;\n p[3 * 8 + col] = t;\n p[4 * 8 + col] = t;\n p[5 * 8 + col] = t;\n p[6 * 8 + col] = t;\n p[7 * 8 + col] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p[0 * 8 + col] + 2048) >> 12;\n v1 = (dctSqrt2 * p[4 * 8 + col] + 2048) >> 12;\n v2 = p[2 * 8 + col];\n v3 = p[6 * 8 + col];\n v4 = (dctSqrt1d2 * (p[1 * 8 + col] - p[7 * 8 + col]) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p[1 * 8 + col] + p[7 * 8 + col]) + 2048) >> 12;\n v5 = p[3 * 8 + col];\n v6 = p[5 * 8 + col];\n\n // stage 3\n t = (v0 - v1 + 1) >> 1;\n v0 = (v0 + v1 + 1) >> 1;\n v1 = t;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n t = (v4 - v6 + 1) >> 1;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = t;\n t = (v7 + v5 + 1) >> 1;\n v5 = (v7 - v5 + 1) >> 1;\n v7 = t;\n\n // stage 2\n t = (v0 - v3 + 1) >> 1;\n v0 = (v0 + v3 + 1) >> 1;\n v3 = t;\n t = (v1 - v2 + 1) >> 1;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = t;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[0 * 8 + col] = v0 + v7;\n p[7 * 8 + col] = v0 - v7;\n p[1 * 8 + col] = v1 + v6;\n p[6 * 8 + col] = v1 - v6;\n p[2 * 8 + col] = v2 + v5;\n p[5 * 8 + col] = v2 - v5;\n p[3 * 8 + col] = v3 + v4;\n p[4 * 8 + col] = v3 - v4;\n }\n\n // convert to 8-bit integers\n for (i = 0; i < 64; ++i) {\n var index = blockBufferOffset + i;\n var q = p[i];\n q =\n q <= -2056 / component.bitConversion\n ? 0\n : q >= 2024 / component.bitConversion\n ? 255 / component.bitConversion\n : (q + 2056 / component.bitConversion) >> 4;\n component.blockData[index] = q;\n }\n }\n\n function buildComponentData(frame, component) {\n var lines = [];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n var computationBuffer = new Int32Array(64);\n\n var i,\n j,\n ll = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n }\n\n function clampToUint8(a) {\n return a <= 0 ? 0 : a >= 255 ? 255 : a | 0;\n }\n\n // create a JPEG Image class\n class JpegImage {}\n\n // setting up all the prototype functions\n // javascript new version of setting up prototype functions\n Object.setPrototypeOf(JpegImage.prototype, {\n load: function load(path) {\n var handleData = function (data) {\n this.parse(data);\n if (this.onload) this.onload();\n }.bind(this);\n\n if (path.indexOf('data:') > -1) {\n var offset = path.indexOf('base64,') + 7;\n var data = atob(path.substring(offset));\n var arr = new Uint8Array(data.length);\n for (var i = data.length - 1; i >= 0; i--) {\n arr[i] = data.charCodeAt(i);\n }\n handleData(data);\n } else {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, true);\n xhr.responseType = 'arraybuffer';\n xhr.onload = function () {\n // TODO catch parse error\n var data = new Uint8Array(xhr.response);\n handleData(data);\n }.bind(this);\n xhr.send(null);\n }\n },\n parse: function parse(data) {\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n\n function readDataBlock() {\n var length = readUint16();\n var array = data.subarray(offset, offset + length - 2);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n var blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n var blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0,\n length = data.length;\n var jfif = null;\n var adobe = null;\n var pixels = null;\n var frame, resetInterval;\n var quantizationTables = [];\n var huffmanTablesAC = [],\n huffmanTablesDC = [];\n var fileMarker = readUint16();\n if (fileMarker != 0xffd8) {\n // SOI (Start of Image)\n throw 'SOI not found';\n }\n\n fileMarker = readUint16();\n while (fileMarker != 0xffd9) {\n // EOI (End of image)\n var i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xffe0) {\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n // 'JFIF\\x00'\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65 &&\n appData[5] === 0\n ) {\n // 'Adobe\\x00'\n adobe = {\n version: appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Int32Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n var z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n //16 bit\n for (j = 0; j < 64; j++) {\n var zz = dctZigZag[j];\n tableData[zz] = readUint16();\n }\n } else throw 'DQT: invalid table spec';\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw 'Only single frame JPEGs supported';\n }\n readUint16(); // skip data length\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++],\n componentId;\n var maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n if (maxH < h) maxH = h;\n if (maxV < v) maxV = v;\n var qId = data[offset + 2];\n l = frame.components.push({\n h: h,\n v: v,\n quantizationTable: quantizationTables[qId],\n quantizationTableId: qId,\n bitConversion: 255 / ((1 << frame.precision) - 1),\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength; ) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++)\n codeLengthSum += codeLengths[j] = data[offset];\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++)\n huffmanValues[j] = data[offset];\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xffda: // SOS (Start of Scan)\n var scanLength = readUint16();\n var selectorsCount = data[offset++];\n var components = [],\n component;\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(\n data,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15\n );\n offset += processed;\n break;\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n default:\n if (\n data[offset - 3] == 0xff &&\n data[offset - 2] >= 0xc0 &&\n data[offset - 2] <= 0xfe\n ) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw 'unknown JPEG marker ' + fileMarker.toString(16);\n }\n fileMarker = readUint16();\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n switch (frame.components.length) {\n case 1:\n this.colorspace = ColorSpace.Grayscale;\n break;\n case 3:\n if (this.adobe) this.colorspace = ColorSpace.AdobeRGB;\n else this.colorspace = ColorSpace.RGB;\n break;\n case 4:\n this.colorspace = ColorSpace.CYMK;\n break;\n default:\n this.colorspace = ColorSpace.Unknown;\n }\n for (var i = 0; i < frame.components.length; i++) {\n var component = frame.components[i];\n if (\n !component.quantizationTable &&\n component.quantizationTableId !== null\n )\n component.quantizationTable =\n quantizationTables[component.quantizationTableId];\n this.components.push({\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n bitConversion: component.bitConversion,\n });\n }\n },\n getData16: function getData16(width, height) {\n if (this.components.length !== 1) throw 'Unsupported color mode';\n var scaleX = this.width / width,\n scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint16Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint16Array(\n (this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn *\n 8\n );\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j,\n k,\n ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(\n component,\n blockRow,\n blockCol\n );\n var offset = 0,\n sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++];\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n return data;\n },\n getData: function getData(width, height) {\n var scaleX = this.width / width,\n scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY;\n var x, y, i;\n var offset = 0;\n var Y, Cb, Cr, K, C, M, Ye, R, G, B;\n var colorTransform;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8Array(dataLength);\n var componentLine;\n\n // lineData is reused for all components. Assume first component is\n // the biggest\n var lineData = new Uint8Array(\n (this.components[0].blocksPerLine << 3) *\n this.components[0].blocksPerColumn *\n 8\n );\n\n // First construct image data ...\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var samplesPerLine = blocksPerLine << 3;\n\n var j,\n k,\n ll = 0;\n var lineOffset = 0;\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n var scanLine = blockRow << 3;\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var bufferOffset = getBlockBufferOffset(\n component,\n blockRow,\n blockCol\n );\n var offset = 0,\n sample = blockCol << 3;\n for (j = 0; j < 8; j++) {\n var lineOffset = (scanLine + j) * samplesPerLine;\n for (k = 0; k < 8; k++) {\n lineData[lineOffset + sample + k] =\n component.output[bufferOffset + offset++] *\n component.bitConversion;\n }\n }\n }\n }\n\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n\n var cx, cy;\n var index;\n for (y = 0; y < height; y++) {\n for (x = 0; x < width; x++) {\n cy = 0 | (y * componentScaleY);\n cx = 0 | (x * componentScaleX);\n index = cy * samplesPerLine + cx;\n data[offset] = lineData[index];\n offset += numComponents;\n }\n }\n }\n\n // ... then transform colors, if necessary\n switch (numComponents) {\n case 1:\n case 2:\n break;\n // no color conversion for one or two compoenents\n\n case 3:\n // The default transform for three components is true\n colorTransform = true;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode) colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n R = clampToUint8(Y - 179.456 + 1.402 * Cr);\n G = clampToUint8(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);\n B = clampToUint8(Y - 226.816 + 1.772 * Cb);\n\n data[i] = R;\n data[i + 1] = G;\n data[i + 2] = B;\n }\n }\n break;\n case 4:\n if (!this.adobe) throw 'Unsupported color mode (4 components)';\n // The default transform for four components is false\n colorTransform = false;\n // The adobe transform marker overrides any previous setting\n if (this.adobe && this.adobe.transformCode) colorTransform = true;\n else if (typeof this.colorTransform !== 'undefined')\n colorTransform = !!this.colorTransform;\n\n if (colorTransform) {\n for (i = 0; i < dataLength; i += numComponents) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n\n C = clampToUint8(434.456 - Y - 1.402 * Cr);\n M = clampToUint8(119.541 - Y + 0.344 * Cb + 0.714 * Cr);\n Y = clampToUint8(481.816 - Y - 1.772 * Cb);\n\n data[i] = C;\n data[i + 1] = M;\n data[i + 2] = Y;\n // K is unchanged\n }\n }\n break;\n default:\n throw 'Unsupported color mode';\n }\n return data;\n },\n });\n\n return JpegImage;\n})();\n"],"names":["ColorSpace","Unkown","Grayscale","AdobeRGB","RGB","CYMK","dctZigZag","Int32Array","dctCos1","dctSin1","dctCos3","dctSin3","dctCos6","dctSin6","dctSqrt2","dctSqrt1d2","buildHuffmanTable","codeLengths","values","i","j","k","code","length","push","children","index","q","p","pop","getBlockBufferOffset","component","row","col","blocksPerLine","decodeScan","data","offset","frame","components","resetInterval","spectralStart","spectralEnd","successivePrev","successive","precision","samplesPerLine","scanLines","mcusPerLine","progressive","startOffset","maxH","maxV","bitsData","bitsCount","readBit","nextByte","toString","decodeHuffman","tree","bit","node","receive","n","receiveAndExtend","eobrun","successiveACNextValue","successiveACState","decodeMcu","decode","mcu","mcuCol","v","h","decodeBlock","decodeFn","componentsLength","t","huffmanTableDC","diff","blockData","pred","e","rs","huffmanTableAC","s","r","z","marker","mcuExpected","blocksPerColumn","mcusPerColumn","quantizeAndInverse","blockBufferOffset","v0","v1","v2","v3","v4","v5","v6","v7","qt","quantizationTable","bitConversion","buildComponentData","computationBuffer","blockRow","blockCol","clampToUint8","a","JpegImage","Object","setPrototypeOf","prototype","load","path","handleData","this","parse","onload","bind","indexOf","atob","substring","arr","Uint8Array","charCodeAt","xhr","XMLHttpRequest","open","responseType","response","send","readUint16","value","readDataBlock","array","subarray","prepareComponents","Math","ceil","blocksPerLineForMcu","blocksBufferSize","Int16Array","jfif","adobe","quantizationTables","huffmanTablesAC","huffmanTablesDC","fileMarker","l","appData","version","major","minor","densityUnits","xDensity","yDensity","thumbWidth","thumbHeight","thumbData","flags0","flags1","transformCode","quantizationTablesEnd","quantizationTableSpec","tableData","extended","componentIds","componentId","componentsCount","qId","quantizationTableId","huffmanLength","huffmanTableSpec","codeLengthSum","huffmanValues","selectorsCount","componentIndex","tableSpec","successiveApproximation","processed","width","height","colorspace","Unknown","output","scaleX","scaleY","getData16","componentScaleX","componentScaleY","x","y","numComponents","Uint16Array","lineData","lineOffset","scanLine","bufferOffset","sample","getData","Y","Cb","Cr","C","M","R","G","B","colorTransform","dataLength"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("918",[],t):"object"==typeof exports?exports[918]=t():e[918]=t()}(this,(()=>(()=>{var e,t,n,r,o={760:(e,t,n)=>{"use strict";var r=n(635);const o=async function(e,t){let n=t.buffer,r=t.byteOffset;const o=t.length;return 16===e.bitsAllocated?(r%2&&(n=n.slice(r),r=0),0===e.pixelRepresentation?e.pixelData=new Uint16Array(n,r,o/2):e.pixelData=new Int16Array(n,r,o/2)):8===e.bitsAllocated||1===e.bitsAllocated?e.pixelData=t:32===e.bitsAllocated&&(r%2&&(n=n.slice(r),r=0),e.pixelData=new Float32Array(n,r,o/4)),e};const i=async function(e,t){if(16===e.bitsAllocated){let r=t.buffer,o=t.byteOffset;const i=t.length;o%2&&(r=r.slice(o),o=0),0===e.pixelRepresentation?e.pixelData=new Uint16Array(r,o,i/2):e.pixelData=new Int16Array(r,o,i/2);for(let t=0;t<e.pixelData.length;t++)e.pixelData[t]=(255&(n=e.pixelData[t]))<<8|n>>8&255}else 8===e.bitsAllocated&&(e.pixelData=t);var n;return e};const s=async function(e,t){if(8===e.bitsAllocated)return e.planarConfiguration?function(e,t){const n=t,r=e.rows*e.columns,o=new ArrayBuffer(r*e.samplesPerPixel),i=new DataView(n.buffer,n.byteOffset),s=new Int8Array(n.buffer,n.byteOffset),a=new Int8Array(o);let c=0;const l=i.getInt32(0,!0);for(let e=0;e<l;++e){c=e*r;let t=i.getInt32(4*(e+1),!0),o=i.getInt32(4*(e+2),!0);0===o&&(o=n.length);const f=r*l;for(;t<o;){const e=s[t++];if(e>=0&&e<=127)for(let n=0;n<e+1&&c<f;++n)a[c]=s[t++],c++;else if(e<=-1&&e>=-127){const n=s[t++];for(let t=0;t<1-e&&c<f;++t)a[c]=n,c++}}}return e.pixelData=new Uint8Array(o),e}(e,t):function(e,t){const n=t,r=e.rows*e.columns,o=new ArrayBuffer(r*e.samplesPerPixel),i=new DataView(n.buffer,n.byteOffset),s=new Int8Array(n.buffer,n.byteOffset),a=new Int8Array(o);let c=0;const l=i.getInt32(0,!0);for(let t=0;t<l;++t){c=t;let o=i.getInt32(4*(t+1),!0),f=i.getInt32(4*(t+2),!0);0===f&&(f=n.length);const d=r*l;for(;o<f;){const t=s[o++];if(t>=0&&t<=127)for(let n=0;n<t+1&&c<d;++n)a[c]=s[o++],c+=e.samplesPerPixel;else if(t<=-1&&t>=-127){const n=s[o++];for(let r=0;r<1-t&&c<d;++r)a[c]=n,c+=e.samplesPerPixel}}}return e.pixelData=new Uint8Array(o),e}(e,t);if(16===e.bitsAllocated)return function(e,t){const n=t,r=e.rows*e.columns,o=new ArrayBuffer(r*e.samplesPerPixel*2),i=new DataView(n.buffer,n.byteOffset),s=new Int8Array(n.buffer,n.byteOffset),a=new Int8Array(o),c=i.getInt32(0,!0);for(let e=0;e<c;++e){let t=0;const o=0===e?1:0;let c=i.getInt32(4*(e+1),!0),l=i.getInt32(4*(e+2),!0);for(0===l&&(l=n.length);c<l;){const e=s[c++];if(e>=0&&e<=127)for(let n=0;n<e+1&&t<r;++n)a[2*t+o]=s[c++],t++;else if(e<=-1&&e>=-127){const n=s[c++];for(let i=0;i<1-e&&t<r;++i)a[2*t+o]=n,t++}}}0===e.pixelRepresentation?e.pixelData=new Uint16Array(o):e.pixelData=new Int16Array(o);return e}(e,t);throw new Error("unsupported pixel format for RLE")};var a=n(851),c=n.n(a);const l=new URL(n(427),n.b),f={codec:void 0,decoder:void 0};const d=async function(e,t){await function(){if(f.codec)return Promise.resolve();const e=c()({locateFile:e=>e.endsWith(".wasm")?l.toString():e});return new Promise(((t,n)=>{e.then((e=>{f.codec=e,f.decoder=new e.JPEGDecoder,t()}),n)}))}();const n=f.decoder;n.getEncodedBuffer(e.length).set(e),n.decode();const r=n.getFrameInfo(),o=n.getDecodedBuffer(),i={columns:r.width,rows:r.height,bitsPerPixel:r.bitsPerSample,signed:t.signed,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:r.componentCount},s=function(e,t){if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(r,o),a={frameInfo:r};return{...t,pixelData:s,imageInfo:i,encodeOptions:a,...a,...i}},g={JpegImage:void 0,decodeConfig:{}};const u=async function(e,t){var r;if(await(g.decodeConfig=r,g.JpegImage?Promise.resolve():new Promise(((e,t)=>{n.e(548).then(n.t.bind(n,548,23)).then((({JpegImage:t})=>{g.JpegImage=t,e()}),t)}))),void 0===g.JpegImage)throw new Error("No JPEG Baseline decoder loaded");const o=new g.JpegImage;return o.parse(t),o.colorTransform=!1,8===e.bitsAllocated?(e.pixelData=o.getData(e.columns,e.rows),e):16===e.bitsAllocated?(e.pixelData=o.getData16(e.columns,e.rows),e):void 0},p={jpeg:void 0,decodeConfig:{}};const b=async function(e,t){var r;if(await(p.decodeConfig=r,p.jpeg?Promise.resolve():new Promise(((e,t)=>{n.e(54).then(n.t.bind(n,54,23)).then((t=>{p.jpeg=t,e()}),t)}))),void 0===p.jpeg||void 0===p.jpeg.lossless||void 0===p.jpeg.lossless.Decoder)throw new Error("No JPEG Lossless decoder loaded");const o=e.bitsAllocated<=8?1:2,i=t.buffer,s=(new p.jpeg.lossless.Decoder).decode(i,t.byteOffset,t.length,o);return 0===e.pixelRepresentation?16===e.bitsAllocated?(e.pixelData=new Uint16Array(s.buffer),e):(e.pixelData=new Uint8Array(s.buffer),e):(e.pixelData=new Int16Array(s.buffer),e)};var y=n(37),m=n.n(y);const h=new URL(n(69),n.b),w={codec:void 0,decoder:void 0,decodeConfig:{}};const x=async function(e,t){try{await function(e){if(w.decodeConfig=e,w.codec)return Promise.resolve();const t=m()({locateFile:e=>e.endsWith(".wasm")?h.toString():e});return new Promise(((e,n)=>{t.then((t=>{w.codec=t,w.decoder=new t.JpegLSDecoder,e()}),n)}))}();const n=w.decoder;n.getEncodedBuffer(e.length).set(e),n.decode();const r=n.getFrameInfo(),o=n.getInterleaveMode(),i=n.getNearLossless(),s=n.getDecodedBuffer(),a={columns:r.width,rows:r.height,bitsPerPixel:r.bitsPerSample,signed:t.signed,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:r.componentCount},c=function(e,t,n){if(e.bitsPerSample>8)return n?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(n)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(r,s,t.signed),l={nearLossless:i,interleaveMode:o,frameInfo:r};return{...t,pixelData:c,imageInfo:a,encodeOptions:l,...l,...a}}catch(e){throw"number"==typeof(n=e)?w.codec.getExceptionMessage(n):n}var n};var P=n(272),v=n.n(P);const A=new URL(n(699),n.b),D={codec:void 0,decoder:void 0,decodeConfig:{}};const I=async function(e,t){await function(e){if(D.decodeConfig=e,D.codec)return Promise.resolve();const t=v()({locateFile:e=>e.endsWith(".wasm")?A.toString():e});return new Promise(((e,n)=>{t.then((t=>{D.codec=t,D.decoder=new t.J2KDecoder,e()}),n)}))}();const n=D.decoder,r=n.getEncodedBuffer(e.length);r.set(e),n.decode();const o=n.getFrameInfo(),i=n.getDecodedBuffer();new Uint8Array(i.length).set(i);const s=`x: ${n.getImageOffset().x}, y: ${n.getImageOffset().y}`,a=n.getNumDecompositions(),c=n.getNumLayers(),l=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][n.getProgressionOrder()+1],f=n.getIsReversible(),d=`${n.getBlockDimensions().width} x ${n.getBlockDimensions().height}`,g=`${n.getTileSize().width} x ${n.getTileSize().height}`,u=`${n.getTileOffset().x}, ${n.getTileOffset().y}`,p=n.getColorSpace(),b=`${i.length.toLocaleString()} bytes`,y=`${(i.length/r.length).toFixed(2)}:1`,m={columns:o.width,rows:o.height,bitsPerPixel:o.bitsPerSample,signed:o.isSigned,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:o.componentCount},h=function(e,t){if(e.bitsPerSample>8)return e.isSigned?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(o,i),w={imageOffset:s,numDecompositions:a,numLayers:c,progessionOrder:l,reversible:f,blockDimensions:d,tileSize:g,tileOffset:u,colorTransform:p,decodedSize:b,compressionRatio:y};return{...t,pixelData:h,imageInfo:m,encodeOptions:w,...w,...m}};var O=n(430),S=n.n(O);const L=new URL(n(813),n.b),R={codec:void 0,decoder:void 0,decodeConfig:{}};const C=async function(e,t){await function(e){if(R.decodeConfig=e,R.codec)return Promise.resolve();const t=S()({locateFile:e=>e.endsWith(".wasm")?L.toString():e});return new Promise(((e,n)=>{t.then((t=>{R.codec=t,R.decoder=new t.HTJ2KDecoder,e()}),n)}))}();const n=new R.codec.HTJ2KDecoder,r=n.getEncodedBuffer(e.length);r.set(e);const o=t.decodeLevel||0;n.decodeSubResolution(o);const i=n.getFrameInfo();if(t.decodeLevel>0){const{width:e,height:n}=function(e,t,n){const r={width:t,height:n};for(;e>0;)r.width=Math.ceil(r.width/2),r.height=Math.ceil(r.height/2),e--;return r}(t.decodeLevel,i.width,i.height);i.width=e,i.height=n}const s=n.getDecodedBuffer();new Uint8Array(s.length).set(s);const a=`x: ${n.getImageOffset().x}, y: ${n.getImageOffset().y}`,c=n.getNumDecompositions(),l=n.getNumLayers(),f=["unknown","LRCP","RLCP","RPCL","PCRL","CPRL"][n.getProgressionOrder()+1],d=n.getIsReversible(),g=`${n.getBlockDimensions().width} x ${n.getBlockDimensions().height}`,u=`${n.getTileSize().width} x ${n.getTileSize().height}`,p=`${n.getTileOffset().x}, ${n.getTileOffset().y}`,b=`${s.length.toLocaleString()} bytes`,y=`${(s.length/r.length).toFixed(2)}:1`,m={columns:i.width,rows:i.height,bitsPerPixel:i.bitsPerSample,signed:i.isSigned,bytesPerPixel:t.bytesPerPixel,componentsPerPixel:i.componentCount};let h=function(e,t){if(e.bitsPerSample>8)return e.isSigned?new Int16Array(t.buffer,t.byteOffset,t.byteLength/2):new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2);if(e.isSigned)return new Int8Array(t.buffer,t.byteOffset,t.byteLength);return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(i,s);const{buffer:w,byteOffset:x,byteLength:P}=h,v=w.slice(x,x+P);h=new h.constructor(v);const A={imageOffset:a,numDecompositions:c,numLayers:l,progessionOrder:f,reversible:d,blockDimensions:g,tileSize:u,tileOffset:p,decodedSize:b,compressionRatio:y};return{...t,pixelData:h,imageInfo:m,encodeOptions:A,...A,...m}};const B=function(e){let t,n=e[0],r=e[0];const o=e.length;for(let i=1;i<o;i++)t=e[i],n=Math.min(n,t),r=Math.max(r,t);return{min:n,max:r}};const T={bilinear:function(e,t){const{rows:n,columns:r,data:o}=e,{rows:i,columns:s,data:a}=t,c=[],l=[],f=[];for(let e=0;e<s;e++){const t=e*(r-1)/(s-1);c[e]=Math.floor(t),l[e]=Math.min(c[e]+1,r-1),f[e]=t-c[e]}for(let e=0;e<i;e++){const t=e*(n-1)/(i-1),d=Math.floor(t)*r,g=Math.min(d+r,(n-1)*r),u=t-Math.floor(t),p=1-u,b=e*s;for(let e=0;e<s;e++){const t=o[d+c[e]],n=o[d+l[e]],r=o[g+c[e]],i=o[g+l[e]],s=1-f[e];a[b+e]=(t*s+n*f[e])*p+(r*s+i*f[e])*u}}return a},replicate:function(e,t){const{rows:n,columns:r,pixelData:o,samplesPerPixel:i=1}=e,{rows:s,columns:a,pixelData:c}=t,l=[];for(let e=0;e<a;e++){const t=e*(r-1)/(a-1);l[e]=Math.floor(t)*i}for(let e=0;e<s;e++){const t=e*(n-1)/(s-1),f=Math.floor(t)*r*i,d=e*a;for(let e=0;e<a;e++)for(let t=0;t<i;t++)c[d+e+t]=o[f+l[e]+t]}return c}};async function j(e,t,n,r,a,c){const l=(new Date).getTime();let f,g=null;switch(t){case"1.2.840.10008.1.2":case"1.2.840.10008.1.2.1":case"1.2.840.10008.1.2.1.99":g=o(e,n);break;case"1.2.840.10008.1.2.2":g=i(e,n);break;case"1.2.840.10008.1.2.5":g=s(e,n);break;case"1.2.840.10008.1.2.4.50":f={...e},g=d(n,f);break;case"1.2.840.10008.1.2.4.51":g=u(e,n);break;case"1.2.840.10008.1.2.4.57":case"1.2.840.10008.1.2.4.70":g=b(e,n);break;case"1.2.840.10008.1.2.4.80":case"1.2.840.10008.1.2.4.81":f={signed:1===e.pixelRepresentation,bytesPerPixel:e.bitsAllocated<=8?1:2,...e},g=x(n,f);break;case"1.2.840.10008.1.2.4.90":case"1.2.840.10008.1.2.4.91":f={...e},g=I(n,f);break;case"3.2.840.10008.1.2.4.96":case"1.2.840.10008.1.2.4.201":case"1.2.840.10008.1.2.4.202":case"1.2.840.10008.1.2.4.203":f={...e},g=C(n,f);break;default:throw new Error(`no decoder for transfer syntax ${t}`)}if(!g)throw new Error("decodePromise not defined");const p=function(e,t,n){const r=void 0!==e.pixelRepresentation&&1===e.pixelRepresentation,o=r&&void 0!==e.bitsStored?32-e.bitsStored:void 0;if(r&&void 0!==o)for(let t=0;t<e.pixelData.length;t++)e.pixelData[t]=e.pixelData[t]<<o>>o;let i=e.pixelData;e.pixelDataLength=e.pixelData.length;const{min:s,max:a}=B(e.pixelData),c={Uint8Array,Uint16Array,Int16Array,Float32Array},l=t.targetBuffer?.type,f=void 0===t.allowFloatRendering||t.allowFloatRendering,d=!(b=e.photometricInterpretation,"RGB"!==b&&"PALETTE COLOR"!==b&&"YBR_FULL"!==b&&"YBR_FULL_422"!==b&&"YBR_PARTIAL_422"!==b&&"YBR_PARTIAL_420"!==b&&"YBR_RCT"!==b&&"YBR_ICT"!==b||void 0!==t.targetBuffer?.offset),g=t.preScale?.enabled,u=g&&Object.values(t.preScale.scalingParameters).some((e=>"number"==typeof e&&!Number.isInteger(e))),p=!t.preScale.enabled||!f&&u;var b;i=l&&!d?function(e,t,n,r){const{arrayBuffer:o,type:i,offset:s=0,length:a,rows:c}=e.targetBuffer,l=n[i];if(!l)throw new Error(`target array ${i} is not supported, or doesn't exist.`);c&&c!=t.rows&&function(e,t,n){const r=function(e,t,n){const{samplesPerPixel:r}=e,{rows:o,columns:i}=t,s=o*i*r,a=new n(s),c=a.byteLength/s;return{pixelData:a,rows:o,columns:i,frameInfo:{...e.frameInfo,rows:o,columns:i},imageInfo:{...e.imageInfo,rows:o,columns:i,bytesPerPixel:c}}}(e,t,n),{scalingType:o="replicate"}=t;T[o](e,r),Object.assign(e,r),e.pixelDataLength=e.pixelData.length}(t,e.targetBuffer,l);const f=t.pixelDataLength,d=s,g=null!=a?a:f-d,u=t.pixelData;if(g!==u.length)throw new Error(`target array for image does not have the same length (${g}) as the decoded image length (${u.length}).`);const p=o?new l(o,d,g):new l(g);return p.set(u,0),r=p,r}(t,e,c,i):t.preScale.enabled&&!p?function(e,t,n,r){const o=e.preScale.scalingParameters;$(o);const{rescaleSlope:i,rescaleIntercept:s}=o;let a=t,c=n;"number"==typeof i&&"number"==typeof s&&(a=i*t+s,c=i*n+s);return U(a,c,r)}(t,s,a,e):U(s,a,e);let y=s,m=a;if(t.preScale.enabled&&!p){const n=t.preScale.scalingParameters;$(n);const{rescaleSlope:r,rescaleIntercept:o}=n;if("number"==typeof r&&"number"==typeof o){!function(e,t){const n=e.length,{rescaleSlope:r,rescaleIntercept:o,suvbw:i}=t;if("PT"!==t.modality||"number"!=typeof i||isNaN(i))for(let t=0;t<n;t++)e[t]=e[t]*r+o;else for(let t=0;t<n;t++)e[t]=i*(e[t]*r+o)}(i,n),e.preScale={...t.preScale,scaled:!0};const{rescaleIntercept:r,rescaleSlope:o,suvbw:c}=n;y=o*s+r,m=o*a+r,c&&(y*=c,m*=c)}}else p&&(e.preScale={enabled:!0,scaled:!1},y=s,m=a);e.pixelData=i,e.smallestPixelValue=y,e.largestPixelValue=m;const h=(new Date).getTime();return e.decodeTimeInMS=h-n,e}(await g,a,l);return c?.(p),p}function U(e,t,n){const r=function(e,t){let n;return Number.isInteger(e)&&Number.isInteger(t)&&(e>=0?t<=255?n=Uint8Array:t<=65535&&(n=Uint16Array):e>=-128&&t<=127?n=Int8Array:e>=-32768&&t<=32767&&(n=Int16Array)),n||Float32Array}(e,t),o=new r(n.pixelData.length);return o.set(n.pixelData,0),o}function $(e){if(!e)throw new Error("options.preScale.scalingParameters must be defined if preScale.enabled is true, and scalingParameters cannot be derived from the metadata providers.")}const k={decodeTask:({imageFrame:e,transferSyntax:t,decodeConfig:n,options:r,pixelData:o,callbackFn:i})=>j(e,t,o,0,r,i)};(0,r.Jj)(k)},716:()=>{},401:()=>{},491:()=>{},33:()=>{},261:()=>{},926:()=>{},280:()=>{},103:()=>{}},i={};function s(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e].call(n.exports,n,n.exports,s),n.exports}return s.m=o,s.x=()=>{var e=s.O(void 0,[958],(()=>s(760)));return e=s.O(e)},e=[],s.O=(t,n,r,o)=>{if(!n){var i=1/0;for(f=0;f<e.length;f++){for(var[n,r,o]=e[f],a=!0,c=0;c<n.length;c++)(!1&o||i>=o)&&Object.keys(s.O).every((e=>s.O[e](n[c])))?n.splice(c--,1):(a=!1,o<i&&(i=o));if(a){e.splice(f--,1);var l=r();void 0!==l&&(t=l)}}return t}o=o||0;for(var f=e.length;f>0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[n,r,o]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var i={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,s.d(o,i),o},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,n)=>(s.f[n](e,t),t)),[])),s.u=e=>e+".min.js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!e;)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=self.location+"";var e={918:1};s.f.i=(t,n)=>{e[t]||importScripts(s.p+s.u(t))};var t=this.webpackChunk=this.webpackChunk||[],n=t.push.bind(t);t.push=t=>{var[r,o,i]=t;for(var a in o)s.o(o,a)&&(s.m[a]=o[a]);for(i&&i(s);r.length;)e[r.pop()]=1;n(t)}})(),r=s.x,s.x=()=>s.e(958).then(r),s.x()})()));
|
|
2
|
+
//# sourceMappingURL=918.min.js.map
|