2021-10-22 10:53:20 +00:00

132 lines
40 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 document ;import (_a "encoding/binary";_af "fmt";_gd "github.com/unidoc/unipdf/v3/common";_f "github.com/unidoc/unipdf/v3/internal/bitwise";_e "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_bf "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_cc "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_eb "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ba "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ac "io";_b "math";_c "runtime/debug";);func (_aceb *Document )encodeFileHeader (_agg _f .BinaryWriter )(_cec int ,_adg error ){const _aee ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_cec ,_adg =_agg .Write (_gb );if _adg !=nil {return _cec ,_ba .Wrap (_adg ,_aee ,"\u0069\u0064");};if _adg =_agg .WriteByte (0x01);_adg !=nil {return _cec ,_ba .Wrap (_adg ,_aee ,"\u0066\u006c\u0061g\u0073");};_cec ++;_abg :=make ([]byte ,4);_a .BigEndian .PutUint32 (_abg ,_aceb .NumberOfPages );
_fdb ,_adg :=_agg .Write (_abg );if _adg !=nil {return _fdb ,_ba .Wrap (_adg ,_aee ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cec +=_fdb ;return _cec ,nil ;};func (_gbc *Document )nextPageNumber ()uint32 {_gbc .NumberOfPages ++;
return _gbc .NumberOfPages };func (_gec *Page )createNormalPage (_ddea *_cc .PageInformationSegment )error {const _bega ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_gec .Bitmap =_bf .New (_ddea .PageBMWidth ,_ddea .PageBMHeight );
if _ddea .DefaultPixelValue !=0{_gec .Bitmap .SetDefaultPixel ();};for _ ,_ccg :=range _gec .Segments {switch _ccg .Type {case 6,7,22,23,38,39,42,43:_gd .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_ccg .SegmentNumber );
_gcff ,_dfdb :=_ccg .GetSegmentData ();if _dfdb !=nil {return _dfdb ;};_baa ,_gadf :=_gcff .(_cc .Regioner );if !_gadf {_gd .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_gcff );
return _ba .Errorf (_bega ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_gcff );
};_dgce ,_dfdb :=_baa .GetRegionBitmap ();if _dfdb !=nil {return _ba .Wrap (_dfdb ,_bega ,"");};if _gec .fitsPage (_ddea ,_dgce ){_gec .Bitmap =_dgce ;}else {_ccad :=_baa .GetRegionInfo ();_gdfa :=_gec .getCombinationOperator (_ddea ,_ccad .CombinaionOperator );
_dfdb =_bf .Blit (_dgce ,_gec .Bitmap ,int (_ccad .XLocation ),int (_ccad .YLocation ),_gdfa );if _dfdb !=nil {return _ba .Wrap (_dfdb ,_bega ,"");};};};};return nil ;};func (_babg *Page )fitsPage (_ffdg *_cc .PageInformationSegment ,_ggfb *_bf .Bitmap )bool {return _babg .countRegions ()==1&&_ffdg .DefaultPixelValue ==0&&_ffdg .PageBMWidth ==_ggfb .Width &&_ffdg .PageBMHeight ==_ggfb .Height ;
};type Page struct{Segments []*_cc .Header ;PageNumber int ;Bitmap *_bf .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;
};func (_cb *Document )completeClassifiedPages ()(_bb error ){const _ccc ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _cb .Classer ==nil {return nil ;};_cb ._da =make ([]int ,_cb .Classer .UndilatedTemplates .Size ());
for _bef :=0;_bef < _cb .Classer .ClassIDs .Size ();_bef ++{_ef ,_cg :=_cb .Classer .ClassIDs .Get (_bef );if _cg !=nil {return _ba .Wrapf (_cg ,_ccc ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_bef );
};_cb ._da [_ef ]++;};var _fg []int ;for _ga :=0;_ga < _cb .Classer .UndilatedTemplates .Size ();_ga ++{if _cb .NumberOfPages ==1||_cb ._da [_ga ]> 1{_fg =append (_fg ,_ga );};};var (_ace *Page ;_fc bool ;);for _ccaf ,_bab :=range *_cb .Classer .ComponentPageNumbers {if _ace ,_fc =_cb .Pages [_bab ];
!_fc {return _ba .Errorf (_ccc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ccaf );};if _ace .EncodingMethod ==GenericEM {_gd .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_ccaf );
continue ;};_cb ._fd [_bab ]=append (_cb ._fd [_bab ],_ccaf );_bg ,_cba :=_cb .Classer .ClassIDs .Get (_ccaf );if _cba !=nil {return _ba .Wrapf (_cba ,_ccc ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ccaf );
};if _cb ._da [_bg ]==1&&_cb .NumberOfPages !=1{_ebf :=append (_cb ._d [_bab ],_bg );_cb ._d [_bab ]=_ebf ;};};if _bb =_cb .Classer .ComputeLLCorners ();_bb !=nil {return _ba .Wrap (_bb ,_ccc ,"");};if _ ,_bb =_cb .addSymbolDictionary (0,_cb .Classer .UndilatedTemplates ,_fg ,_cb ._bac ,false );
_bb !=nil {return _ba .Wrap (_bb ,_ccc ,"");};return nil ;};func (_gbgc *Document )isFileHeaderPresent ()(bool ,error ){_gbgc .InputStream .Mark ();for _ ,_cdb :=range _gb {_dbc ,_beg :=_gbgc .InputStream .ReadByte ();if _beg !=nil {return false ,_beg ;
};if _cdb !=_dbc {_gbgc .InputStream .Reset ();return false ,nil ;};};_gbgc .InputStream .Reset ();return true ,nil ;};func (_fbb *Page )AddPageInformationSegment (){_gbbe :=&_cc .PageInformationSegment {PageBMWidth :_fbb .FinalWidth ,PageBMHeight :_fbb .FinalHeight ,ResolutionX :_fbb .ResolutionX ,ResolutionY :_fbb .ResolutionY ,IsLossless :_fbb .IsLossless };
if _fbb .BlackIsOne {_gbbe .DefaultPixelValue =uint8 (0x1);};_bfa :=&_cc .Header {PageAssociation :_fbb .PageNumber ,SegmentDataLength :uint64 (_gbbe .Size ()),SegmentData :_gbbe ,Type :_cc .TPageInformation };_fbb .Segments =append (_fbb .Segments ,_bfa );
};func (_fccb *Page )getPageInformationSegment ()*_cc .Header {for _ ,_aca :=range _fccb .Segments {if _aca .Type ==_cc .TPageInformation {return _aca ;};};_gd .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_fccb );
return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _f .StreamReader ;GlobalSegments *Globals ;OrganizationType _cc .OrganizationType ;Classer *_eb .Classer ;XRes ,YRes int ;
FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_bf .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_gbb uint8 ;_cd *_f .BufferedWriter ;EncodeGlobals bool ;_gc int ;_d map[int ][]int ;_fd map[int ][]int ;_da []int ;_bac map[int ]int ;
};func (_gbgd *Page )getResolutionX ()(int ,error ){const _aea ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gbgd .ResolutionX !=0{return _gbgd .ResolutionX ,nil ;};_gbgf :=_gbgd .getPageInformationSegment ();if _gbgf ==nil {return 0,_ba .Error (_aea ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_bce ,_agd :=_gbgf .GetSegmentData ();if _agd !=nil {return 0,_ba .Wrap (_agd ,_aea ,"");};_acdf ,_geb :=_bce .(*_cc .PageInformationSegment );if !_geb {return 0,_ba .Errorf (_aea ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bce );
};_gbgd .ResolutionX =_acdf .ResolutionX ;return _gbgd .ResolutionX ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_bag *Document )encodeSegment (_cce *_cc .Header ,_cfa *int )error {const _dcfa ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
_cce .SegmentNumber =_bag .nextSegmentNumber ();_dbf ,_eca :=_cce .Encode (_bag ._cd );if _eca !=nil {return _ba .Wrapf (_eca ,_dcfa ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_cce .SegmentNumber );};*_cfa +=_dbf ;
return nil ;};func (_ded *Page )clearSegmentData (){for _dba :=range _ded .Segments {_ded .Segments [_dba ].CleanSegmentData ();};};func (_dgg *Page )addTextRegionSegment (_ceg []*_cc .Header ,_fdba ,_cfgd map[int ]int ,_dcd []int ,_dcg *_bf .Points ,_aac *_bf .Bitmaps ,_fbf *_e .IntSlice ,_bcb *_bf .Boxes ,_bcce ,_ead int ){_ddg :=&_cc .TextRegion {NumberOfSymbols :uint32 (_ead )};
_ddg .InitEncode (_fdba ,_cfgd ,_dcd ,_dcg ,_aac ,_fbf ,_bcb ,_dgg .FinalWidth ,_dgg .FinalHeight ,_bcce );_dcb :=&_cc .Header {RTSegments :_ceg ,SegmentData :_ddg ,PageAssociation :_dgg .PageNumber ,Type :_cc .TImmediateTextRegion };_edf :=_cc .TPageInformation ;
if _cfgd !=nil {_edf =_cc .TSymbolDictionary ;};var _dcff int ;for ;_dcff < len (_dgg .Segments );_dcff ++{if _dgg .Segments [_dcff ].Type ==_edf {_dcff ++;break ;};};_dgg .Segments =append (_dgg .Segments ,nil );copy (_dgg .Segments [_dcff +1:],_dgg .Segments [_dcff :]);
_dgg .Segments [_dcff ]=_dcb ;};func (_bdb *Document )mapData ()error {const _dae ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_gad []*_cc .Header ;_gfa int64 ;_fdd _cc .Type ;);_fad ,_caca :=_bdb .isFileHeaderPresent ();if _caca !=nil {return _ba .Wrap (_caca ,_dae ,"");
};if _fad {if _caca =_bdb .parseFileHeader ();_caca !=nil {return _ba .Wrap (_caca ,_dae ,"");};_gfa +=int64 (_bdb ._gbb );_bdb .FullHeaders =true ;};var (_ccag *Page ;_ccf bool ;);for _fdd !=51&&!_ccf {_bdc ,_afcf :=_cc .NewHeader (_bdb ,_bdb .InputStream ,_gfa ,_bdb .OrganizationType );
if _afcf !=nil {return _ba .Wrap (_afcf ,_dae ,"");};_gd .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_bdc .SegmentNumber ,_bdc .Type );
_fdd =_bdc .Type ;if _fdd !=_cc .TEndOfFile {if _bdc .PageAssociation !=0{_ccag =_bdb .Pages [_bdc .PageAssociation ];if _ccag ==nil {_ccag =_fffa (_bdb ,_bdc .PageAssociation );_bdb .Pages [_bdc .PageAssociation ]=_ccag ;if _bdb .NumberOfPagesUnknown {_bdb .NumberOfPages ++;
};};_ccag .Segments =append (_ccag .Segments ,_bdc );}else {_bdb .GlobalSegments .AddSegment (_bdc );};};_gad =append (_gad ,_bdc );_gfa =_bdb .InputStream .StreamPosition ();if _bdb .OrganizationType ==_cc .OSequential {_gfa +=int64 (_bdc .SegmentDataLength );
};_ccf ,_afcf =_bdb .reachedEOF (_gfa );if _afcf !=nil {_gd .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_afcf );
return _ba .Wrap (_afcf ,_dae ,"");};};_bdb .determineRandomDataOffsets (_gad ,uint64 (_gfa ));return nil ;};type EncodingMethod int ;func (_bdg *Document )completeSymbols ()(_ggc error ){const _dec ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
if _bdg .Classer ==nil {return nil ;};if _bdg .Classer .UndilatedTemplates ==nil {return _ba .Error (_dec ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");
};_gag :=len (_bdg .Pages )==1;_gbg :=make ([]int ,_bdg .Classer .UndilatedTemplates .Size ());var _fga int ;for _fgb :=0;_fgb < _bdg .Classer .ClassIDs .Size ();_fgb ++{_fga ,_ggc =_bdg .Classer .ClassIDs .Get (_fgb );if _ggc !=nil {return _ba .Wrap (_ggc ,_dec ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_gbg [_fga ]++;};var _ae []int ;for _fcg :=0;_fcg < _bdg .Classer .UndilatedTemplates .Size ();_fcg ++{if _gbg [_fcg ]==0{return _ba .Error (_dec ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");
};if _gbg [_fcg ]> 1||_gag {_ae =append (_ae ,_fcg );};};_bdg ._gc =len (_ae );var _dfc ,_cgg int ;for _ab :=0;_ab < _bdg .Classer .ComponentPageNumbers .Size ();_ab ++{_dfc ,_ggc =_bdg .Classer .ComponentPageNumbers .Get (_ab );if _ggc !=nil {return _ba .Wrapf (_ggc ,_dec ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_ab );
};_cgg ,_ggc =_bdg .Classer .ClassIDs .Get (_ab );if _ggc !=nil {return _ba .Wrapf (_ggc ,_dec ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_dfc );
};if _gbg [_cgg ]==1&&!_gag {_bdg ._d [_dfc ]=append (_bdg ._d [_dfc ],_cgg );};};if _ggc =_bdg .Classer .ComputeLLCorners ();_ggc !=nil {return _ba .Wrap (_ggc ,_dec ,"");};return nil ;};func (_gcac *Page )collectPageStripes ()(_ecc []_cc .Segmenter ,_bagf error ){const _dbd ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
var _ebce _cc .Segmenter ;for _ ,_eab :=range _gcac .Segments {switch _eab .Type {case 6,7,22,23,38,39,42,43:_ebce ,_bagf =_eab .GetSegmentData ();if _bagf !=nil {return nil ,_ba .Wrap (_bagf ,_dbd ,"");};_ecc =append (_ecc ,_ebce );case 50:_ebce ,_bagf =_eab .GetSegmentData ();
if _bagf !=nil {return nil ,_bagf ;};_egc ,_cbaf :=_ebce .(*_cc .EndOfStripe );if !_cbaf {return nil ,_ba .Errorf (_dbd ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_ebce );
};_ecc =append (_ecc ,_egc );_gcac .FinalHeight =_egc .LineNumber ();};};return _ecc ,nil ;};func (_ggf *Document )GetGlobalSegment (i int )(*_cc .Header ,error ){_aad ,_dgf :=_ggf .GlobalSegments .GetSegment (i );if _dgf !=nil {return nil ,_ba .Wrap (_dgf ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
};return _aad ,nil ;};func (_aab *Globals )AddSegment (segment *_cc .Header ){_aab .Segments =append (_aab .Segments ,segment )};func (_dde *Document )parseFileHeader ()error {const _ecf ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_ ,_caa :=_dde .InputStream .Seek (8,_ac .SeekStart );if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u0069\u0064");};_ ,_caa =_dde .InputStream .ReadBits (5);if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
};_cbg ,_caa :=_dde .InputStream .ReadBit ();if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _cbg ==1{_dde .GBUseExtTemplate =true ;};_cbg ,_caa =_dde .InputStream .ReadBit ();
if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _cbg !=1{_dde .NumberOfPagesUnknown =false ;};_cbg ,_caa =_dde .InputStream .ReadBit ();if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
};_dde .OrganizationType =_cc .OrganizationType (_cbg );if !_dde .NumberOfPagesUnknown {_dde .NumberOfPages ,_caa =_dde .InputStream .ReadUint32 ();if _caa !=nil {return _ba .Wrap (_caa ,_ecf ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
};_dde ._gbb =13;};return nil ;};func (_gg *Document )addSymbolDictionary (_cee int ,_cgc *_bf .Bitmaps ,_df []int ,_baf map[int ]int ,_db bool )(*_cc .Header ,error ){const _dfa ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_caf :=&_cc .SymbolDictionary {};if _cbac :=_caf .InitEncode (_cgc ,_df ,_baf ,_db );_cbac !=nil {return nil ,_cbac ;};_dg :=&_cc .Header {Type :_cc .TSymbolDictionary ,PageAssociation :_cee ,SegmentData :_caf };if _cee ==0{if _gg .GlobalSegments ==nil {_gg .GlobalSegments =&Globals {};
};_gg .GlobalSegments .AddSegment (_dg );return _dg ,nil ;};_de ,_cac :=_gg .Pages [_cee ];if !_cac {return nil ,_ba .Errorf (_dfa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cee );};var (_ff int ;
_acb *_cc .Header ;);for _ff ,_acb =range _de .Segments {if _acb .Type ==_cc .TPageInformation {break ;};};_ff ++;_de .Segments =append (_de .Segments ,nil );copy (_de .Segments [_ff +1:],_de .Segments [_ff :]);_de .Segments [_ff ]=_dg ;return _dg ,nil ;
};func (_cdg *Page )getResolutionY ()(int ,error ){const _efg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _cdg .ResolutionY !=0{return _cdg .ResolutionY ,nil ;};_dbb :=_cdg .getPageInformationSegment ();if _dbb ==nil {return 0,_ba .Error (_efg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_dgcf ,_fgc :=_dbb .GetSegmentData ();if _fgc !=nil {return 0,_ba .Wrap (_fgc ,_efg ,"");};_bdf ,_bcbe :=_dgcf .(*_cc .PageInformationSegment );if !_bcbe {return 0,_ba .Errorf (_efg ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_dgcf );
};_cdg .ResolutionY =_bdf .ResolutionY ;return _cdg .ResolutionY ,nil ;};func (_bdgb *Globals )GetSymbolDictionary ()(*_cc .Header ,error ){const _gdb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _bdgb ==nil {return nil ,_ba .Error (_gdb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bdgb .Segments )==0{return nil ,_ba .Error (_gdb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_cfg :=range _bdgb .Segments {if _cfg .Type ==_cc .TSymbolDictionary {return _cfg ,nil ;};};return nil ,_ba .Error (_gdb ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};func (_cecc *Page )createPage (_ede *_cc .PageInformationSegment )error {var _gddg error ;if !_ede .IsStripe ||_ede .PageBMHeight !=-1{_gddg =_cecc .createNormalPage (_ede );}else {_gddg =_cecc .createStripedPage (_ede );};return _gddg ;};func (_caab *Document )reachedEOF (_cacg int64 )(bool ,error ){const _feb ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";
_ ,_cbf :=_caab .InputStream .Seek (_cacg ,_ac .SeekStart );if _cbf !=nil {_gd .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_cbf );
return false ,_ba .Wrap (_cbf ,_feb ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_cbf =_caab .InputStream .ReadBits (32);if _cbf ==_ac .EOF {return true ,nil ;
}else if _cbf !=nil {return false ,_ba .Wrap (_cbf ,_feb ,"");};return false ,nil ;};var _gb =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_ebb *Document )GetNumberOfPages ()(uint32 ,error ){if _ebb .NumberOfPagesUnknown ||_ebb .NumberOfPages ==0{if len (_ebb .Pages )==0{if _cbe :=_ebb .mapData ();
_cbe !=nil {return 0,_ba .Wrap (_cbe ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_ebb .Pages )),nil ;};return _ebb .NumberOfPages ,nil ;};func (_cff *Document )determineRandomDataOffsets (_fcd []*_cc .Header ,_ea uint64 ){if _cff .OrganizationType !=_cc .ORandom {return ;
};for _ ,_gf :=range _fcd {_gf .SegmentDataStartOffset =_ea ;_ea +=_gf .SegmentDataLength ;};};func (_dfg *Page )AddEndOfPageSegment (){_eaa :=&_cc .Header {Type :_cc .TEndOfPage ,PageAssociation :_dfg .PageNumber };_dfg .Segments =append (_dfg .Segments ,_eaa );
};func _eg (_ebe int )int {_bfd :=0;_ed :=(_ebe &(_ebe -1))==0;_ebe >>=1;for ;_ebe !=0;_ebe >>=1{_bfd ++;};if _ed {return _bfd ;};return _bfd +1;};func (_fcc *Page )GetHeight ()(int ,error ){return _fcc .getHeight ()};func (_ccfbg *Page )composePageBitmap ()error {const _cge ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
if _ccfbg .PageNumber ==0{return nil ;};_ebd :=_ccfbg .getPageInformationSegment ();if _ebd ==nil {return _ba .Error (_cge ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};_bad ,_bbf :=_ebd .GetSegmentData ();if _bbf !=nil {return _bbf ;};_afg ,_bfc :=_bad .(*_cc .PageInformationSegment );if !_bfc {return _ba .Error (_cge ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");
};if _bbf =_ccfbg .createPage (_afg );_bbf !=nil {return _ba .Wrap (_bbf ,_cge ,"");};_ccfbg .clearSegmentData ();return nil ;};func (_bde *Page )GetWidth ()(int ,error ){return _bde .getWidth ()};func (_ggd *Page )getWidth ()(int ,error ){const _fce ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
if _ggd .FinalWidth !=0{return _ggd .FinalWidth ,nil ;};_cdd :=_ggd .getPageInformationSegment ();if _cdd ==nil {return 0,_ba .Error (_fce ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fab ,_gfg :=_cdd .GetSegmentData ();
if _gfg !=nil {return 0,_ba .Wrap (_gfg ,_fce ,"");};_dbe ,_bba :=_fab .(*_cc .PageInformationSegment );if !_bba {return 0,_ba .Errorf (_fce ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_fab );
};_ggd .FinalWidth =_dbe .PageBMWidth ;return _ggd .FinalWidth ,nil ;};func (_bc *Document )produceClassifiedPages ()(_gdg error ){const _ee ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
if _bc .Classer ==nil {return nil ;};var (_dcf *Page ;_bd bool ;_ca *_cc .Header ;);for _ebc :=1;_ebc <=int (_bc .NumberOfPages );_ebc ++{if _dcf ,_bd =_bc .Pages [_ebc ];!_bd {return _ba .Errorf (_ee ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ebc );
};if _dcf .EncodingMethod ==GenericEM {continue ;};if _ca ==nil {if _ca ,_gdg =_bc .GlobalSegments .GetSymbolDictionary ();_gdg !=nil {return _ba .Wrap (_gdg ,_ee ,"");};};if _gdg =_bc .produceClassifiedPage (_dcf ,_ca );_gdg !=nil {return _ba .Wrapf (_gdg ,_ee ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ebc );
};};return nil ;};func (_gcf *Document )AddGenericPage (bm *_bf .Bitmap ,duplicateLineRemoval bool )(_fb error ){const _dc ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_gcf .FullHeaders &&_gcf .NumberOfPages !=0{return _ba .Error (_dc ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};_cca :=&Page {Segments :[]*_cc .Header {},Bitmap :bm ,Document :_gcf ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_bf .Chocolate };_cca .PageNumber =int (_gcf .nextPageNumber ());_gcf .Pages [_cca .PageNumber ]=_cca ;
bm .InverseData ();_cca .AddPageInformationSegment ();if _fb =_cca .AddGenericRegion (bm ,0,0,0,_cc .TImmediateGenericRegion ,duplicateLineRemoval );_fb !=nil {return _ba .Wrap (_fb ,_dc ,"");};if _gcf .FullHeaders {_cca .AddEndOfPageSegment ();};return nil ;
};func (_efa *Page )GetResolutionY ()(int ,error ){return _efa .getResolutionY ()};func (_afgg *Page )countRegions ()int {var _gecg int ;for _ ,_dbdc :=range _afgg .Segments {switch _dbdc .Type {case 6,7,22,23,38,39,42,43:_gecg ++;};};return _gecg ;};func (_ffb *Page )Encode (w _f .BinaryWriter )(_gdbg int ,_fee error ){const _ge ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _bbea int ;for _ ,_gee :=range _ffb .Segments {if _bbea ,_fee =_gee .Encode (w );_fee !=nil {return _gdbg ,_ba .Wrap (_fee ,_ge ,"");};_gdbg +=_bbea ;};return _gdbg ,nil ;};func (_beb *Document )produceClassifiedPage (_ec *Page ,_dd *_cc .Header )(_bee error ){const _fa ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
var _ce map[int ]int ;_acg :=_beb ._gc ;_cf :=[]*_cc .Header {_dd };if len (_beb ._d [_ec .PageNumber ])> 0{_ce =map[int ]int {};_cdf ,_bbb :=_beb .addSymbolDictionary (_ec .PageNumber ,_beb .Classer .UndilatedTemplates ,_beb ._d [_ec .PageNumber ],_ce ,false );
if _bbb !=nil {return _ba .Wrap (_bbb ,_fa ,"");};_cf =append (_cf ,_cdf );_acg +=len (_beb ._d [_ec .PageNumber ]);};_beeb :=_beb ._fd [_ec .PageNumber ];_gd .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_ec .PageNumber ,_beeb );
_ec .addTextRegionSegment (_cf ,_beb ._bac ,_ce ,_beb ._fd [_ec .PageNumber ],_beb .Classer .PtaLL ,_beb .Classer .UndilatedTemplates ,_beb .Classer .ClassIDs ,nil ,_eg (_acg ),len (_beb ._fd [_ec .PageNumber ]));return nil ;};func (_fdf *Page )getCombinationOperator (_febe *_cc .PageInformationSegment ,_bbg _bf .CombinationOperator )_bf .CombinationOperator {if _febe .CombinationOperatorOverrideAllowed (){return _bbg ;
};return _febe .CombinationOperator ();};func (_cag *Page )String ()string {return _af .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_cag .PageNumber );};func (_cface *Page )AddGenericRegion (bm *_bf .Bitmap ,xloc ,yloc ,template int ,tp _cc .Type ,duplicateLineRemoval bool )error {const _bcc ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
_eaab :=&_cc .GenericRegion {};if _ddc :=_eaab .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_ddc !=nil {return _ba .Wrap (_ddc ,_bcc ,"");};_cecd :=&_cc .Header {Type :_cc .TImmediateGenericRegion ,PageAssociation :_cface .PageNumber ,SegmentData :_eaab };
_cface .Segments =append (_cface .Segments ,_cecd );return nil ;};type Globals struct{Segments []*_cc .Header ;};func (_cfb *Page )GetBitmap ()(_deb *_bf .Bitmap ,_ggcc error ){_gd .Log .Trace (_af .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_cfb .PageNumber ));
defer func (){if _ggcc !=nil {_gd .Log .Trace (_af .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_cfb .PageNumber ,_ggcc ));
}else {_gd .Log .Trace (_af .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_cfb .PageNumber ));};}();if _cfb .Bitmap !=nil {return _cfb .Bitmap ,nil ;
};_ggcc =_cfb .composePageBitmap ();if _ggcc !=nil {return nil ,_ggcc ;};return _cfb .Bitmap ,nil ;};func DecodeDocument (input _f .StreamReader ,globals *Globals )(*Document ,error ){return _ggce (input ,globals );};func (_gcfe *Document )AddClassifiedPage (bm *_bf .Bitmap ,method _eb .Method )(_cda error ){const _aa ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";
if !_gcfe .FullHeaders &&_gcfe .NumberOfPages !=0{return _ba .Error (_aa ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};if _gcfe .Classer ==nil {if _gcfe .Classer ,_cda =_eb .Init (_eb .DefaultSettings ());_cda !=nil {return _ba .Wrap (_cda ,_aa ,"");};};_be :=int (_gcfe .nextPageNumber ());_ag :=&Page {Segments :[]*_cc .Header {},Bitmap :bm ,Document :_gcfe ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_be };
_gcfe .Pages [_be ]=_ag ;switch method {case _eb .RankHaus :_ag .EncodingMethod =RankHausEM ;case _eb .Correlation :_ag .EncodingMethod =CorrelationEM ;};_ag .AddPageInformationSegment ();if _cda =_gcfe .Classer .AddPage (bm ,_be ,method );_cda !=nil {return _ba .Wrap (_cda ,_aa ,"");
};if _gcfe .FullHeaders {_ag .AddEndOfPageSegment ();};return nil ;};func (_fba *Page )GetResolutionX ()(int ,error ){return _fba .getResolutionX ()};func (_ccagc *Globals )GetSegment (segmentNumber int )(*_cc .Header ,error ){const _dgc ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
if _ccagc ==nil {return nil ,_ba .Error (_dgc ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ccagc .Segments )==0{return nil ,_ba .Error (_dgc ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};var _bbbc *_cc .Header ;for _ ,_bbbc =range _ccagc .Segments {if _bbbc .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _bbbc ==nil {return nil ,_ba .Error (_dgc ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _bbbc ,nil ;};func (_bff *Globals )GetSegmentByIndex (index int )(*_cc .Header ,error ){const _daeb ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _bff ==nil {return nil ,_ba .Error (_daeb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_bff .Segments )==0{return nil ,_ba .Error (_daeb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_bff .Segments )-1{return nil ,_ba .Error (_daeb ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
};return _bff .Segments [index ],nil ;};func _ggce (_ccfb _f .StreamReader ,_fgg *Globals )(*Document ,error ){_egf :=&Document {Pages :make (map[int ]*Page ),InputStream :_ccfb ,OrganizationType :_cc .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_fgg ,_gbb :9};
if _egf .GlobalSegments ==nil {_egf .GlobalSegments =&Globals {};};if _fggf :=_egf .mapData ();_fggf !=nil {return nil ,_fggf ;};return _egf ,nil ;};func (_gaa *Document )Encode ()(_bec []byte ,_bfdg error ){const _bfg ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _gac ,_afc int ;if _gaa .FullHeaders {if _gac ,_bfdg =_gaa .encodeFileHeader (_gaa ._cd );_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");};};var (_edc bool ;_befa *_cc .Header ;_eea *Page ;);if _bfdg =_gaa .completeClassifiedPages ();_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");
};if _bfdg =_gaa .produceClassifiedPages ();_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");};if _gaa .GlobalSegments !=nil {for _ ,_befa =range _gaa .GlobalSegments .Segments {if _bfdg =_gaa .encodeSegment (_befa ,&_gac );_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");
};};};for _acga :=1;_acga <=int (_gaa .NumberOfPages );_acga ++{if _eea ,_edc =_gaa .Pages [_acga ];!_edc {return nil ,_ba .Errorf (_bfg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_acga );};for _ ,_befa =range _eea .Segments {if _bfdg =_gaa .encodeSegment (_befa ,&_gac );
_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");};};};if _gaa .FullHeaders {if _afc ,_bfdg =_gaa .encodeEOFHeader (_gaa ._cd );_bfdg !=nil {return nil ,_ba .Wrap (_bfdg ,_bfg ,"");};_gac +=_afc ;};_bec =_gaa ._cd .Data ();if len (_bec )!=_gac {_gd .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_gac ,len (_bec ));
};return _bec ,nil ;};func (_edce *Page )GetSegment (number int )(*_cc .Header ,error ){const _gcb ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_cga :=range _edce .Segments {if _cga .SegmentNumber ==uint32 (number ){return _cga ,nil ;
};};_ccfg :=make ([]uint32 ,len (_edce .Segments ));for _adc ,_gdd :=range _edce .Segments {_ccfg [_adc ]=_gdd .SegmentNumber ;};return nil ,_ba .Errorf (_gcb ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_edce .PageNumber ,_ccfg );
};func _fffa (_gbge *Document ,_gdf int )*Page {return &Page {Document :_gbge ,PageNumber :_gdf ,Segments :[]*_cc .Header {}};};func (_bbd *Document )GetPage (pageNumber int )(_cc .Pager ,error ){const _fcga ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
if pageNumber < 0{_gd .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_c .Stack ());
return nil ,_ba .Errorf (_fcga ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );
};if pageNumber > len (_bbd .Pages ){_gd .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_ba .Error (_fcga ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};_fe ,_gca :=_bbd .Pages [pageNumber ];if !_gca {_gd .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_ba .Errorf (_fcga ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _fe ,nil ;};func (_fcce *Page )nextSegmentNumber ()uint32 {return _fcce .Document .nextSegmentNumber ()};func (_bda *Page )getHeight ()(int ,error ){const _bebc ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bda .FinalHeight !=0{return _bda .FinalHeight ,nil ;
};_gfe :=_bda .getPageInformationSegment ();if _gfe ==nil {return 0,_ba .Error (_bebc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_febf ,_bada :=_gfe .GetSegmentData ();if _bada !=nil {return 0,_ba .Wrap (_bada ,_bebc ,"");
};_eda ,_fca :=_febf .(*_cc .PageInformationSegment );if !_fca {return 0,_ba .Errorf (_bebc ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_febf );
};if _eda .PageBMHeight ==_b .MaxInt32 {_ ,_bada =_bda .GetBitmap ();if _bada !=nil {return 0,_ba .Wrap (_bada ,_bebc ,"");};}else {_bda .FinalHeight =_eda .PageBMHeight ;};return _bda .FinalHeight ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_cd :_f .BufferedMSB (),Pages :map[int ]*Page {},_d :map[int ][]int {},_bac :map[int ]int {},_fd :map[int ][]int {}};
};func (_geg *Page )createStripedPage (_bbc *_cc .PageInformationSegment )error {const _gga ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_dfag ,_gdfe :=_geg .collectPageStripes ();if _gdfe !=nil {return _ba .Wrap (_gdfe ,_gga ,"");
};var _cacc int ;for _ ,_daf :=range _dfag {if _dgb ,_acf :=_daf .(*_cc .EndOfStripe );_acf {_cacc =_dgb .LineNumber ()+1;}else {_gagd :=_daf .(_cc .Regioner );_decg :=_gagd .GetRegionInfo ();_cgce :=_geg .getCombinationOperator (_bbc ,_decg .CombinaionOperator );
_fggfa ,_gbf :=_gagd .GetRegionBitmap ();if _gbf !=nil {return _ba .Wrap (_gbf ,_gga ,"");};_gbf =_bf .Blit (_fggfa ,_geg .Bitmap ,int (_decg .XLocation ),_cacc ,_cgce );if _gbf !=nil {return _ba .Wrap (_gbf ,_gga ,"");};};};return nil ;};func (_fdc *Document )nextSegmentNumber ()uint32 {_bbe :=_fdc .CurrentSegmentNumber ;
_fdc .CurrentSegmentNumber ++;return _bbe ;};func (_gcd *Page )lastSegmentNumber ()(_fgda uint32 ,_efaf error ){const _ecd ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_gcd .Segments )==0{return _fgda ,_ba .Errorf (_ecd ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_gcd .PageNumber );
};return _gcd .Segments [len (_gcd .Segments )-1].SegmentNumber ,nil ;};func (_cfac *Document )encodeEOFHeader (_fgd _f .BinaryWriter )(_gda int ,_deff error ){_bgd :=&_cc .Header {SegmentNumber :_cfac .nextSegmentNumber (),Type :_cc .TEndOfFile };if _gda ,_deff =_bgd .Encode (_fgd );
_deff !=nil {return 0,_ba .Wrap (_deff ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _gda ,nil ;};