// // 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 (_a "errors";_b "fmt";_bd "github.com/unidoc/unipdf/v3/common";_g "github.com/unidoc/unipdf/v3/internal/bitwise";_ed "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_e "io";);func (_dde *runData )fillBuffer (_db int )error {_dde ._gfa =_db ; _ ,_fbb :=_dde ._cee .Seek (int64 (_db ),_e .SeekStart );if _fbb !=nil {if _fbb ==_e .EOF {_bd .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_dde ._ccc =-1;}else {return _fbb ;};};if _fbb ==nil {_dde ._ccc ,_fbb =_dde ._cee .Read (_dde ._cgb ); if _fbb !=nil {if _fbb ==_e .EOF {_bd .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_dde ._ccc =-1;}else {return _fbb ;};};};if _dde ._ccc > -1&&_dde ._ccc < 3{for _dde ._ccc < 3{_adf ,_gacf :=_dde ._cee .ReadByte ();if _gacf !=nil {if _gacf ==_e .EOF {_dde ._cgb [_dde ._ccc ]=0; }else {return _gacf ;};}else {_dde ._cgb [_dde ._ccc ]=_adf &0xFF;};_dde ._ccc ++;};};_dde ._ccc -=3;if _dde ._ccc < 0{_dde ._cgb =make ([]byte ,len (_dde ._cgb ));_dde ._ccc =len (_dde ._cgb )-3;};return nil ;};func _ef (_af ,_fe int )int {if _af > _fe {return _fe ; };return _af ;};func New (r _g .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ee :=&Decoder {_dd :width ,_eb :height };_gg ,_da :=_g .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _da !=nil {return nil ,_da ; };_fa ,_da :=_bege (_gg );if _da !=nil {return nil ,_da ;};_ee ._bg =_fa ;if _eda :=_ee .initTables ();_eda !=nil {return nil ,_eda ;};return _ee ,nil ;};func _bege (_bag *_g .SubstreamReader )(*runData ,error ){_eef :=&runData {_cee :_bag ,_bbb :0,_aeb :1}; _afb :=_ef (_cea (_fcd ,int (_bag .Length ())),_gcf );_eef ._cgb =make ([]byte ,_afb );if _afe :=_eef .fillBuffer (0);_afe !=nil {if _afe ==_e .EOF {_eef ._cgb =make ([]byte ,10);_bd .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_afe ); }else {return nil ,_afe ;};};return _eef ,nil ;};const (EOF =-3;_ga =-2;EOL =-1;_gac =8;_de =(1<<_gac )-1;_cg =5;_df =(1<<_cg )-1;);func _cea (_ad ,_ea int )int {if _ad < _ea {return _ea ;};return _ad ;};func (_fac *Decoder )detectAndSkipEOL ()error {for {_cgc ,_feg :=_fac ._bg .uncompressGetCode (_fac ._ff ); if _feg !=nil {return _feg ;};if _cgc !=nil &&_cgc ._f ==EOL {_fac ._bg ._bbb +=_cgc ._ag ;}else {return nil ;};};};func (_ba *code )String ()string {return _b .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ba ._ag ,_ba ._ce ,_ba ._f );}; func (_ecc *runData )align (){_ecc ._bbb =((_ecc ._bbb +7)>>3)<<3};func (_ada *runData )uncompressGetCodeLittleEndian (_gge []*code )(*code ,error ){_aae ,_cbc :=_ada .uncompressGetNextCodeLittleEndian ();if _cbc !=nil {_bd .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",_cbc ); return nil ,_cbc ;};_aae &=0xffffff;_gea :=_aae >>(_fbc -_gac );_aba :=_gge [_gea ];if _aba !=nil &&_aba ._ab {_gea =(_aae >>(_fbc -_gac -_cg ))&_df ;_aba =_aba ._ge [_gea ];};return _aba ,nil ;};func (_fge *runData )uncompressGetCode (_ccg []*code )(*code ,error ){return _fge .uncompressGetCodeLittleEndian (_ccg ); };func (_bed *Decoder )createLittleEndianTable (_bef [][3]int )([]*code ,error ){_fbg :=make ([]*code ,_de +1);for _bdbb :=0;_bdbb < len (_bef );_bdbb ++{_gba :=_cc (_bef [_bdbb ]);if _gba ._ag <=_gac {_caf :=_gac -_gba ._ag ;_eff :=_gba ._ce <=0;_aed --{_bfc :=_eff |_aed ;_fbg [_bfc ]=_gba ;};}else {_eaf :=_gba ._ce >>uint (_gba ._ag -_gac );if _fbg [_eaf ]==nil {var _fc =_cc ([3]int {});_fc ._ge =make ([]*code ,_df +1);_fbg [_eaf ]=_fc ;};if _gba ._ag <=_gac +_cg {_efc :=_gac +_cg -_gba ._ag ; _gc :=(_gba ._ce <=0;_dab --{_fbg [_eaf ]._ge [_gc |_dab ]=_gba ;};}else {return nil ,_a .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 _fbg ,nil ;};func (_cae *Decoder )initTables ()(_aff error ){if _cae ._bdbc ==nil {_cae ._bdbc ,_aff =_cae .createLittleEndianTable (_bdb );if _aff !=nil {return ;};_cae ._bee ,_aff =_cae .createLittleEndianTable (_fdb );if _aff !=nil {return ; };_cae ._ff ,_aff =_cae .createLittleEndianTable (_bfb );if _aff !=nil {return ;};};return nil ;};func (_faf *Decoder )UncompressMMR ()(_ac *_ed .Bitmap ,_fb error ){_ac =_ed .New (_faf ._dd ,_faf ._eb );_bfg :=make ([]int ,_ac .Width +5);_gb :=make ([]int ,_ac .Width +5); _gb [0]=_ac .Width ;_bcd :=1;var _edb int ;for _ceb :=0;_ceb < _ac .Height ;_ceb ++{_edb ,_fb =_faf .uncompress2d (_faf ._bg ,_gb ,_bcd ,_bfg ,_ac .Width );if _fb !=nil {return nil ,_fb ;};if _edb ==EOF {break ;};if _edb > 0{_fb =_faf .fillBitmap (_ac ,_ceb ,_bfg ,_edb ); if _fb !=nil {return nil ,_fb ;};};_gb ,_bfg =_bfg ,_gb ;_bcd =_edb ;};if _fb =_faf .detectAndSkipEOL ();_fb !=nil {return nil ,_fb ;};_faf ._bg .align ();return _ac ,nil ;};const (_gcf int =1024<<7;_fcd int =3;_fbc uint =24;);func _cc (_ca [3]int )*code {return &code {_ag :_ca [0],_ce :_ca [1],_f :_ca [2]}}; type code struct{_ag int ;_ce int ;_f int ;_ge []*code ;_ab bool ;};type runData struct{_cee *_g .SubstreamReader ;_bbb int ;_aeb int ;_acb int ;_cgb []byte ;_gfa int ;_ccc int ;};var (_bfb =[][3]int {{4,0x1,int (_fd )},{3,0x1,int (_ae )},{1,0x1,int (_d )},{3,0x3,int (_be )},{6,0x3,int (_fde )},{7,0x3,int (_gf )},{3,0x2,int (_bf )},{6,0x2,int (_fea )},{7,0x2,int (_bc )},{10,0xf,int (_cef )},{12,0xf,int (_abd )},{12,0x1,int (EOL )}}; _bdb =[][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,_ga },{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,_ga },{11,0x01,_ga },{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}}; _fdb =[][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,_ga },{9,0x18,15},{10,0x01,_ga },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_ga },{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 (_agd *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_eae :=_agd ._bbb -_agd ._aeb ;if _eae < 0||_eae > 24{_gbc :=(_agd ._bbb >>3)-_agd ._gfa ;if _gbc >=_agd ._ccc {_gbc +=_agd ._gfa ;if _ebb :=_agd .fillBuffer (_gbc );_ebb !=nil {return 0,_ebb ; };_gbc -=_agd ._gfa ;};_dfb :=(uint32 (_agd ._cgb [_gbc ]&0xFF)<<16)|(uint32 (_agd ._cgb [_gbc +1]&0xFF)<<8)|(uint32 (_agd ._cgb [_gbc +2]&0xFF));_efe :=uint32 (_agd ._bbb &7);_dfb <<=_efe ;_agd ._acb =int (_dfb );}else {_geg :=_agd ._aeb &7;_cab :=7-_geg ; if _eae <=_cab {_agd ._acb <<=uint (_eae );}else {_aca :=(_agd ._aeb >>3)+3-_agd ._gfa ;if _aca >=_agd ._ccc {_aca +=_agd ._gfa ;if _ffag :=_agd .fillBuffer (_aca );_ffag !=nil {return 0,_ffag ;};_aca -=_agd ._gfa ;};_geg =8-_geg ;for {_agd ._acb <<=uint (_geg ); _agd ._acb |=int (uint (_agd ._cgb [_aca ])&0xFF);_eae -=_geg ;_aca ++;_geg =8;if !(_eae >=8){break ;};};_agd ._acb <<=uint (_eae );};};_agd ._aeb =_agd ._bbb ;return _agd ._acb ,nil ;};func (_acf *Decoder )uncompress1d (_cf *runData ,_bec []int ,_gfg int )(int ,error ){var (_ece =true ; _cfb int ;_ffa *code ;_befe int ;_ebd error ;);_ffg :for _cfb < _gfg {_efg :for {if _ece {_ffa ,_ebd =_cf .uncompressGetCode (_acf ._bdbc );if _ebd !=nil {return 0,_ebd ;};}else {_ffa ,_ebd =_cf .uncompressGetCode (_acf ._bee );if _ebd !=nil {return 0,_ebd ; };};_cf ._bbb +=_ffa ._ag ;if _ffa ._f < 0{break _ffg ;};_cfb +=_ffa ._f ;if _ffa ._f < 64{_ece =!_ece ;_bec [_befe ]=_cfb ;_befe ++;break _efg ;};};};if _bec [_befe ]!=_gfg {_bec [_befe ]=_gfg ;};_eg :=EOL ;if _ffa !=nil &&_ffa ._f !=EOL {_eg =_befe ; };return _eg ,nil ;};type mmrCode int ;func (_aa *Decoder )fillBitmap (_dg *_ed .Bitmap ,_fg int ,_dgd []int ,_feb int )error {var _ec byte ;_gad :=0;_gcb :=_dg .GetByteIndex (_gad ,_fg );for _beg :=0;_beg < _feb ;_beg ++{_bb :=byte (1);_fafg :=_dgd [_beg ]; if (_beg &1)==0{_bb =0;};for _gad < _fafg {_ec =(_ec <<1)|_bb ;_gad ++;if (_gad &7)==0{if _dae :=_dg .SetByte (_gcb ,_ec );_dae !=nil {return _dae ;};_gcb ++;_ec =0;};};};if (_gad &7)!=0{_ec <<=uint (8-(_gad &7));if _ddd :=_dg .SetByte (_gcb ,_ec );_ddd !=nil {return _ddd ; };};return nil ;};func (_bba *Decoder )uncompress2d (_gd *runData ,_bdf []int ,_dc int ,_bce []int ,_ggf int )(int ,error ){var (_eeb int ;_egc int ;_ggc int ;_ggb =true ;_dfd error ;_cb *code ;);_bdf [_dc ]=_ggf ;_bdf [_dc +1]=_ggf ;_bdf [_dc +2]=_ggf +1; _bdf [_dc +3]=_ggf +1;_agf :for _ggc < _ggf {_cb ,_dfd =_gd .uncompressGetCode (_bba ._ff );if _dfd !=nil {return EOL ,nil ;};if _cb ==nil {_gd ._bbb ++;break _agf ;};_gd ._bbb +=_cb ._ag ;switch mmrCode (_cb ._f ){case _d :_ggc =_bdf [_eeb ];case _be :_ggc =_bdf [_eeb ]+1; case _bf :_ggc =_bdf [_eeb ]-1;case _ae :for {var _eee []*code ;if _ggb {_eee =_bba ._bdbc ;}else {_eee =_bba ._bee ;};_cb ,_dfd =_gd .uncompressGetCode (_eee );if _dfd !=nil {return 0,_dfd ;};if _cb ==nil {break _agf ;};_gd ._bbb +=_cb ._ag ;if _cb ._f < 64{if _cb ._f < 0{_bce [_egc ]=_ggc ; _egc ++;_cb =nil ;break _agf ;};_ggc +=_cb ._f ;_bce [_egc ]=_ggc ;_egc ++;break ;};_ggc +=_cb ._f ;};_eba :=_ggc ;_bdfd :for {var _fgb []*code ;if !_ggb {_fgb =_bba ._bdbc ;}else {_fgb =_bba ._bee ;};_cb ,_dfd =_gd .uncompressGetCode (_fgb );if _dfd !=nil {return 0,_dfd ; };if _cb ==nil {break _agf ;};_gd ._bbb +=_cb ._ag ;if _cb ._f < 64{if _cb ._f < 0{_bce [_egc ]=_ggc ;_egc ++;break _agf ;};_ggc +=_cb ._f ;if _ggc < _ggf ||_ggc !=_eba {_bce [_egc ]=_ggc ;_egc ++;};break _bdfd ;};_ggc +=_cb ._f ;};for _ggc < _ggf &&_bdf [_eeb ]<=_ggc {_eeb +=2; };continue _agf ;case _fd :_eeb ++;_ggc =_bdf [_eeb ];_eeb ++;continue _agf ;case _fde :_ggc =_bdf [_eeb ]+2;case _fea :_ggc =_bdf [_eeb ]-2;case _gf :_ggc =_bdf [_eeb ]+3;case _bc :_ggc =_bdf [_eeb ]-3;default:if _gd ._bbb ==12&&_cb ._f ==EOL {_gd ._bbb =0; if _ ,_dfd =_bba .uncompress1d (_gd ,_bdf ,_ggf );_dfd !=nil {return 0,_dfd ;};_gd ._bbb ++;if _ ,_dfd =_bba .uncompress1d (_gd ,_bce ,_ggf );_dfd !=nil {return 0,_dfd ;};_fce ,_fab :=_bba .uncompress1d (_gd ,_bdf ,_ggf );if _fab !=nil {return EOF ,_fab ; };_gd ._bbb ++;return _fce ,nil ;};_ggc =_ggf ;continue _agf ;};if _ggc <=_ggf {_ggb =!_ggb ;_bce [_egc ]=_ggc ;_egc ++;if _eeb > 0{_eeb --;}else {_eeb ++;};for _ggc < _ggf &&_bdf [_eeb ]<=_ggc {_eeb +=2;};};};if _bce [_egc ]!=_ggf {_bce [_egc ]=_ggf ; };if _cb ==nil {return EOL ,nil ;};return _egc ,nil ;};type Decoder struct{_dd ,_eb int ;_bg *runData ;_bdbc []*code ;_bee []*code ;_ff []*code ;};const (_fd mmrCode =iota ;_ae ;_d ;_be ;_fde ;_gf ;_bf ;_fea ;_bc ;_cef ;_abd ;);