2022-09-23 18:05:51 +00:00

50 lines
13 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package mmr ;import (_e "errors";_d "fmt";_ab "github.com/unidoc/unipdf/v3/common";_ef "github.com/unidoc/unipdf/v3/internal/bitwise";_g "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_a "io";);func (_fb *Decoder )createLittleEndianTable (_fae [][3]int )([]*code ,error ){_abda :=make ([]*code ,_aeg +1);
for _cdf :=0;_cdf < len (_fae );_cdf ++{_dae :=_abg (_fae [_cdf ]);if _dae ._ee <=_de {_ga :=_de -_dae ._ee ;_db :=_dae ._aa <<uint (_ga );for _fcf :=(1<<uint (_ga ))-1;_fcf >=0;_fcf --{_bgc :=_db |_fcf ;_abda [_bgc ]=_dae ;};}else {_edfg :=_dae ._aa >>uint (_dae ._ee -_de );
if _abda [_edfg ]==nil {var _eg =_abg ([3]int {});_eg ._efd =make ([]*code ,_caa +1);_abda [_edfg ]=_eg ;};if _dae ._ee <=_de +_fd {_egc :=_de +_fd -_dae ._ee ;_cfc :=(_dae ._aa <<uint (_egc ))&_caa ;_abda [_edfg ]._b =true ;for _daf :=(1<<uint (_egc ))-1;
_daf >=0;_daf --{_abda [_edfg ]._efd [_cfc |_daf ]=_dae ;};}else {return nil ,_e .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");
};};};return _abda ,nil ;};type code struct{_ee int ;_aa int ;_af int ;_efd []*code ;_b bool ;};type mmrCode int ;func (_gdd *Decoder )fillBitmap (_afb *_g .Bitmap ,_df int ,_fcc []int ,_gb int )error {var _gdg byte ;_afbe :=0;_ge :=_afb .GetByteIndex (_afbe ,_df );
for _dge :=0;_dge < _gb ;_dge ++{_add :=byte (1);_ccg :=_fcc [_dge ];if (_dge &1)==0{_add =0;};for _afbe < _ccg {_gdg =(_gdg <<1)|_add ;_afbe ++;if (_afbe &7)==0{if _cde :=_afb .SetByte (_ge ,_gdg );_cde !=nil {return _cde ;};_ge ++;_gdg =0;};};};if (_afbe &7)!=0{_gdg <<=uint (8-(_afbe &7));
if _gbg :=_afb .SetByte (_ge ,_gdg );_gbg !=nil {return _gbg ;};};return nil ;};const (_da mmrCode =iota ;_cb ;_ca ;_cf ;_aaf ;_ed ;_cc ;_fc ;_fe ;_dcb ;_edf ;);const (_cdg int =1024<<7;_eaf int =3;_faf uint =24;);func _abg (_fg [3]int )*code {return &code {_ee :_fg [0],_aa :_fg [1],_af :_fg [2]}};
func _bdbc (_eab *_ef .SubstreamReader )(*runData ,error ){_feg :=&runData {_fge :_eab ,_cbgg :0,_afbg :1};_bgd :=_c (_dc (_eaf ,int (_eab .Length ())),_cdg );_feg ._cbd =make ([]byte ,_bgd );if _dgdb :=_feg .fillBuffer (0);_dgdb !=nil {if _dgdb ==_a .EOF {_feg ._cbd =make ([]byte ,10);
_ab .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_dgdb );}else {return nil ,_dgdb ;};};return _feg ,nil ;};func (_gfg *Decoder )uncompress2d (_gddg *runData ,_cg []int ,_egcc int ,_ccge []int ,_gga int )(int ,error ){var (_egcf int ;
_ea int ;_efdd int ;_be =true ;_ddf error ;_fac *code ;);_cg [_egcc ]=_gga ;_cg [_egcc +1]=_gga ;_cg [_egcc +2]=_gga +1;_cg [_egcc +3]=_gga +1;_ece :for _efdd < _gga {_fac ,_ddf =_gddg .uncompressGetCode (_gfg ._bf );if _ddf !=nil {return EOL ,nil ;};if _fac ==nil {_gddg ._cbgg ++;
break _ece ;};_gddg ._cbgg +=_fac ._ee ;switch mmrCode (_fac ._af ){case _ca :_efdd =_cg [_egcf ];case _cf :_efdd =_cg [_egcf ]+1;case _cc :_efdd =_cg [_egcf ]-1;case _cb :for {var _bdb []*code ;if _be {_bdb =_gfg ._ad ;}else {_bdb =_gfg ._aegf ;};_fac ,_ddf =_gddg .uncompressGetCode (_bdb );
if _ddf !=nil {return 0,_ddf ;};if _fac ==nil {break _ece ;};_gddg ._cbgg +=_fac ._ee ;if _fac ._af < 64{if _fac ._af < 0{_ccge [_ea ]=_efdd ;_ea ++;_fac =nil ;break _ece ;};_efdd +=_fac ._af ;_ccge [_ea ]=_efdd ;_ea ++;break ;};_efdd +=_fac ._af ;};_eac :=_efdd ;
_bdba :for {var _dba []*code ;if !_be {_dba =_gfg ._ad ;}else {_dba =_gfg ._aegf ;};_fac ,_ddf =_gddg .uncompressGetCode (_dba );if _ddf !=nil {return 0,_ddf ;};if _fac ==nil {break _ece ;};_gddg ._cbgg +=_fac ._ee ;if _fac ._af < 64{if _fac ._af < 0{_ccge [_ea ]=_efdd ;
_ea ++;break _ece ;};_efdd +=_fac ._af ;if _efdd < _gga ||_efdd !=_eac {_ccge [_ea ]=_efdd ;_ea ++;};break _bdba ;};_efdd +=_fac ._af ;};for _efdd < _gga &&_cg [_egcf ]<=_efdd {_egcf +=2;};continue _ece ;case _da :_egcf ++;_efdd =_cg [_egcf ];_egcf ++;
continue _ece ;case _aaf :_efdd =_cg [_egcf ]+2;case _fc :_efdd =_cg [_egcf ]-2;case _ed :_efdd =_cg [_egcf ]+3;case _fe :_efdd =_cg [_egcf ]-3;default:if _gddg ._cbgg ==12&&_fac ._af ==EOL {_gddg ._cbgg =0;if _ ,_ddf =_gfg .uncompress1d (_gddg ,_cg ,_gga );
_ddf !=nil {return 0,_ddf ;};_gddg ._cbgg ++;if _ ,_ddf =_gfg .uncompress1d (_gddg ,_ccge ,_gga );_ddf !=nil {return 0,_ddf ;};_fea ,_fec :=_gfg .uncompress1d (_gddg ,_cg ,_gga );if _fec !=nil {return EOF ,_fec ;};_gddg ._cbgg ++;return _fea ,nil ;};_efdd =_gga ;
continue _ece ;};if _efdd <=_gga {_be =!_be ;_ccge [_ea ]=_efdd ;_ea ++;if _egcf > 0{_egcf --;}else {_egcf ++;};for _efdd < _gga &&_cg [_egcf ]<=_efdd {_egcf +=2;};};};if _ccge [_ea ]!=_gga {_ccge [_ea ]=_gga ;};if _fac ==nil {return EOL ,nil ;};return _ea ,nil ;
};func (_dcge *runData )uncompressGetCodeLittleEndian (_adb []*code )(*code ,error ){_bbb ,_ggad :=_dcge .uncompressGetNextCodeLittleEndian ();if _ggad !=nil {_ab .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_ggad );
return nil ,_ggad ;};_bbb &=0xffffff;_ebg :=_bbb >>(_faf -_de );_ccf :=_adb [_ebg ];if _ccf !=nil &&_ccf ._b {_ebg =(_bbb >>(_faf -_de -_fd ))&_caa ;_ccf =_ccf ._efd [_ebg ];};return _ccf ,nil ;};func (_eee *Decoder )UncompressMMR ()(_bd *_g .Bitmap ,_fca error ){_bd =_g .New (_eee ._fa ,_eee ._edd );
_ggf :=make ([]int ,_bd .Width +5);_eb :=make ([]int ,_bd .Width +5);_eb [0]=_bd .Width ;_ccc :=1;var _cd int ;for _gc :=0;_gc < _bd .Height ;_gc ++{_cd ,_fca =_eee .uncompress2d (_eee ._cbg ,_eb ,_ccc ,_ggf ,_bd .Width );if _fca !=nil {return nil ,_fca ;
};if _cd ==EOF {break ;};if _cd > 0{_fca =_eee .fillBitmap (_bd ,_gc ,_ggf ,_cd );if _fca !=nil {return nil ,_fca ;};};_eb ,_ggf =_ggf ,_eb ;_ccc =_cd ;};if _fca =_eee .detectAndSkipEOL ();_fca !=nil {return nil ,_fca ;};_eee ._cbg .align ();return _bd ,nil ;
};type Decoder struct{_fa ,_edd int ;_cbg *runData ;_ad []*code ;_aegf []*code ;_bf []*code ;};func (_agg *Decoder )initTables ()(_cbf error ){if _agg ._ad ==nil {_agg ._ad ,_cbf =_agg .createLittleEndianTable (_gd );if _cbf !=nil {return ;};_agg ._aegf ,_cbf =_agg .createLittleEndianTable (_gg );
if _cbf !=nil {return ;};_agg ._bf ,_cbf =_agg .createLittleEndianTable (_aec );if _cbf !=nil {return ;};};return nil ;};const (EOF =-3;_dgd =-2;EOL =-1;_de =8;_aeg =(1<<_de )-1;_fd =5;_caa =(1<<_fd )-1;);func (_ec *Decoder )detectAndSkipEOL ()error {for {_dcg ,_ff :=_ec ._cbg .uncompressGetCode (_ec ._bf );
if _ff !=nil {return _ff ;};if _dcg !=nil &&_dcg ._af ==EOL {_ec ._cbg ._cbgg +=_dcg ._ee ;}else {return nil ;};};};var (_aec =[][3]int {{4,0x1,int (_da )},{3,0x1,int (_cb )},{1,0x1,int (_ca )},{3,0x3,int (_cf )},{6,0x3,int (_aaf )},{7,0x3,int (_ed )},{3,0x2,int (_cc )},{6,0x2,int (_fc )},{7,0x2,int (_fe )},{10,0xf,int (_dcb )},{12,0xf,int (_edf )},{12,0x1,int (EOL )}};
_gd =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_dgd },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_dgd },{11,0x01,_dgd },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}};
_gg =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_dgd },{9,0x18,15},{10,0x01,_dgd },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_dgd },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}};
);func (_bac *runData )fillBuffer (_dgde int )error {_bac ._fff =_dgde ;_ ,_edc :=_bac ._fge .Seek (int64 (_dgde ),_a .SeekStart );if _edc !=nil {if _edc ==_a .EOF {_ab .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_bac ._fga =-1;}else {return _edc ;
};};if _edc ==nil {_bac ._fga ,_edc =_bac ._fge .Read (_bac ._cbd );if _edc !=nil {if _edc ==_a .EOF {_ab .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_bac ._fga =-1;}else {return _edc ;};};};if _bac ._fga > -1&&_bac ._fga < 3{for _bac ._fga < 3{_fdaf ,_fcca :=_bac ._fge .ReadByte ();
if _fcca !=nil {if _fcca ==_a .EOF {_bac ._cbd [_bac ._fga ]=0;}else {return _fcca ;};}else {_bac ._cbd [_bac ._fga ]=_fdaf &0xFF;};_bac ._fga ++;};};_bac ._fga -=3;if _bac ._fga < 0{_bac ._cbd =make ([]byte ,len (_bac ._cbd ));_bac ._fga =len (_bac ._cbd )-3;
};return nil ;};func (_gab *Decoder )uncompress1d (_caac *runData ,_aafe []int ,_dgb int )(int ,error ){var (_fbd =true ;_dbd int ;_ddg *code ;_aad int ;_fccc error ;);_gec :for _dbd < _dgb {_egb :for {if _fbd {_ddg ,_fccc =_caac .uncompressGetCode (_gab ._ad );
if _fccc !=nil {return 0,_fccc ;};}else {_ddg ,_fccc =_caac .uncompressGetCode (_gab ._aegf );if _fccc !=nil {return 0,_fccc ;};};_caac ._cbgg +=_ddg ._ee ;if _ddg ._af < 0{break _gec ;};_dbd +=_ddg ._af ;if _ddg ._af < 64{_fbd =!_fbd ;_aafe [_aad ]=_dbd ;
_aad ++;break _egb ;};};};if _aafe [_aad ]!=_dgb {_aafe [_aad ]=_dgb ;};_gf :=EOL ;if _ddg !=nil &&_ddg ._af !=EOL {_gf =_aad ;};return _gf ,nil ;};func _dc (_dg ,_bg int )int {if _dg < _bg {return _bg ;};return _dg ;};func (_dafg *runData )align (){_dafg ._cbgg =((_dafg ._cbgg +7)>>3)<<3};
func (_dce *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_fbg :=_dce ._cbgg -_dce ._afbg ;if _fbg < 0||_fbg > 24{_aege :=(_dce ._cbgg >>3)-_dce ._fff ;if _aege >=_dce ._fga {_aege +=_dce ._fff ;if _ba :=_dce .fillBuffer (_aege );_ba !=nil {return 0,_ba ;
};_aege -=_dce ._fff ;};_cbfe :=(uint32 (_dce ._cbd [_aege ]&0xFF)<<16)|(uint32 (_dce ._cbd [_aege +1]&0xFF)<<8)|(uint32 (_dce ._cbd [_aege +2]&0xFF));_gad :=uint32 (_dce ._cbgg &7);_cbfe <<=_gad ;_dce ._ecc =int (_cbfe );}else {_bda :=_dce ._afbg &7;_fdac :=7-_bda ;
if _fbg <=_fdac {_dce ._ecc <<=uint (_fbg );}else {_dgdc :=(_dce ._afbg >>3)+3-_dce ._fff ;if _dgdc >=_dce ._fga {_dgdc +=_dce ._fff ;if _dec :=_dce .fillBuffer (_dgdc );_dec !=nil {return 0,_dec ;};_dgdc -=_dce ._fff ;};_bda =8-_bda ;for {_dce ._ecc <<=uint (_bda );
_dce ._ecc |=int (uint (_dce ._cbd [_dgdc ])&0xFF);_fbg -=_bda ;_dgdc ++;_bda =8;if !(_fbg >=8){break ;};};_dce ._ecc <<=uint (_fbg );};};_dce ._afbg =_dce ._cbgg ;return _dce ._ecc ,nil ;};func New (r _ef .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_abgc :=&Decoder {_fa :width ,_edd :height };
_abd ,_dde :=_ef .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _dde !=nil {return nil ,_dde ;};_aee ,_dde :=_bdbc (_abd );if _dde !=nil {return nil ,_dde ;};_abgc ._cbg =_aee ;if _fef :=_abgc .initTables ();_fef !=nil {return nil ,_fef ;
};return _abgc ,nil ;};type runData struct{_fge *_ef .SubstreamReader ;_cbgg int ;_afbg int ;_ecc int ;_cbd []byte ;_fff int ;_fga int ;};func (_fda *runData )uncompressGetCode (_cfb []*code )(*code ,error ){return _fda .uncompressGetCodeLittleEndian (_cfb );
};func _c (_dd ,_ag int )int {if _dd > _ag {return _ag ;};return _dd ;};func (_ae *code )String ()string {return _d .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ae ._ee ,_ae ._aa ,_ae ._af );};