2020-12-06 13:03:03 +00:00

12 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 (_g "errors";_c "fmt";_f "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_cc "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_cg "io";);var (_eg =[][3]int {{4,0x1,int (_eef )},{3,0x1,int (_ecc )},{1,0x1,int (_gd )},{3,0x3,int (_gg )},{6,0x3,int (_beg )},{7,0x3,int (_aa )},{3,0x2,int (_ed )},{6,0x2,int (_dg )},{7,0x2,int (_ad )},{10,0xf,int (_cd )},{12,0xf,int (_af )},{12,0x1,int (EOL )}};_aac =[][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}};_eb =[][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 (_dde *Decoder )initTables ()(_ddf error ){if _dde ._cad ==nil {_dde ._cad ,_ddf =_dde .createLittleEndianTable (_aac );if _ddf !=nil {return ;};_dde ._gf ,_ddf =_dde .createLittleEndianTable (_eb );if _ddf !=nil {return ;};_dde ._edb ,_ddf =_dde .createLittleEndianTable (_eg );if _ddf !=nil {return ;};};return nil ;};func (_gda *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_cgcc :=_gda ._dfde -_gda ._de ;if _cgcc < 0||_cgcc > 24{_eff :=(_gda ._dfde >>3)-_gda ._bc ;if _eff >=_gda ._gfec {_eff +=_gda ._bc ;if _fec :=_gda .fillBuffer (_eff );_fec !=nil {return 0,_fec ;};_eff -=_gda ._bc ;};_fage :=(uint32 (_gda ._eaf [_eff ]&0xFF)<<16)|(uint32 (_gda ._eaf [_eff +1]&0xFF)<<8)|(uint32 (_gda ._eaf [_eff +2]&0xFF));_fga :=uint32 (_gda ._dfde &7);_fage <<=_fga ;_gda ._ebfd =int (_fage );}else {_dgfg :=_gda ._de &7;_gae :=7-_dgfg ;if _cgcc <=_gae {_gda ._ebfd <<=uint (_cgcc );}else {_gaec :=(_gda ._de >>3)+3-_gda ._bc ;if _gaec >=_gda ._gfec {_gaec +=_gda ._bc ;if _agee :=_gda .fillBuffer (_gaec );_agee !=nil {return 0,_agee ;};_gaec -=_gda ._bc ;};_dgfg =8-_dgfg ;for {_gda ._ebfd <<=uint (_dgfg );_gda ._ebfd |=int (uint (_gda ._eaf [_gaec ])&0xFF);_cgcc -=_dgfg ;_gaec ++;_dgfg =8;if !(_cgcc >=8){break ;};};_gda ._ebfd <<=uint (_cgcc );};};_gda ._de =_gda ._dfde ;return _gda ._ebfd ,nil ;};type code struct{_b int ;_ba int ;_df int ;_fe []*code ;_fea bool ;};func _ee (_efc ,_a int )int {if _efc > _a {return _a ;};return _efc ;};type mmrCode int ;func _edc (_fg *_d .SubstreamReader )(*runData ,error ){_bcb :=&runData {_dagd :_fg ,_dfde :0,_de :1};_bdb :=_ee (_bd (_dfb ,int (_fg .Length ())),_gdc );_bcb ._eaf =make ([]byte ,_bdb );if _bge :=_bcb .fillBuffer (0);_bge !=nil {if _bge ==_cg .EOF {_bcb ._eaf =make ([]byte ,10);_f .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_bge );}else {return nil ,_bge ;};};return _bcb ,nil ;};func New (r _d .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_feda :=&Decoder {_gb :width ,_ae :height };_cb ,_da :=_d .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _da !=nil {return nil ,_da ;};_fa ,_da :=_edc (_cb );if _da !=nil {return nil ,_da ;};_feda ._bb =_fa ;if _fag :=_feda .initTables ();_fag !=nil {return nil ,_fag ;};return _feda ,nil ;};func (_dd *Decoder )fillBitmap (_baa *_cc .Bitmap ,_ea int ,_gbg []int ,_dba int )error {var _dce byte ;_faa :=0;_fc :=_baa .GetByteIndex (_faa ,_ea );for _dfd :=0;_dfd < _dba ;_dfd ++{_acc :=byte (1);_facc :=_gbg [_dfd ];if (_dfd &1)==0{_acc =0;};for _faa < _facc {_dce =(_dce <<1)|_acc ;_faa ++;if (_faa &7)==0{if _fd :=_baa .SetByte (_fc ,_dce );_fd !=nil {return _fd ;};_fc ++;_dce =0;};};};if (_faa &7)!=0{_dce <<=uint (8-(_faa &7));if _bfc :=_baa .SetByte (_fc ,_dce );_bfc !=nil {return _bfc ;};};return nil ;};func (_ffc *runData )uncompressGetCodeLittleEndian (_efa []*code )(*code ,error ){_fbg ,_aga :=_ffc .uncompressGetNextCodeLittleEndian ();if _aga !=nil {_f .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",_aga );return nil ,_aga ;};_fbg &=0xffffff;_gbf :=_fbg >>(_agc -_db );_cbe :=_efa [_gbf ];if _cbe !=nil &&_cbe ._fea {_gbf =(_fbg >>(_agc -_db -_gdg ))&_bf ;_cbe =_cbe ._fe [_gbf ];};return _cbe ,nil ;};func (_fdf *Decoder )uncompress2d (_dgf *runData ,_gbb []int ,_ffa int ,_fca []int ,_efe int )(int ,error ){var (_dfa int ;_fcaa int ;_ce int ;_cbg =true ;_fde error ;_daee *code ;);_gbb [_ffa ]=_efe ;_gbb [_ffa +1]=_efe ;_gbb [_ffa +2]=_efe +1;_gbb [_ffa +3]=_efe +1;_dbb :for _ce < _efe {_daee ,_fde =_dgf .uncompressGetCode (_fdf ._edb );if _fde !=nil {return EOL ,nil ;};if _daee ==nil {_dgf ._dfde ++;break _dbb ;};_dgf ._dfde +=_daee ._b ;switch mmrCode (_daee ._df ){case _gd :_ce =_gbb [_dfa ];case _gg :_ce =_gbb [_dfa ]+1;case _ed :_ce =_gbb [_dfa ]-1;case _ecc :for {var _dcd []*code ;if _cbg {_dcd =_fdf ._cad ;}else {_dcd =_fdf ._gf ;};_daee ,_fde =_dgf .uncompressGetCode (_dcd );if _fde !=nil {return 0,_fde ;};if _daee ==nil {break _dbb ;};_dgf ._dfde +=_daee ._b ;if _daee ._df < 64{if _daee ._df < 0{_fca [_fcaa ]=_ce ;_fcaa ++;_daee =nil ;break _dbb ;};_ce +=_daee ._df ;_fca [_fcaa ]=_ce ;_fcaa ++;break ;};_ce +=_daee ._df ;};_bac :=_ce ;_accf :for {var _ddg []*code ;if !_cbg {_ddg =_fdf ._cad ;}else {_ddg =_fdf ._gf ;};_daee ,_fde =_dgf .uncompressGetCode (_ddg );if _fde !=nil {return 0,_fde ;};if _daee ==nil {break _dbb ;};_dgf ._dfde +=_daee ._b ;if _daee ._df < 64{if _daee ._df < 0{_fca [_fcaa ]=_ce ;_fcaa ++;break _dbb ;};_ce +=_daee ._df ;if _ce < _efe ||_ce !=_bac {_fca [_fcaa ]=_ce ;_fcaa ++;};break _accf ;};_ce +=_daee ._df ;};for _ce < _efe &&_gbb [_dfa ]<=_ce {_dfa +=2;};continue _dbb ;case _eef :_dfa ++;_ce =_gbb [_dfa ];_dfa ++;continue _dbb ;case _beg :_ce =_gbb [_dfa ]+2;case _dg :_ce =_gbb [_dfa ]-2;case _aa :_ce =_gbb [_dfa ]+3;case _ad :_ce =_gbb [_dfa ]-3;default:if _dgf ._dfde ==12&&_daee ._df ==EOL {_dgf ._dfde =0;if _ ,_fde =_fdf .uncompress1d (_dgf ,_gbb ,_efe );_fde !=nil {return 0,_fde ;};_dgf ._dfde ++;if _ ,_fde =_fdf .uncompress1d (_dgf ,_fca ,_efe );_fde !=nil {return 0,_fde ;};_dbe ,_dgg :=_fdf .uncompress1d (_dgf ,_gbb ,_efe );if _dgg !=nil {return EOF ,_dgg ;};_dgf ._dfde ++;return _dbe ,nil ;};_ce =_efe ;continue _dbb ;};if _ce <=_efe {_cbg =!_cbg ;_fca [_fcaa ]=_ce ;_fcaa ++;if _dfa > 0{_dfa --;}else {_dfa ++;};for _ce < _efe &&_gbb [_dfa ]<=_ce {_dfa +=2;};};};if _fca [_fcaa ]!=_efe {_fca [_fcaa ]=_efe ;};if _daee ==nil {return EOL ,nil ;};return _fcaa ,nil ;};func (_dbd *Decoder )createLittleEndianTable (_dag [][3]int )([]*code ,error ){_ag :=make ([]*code ,_fed +1);for _ccc :=0;_ccc < len (_dag );_ccc ++{_eed :=_baf (_dag [_ccc ]);if _eed ._b <=_db {_daga :=_db -_eed ._b ;_cf :=_eed ._ba <<uint (_daga );for _ac :=(1<<uint (_daga ))-1;_ac >=0;_ac --{_gfe :=_cf |_ac ;_ag [_gfe ]=_eed ;};}else {_fac :=_eed ._ba >>uint (_eed ._b -_db );if _ag [_fac ]==nil {var _dae =_baf ([3]int {});_dae ._fe =make ([]*code ,_bf +1);_ag [_fac ]=_dae ;};if _eed ._b <=_db +_gdg {_eea :=_db +_gdg -_eed ._b ;_bg :=(_eed ._ba <<uint (_eea ))&_bf ;_ag [_fac ]._fea =true ;for _gga :=(1<<uint (_eea ))-1;_gga >=0;_gga --{_ag [_fac ]._fe [_bg |_gga ]=_eed ;};}else {return nil ,_g .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 _ag ,nil ;};func _baf (_ec [3]int )*code {return &code {_b :_ec [0],_ba :_ec [1],_df :_ec [2]}};type Decoder struct{_gb ,_ae int ;_bb *runData ;_cad []*code ;_gf []*code ;_edb []*code ;};func (_cadf *Decoder )UncompressMMR ()(_ada *_cc .Bitmap ,_ccg error ){_ada =_cc .New (_cadf ._gb ,_cadf ._ae );_ebf :=make ([]int ,_ada .Width +5);_cgc :=make ([]int ,_ada .Width +5);_cgc [0]=_ada .Width ;_gfa :=1;var _dc int ;for _daf :=0;_daf < _ada .Height ;_daf ++{_dc ,_ccg =_cadf .uncompress2d (_cadf ._bb ,_cgc ,_gfa ,_ebf ,_ada .Width );if _ccg !=nil {return nil ,_ccg ;};if _dc ==EOF {break ;};if _dc > 0{_ccg =_cadf .fillBitmap (_ada ,_daf ,_ebf ,_dc );if _ccg !=nil {return nil ,_ccg ;};};_cgc ,_ebf =_ebf ,_cgc ;_gfa =_dc ;};if _ccg =_cadf .detectAndSkipEOL ();_ccg !=nil {return nil ,_ccg ;};_cadf ._bb .align ();return _ada ,nil ;};func _bd (_be ,_ef int )int {if _be < _ef {return _ef ;};return _be ;};func (_bba *runData )align (){_bba ._dfde =((_bba ._dfde +7)>>3)<<3};const (_gdc int =1024<<7;_dfb int =3;_agc uint =24;);func (_dcg *runData )uncompressGetCode (_fb []*code )(*code ,error ){return _dcg .uncompressGetCodeLittleEndian (_fb );};const (EOF =-3;_ga =-2;EOL =-1;_db =8;_fed =(1<<_db )-1;_gdg =5;_bf =(1<<_gdg )-1;);func (_bgb *Decoder )uncompress1d (_age *runData ,_dbdf []int ,_ede int )(int ,error ){var (_bff =true ;_cda int ;_gbd *code ;_ab int ;_egd error ;);_dagf :for _cda < _ede {_fcd :for {if _bff {_gbd ,_egd =_age .uncompressGetCode (_bgb ._cad );if _egd !=nil {return 0,_egd ;};}else {_gbd ,_egd =_age .uncompressGetCode (_bgb ._gf );if _egd !=nil {return 0,_egd ;};};_age ._dfde +=_gbd ._b ;if _gbd ._df < 0{break _dagf ;};_cda +=_gbd ._df ;if _gbd ._df < 64{_bff =!_bff ;_dbdf [_ab ]=_cda ;_ab ++;break _fcd ;};};};if _dbdf [_ab ]!=_ede {_dbdf [_ab ]=_ede ;};_ff :=EOL ;if _gbd !=nil &&_gbd ._df !=EOL {_ff =_ab ;};return _ff ,nil ;};func (_cec *runData )fillBuffer (_ggc int )error {_cec ._bc =_ggc ;_ ,_agg :=_cec ._dagd .Seek (int64 (_ggc ),_cg .SeekStart );if _agg !=nil {if _agg ==_cg .EOF {_f .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_cec ._gfec =-1;}else {return _agg ;};};if _agg ==nil {_cec ._gfec ,_agg =_cec ._dagd .Read (_cec ._eaf );if _agg !=nil {if _agg ==_cg .EOF {_f .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_cec ._gfec =-1;}else {return _agg ;};};};if _cec ._gfec > -1&&_cec ._gfec < 3{for _cec ._gfec < 3{_afb ,_egb :=_cec ._dagd .ReadByte ();if _egb !=nil {if _egb ==_cg .EOF {_cec ._eaf [_cec ._gfec ]=0;}else {return _egb ;};}else {_cec ._eaf [_cec ._gfec ]=_afb &0xFF;};_cec ._gfec ++;};};_cec ._gfec -=3;if _cec ._gfec < 0{_cec ._eaf =make ([]byte ,len (_cec ._eaf ));_cec ._gfec =len (_cec ._eaf )-3;};return nil ;};type runData struct{_dagd *_d .SubstreamReader ;_dfde int ;_de int ;_ebfd int ;_eaf []byte ;_bc int ;_gfec int ;};func (_ca *code )String ()string {return _c .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ca ._b ,_ca ._ba ,_ca ._df );};const (_eef mmrCode =iota ;_ecc ;_gd ;_gg ;_beg ;_aa ;_ed ;_dg ;_ad ;_cd ;_af ;);func (_ade *Decoder )detectAndSkipEOL ()error {for {_bgc ,_dbg :=_ade ._bb .uncompressGetCode (_ade ._edb );if _dbg !=nil {return _dbg ;};if _bgc !=nil &&_bgc ._df ==EOL {_ade ._bb ._dfde +=_bgc ._b ;}else {return nil ;};};};