aboutsummaryrefslogtreecommitdiff
path: root/unipdf/internal/jbig2
diff options
context:
space:
mode:
authorleshe4ka46 <alex9102naid1@ya.ru>2025-10-19 14:47:59 +0300
committerleshe4ka46 <alex9102naid1@ya.ru>2025-10-19 14:47:59 +0300
commite17a425dfb3382310fb5863f516dacdca9f44956 (patch)
tree7babb3048d0eb20aa1e68e9b29c2acfa794ab96f /unipdf/internal/jbig2
parent091963a50c3bb2926f559f01c49e8f5bd03d2bfd (diff)
fuck the unipdf licencing
Diffstat (limited to 'unipdf/internal/jbig2')
-rw-r--r--unipdf/internal/jbig2/basic/basic.go23
-rw-r--r--unipdf/internal/jbig2/bench/bench.go12
-rw-r--r--unipdf/internal/jbig2/bitmap/bitmap.go657
-rw-r--r--unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go36
-rw-r--r--unipdf/internal/jbig2/decoder/decoder.go22
-rw-r--r--unipdf/internal/jbig2/decoder/huffman/huffman.go43
-rw-r--r--unipdf/internal/jbig2/decoder/mmr/mmr.go50
-rw-r--r--unipdf/internal/jbig2/document/document.go132
-rw-r--r--unipdf/internal/jbig2/document/segments/segments.go618
-rw-r--r--unipdf/internal/jbig2/encoder/arithmetic/arithmetic.go59
-rw-r--r--unipdf/internal/jbig2/encoder/classer/classer.go110
-rw-r--r--unipdf/internal/jbig2/errors/errors.go16
-rw-r--r--unipdf/internal/jbig2/internal/internal.go12
-rw-r--r--unipdf/internal/jbig2/jbig2.go17
14 files changed, 1807 insertions, 0 deletions
diff --git a/unipdf/internal/jbig2/basic/basic.go b/unipdf/internal/jbig2/basic/basic.go
new file mode 100644
index 0000000..65d849b
--- /dev/null
+++ b/unipdf/internal/jbig2/basic/basic.go
@@ -0,0 +1,23 @@
+//
+// 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 basic ;import _g "github.com/unidoc/unipdf/v4/internal/jbig2/errors";func (_dg *IntSlice )Copy ()*IntSlice {_ag :=IntSlice (make ([]int ,len (*_dg )));copy (_ag ,*_dg );return &_ag ;};func NewIntSlice (i int )*IntSlice {_ae :=IntSlice (make ([]int ,i ));
+return &_ae };func (_e IntsMap )Add (key uint64 ,value int ){_e [key ]=append (_e [key ],value )};func (_f IntsMap )Get (key uint64 )(int ,bool ){_ec ,_gf :=_f [key ];if !_gf {return 0,false ;};if len (_ec )==0{return 0,false ;};return _ec [0],true ;};
+func (_cg *Stack )top ()int {return len (_cg .Data )-1};func (_aa *IntSlice )Add (v int )error {if _aa ==nil {return _g .Error ("\u0049\u006e\u0074S\u006c\u0069\u0063\u0065\u002e\u0041\u0064\u0064","\u0073\u006c\u0069\u0063\u0065\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064");
+};*_aa =append (*_aa ,v );return nil ;};func (_ggd *NumSlice )AddInt (v int ){*_ggd =append (*_ggd ,float32 (v ))};type NumSlice []float32 ;type Stack struct{Data []interface{};Aux *Stack ;};func (_fc *Stack )Push (v interface{}){_fc .Data =append (_fc .Data ,v )};
+func NewNumSlice (i int )*NumSlice {_ga :=NumSlice (make ([]float32 ,i ));return &_ga };func (_da *Stack )Len ()int {return len (_da .Data )};func (_db *NumSlice )Add (v float32 ){*_db =append (*_db ,v )};type IntsMap map[uint64 ][]int ;type IntSlice []int ;
+func (_d IntsMap )Delete (key uint64 ){delete (_d ,key )};func Ceil (numerator ,denominator int )int {if numerator %denominator ==0{return numerator /denominator ;};return (numerator /denominator )+1;};func (_gg IntSlice )Get (index int )(int ,error ){if index > len (_gg )-1{return 0,_g .Errorf ("\u0049\u006e\u0074S\u006c\u0069\u0063\u0065\u002e\u0047\u0065\u0074","\u0069\u006e\u0064\u0065x:\u0020\u0025\u0064\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006eg\u0065",index );
+};return _gg [index ],nil ;};func (_cfc *Stack )Peek ()(_afe interface{},_de bool ){return _cfc .peek ()};func (_eg *Stack )Pop ()(_ded interface{},_ge bool ){_ded ,_ge =_eg .peek ();if !_ge {return nil ,_ge ;};_eg .Data =_eg .Data [:_eg .top ()];return _ded ,true ;
+};func (_c IntsMap )GetSlice (key uint64 )([]int ,bool ){_fb ,_gc :=_c [key ];if !_gc {return nil ,false ;};return _fb ,true ;};func Min (x ,y int )int {if x < y {return x ;};return y ;};func (_af NumSlice )GetInt (i int )(int ,error ){const _ca ="\u0047\u0065\u0074\u0049\u006e\u0074";
+if i < 0||i > len (_af )-1{return 0,_g .Errorf (_ca ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};_fe :=_af [i ];return int (_fe +Sign (_fe )*0.5),nil ;};
+func Max (x ,y int )int {if x > y {return x ;};return y ;};func Abs (v int )int {if v > 0{return v ;};return -v ;};func (_aef NumSlice )GetIntSlice ()[]int {_cb :=make ([]int ,len (_aef ));for _ed ,_cf :=range _aef {_cb [_ed ]=int (_cf );};return _cb ;
+};func (_df *Stack )peek ()(interface{},bool ){_ea :=_df .top ();if _ea ==-1{return nil ,false ;};return _df .Data [_ea ],true ;};func Sign (v float32 )float32 {if v >=0.0{return 1.0;};return -1.0;};func (_gb IntSlice )Size ()int {return len (_gb )};func (_ecg NumSlice )Get (i int )(float32 ,error ){if i < 0||i > len (_ecg )-1{return 0,_g .Errorf ("\u004e\u0075\u006dS\u006c\u0069\u0063\u0065\u002e\u0047\u0065\u0074","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};return _ecg [i ],nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/bench/bench.go b/unipdf/internal/jbig2/bench/bench.go
new file mode 100644
index 0000000..3d19511
--- /dev/null
+++ b/unipdf/internal/jbig2/bench/bench.go
@@ -0,0 +1,12 @@
+//
+// 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 bench ; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/bitmap/bitmap.go b/unipdf/internal/jbig2/bitmap/bitmap.go
new file mode 100644
index 0000000..3f9c4ab
--- /dev/null
+++ b/unipdf/internal/jbig2/bitmap/bitmap.go
@@ -0,0 +1,657 @@
+//
+// 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 bitmap ;import (_ge "encoding/binary";_e "github.com/stretchr/testify/require";_de "github.com/unidoc/unipdf/v4/common";_dc "github.com/unidoc/unipdf/v4/internal/bitwise";_cg "github.com/unidoc/unipdf/v4/internal/imageutil";_db "github.com/unidoc/unipdf/v4/internal/jbig2/basic";
+_g "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_b "image";_gf "math";_dd "sort";_d "strings";_f "testing";);func (_cabf *Bitmaps )SelectByIndexes (idx []int )(*Bitmaps ,error ){const _fga ="B\u0069\u0074\u006d\u0061\u0070\u0073.\u0053\u006f\u0072\u0074\u0049\u006e\u0064\u0065\u0078e\u0073\u0042\u0079H\u0065i\u0067\u0068\u0074";
+_caec ,_dcac :=_cabf .selectByIndexes (idx );if _dcac !=nil {return nil ,_g .Wrap (_dcac ,_fga ,"");};return _caec ,nil ;};func _bgef ()(_ecdf [256]uint16 ){for _bfe :=0;_bfe < 256;_bfe ++{if _bfe &0x01!=0{_ecdf [_bfe ]|=0x3;};if _bfe &0x02!=0{_ecdf [_bfe ]|=0xc;
+};if _bfe &0x04!=0{_ecdf [_bfe ]|=0x30;};if _bfe &0x08!=0{_ecdf [_bfe ]|=0xc0;};if _bfe &0x10!=0{_ecdf [_bfe ]|=0x300;};if _bfe &0x20!=0{_ecdf [_bfe ]|=0xc00;};if _bfe &0x40!=0{_ecdf [_bfe ]|=0x3000;};if _bfe &0x80!=0{_ecdf [_bfe ]|=0xc000;};};return _ecdf ;
+};func _cfca (_cdaae *Bitmap ,_debf *Bitmap ,_dbbaa *Selection ,_daac **Bitmap )(*Bitmap ,error ){const _eceeg ="\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u004d\u006f\u0072\u0070\u0068A\u0072\u0067\u0073\u0031";if _debf ==nil {return nil ,_g .Error (_eceeg ,"\u004d\u006f\u0072\u0070\u0068\u0041\u0072\u0067\u0073\u0031\u0020'\u0073\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066i\u006e\u0065\u0064");
+};if _dbbaa ==nil {return nil ,_g .Error (_eceeg ,"\u004d\u006f\u0072\u0068p\u0041\u0072\u0067\u0073\u0031\u0020\u0027\u0073\u0065\u006c'\u0020n\u006f\u0074\u0020\u0064\u0065\u0066\u0069n\u0065\u0064");};_ffff ,_cbcff :=_dbbaa .Height ,_dbbaa .Width ;if _ffff ==0||_cbcff ==0{return nil ,_g .Error (_eceeg ,"\u0073\u0065\u006c\u0065ct\u0069\u006f\u006e\u0020\u006f\u0066\u0020\u0073\u0069\u007a\u0065\u0020\u0030");
+};if _cdaae ==nil {_cdaae =_debf .createTemplate ();*_daac =_debf ;return _cdaae ,nil ;};_cdaae .Width =_debf .Width ;_cdaae .Height =_debf .Height ;_cdaae .RowStride =_debf .RowStride ;_cdaae .Color =_debf .Color ;_cdaae .Data =make ([]byte ,_debf .RowStride *_debf .Height );
+if _cdaae ==_debf {*_daac =_debf .Copy ();}else {*_daac =_debf ;};return _cdaae ,nil ;};func HausTest (p1 ,p2 ,p3 ,p4 *Bitmap ,delX ,delY float32 ,maxDiffW ,maxDiffH int )(bool ,error ){const _gecd ="\u0048\u0061\u0075\u0073\u0054\u0065\u0073\u0074";_gbea ,_ebcae :=p1 .Width ,p1 .Height ;
+_fbbd ,_gfdf :=p3 .Width ,p3 .Height ;if _db .Abs (_gbea -_fbbd )> maxDiffW {return false ,nil ;};if _db .Abs (_ebcae -_gfdf )> maxDiffH {return false ,nil ;};_afcd :=int (delX +_db .Sign (delX )*0.5);_gdfd :=int (delY +_db .Sign (delY )*0.5);var _febf error ;
+_geef :=p1 .CreateTemplate ();if _febf =_geef .RasterOperation (0,0,_gbea ,_ebcae ,PixSrc ,p1 ,0,0);_febf !=nil {return false ,_g .Wrap (_febf ,_gecd ,"p\u0031\u0020\u002d\u0053\u0052\u0043\u002d\u003e\u0020\u0074");};if _febf =_geef .RasterOperation (_afcd ,_gdfd ,_gbea ,_ebcae ,PixNotSrcAndDst ,p4 ,0,0);
+_febf !=nil {return false ,_g .Wrap (_febf ,_gecd ,"\u0021p\u0034\u0020\u0026\u0020\u0074");};if _geef .Zero (){return false ,nil ;};if _febf =_geef .RasterOperation (_afcd ,_gdfd ,_fbbd ,_gfdf ,PixSrc ,p3 ,0,0);_febf !=nil {return false ,_g .Wrap (_febf ,_gecd ,"p\u0033\u0020\u002d\u0053\u0052\u0043\u002d\u003e\u0020\u0074");
+};if _febf =_geef .RasterOperation (0,0,_fbbd ,_gfdf ,PixNotSrcAndDst ,p2 ,0,0);_febf !=nil {return false ,_g .Wrap (_febf ,_gecd ,"\u0021p\u0032\u0020\u0026\u0020\u0074");};return _geef .Zero (),nil ;};func _dbfb (_caca ...MorphProcess )(_eace error ){const _bbfeb ="v\u0065r\u0069\u0066\u0079\u004d\u006f\u0072\u0070\u0068P\u0072\u006f\u0063\u0065ss\u0065\u0073";
+var _cegf ,_fddc int ;for _effd ,_eagc :=range _caca {if _eace =_eagc .verify (_effd ,&_cegf ,&_fddc );_eace !=nil {return _g .Wrap (_eace ,_bbfeb ,"");};};if _fddc !=0&&_cegf !=0{return _g .Error (_bbfeb ,"\u004d\u006f\u0072\u0070\u0068\u0020\u0073\u0065\u0071\u0075\u0065n\u0063\u0065\u0020\u002d\u0020\u0062\u006f\u0072d\u0065r\u0020\u0061\u0064\u0064\u0065\u0064\u0020\u0062\u0075\u0074\u0020\u006e\u0065\u0074\u0020\u0072\u0065\u0064u\u0063\u0074\u0069\u006f\u006e\u0020\u006e\u006f\u0074\u0020\u0030");
+};return nil ;};func _fcac (_cdgc ,_aefg ,_ddgbg byte )byte {return (_cdgc &^(_ddgbg ))|(_aefg &_ddgbg )};func _gebg (_bgea *_db .Stack ,_cagf ,_aaea ,_dadb ,_bccd ,_bfgeb int ,_fgefa *_b .Rectangle )(_ggcd error ){const _acec ="\u0070\u0075\u0073\u0068\u0046\u0069\u006c\u006c\u0053\u0065\u0067m\u0065\u006e\u0074\u0042\u006f\u0075\u006e\u0064\u0069\u006eg\u0042\u006f\u0078";
+if _bgea ==nil {return _g .Error (_acec ,"\u006ei\u006c \u0073\u0074\u0061\u0063\u006b \u0070\u0072o\u0076\u0069\u0064\u0065\u0064");};if _fgefa ==nil {return _g .Error (_acec ,"\u0070\u0072\u006f\u0076i\u0064\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0069\u006da\u0067e\u002e\u0052\u0065\u0063\u0074\u0061\u006eg\u006c\u0065");
+};_fgefa .Min .X =_db .Min (_fgefa .Min .X ,_cagf );_fgefa .Max .X =_db .Max (_fgefa .Max .X ,_aaea );_fgefa .Min .Y =_db .Min (_fgefa .Min .Y ,_dadb );_fgefa .Max .Y =_db .Max (_fgefa .Max .Y ,_dadb );if _dadb +_bccd < 0||_dadb +_bccd > _bfgeb {return nil ;
+};if _bgea .Aux ==nil {return _g .Error (_acec ,"a\u0075x\u0053\u0074\u0061\u0063\u006b\u0020\u006e\u006ft\u0020\u0064\u0065\u0066in\u0065\u0064");};var _bcce *fillSegment ;_ggadg ,_bebd :=_bgea .Aux .Pop ();if _bebd {if _bcce ,_bebd =_ggadg .(*fillSegment );
+!_bebd {return _g .Error (_acec ,"a\u0075\u0078\u0053\u0074\u0061\u0063k\u0020\u0064\u0061\u0074\u0061\u0020i\u0073\u0020\u006e\u006f\u0074\u0020\u0061 \u002a\u0066\u0069\u006c\u006c\u0053\u0065\u0067\u006d\u0065n\u0074");};}else {_bcce =&fillSegment {};
+};_bcce ._fgeg =_cagf ;_bcce ._efcee =_aaea ;_bcce ._gdda =_dadb ;_bcce ._gfff =_bccd ;_bgea .Push (_bcce );return nil ;};func Rect (x ,y ,w ,h int )(*_b .Rectangle ,error ){const _fdbad ="b\u0069\u0074\u006d\u0061\u0070\u002e\u0052\u0065\u0063\u0074";
+if x < 0{w +=x ;x =0;if w <=0{return nil ,_g .Errorf (_fdbad ,"x\u003a\u0027\u0025\u0064\u0027\u0020<\u0020\u0030\u0020\u0061\u006e\u0064\u0020\u0077\u003a \u0027\u0025\u0064'\u0020<\u003d\u0020\u0030",x ,w );};};if y < 0{h +=y ;y =0;if h <=0{return nil ,_g .Error (_fdbad ,"\u0079\u0020\u003c 0\u0020\u0061\u006e\u0064\u0020\u0062\u006f\u0078\u0020\u006f\u0066\u0066\u0020\u002b\u0071\u0075\u0061\u0064");
+};};_cdee :=_b .Rect (x ,y ,x +w ,y +h );return &_cdee ,nil ;};func Centroid (bm *Bitmap ,centTab ,sumTab []int )(Point ,error ){return bm .centroid (centTab ,sumTab )};type Getter interface{GetBitmap ()*Bitmap ;};func (_dgccc *ClassedPoints )SortByX (){_dgccc ._bdde =_dgccc .xSortFunction ();
+_dd .Sort (_dgccc )};func _afdf (_edf ,_gbab ,_ddfd *Bitmap )(*Bitmap ,error ){const _dacd ="\u0073\u0075\u0062\u0074\u0072\u0061\u0063\u0074";if _gbab ==nil {return nil ,_g .Error (_dacd ,"'\u0073\u0031\u0027\u0020\u0069\u0073\u0020\u006e\u0069\u006c");
+};if _ddfd ==nil {return nil ,_g .Error (_dacd ,"'\u0073\u0032\u0027\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};var _efa error ;switch _edf {case _gbab :if _efa =_edf .RasterOperation (0,0,_gbab .Width ,_gbab .Height ,PixNotSrcAndDst ,_ddfd ,0,0);_efa !=nil {return nil ,_g .Wrap (_efa ,_dacd ,"\u0064 \u003d\u003d\u0020\u0073\u0031");
+};case _ddfd :if _efa =_edf .RasterOperation (0,0,_gbab .Width ,_gbab .Height ,PixNotSrcAndDst ,_gbab ,0,0);_efa !=nil {return nil ,_g .Wrap (_efa ,_dacd ,"\u0064 \u003d\u003d\u0020\u0073\u0032");};default:_edf ,_efa =_bgff (_edf ,_gbab );if _efa !=nil {return nil ,_g .Wrap (_efa ,_dacd ,"");
+};if _efa =_edf .RasterOperation (0,0,_gbab .Width ,_gbab .Height ,PixNotSrcAndDst ,_ddfd ,0,0);_efa !=nil {return nil ,_g .Wrap (_efa ,_dacd ,"\u0064e\u0066\u0061\u0075\u006c\u0074");};};return _edf ,nil ;};func (_fege *ClassedPoints )xSortFunction ()func (_eebc int ,_efcc int )bool {return func (_agbc ,_dcef int )bool {return _fege .XAtIndex (_agbc )< _fege .XAtIndex (_dcef )};
+};type Bitmap struct{Width ,Height int ;BitmapNumber int ;RowStride int ;Data []byte ;Color Color ;Special int ;Text string ;XResolution ,YResolution int ;};func (_agc *Bitmap )GetUnpaddedData ()([]byte ,error ){_dec :=uint (_agc .Width &0x07);if _dec ==0{return _agc .Data ,nil ;
+};_fec :=_agc .Width *_agc .Height ;if _fec %8!=0{_fec >>=3;_fec ++;}else {_fec >>=3;};_bgab :=make ([]byte ,_fec );_cdc :=_dc .NewWriterMSB (_bgab );const _afebb ="\u0047e\u0074U\u006e\u0070\u0061\u0064\u0064\u0065\u0064\u0044\u0061\u0074\u0061";for _gfc :=0;
+_gfc < _agc .Height ;_gfc ++{for _eead :=0;_eead < _agc .RowStride ;_eead ++{_beca :=_agc .Data [_gfc *_agc .RowStride +_eead ];if _eead !=_agc .RowStride -1{_bed :=_cdc .WriteByte (_beca );if _bed !=nil {return nil ,_g .Wrap (_bed ,_afebb ,"");};continue ;
+};for _add :=uint (0);_add < _dec ;_add ++{_cge :=_cdc .WriteBit (int (_beca >>(7-_add )&0x01));if _cge !=nil {return nil ,_g .Wrap (_cge ,_afebb ,"");};};};};return _bgab ,nil ;};func (_gacb *Bitmap )setTwoBytes (_aedg int ,_abbd uint16 )error {if _aedg +1> len (_gacb .Data )-1{return _g .Errorf ("s\u0065\u0074\u0054\u0077\u006f\u0042\u0079\u0074\u0065\u0073","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",_aedg );
+};_gacb .Data [_aedg ]=byte ((_abbd &0xff00)>>8);_gacb .Data [_aedg +1]=byte (_abbd &0xff);return nil ;};func (_gefbc *ClassedPoints )ySortFunction ()func (_ecac int ,_eddd int )bool {return func (_dddd ,_dgca int )bool {return _gefbc .YAtIndex (_dddd )< _gefbc .YAtIndex (_dgca )};
+};func init (){for _ddea :=0;_ddea < 256;_ddea ++{_fee [_ddea ]=uint8 (_ddea &0x1)+(uint8 (_ddea >>1)&0x1)+(uint8 (_ddea >>2)&0x1)+(uint8 (_ddea >>3)&0x1)+(uint8 (_ddea >>4)&0x1)+(uint8 (_ddea >>5)&0x1)+(uint8 (_ddea >>6)&0x1)+(uint8 (_ddea >>7)&0x1);};
+};func TstImageBitmapInverseData ()[]byte {_eaad :=_cfdf .Copy ();_eaad .InverseData ();return _eaad .Data ;};const (_geaaa shift =iota ;_fbegg ;);func TstASymbol (t *_f .T )*Bitmap {t .Helper ();_ebbac :=New (6,6);_e .NoError (t ,_ebbac .SetPixel (1,0,1));
+_e .NoError (t ,_ebbac .SetPixel (2,0,1));_e .NoError (t ,_ebbac .SetPixel (3,0,1));_e .NoError (t ,_ebbac .SetPixel (4,0,1));_e .NoError (t ,_ebbac .SetPixel (5,1,1));_e .NoError (t ,_ebbac .SetPixel (1,2,1));_e .NoError (t ,_ebbac .SetPixel (2,2,1));
+_e .NoError (t ,_ebbac .SetPixel (3,2,1));_e .NoError (t ,_ebbac .SetPixel (4,2,1));_e .NoError (t ,_ebbac .SetPixel (5,2,1));_e .NoError (t ,_ebbac .SetPixel (0,3,1));_e .NoError (t ,_ebbac .SetPixel (5,3,1));_e .NoError (t ,_ebbac .SetPixel (0,4,1));
+_e .NoError (t ,_ebbac .SetPixel (5,4,1));_e .NoError (t ,_ebbac .SetPixel (1,5,1));_e .NoError (t ,_ebbac .SetPixel (2,5,1));_e .NoError (t ,_ebbac .SetPixel (3,5,1));_e .NoError (t ,_ebbac .SetPixel (4,5,1));_e .NoError (t ,_ebbac .SetPixel (5,5,1));
+return _ebbac ;};func MakePixelSumTab8 ()[]int {return _eadbd ()};type byHeight Bitmaps ;func New (width ,height int )*Bitmap {_efc :=_cff (width ,height );_efc .Data =make ([]byte ,height *_efc .RowStride );return _efc ;};func (_gfba *ClassedPoints )Swap (i ,j int ){_gfba .IntSlice [i ],_gfba .IntSlice [j ]=_gfba .IntSlice [j ],_gfba .IntSlice [i ];
+};func _bfae (_edgf ,_edgfe *Bitmap ,_dfac ,_befe ,_bgefc uint ,_defb ,_cfaf int ,_aeea bool ,_fbde ,_cbbd int )error {for _dcee :=_defb ;_dcee < _cfaf ;_dcee ++{if _fbde +1< len (_edgf .Data ){_edd :=_dcee +1==_cfaf ;_ddfg ,_cggd :=_edgf .GetByte (_fbde );
+if _cggd !=nil {return _cggd ;};_fbde ++;_ddfg <<=_dfac ;_afbb ,_cggd :=_edgf .GetByte (_fbde );if _cggd !=nil {return _cggd ;};_afbb >>=_befe ;_bgc :=_ddfg |_afbb ;if _edd &&!_aeea {_bgc =_agaf (_bgefc ,_bgc );};_cggd =_edgfe .SetByte (_cbbd ,_bgc );if _cggd !=nil {return _cggd ;
+};_cbbd ++;if _edd &&_aeea {_acfb ,_gaga :=_edgf .GetByte (_fbde );if _gaga !=nil {return _gaga ;};_acfb <<=_dfac ;_bgc =_agaf (_bgefc ,_acfb );if _gaga =_edgfe .SetByte (_cbbd ,_bgc );_gaga !=nil {return _gaga ;};};continue ;};_ffaf ,_bgdb :=_edgf .GetByte (_fbde );
+if _bgdb !=nil {_de .Log .Debug ("G\u0065\u0074\u0074\u0069\u006e\u0067 \u0074\u0068\u0065\u0020\u0076\u0061l\u0075\u0065\u0020\u0061\u0074\u003a\u0020%\u0064\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020%\u0073",_fbde ,_bgdb );return _bgdb ;};
+_ffaf <<=_dfac ;_fbde ++;_bgdb =_edgfe .SetByte (_cbbd ,_ffaf );if _bgdb !=nil {return _bgdb ;};_cbbd ++;};return nil ;};func TstGetScaledSymbol (t *_f .T ,sm *Bitmap ,scale ...int )*Bitmap {if len (scale )==0{return sm ;};if scale [0]==1{return sm ;};
+_ggefa ,_afge :=MorphSequence (sm ,MorphProcess {Operation :MopReplicativeBinaryExpansion ,Arguments :scale });_e .NoError (t ,_afge );return _ggefa ;};func (_adafe *Points )AddPoint (x ,y float32 ){*_adafe =append (*_adafe ,Point {x ,y })};func _efb (_ceac ,_ebaf *Bitmap ,_ int ,_cce []byte ,_aabb int )(_cfg error ){const _fag ="\u0072\u0065\u0064uc\u0065\u0052\u0061\u006e\u006b\u0042\u0069\u006e\u0061\u0072\u0079\u0032\u004c\u0065\u0076\u0065\u006c\u0031";
+var (_cd ,_aagb ,_dea ,_cbc ,_eab ,_gfb ,_ag ,_eea int ;_dcg ,_bca uint32 ;_afeb ,_dded byte ;_bac uint16 ;);_cec :=make ([]byte ,4);_faf :=make ([]byte ,4);for _dea =0;_dea < _ceac .Height -1;_dea ,_cbc =_dea +2,_cbc +1{_cd =_dea *_ceac .RowStride ;_aagb =_cbc *_ebaf .RowStride ;
+for _eab ,_gfb =0,0;_eab < _aabb ;_eab ,_gfb =_eab +4,_gfb +1{for _ag =0;_ag < 4;_ag ++{_eea =_cd +_eab +_ag ;if _eea <=len (_ceac .Data )-1&&_eea < _cd +_ceac .RowStride {_cec [_ag ]=_ceac .Data [_eea ];}else {_cec [_ag ]=0x00;};_eea =_cd +_ceac .RowStride +_eab +_ag ;
+if _eea <=len (_ceac .Data )-1&&_eea < _cd +(2*_ceac .RowStride ){_faf [_ag ]=_ceac .Data [_eea ];}else {_faf [_ag ]=0x00;};};_dcg =_ge .BigEndian .Uint32 (_cec );_bca =_ge .BigEndian .Uint32 (_faf );_bca |=_dcg ;_bca |=_bca <<1;_bca &=0xaaaaaaaa;_dcg =_bca |(_bca <<7);
+_afeb =byte (_dcg >>24);_dded =byte ((_dcg >>8)&0xff);_eea =_aagb +_gfb ;if _eea +1==len (_ebaf .Data )-1||_eea +1>=_aagb +_ebaf .RowStride {_ebaf .Data [_eea ]=_cce [_afeb ];}else {_bac =(uint16 (_cce [_afeb ])<<8)|uint16 (_cce [_dded ]);if _cfg =_ebaf .setTwoBytes (_eea ,_bac );
+_cfg !=nil {return _g .Wrapf (_cfg ,_fag ,"s\u0065\u0074\u0074\u0069\u006e\u0067 \u0074\u0077\u006f\u0020\u0062\u0079t\u0065\u0073\u0020\u0066\u0061\u0069\u006ce\u0064\u002c\u0020\u0069\u006e\u0064\u0065\u0078\u003a\u0020%\u0064",_eea );};_gfb ++;};};};
+return nil ;};func (_gdcf Points )GetGeometry (i int )(_acba ,_dcca float32 ,_dcbgf error ){if i > len (_gdcf )-1{return 0,0,_g .Errorf ("\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0065\u0074","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};_ggfa :=_gdcf [i ];return _ggfa .X ,_ggfa .Y ,nil ;};func _gbee (_gbbf *Bitmap ,_gbdafb ,_cbfee ,_cbce ,_fefd int ,_fcdg RasterOperator ,_eagg *Bitmap ,_afda ,_bbab int )error {const _dcbee ="\u0072a\u0073t\u0065\u0072\u004f\u0070\u0065\u0072\u0061\u0074\u0069\u006f\u006e";
+if _gbbf ==nil {return _g .Error (_dcbee ,"\u006e\u0069\u006c\u0020\u0027\u0064\u0065\u0073\u0074\u0027\u0020\u0042i\u0074\u006d\u0061\u0070");};if _fcdg ==PixDst {return nil ;};switch _fcdg {case PixClr ,PixSet ,PixNotDst :_aefd (_gbbf ,_gbdafb ,_cbfee ,_cbce ,_fefd ,_fcdg );
+return nil ;};if _eagg ==nil {_de .Log .Debug ("\u0052a\u0073\u0074e\u0072\u004f\u0070\u0065r\u0061\u0074\u0069o\u006e\u0020\u0073\u006f\u0075\u0072\u0063\u0065\u0020bi\u0074\u006d\u0061p\u0020\u0069s\u0020\u006e\u006f\u0074\u0020\u0064e\u0066\u0069n\u0065\u0064");
+return _g .Error (_dcbee ,"\u006e\u0069l\u0020\u0027\u0073r\u0063\u0027\u0020\u0062\u0069\u0074\u006d\u0061\u0070");};if _ggfb :=_acca (_gbbf ,_gbdafb ,_cbfee ,_cbce ,_fefd ,_fcdg ,_eagg ,_afda ,_bbab );_ggfb !=nil {return _g .Wrap (_ggfb ,_dcbee ,"");
+};return nil ;};func TstFrameBitmapData ()[]byte {return _efdb .Data };const (MopDilation MorphOperation =iota ;MopErosion ;MopOpening ;MopClosing ;MopRankBinaryReduction ;MopReplicativeBinaryExpansion ;MopAddBorder ;);func (_cddd *Bitmap )nextOnPixel (_cfd ,_bgfg int )(_ffd _b .Point ,_dbda bool ,_fdgb error ){const _gecg ="n\u0065\u0078\u0074\u004f\u006e\u0050\u0069\u0078\u0065\u006c";
+_ffd ,_dbda ,_fdgb =_cddd .nextOnPixelLow (_cddd .Width ,_cddd .Height ,_cddd .RowStride ,_cfd ,_bgfg );if _fdgb !=nil {return _ffd ,false ,_g .Wrap (_fdgb ,_gecg ,"");};return _ffd ,_dbda ,nil ;};func (_abbe *Bitmaps )selectByIndexes (_abae []int )(*Bitmaps ,error ){_dcbfa :=&Bitmaps {};
+for _ ,_geeef :=range _abae {_gbeec ,_cgbfa :=_abbe .GetBitmap (_geeef );if _cgbfa !=nil {return nil ,_g .Wrap (_cgbfa ,"\u0073e\u006ce\u0063\u0074\u0042\u0079\u0049\u006e\u0064\u0065\u0078\u0065\u0073","");};_dcbfa .AddBitmap (_gbeec );};return _dcbfa ,nil ;
+};func _agaf (_feg uint ,_cdfd byte )byte {return _cdfd >>_feg <<_feg };func _dgdee (_fdcf *_db .Stack )(_fcebf *fillSegment ,_daacf error ){const _gced ="\u0070\u006f\u0070\u0046\u0069\u006c\u006c\u0053\u0065g\u006d\u0065\u006e\u0074";if _fdcf ==nil {return nil ,_g .Error (_gced ,"\u006ei\u006c \u0073\u0074\u0061\u0063\u006b \u0070\u0072o\u0076\u0069\u0064\u0065\u0064");
+};if _fdcf .Aux ==nil {return nil ,_g .Error (_gced ,"a\u0075x\u0053\u0074\u0061\u0063\u006b\u0020\u006e\u006ft\u0020\u0064\u0065\u0066in\u0065\u0064");};_fegf ,_bfec :=_fdcf .Pop ();if !_bfec {return nil ,nil ;};_gbdc ,_bfec :=_fegf .(*fillSegment );if !_bfec {return nil ,_g .Error (_gced ,"\u0073\u0074\u0061ck\u0020\u0064\u006f\u0065\u0073\u006e\u0027\u0074\u0020c\u006fn\u0074a\u0069n\u0020\u002a\u0066\u0069\u006c\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074");
+};_fcebf =&fillSegment {_gbdc ._fgeg ,_gbdc ._efcee ,_gbdc ._gdda +_gbdc ._gfff ,_gbdc ._gfff };_fdcf .Aux .Push (_gbdc );return _fcebf ,nil ;};func (_effc *Bitmap )InverseData (){_effc .inverseData ()};func (_cabga *byHeight )Len ()int {return len (_cabga .Values )};
+func (_agg *Bitmap )GetPixel (x ,y int )bool {_ecb :=_agg .GetByteIndex (x ,y );_cfc :=_agg .GetBitOffset (x );_eef :=uint (7-_cfc );if _ecb > len (_agg .Data )-1{_de .Log .Debug ("\u0054\u0072\u0079\u0069\u006e\u0067\u0020\u0074\u006f\u0020\u0067\u0065\u0074\u0020\u0070\u0069\u0078\u0065\u006c\u0020o\u0075\u0074\u0020\u006f\u0066\u0020\u0074\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0072\u0061\u006e\u0067\u0065\u002e \u0078\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0079\u003a\u0027\u0025\u0064'\u002c\u0020\u0062m\u003a\u0020\u0027\u0025\u0073\u0027",x ,y ,_agg );
+return false ;};if (_agg .Data [_ecb ]>>_eef )&0x01>=1{return true ;};return false ;};func _gdef (_dfaf ,_agf int )int {if _dfaf < _agf {return _dfaf ;};return _agf ;};func (_cbaed *BitmapsArray )AddBitmaps (bm *Bitmaps ){_cbaed .Values =append (_cbaed .Values ,bm )};
+var (_efdb *Bitmap ;_cfdf *Bitmap ;);func _ebca (_ffgf int )int {if _ffgf < 0{return -_ffgf ;};return _ffgf ;};func (_debe *Bitmap )setBit (_dbbg int ){_debe .Data [(_dbbg >>3)]|=0x80>>uint (_dbbg &7)};func (_gdd *Bitmap )ConnComponents (bms *Bitmaps ,connectivity int )(_fcag *Boxes ,_gbda error ){const _cee ="B\u0069\u0074\u006d\u0061p.\u0043o\u006e\u006e\u0043\u006f\u006dp\u006f\u006e\u0065\u006e\u0074\u0073";
+if _gdd ==nil {return nil ,_g .Error (_cee ,"\u0070r\u006f\u0076\u0069\u0064e\u0064\u0020\u0065\u006d\u0070t\u0079 \u0027b\u0027\u0020\u0062\u0069\u0074\u006d\u0061p");};if connectivity !=4&&connectivity !=8{return nil ,_g .Error (_cee ,"\u0063\u006f\u006ene\u0063\u0074\u0069\u0076\u0069\u0074\u0079\u0020\u006e\u006f\u0074\u0020\u0034\u0020\u006f\u0072\u0020\u0038");
+};if bms ==nil {if _fcag ,_gbda =_gdd .connComponentsBB (connectivity );_gbda !=nil {return nil ,_g .Wrap (_gbda ,_cee ,"");};}else {if _fcag ,_gbda =_gdd .connComponentsBitmapsBB (bms ,connectivity );_gbda !=nil {return nil ,_g .Wrap (_gbda ,_cee ,"");
+};};return _fcag ,nil ;};func CorrelationScoreSimple (bm1 ,bm2 *Bitmap ,area1 ,area2 int ,delX ,delY float32 ,maxDiffW ,maxDiffH int ,tab []int )(_gdf float64 ,_eacgc error ){const _cfgf ="\u0043\u006f\u0072\u0072el\u0061\u0074\u0069\u006f\u006e\u0053\u0063\u006f\u0072\u0065\u0053\u0069\u006d\u0070l\u0065";
+if bm1 ==nil ||bm2 ==nil {return _gdf ,_g .Error (_cfgf ,"n\u0069l\u0020\u0062\u0069\u0074\u006d\u0061\u0070\u0073 \u0070\u0072\u006f\u0076id\u0065\u0064");};if tab ==nil {return _gdf ,_g .Error (_cfgf ,"\u0074\u0061\u0062\u0020\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if area1 ==0||area2 ==0{return _gdf ,_g .Error (_cfgf ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0061\u0072e\u0061\u0073\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u003e\u0020\u0030");};_fbdc ,_eag :=bm1 .Width ,bm1 .Height ;_bcbc ,_dgaf :=bm2 .Width ,bm2 .Height ;
+if _ebca (_fbdc -_bcbc )> maxDiffW {return 0,nil ;};if _ebca (_eag -_dgaf )> maxDiffH {return 0,nil ;};var _fcfd ,_gagb int ;if delX >=0{_fcfd =int (delX +0.5);}else {_fcfd =int (delX -0.5);};if delY >=0{_gagb =int (delY +0.5);}else {_gagb =int (delY -0.5);
+};_fac :=bm1 .createTemplate ();if _eacgc =_fac .RasterOperation (_fcfd ,_gagb ,_bcbc ,_dgaf ,PixSrc ,bm2 ,0,0);_eacgc !=nil {return _gdf ,_g .Wrap (_eacgc ,_cfgf ,"\u0062m\u0032 \u0074\u006f\u0020\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065");};if _eacgc =_fac .RasterOperation (0,0,_fbdc ,_eag ,PixSrcAndDst ,bm1 ,0,0);
+_eacgc !=nil {return _gdf ,_g .Wrap (_eacgc ,_cfgf ,"b\u006d\u0031\u0020\u0061\u006e\u0064\u0020\u0062\u006d\u0054");};_bgfb :=_fac .countPixels ();_gdf =float64 (_bgfb )*float64 (_bgfb )/(float64 (area1 )*float64 (area2 ));return _gdf ,nil ;};func _bgff (_geaa ,_afg *Bitmap )(*Bitmap ,error ){if _afg ==nil {return nil ,_g .Error ("\u0063\u006f\u0070\u0079\u0042\u0069\u0074\u006d\u0061\u0070","\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");
+};if _afg ==_geaa {return _geaa ,nil ;};if _geaa ==nil {_geaa =_afg .createTemplate ();copy (_geaa .Data ,_afg .Data );return _geaa ,nil ;};_aeeg :=_geaa .resizeImageData (_afg );if _aeeg !=nil {return nil ,_g .Wrap (_aeeg ,"\u0063\u006f\u0070\u0079\u0042\u0069\u0074\u006d\u0061\u0070","");
+};_geaa .Text =_afg .Text ;copy (_geaa .Data ,_afg .Data );return _geaa ,nil ;};func (_gfabg *byHeight )Swap (i ,j int ){_gfabg .Values [i ],_gfabg .Values [j ]=_gfabg .Values [j ],_gfabg .Values [i ];if _gfabg .Boxes !=nil {_gfabg .Boxes [i ],_gfabg .Boxes [j ]=_gfabg .Boxes [j ],_gfabg .Boxes [i ];
+};};func _aaf (_bec ,_feb *Bitmap ,_dab int ,_ddaf []byte ,_bbd int )(_bdb error ){const _eac ="\u0072\u0065\u0064uc\u0065\u0052\u0061\u006e\u006b\u0042\u0069\u006e\u0061\u0072\u0079\u0032\u004c\u0065\u0076\u0065\u006c\u0033";var (_ae ,_aad ,_gga ,_gaae ,_bgg ,_dce ,_fdb ,_gb int ;
+_eee ,_bab ,_eff ,_cbcc uint32 ;_ggc ,_ccg byte ;_ega uint16 ;);_bdg :=make ([]byte ,4);_cae :=make ([]byte ,4);for _gga =0;_gga < _bec .Height -1;_gga ,_gaae =_gga +2,_gaae +1{_ae =_gga *_bec .RowStride ;_aad =_gaae *_feb .RowStride ;for _bgg ,_dce =0,0;
+_bgg < _bbd ;_bgg ,_dce =_bgg +4,_dce +1{for _fdb =0;_fdb < 4;_fdb ++{_gb =_ae +_bgg +_fdb ;if _gb <=len (_bec .Data )-1&&_gb < _ae +_bec .RowStride {_bdg [_fdb ]=_bec .Data [_gb ];}else {_bdg [_fdb ]=0x00;};_gb =_ae +_bec .RowStride +_bgg +_fdb ;if _gb <=len (_bec .Data )-1&&_gb < _ae +(2*_bec .RowStride ){_cae [_fdb ]=_bec .Data [_gb ];
+}else {_cae [_fdb ]=0x00;};};_eee =_ge .BigEndian .Uint32 (_bdg );_bab =_ge .BigEndian .Uint32 (_cae );_eff =_eee &_bab ;_eff |=_eff <<1;_cbcc =_eee |_bab ;_cbcc &=_cbcc <<1;_bab =_eff &_cbcc ;_bab &=0xaaaaaaaa;_eee =_bab |(_bab <<7);_ggc =byte (_eee >>24);
+_ccg =byte ((_eee >>8)&0xff);_gb =_aad +_dce ;if _gb +1==len (_feb .Data )-1||_gb +1>=_aad +_feb .RowStride {if _bdb =_feb .SetByte (_gb ,_ddaf [_ggc ]);_bdb !=nil {return _g .Wrapf (_bdb ,_eac ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0025d",_gb );};}else {_ega =(uint16 (_ddaf [_ggc ])<<8)|uint16 (_ddaf [_ccg ]);
+if _bdb =_feb .setTwoBytes (_gb ,_ega );_bdb !=nil {return _g .Wrapf (_bdb ,_eac ,"s\u0065\u0074\u0074\u0069\u006e\u0067 \u0074\u0077\u006f\u0020\u0062\u0079t\u0065\u0073\u0020\u0066\u0061\u0069\u006ce\u0064\u002c\u0020\u0069\u006e\u0064\u0065\u0078\u003a\u0020%\u0064",_gb );
+};_dce ++;};};};return nil ;};func (_ceec *Bitmaps )AddBox (box *_b .Rectangle ){_ceec .Boxes =append (_ceec .Boxes ,box )};func (_gcda *Bitmap )Equivalent (s *Bitmap )bool {return _gcda .equivalent (s )};func (_bade *Bitmaps )makeSizeIndicator (_cbde ,_fdgbd int ,_aedfc LocationFilter ,_eafeg SizeComparison )(_egbb *_db .NumSlice ,_caccg error ){const _eaed ="\u0042i\u0074\u006d\u0061\u0070s\u002e\u006d\u0061\u006b\u0065S\u0069z\u0065I\u006e\u0064\u0069\u0063\u0061\u0074\u006fr";
+if _bade ==nil {return nil ,_g .Error (_eaed ,"\u0062\u0069\u0074ma\u0070\u0073\u0020\u0027\u0062\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};switch _aedfc {case LocSelectWidth ,LocSelectHeight ,LocSelectIfEither ,LocSelectIfBoth :default:return nil ,_g .Errorf (_eaed ,"\u0070\u0072\u006f\u0076\u0069d\u0065\u0064\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u006fc\u0061\u0074\u0069\u006f\u006e\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0064",_aedfc );
+};switch _eafeg {case SizeSelectIfLT ,SizeSelectIfGT ,SizeSelectIfLTE ,SizeSelectIfGTE ,SizeSelectIfEQ :default:return nil ,_g .Errorf (_eaed ,"\u0069\u006e\u0076\u0061li\u0064\u0020\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0027\u0025d\u0027",_eafeg );
+};_egbb =&_db .NumSlice {};var (_agddf ,_cbgbe ,_bgfe int ;_abcd *Bitmap ;);for _ ,_abcd =range _bade .Values {_agddf =0;_cbgbe ,_bgfe =_abcd .Width ,_abcd .Height ;switch _aedfc {case LocSelectWidth :if (_eafeg ==SizeSelectIfLT &&_cbgbe < _cbde )||(_eafeg ==SizeSelectIfGT &&_cbgbe > _cbde )||(_eafeg ==SizeSelectIfLTE &&_cbgbe <=_cbde )||(_eafeg ==SizeSelectIfGTE &&_cbgbe >=_cbde )||(_eafeg ==SizeSelectIfEQ &&_cbgbe ==_cbde ){_agddf =1;
+};case LocSelectHeight :if (_eafeg ==SizeSelectIfLT &&_bgfe < _fdgbd )||(_eafeg ==SizeSelectIfGT &&_bgfe > _fdgbd )||(_eafeg ==SizeSelectIfLTE &&_bgfe <=_fdgbd )||(_eafeg ==SizeSelectIfGTE &&_bgfe >=_fdgbd )||(_eafeg ==SizeSelectIfEQ &&_bgfe ==_fdgbd ){_agddf =1;
+};case LocSelectIfEither :if (_eafeg ==SizeSelectIfLT &&(_cbgbe < _cbde ||_bgfe < _fdgbd ))||(_eafeg ==SizeSelectIfGT &&(_cbgbe > _cbde ||_bgfe > _fdgbd ))||(_eafeg ==SizeSelectIfLTE &&(_cbgbe <=_cbde ||_bgfe <=_fdgbd ))||(_eafeg ==SizeSelectIfGTE &&(_cbgbe >=_cbde ||_bgfe >=_fdgbd ))||(_eafeg ==SizeSelectIfEQ &&(_cbgbe ==_cbde ||_bgfe ==_fdgbd )){_agddf =1;
+};case LocSelectIfBoth :if (_eafeg ==SizeSelectIfLT &&(_cbgbe < _cbde &&_bgfe < _fdgbd ))||(_eafeg ==SizeSelectIfGT &&(_cbgbe > _cbde &&_bgfe > _fdgbd ))||(_eafeg ==SizeSelectIfLTE &&(_cbgbe <=_cbde &&_bgfe <=_fdgbd ))||(_eafeg ==SizeSelectIfGTE &&(_cbgbe >=_cbde &&_bgfe >=_fdgbd ))||(_eafeg ==SizeSelectIfEQ &&(_cbgbe ==_cbde &&_bgfe ==_fdgbd )){_agddf =1;
+};};_egbb .AddInt (_agddf );};return _egbb ,nil ;};var (_bged =_bgef ();_cgab =_dfe ();_aebe =_bcb (););var _daadf =[]byte {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x78,0x27,0xC2,0x27,0x91,0x00,0x22,0x48,0x21,0x03,0x24,0x91,0x00,0x22,0x48,0x21,0x02,0xA4,0x95,0x00,0x22,0x48,0x21,0x02,0x64,0x9B,0x00,0x3C,0x78,0x21,0x02,0x27,0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x63,0x18,0x00,0x00,0x00,0x00,0x00,0x63,0x18,0x00,0x00,0x00,0x00,0x00,0x63,0x18,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x15,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+func (_cbgb *Boxes )Add (box *_b .Rectangle )error {if _cbgb ==nil {return _g .Error ("\u0042o\u0078\u0065\u0073\u002e\u0041\u0064d","\u0027\u0042\u006f\u0078es\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};*_cbgb =append (*_cbgb ,box );
+return nil ;};func (_bfdg *Bitmap )Copy ()*Bitmap {_eggg :=make ([]byte ,len (_bfdg .Data ));copy (_eggg ,_bfdg .Data );return &Bitmap {Width :_bfdg .Width ,Height :_bfdg .Height ,RowStride :_bfdg .RowStride ,Data :_eggg ,Color :_bfdg .Color ,Text :_bfdg .Text ,BitmapNumber :_bfdg .BitmapNumber ,Special :_bfdg .Special };
+};type MorphOperation int ;func _eadbd ()[]int {_bead :=make ([]int ,256);for _cdef :=0;_cdef <=0xff;_cdef ++{_ebf :=byte (_cdef );_bead [_ebf ]=int (_ebf &0x1)+(int (_ebf >>1)&0x1)+(int (_ebf >>2)&0x1)+(int (_ebf >>3)&0x1)+(int (_ebf >>4)&0x1)+(int (_ebf >>5)&0x1)+(int (_ebf >>6)&0x1)+(int (_ebf >>7)&0x1);
+};return _bead ;};const _facgc =5000;func _adg (_dbd *Bitmap ,_gec *Bitmap ,_bb int )(_afe error ){const _fdf ="e\u0078\u0070\u0061\u006edB\u0069n\u0061\u0072\u0079\u0050\u006fw\u0065\u0072\u0032\u004c\u006f\u0077";switch _bb {case 2:_afe =_fc (_dbd ,_gec );
+case 4:_afe =_af (_dbd ,_gec );case 8:_afe =_dff (_dbd ,_gec );default:return _g .Error (_fdf ,"\u0065\u0078p\u0061\u006e\u0073\u0069o\u006e\u0020f\u0061\u0063\u0074\u006f\u0072\u0020\u006e\u006ft\u0020\u0069\u006e\u0020\u007b\u0032\u002c\u0034\u002c\u0038\u007d\u0020r\u0061\u006e\u0067\u0065");
+};if _afe !=nil {_afe =_g .Wrap (_afe ,_fdf ,"");};return _afe ;};func (_abaf *ClassedPoints )Len ()int {return _abaf .IntSlice .Size ()};type Component int ;func (_gfg *Bitmap )GetComponents (components Component ,maxWidth ,maxHeight int )(_cfge *Bitmaps ,_acge *Boxes ,_ade error ){const _ecaa ="B\u0069t\u006d\u0061\u0070\u002e\u0047\u0065\u0074\u0043o\u006d\u0070\u006f\u006een\u0074\u0073";
+if _gfg ==nil {return nil ,nil ,_g .Error (_ecaa ,"\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0042\u0069\u0074\u006da\u0070\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069n\u0065\u0064\u002e");};switch components {case ComponentConn ,ComponentCharacters ,ComponentWords :default:return nil ,nil ,_g .Error (_ecaa ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0063\u006f\u006d\u0070\u006f\u006e\u0065n\u0074s\u0020\u0070\u0061\u0072\u0061\u006d\u0065t\u0065\u0072");
+};if _gfg .Zero (){_acge =&Boxes {};_cfge =&Bitmaps {};return _cfge ,_acge ,nil ;};switch components {case ComponentConn :_cfge =&Bitmaps {};if _acge ,_ade =_gfg .ConnComponents (_cfge ,8);_ade !=nil {return nil ,nil ,_g .Wrap (_ade ,_ecaa ,"\u006e\u006f \u0070\u0072\u0065p\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067");
+};case ComponentCharacters :_geba ,_bgfgd :=MorphSequence (_gfg ,MorphProcess {Operation :MopClosing ,Arguments :[]int {1,6}});if _bgfgd !=nil {return nil ,nil ,_g .Wrap (_bgfgd ,_ecaa ,"\u0063h\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0073\u0020\u0070\u0072e\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067");
+};if _de .Log .IsLogLevel (_de .LogLevelTrace ){_de .Log .Trace ("\u0043o\u006d\u0070o\u006e\u0065\u006e\u0074C\u0068\u0061\u0072a\u0063\u0074\u0065\u0072\u0073\u0020\u0062\u0069\u0074ma\u0070\u0020\u0061f\u0074\u0065r\u0020\u0063\u006c\u006f\u0073\u0069n\u0067\u003a \u0025\u0073",_geba .String ());
+};_gafb :=&Bitmaps {};_acge ,_bgfgd =_geba .ConnComponents (_gafb ,8);if _bgfgd !=nil {return nil ,nil ,_g .Wrap (_bgfgd ,_ecaa ,"\u0063h\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0073\u0020\u0070\u0072e\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067");
+};if _de .Log .IsLogLevel (_de .LogLevelTrace ){_de .Log .Trace ("\u0043\u006f\u006d\u0070\u006f\u006ee\u006e\u0074\u0043\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0073\u0020\u0062\u0069\u0074\u006d\u0061\u0070\u0020a\u0066\u0074\u0065\u0072\u0020\u0063\u006f\u006e\u006e\u0065\u0063\u0074\u0069\u0076i\u0074y\u003a\u0020\u0025\u0073",_gafb .String ());
+};if _cfge ,_bgfgd =_gafb .ClipToBitmap (_gfg );_bgfgd !=nil {return nil ,nil ,_g .Wrap (_bgfgd ,_ecaa ,"\u0063h\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0073\u0020\u0070\u0072e\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067");};case ComponentWords :_dad :=1;
+var _gfaea *Bitmap ;switch {case _gfg .XResolution <=200:_gfaea =_gfg ;case _gfg .XResolution <=400:_dad =2;_gfaea ,_ade =_fgd (_gfg ,1,0,0,0);if _ade !=nil {return nil ,nil ,_g .Wrap (_ade ,_ecaa ,"w\u006f\u0072\u0064\u0020\u0070\u0072e\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0020\u002d \u0078\u0072\u0065s\u003c=\u0034\u0030\u0030");
+};default:_dad =4;_gfaea ,_ade =_fgd (_gfg ,1,1,0,0);if _ade !=nil {return nil ,nil ,_g .Wrap (_ade ,_ecaa ,"\u0077\u006f\u0072\u0064 \u0070\u0072\u0065\u0070\u0072\u006f\u0063\u0065\u0073\u0073 \u002d \u0078\u0072\u0065\u0073\u0020\u003e\u00204\u0030\u0030");
+};};_cgd ,_ ,_fcee :=_edfd (_gfaea );if _fcee !=nil {return nil ,nil ,_g .Wrap (_fcee ,_ecaa ,"\u0077o\u0072d\u0020\u0070\u0072\u0065\u0070\u0072\u006f\u0063\u0065\u0073\u0073");};_eebe ,_fcee :=_efbcc (_cgd ,_dad );if _fcee !=nil {return nil ,nil ,_g .Wrap (_fcee ,_ecaa ,"\u0077o\u0072d\u0020\u0070\u0072\u0065\u0070\u0072\u006f\u0063\u0065\u0073\u0073");
+};_gbed :=&Bitmaps {};if _acge ,_fcee =_eebe .ConnComponents (_gbed ,4);_fcee !=nil {return nil ,nil ,_g .Wrap (_fcee ,_ecaa ,"\u0077\u006f\u0072\u0064\u0020\u0070r\u0065\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u002c\u0020\u0063\u006f\u006en\u0065\u0063\u0074\u0020\u0065\u0078\u0070a\u006e\u0064\u0065\u0064");
+};if _cfge ,_fcee =_gbed .ClipToBitmap (_gfg );_fcee !=nil {return nil ,nil ,_g .Wrap (_fcee ,_ecaa ,"\u0077o\u0072d\u0020\u0070\u0072\u0065\u0070\u0072\u006f\u0063\u0065\u0073\u0073");};};_cfge ,_ade =_cfge .SelectBySize (maxWidth ,maxHeight ,LocSelectIfBoth ,SizeSelectIfLTE );
+if _ade !=nil {return nil ,nil ,_g .Wrap (_ade ,_ecaa ,"");};_acge ,_ade =_acge .SelectBySize (maxWidth ,maxHeight ,LocSelectIfBoth ,SizeSelectIfLTE );if _ade !=nil {return nil ,nil ,_g .Wrap (_ade ,_ecaa ,"");};return _cfge ,_acge ,nil ;};func ClipBoxToRectangle (box *_b .Rectangle ,wi ,hi int )(_fcae *_b .Rectangle ,_cdcg error ){const _bfed ="\u0043l\u0069p\u0042\u006f\u0078\u0054\u006fR\u0065\u0063t\u0061\u006e\u0067\u006c\u0065";
+if box ==nil {return nil ,_g .Error (_bfed ,"\u0027\u0062\u006f\u0078\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064");};if box .Min .X >=wi ||box .Min .Y >=hi ||box .Max .X <=0||box .Max .Y <=0{return nil ,_g .Error (_bfed ,"\u0027\u0062\u006fx'\u0020\u006f\u0075\u0074\u0073\u0069\u0064\u0065\u0020\u0072\u0065\u0063\u0074\u0061\u006e\u0067\u006c\u0065");
+};_bedd :=*box ;_fcae =&_bedd ;if _fcae .Min .X < 0{_fcae .Max .X +=_fcae .Min .X ;_fcae .Min .X =0;};if _fcae .Min .Y < 0{_fcae .Max .Y +=_fcae .Min .Y ;_fcae .Min .Y =0;};if _fcae .Max .X > wi {_fcae .Max .X =wi ;};if _fcae .Max .Y > hi {_fcae .Max .Y =hi ;
+};return _fcae ,nil ;};func (_acdd *Bitmap )inverseData (){if _bcaf :=_acdd .RasterOperation (0,0,_acdd .Width ,_acdd .Height ,PixNotDst ,nil ,0,0);_bcaf !=nil {_de .Log .Debug ("\u0049n\u0076\u0065\u0072\u0073e\u0020\u0064\u0061\u0074\u0061 \u0066a\u0069l\u0065\u0064\u003a\u0020\u0027\u0025\u0076'",_bcaf );
+};if _acdd .Color ==Chocolate {_acdd .Color =Vanilla ;}else {_acdd .Color =Chocolate ;};};func TstFrameBitmap ()*Bitmap {return _efdb .Copy ()};func MakePixelCentroidTab8 ()[]int {return _cddb ()};func TstTSymbol (t *_f .T ,scale ...int )*Bitmap {_gbbdd ,_gffcf :=NewWithData (5,5,[]byte {0xF8,0x20,0x20,0x20,0x20});
+_e .NoError (t ,_gffcf );return TstGetScaledSymbol (t ,_gbbdd ,scale ...);};type Selection struct{Height ,Width int ;Cx ,Cy int ;Name string ;Data [][]SelectionValue ;};func _egbe (_aeca *Bitmap ,_egag ,_aafc ,_dfea ,_fdee int ,_befd RasterOperator ,_egbg *Bitmap ,_fcagd ,_fbdd int )error {var (_aggc bool ;
+_ddgf bool ;_aagec int ;_efgb int ;_cgagd int ;_fcaf bool ;_fgca byte ;_ccec int ;_adac int ;_bbfcg int ;_ccgb ,_dgff int ;);_gegf :=8-(_egag &7);_dgga :=_eebb [_gegf ];_gfec :=_aeca .RowStride *_aafc +(_egag >>3);_gccg :=_egbg .RowStride *_fbdd +(_fcagd >>3);
+if _dfea < _gegf {_aggc =true ;_dgga &=_gebag [8-_gegf +_dfea ];};if !_aggc {_aagec =(_dfea -_gegf )>>3;if _aagec > 0{_ddgf =true ;_efgb =_gfec +1;_cgagd =_gccg +1;};};_ccec =(_egag +_dfea )&7;if !_aggc &&_ccec !=0{_fcaf =true ;_fgca =_gebag [_ccec ];_adac =_gfec +1+_aagec ;
+_bbfcg =_gccg +1+_aagec ;};switch _befd {case PixSrc :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;};if _ddgf {for _ccgb =0;_ccgb < _fdee ;
+_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotSrc :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^_egbg .Data [_gccg ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;};if _ddgf {for _ccgb =0;
+_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=^_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^_egbg .Data [_bbfcg ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixSrcOrDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ]|_aeca .Data [_gfec ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]|=_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ]|_aeca .Data [_adac ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixSrcAndDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ]&_aeca .Data [_gfec ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]&=_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ]&_aeca .Data [_adac ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixSrcXorDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ]^_aeca .Data [_gfec ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]^=_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ]^_aeca .Data [_adac ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotSrcOrDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^(_egbg .Data [_gccg ])|_aeca .Data [_gfec ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]|=^(_egbg .Data [_cgagd +_dgff ]);};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^(_egbg .Data [_bbfcg ])|_aeca .Data [_adac ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotSrcAndDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^(_egbg .Data [_gccg ])&_aeca .Data [_gfec ],_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]&=^_egbg .Data [_cgagd +_dgff ];};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^(_egbg .Data [_bbfcg ])&_aeca .Data [_adac ],_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixSrcOrNotDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ]|^(_aeca .Data [_gfec ]),_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=_egbg .Data [_cgagd +_dgff ]|^(_aeca .Data [_efgb +_dgff ]);};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;
+_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ]|^(_aeca .Data [_adac ]),_fgca );_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixSrcAndNotDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],_egbg .Data [_gccg ]&^(_aeca .Data [_gfec ]),_dgga );
+_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=_egbg .Data [_cgagd +_dgff ]&^(_aeca .Data [_efgb +_dgff ]);};_efgb +=_aeca .RowStride ;
+_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],_egbg .Data [_bbfcg ]&^(_aeca .Data [_adac ]),_fgca );_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotPixSrcOrDst :for _ccgb =0;
+_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^(_egbg .Data [_gccg ]|_aeca .Data [_gfec ]),_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;
+_dgff ++{_aeca .Data [_efgb +_dgff ]=^(_egbg .Data [_cgagd +_dgff ]|_aeca .Data [_efgb +_dgff ]);};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^(_egbg .Data [_bbfcg ]|_aeca .Data [_adac ]),_fgca );
+_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotPixSrcAndDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^(_egbg .Data [_gccg ]&_aeca .Data [_gfec ]),_dgga );_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;
+};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=^(_egbg .Data [_cgagd +_dgff ]&_aeca .Data [_efgb +_dgff ]);};_efgb +=_aeca .RowStride ;_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;
+_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^(_egbg .Data [_bbfcg ]&_aeca .Data [_adac ]),_fgca );_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};case PixNotPixSrcXorDst :for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_gfec ]=_fcac (_aeca .Data [_gfec ],^(_egbg .Data [_gccg ]^_aeca .Data [_gfec ]),_dgga );
+_gfec +=_aeca .RowStride ;_gccg +=_egbg .RowStride ;};if _ddgf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{for _dgff =0;_dgff < _aagec ;_dgff ++{_aeca .Data [_efgb +_dgff ]=^(_egbg .Data [_cgagd +_dgff ]^_aeca .Data [_efgb +_dgff ]);};_efgb +=_aeca .RowStride ;
+_cgagd +=_egbg .RowStride ;};};if _fcaf {for _ccgb =0;_ccgb < _fdee ;_ccgb ++{_aeca .Data [_adac ]=_fcac (_aeca .Data [_adac ],^(_egbg .Data [_bbfcg ]^_aeca .Data [_adac ]),_fgca );_adac +=_aeca .RowStride ;_bbfcg +=_egbg .RowStride ;};};default:_de .Log .Debug ("I\u006e\u0076\u0061\u006c\u0069\u0064 \u0072\u0061\u0073\u0074\u0065\u0072\u0020\u006f\u0070e\u0072\u0061\u0074o\u0072:\u0020\u0025\u0064",_befd );
+return _g .Error ("\u0072\u0061\u0073\u0074er\u004f\u0070\u0056\u0041\u006c\u0069\u0067\u006e\u0065\u0064\u004c\u006f\u0077","\u0069\u006e\u0076al\u0069\u0064\u0020\u0072\u0061\u0073\u0074\u0065\u0072\u0020\u006f\u0070\u0065\u0072\u0061\u0074\u006f\u0072");
+};return nil ;};func (_edbc *byWidth )Len ()int {return len (_edbc .Values )};func (_dfbf *Bitmap )RemoveBorder (borderSize int )(*Bitmap ,error ){if borderSize ==0{return _dfbf .Copy (),nil ;};_bbfa ,_cffg :=_dfbf .removeBorderGeneral (borderSize ,borderSize ,borderSize ,borderSize );
+if _cffg !=nil {return nil ,_g .Wrap (_cffg ,"\u0052\u0065\u006do\u0076\u0065\u0042\u006f\u0072\u0064\u0065\u0072","");};return _bbfa ,nil ;};const (_ SizeComparison =iota ;SizeSelectIfLT ;SizeSelectIfGT ;SizeSelectIfLTE ;SizeSelectIfGTE ;SizeSelectIfEQ ;
+);type SelectionValue int ;func _dfe ()(_ddf [256]uint32 ){for _cfe :=0;_cfe < 256;_cfe ++{if _cfe &0x01!=0{_ddf [_cfe ]|=0xf;};if _cfe &0x02!=0{_ddf [_cfe ]|=0xf0;};if _cfe &0x04!=0{_ddf [_cfe ]|=0xf00;};if _cfe &0x08!=0{_ddf [_cfe ]|=0xf000;};if _cfe &0x10!=0{_ddf [_cfe ]|=0xf0000;
+};if _cfe &0x20!=0{_ddf [_cfe ]|=0xf00000;};if _cfe &0x40!=0{_ddf [_cfe ]|=0xf000000;};if _cfe &0x80!=0{_ddf [_cfe ]|=0xf0000000;};};return _ddf ;};func Dilate (d *Bitmap ,s *Bitmap ,sel *Selection )(*Bitmap ,error ){return _gdc (d ,s ,sel )};type LocationFilter int ;
+var _edge =[5]int {1,2,3,0,4};func (_fadf *Boxes )makeSizeIndicator (_bdbg ,_cceae int ,_efbc LocationFilter ,_gcadd SizeComparison )*_db .NumSlice {_bfac :=&_db .NumSlice {};var _dacgg ,_fafg ,_gafgf int ;for _ ,_dcbg :=range *_fadf {_dacgg =0;_fafg ,_gafgf =_dcbg .Dx (),_dcbg .Dy ();
+switch _efbc {case LocSelectWidth :if (_gcadd ==SizeSelectIfLT &&_fafg < _bdbg )||(_gcadd ==SizeSelectIfGT &&_fafg > _bdbg )||(_gcadd ==SizeSelectIfLTE &&_fafg <=_bdbg )||(_gcadd ==SizeSelectIfGTE &&_fafg >=_bdbg ){_dacgg =1;};case LocSelectHeight :if (_gcadd ==SizeSelectIfLT &&_gafgf < _cceae )||(_gcadd ==SizeSelectIfGT &&_gafgf > _cceae )||(_gcadd ==SizeSelectIfLTE &&_gafgf <=_cceae )||(_gcadd ==SizeSelectIfGTE &&_gafgf >=_cceae ){_dacgg =1;
+};case LocSelectIfEither :if (_gcadd ==SizeSelectIfLT &&(_gafgf < _cceae ||_fafg < _bdbg ))||(_gcadd ==SizeSelectIfGT &&(_gafgf > _cceae ||_fafg > _bdbg ))||(_gcadd ==SizeSelectIfLTE &&(_gafgf <=_cceae ||_fafg <=_bdbg ))||(_gcadd ==SizeSelectIfGTE &&(_gafgf >=_cceae ||_fafg >=_bdbg )){_dacgg =1;
+};case LocSelectIfBoth :if (_gcadd ==SizeSelectIfLT &&(_gafgf < _cceae &&_fafg < _bdbg ))||(_gcadd ==SizeSelectIfGT &&(_gafgf > _cceae &&_fafg > _bdbg ))||(_gcadd ==SizeSelectIfLTE &&(_gafgf <=_cceae &&_fafg <=_bdbg ))||(_gcadd ==SizeSelectIfGTE &&(_gafgf >=_cceae &&_fafg >=_bdbg )){_dacgg =1;
+};};_bfac .AddInt (_dacgg );};return _bfac ;};func TstImageBitmap ()*Bitmap {return _cfdf .Copy ()};func _acca (_gccb *Bitmap ,_abde ,_cdag int ,_eafd ,_addf int ,_gfdc RasterOperator ,_fded *Bitmap ,_efaa ,_dbdb int )error {var _ecbdg ,_gdge ,_bcfb ,_fdgag int ;
+if _abde < 0{_efaa -=_abde ;_eafd +=_abde ;_abde =0;};if _efaa < 0{_abde -=_efaa ;_eafd +=_efaa ;_efaa =0;};_ecbdg =_abde +_eafd -_gccb .Width ;if _ecbdg > 0{_eafd -=_ecbdg ;};_gdge =_efaa +_eafd -_fded .Width ;if _gdge > 0{_eafd -=_gdge ;};if _cdag < 0{_dbdb -=_cdag ;
+_addf +=_cdag ;_cdag =0;};if _dbdb < 0{_cdag -=_dbdb ;_addf +=_dbdb ;_dbdb =0;};_bcfb =_cdag +_addf -_gccb .Height ;if _bcfb > 0{_addf -=_bcfb ;};_fdgag =_dbdb +_addf -_fded .Height ;if _fdgag > 0{_addf -=_fdgag ;};if _eafd <=0||_addf <=0{return nil ;};
+var _cccb error ;switch {case _abde &7==0&&_efaa &7==0:_cccb =_dfdg (_gccb ,_abde ,_cdag ,_eafd ,_addf ,_gfdc ,_fded ,_efaa ,_dbdb );case _abde &7==_efaa &7:_cccb =_egbe (_gccb ,_abde ,_cdag ,_eafd ,_addf ,_gfdc ,_fded ,_efaa ,_dbdb );default:_cccb =_bfabg (_gccb ,_abde ,_cdag ,_eafd ,_addf ,_gfdc ,_fded ,_efaa ,_dbdb );
+};if _cccb !=nil {return _g .Wrap (_cccb ,"r\u0061\u0073\u0074\u0065\u0072\u004f\u0070\u004c\u006f\u0077","");};return nil ;};func _bggf ()(_ggd []byte ){_ggd =make ([]byte ,256);for _gcad :=0;_gcad < 256;_gcad ++{_dae :=byte (_gcad );_ggd [_dae ]=(_dae &0x01)|((_dae &0x04)>>1)|((_dae &0x10)>>2)|((_dae &0x40)>>3)|((_dae &0x02)<<3)|((_dae &0x08)<<2)|((_dae &0x20)<<1)|(_dae &0x80);
+};return _ggd ;};func _bccf (_ecgc ,_befad ,_gacc *Bitmap ,_gbeea int )(*Bitmap ,error ){const _edbac ="\u0073\u0065\u0065\u0064\u0046\u0069\u006c\u006c\u0042i\u006e\u0061\u0072\u0079";if _befad ==nil {return nil ,_g .Error (_edbac ,"s\u006fu\u0072\u0063\u0065\u0020\u0062\u0069\u0074\u006da\u0070\u0020\u0069\u0073 n\u0069\u006c");
+};if _gacc ==nil {return nil ,_g .Error (_edbac ,"'\u006da\u0073\u006b\u0027\u0020\u0062\u0069\u0074\u006da\u0070\u0020\u0069\u0073 n\u0069\u006c");};if _gbeea !=4&&_gbeea !=8{return nil ,_g .Error (_edbac ,"\u0063\u006f\u006en\u0065\u0063\u0074\u0069v\u0069\u0074\u0079\u0020\u006e\u006f\u0074 \u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u007b\u0034\u002c\u0038\u007d");
+};var _cbceb error ;_ecgc ,_cbceb =_bgff (_ecgc ,_befad );if _cbceb !=nil {return nil ,_g .Wrap (_cbceb ,_edbac ,"\u0063o\u0070y\u0020\u0073\u006f\u0075\u0072c\u0065\u0020t\u006f\u0020\u0027\u0064\u0027");};_gbff :=_befad .createTemplate ();_gacc .setPadBits (0);
+for _gedb :=0;_gedb < _facgc ;_gedb ++{_gbff ,_cbceb =_bgff (_gbff ,_ecgc );if _cbceb !=nil {return nil ,_g .Wrapf (_cbceb ,_edbac ,"\u0069\u0074\u0065\u0072\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0064",_gedb );};if _cbceb =_eaac (_ecgc ,_gacc ,_gbeea );
+_cbceb !=nil {return nil ,_g .Wrapf (_cbceb ,_edbac ,"\u0069\u0074\u0065\u0072\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0064",_gedb );};if _gbff .Equals (_ecgc ){break ;};};return _ecgc ,nil ;};func _edfd (_dbfg *Bitmap )(_cccg *Bitmap ,_eege int ,_eedg error ){const _fcf ="\u0042i\u0074\u006d\u0061\u0070.\u0077\u006f\u0072\u0064\u004da\u0073k\u0042y\u0044\u0069\u006c\u0061\u0074\u0069\u006fn";
+if _dbfg ==nil {return nil ,0,_g .Errorf (_fcf ,"\u0027\u0073\u0027\u0020bi\u0074\u006d\u0061\u0070\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064");};var _dfag ,_gefe *Bitmap ;if _dfag ,_eedg =_bgff (nil ,_dbfg );_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0063\u006f\u0070\u0079\u0020\u0027\u0073\u0027");
+};var (_bbae [13]int ;_bbde ,_aegf int ;);_afea :=12;_geeb :=_db .NewNumSlice (_afea +1);_adb :=_db .NewNumSlice (_afea +1);var _fdfc *Boxes ;for _cecd :=0;_cecd <=_afea ;_cecd ++{if _cecd ==0{if _gefe ,_eedg =_bgff (nil ,_dfag );_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0066i\u0072\u0073\u0074\u0020\u0062\u006d2");
+};}else {if _gefe ,_eedg =_ceb (_dfag ,MorphProcess {Operation :MopDilation ,Arguments :[]int {2,1}});_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0064\u0069\u006ca\u0074\u0069\u006f\u006e\u0020\u0062\u006d\u0032");};};if _fdfc ,_eedg =_gefe .connComponentsBB (4);
+_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"");};_bbae [_cecd ]=len (*_fdfc );_geeb .AddInt (_bbae [_cecd ]);switch _cecd {case 0:_bbde =_bbae [0];default:_aegf =_bbae [_cecd -1]-_bbae [_cecd ];_adb .AddInt (_aegf );};_dfag =_gefe ;};_agcef :=true ;
+_edace :=2;var _edeec ,_bcba int ;for _cffd :=1;_cffd < len (*_adb );_cffd ++{if _edeec ,_eedg =_geeb .GetInt (_cffd );_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0043\u0068\u0065\u0063ki\u006e\u0067\u0020\u0062\u0065\u0073\u0074\u0020\u0064\u0069\u006c\u0061\u0074\u0069o\u006e");
+};if _agcef &&_edeec < int (0.3*float32 (_bbde )){_edace =_cffd +1;_agcef =false ;};if _aegf ,_eedg =_adb .GetInt (_cffd );_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0067\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u006ea\u0044\u0069\u0066\u0066");
+};if _aegf > _bcba {_bcba =_aegf ;};};_bfgfb :=_dbfg .XResolution ;if _bfgfb ==0{_bfgfb =150;};if _bfgfb > 110{_edace ++;};if _edace < 2{_de .Log .Trace ("J\u0042\u0049\u0047\u0032\u0020\u0073\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0069\u0042\u0065\u0073\u0074 \u0074\u006f\u0020\u006d\u0069\u006e\u0069\u006d\u0075\u006d a\u006c\u006c\u006fw\u0061b\u006c\u0065");
+_edace =2;};_eege =_edace +1;if _cccg ,_eedg =_becd (nil ,_dbfg ,_edace +1,1);_eedg !=nil {return nil ,0,_g .Wrap (_eedg ,_fcf ,"\u0067\u0065\u0074\u0074in\u0067\u0020\u006d\u0061\u0073\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};return _cccg ,_eege ,nil ;
+};func Centroids (bms []*Bitmap )(*Points ,error ){_ddga :=make ([]Point ,len (bms ));_deed :=_cddb ();_fabg :=_eadbd ();var _fecgc error ;for _fefa ,_fafgd :=range bms {_ddga [_fefa ],_fecgc =_fafgd .centroid (_deed ,_fabg );if _fecgc !=nil {return nil ,_fecgc ;
+};};_cgag :=Points (_ddga );return &_cgag ,nil ;};func _dag (_edba *Bitmap ,_ccca ,_ddce int ,_gaff ,_fgde int ,_dedf RasterOperator ){var (_ffbd int ;_gbcec byte ;_fcagc ,_ebd int ;_dbece int ;);_gabb :=_gaff >>3;_fafb :=_gaff &7;if _fafb > 0{_gbcec =_gebag [_fafb ];
+};_ffbd =_edba .RowStride *_ddce +(_ccca >>3);switch _dedf {case PixClr :for _fcagc =0;_fcagc < _fgde ;_fcagc ++{_dbece =_ffbd +_fcagc *_edba .RowStride ;for _ebd =0;_ebd < _gabb ;_ebd ++{_edba .Data [_dbece ]=0x0;_dbece ++;};if _fafb > 0{_edba .Data [_dbece ]=_fcac (_edba .Data [_dbece ],0x0,_gbcec );
+};};case PixSet :for _fcagc =0;_fcagc < _fgde ;_fcagc ++{_dbece =_ffbd +_fcagc *_edba .RowStride ;for _ebd =0;_ebd < _gabb ;_ebd ++{_edba .Data [_dbece ]=0xff;_dbece ++;};if _fafb > 0{_edba .Data [_dbece ]=_fcac (_edba .Data [_dbece ],0xff,_gbcec );};};
+case PixNotDst :for _fcagc =0;_fcagc < _fgde ;_fcagc ++{_dbece =_ffbd +_fcagc *_edba .RowStride ;for _ebd =0;_ebd < _gabb ;_ebd ++{_edba .Data [_dbece ]=^_edba .Data [_dbece ];_dbece ++;};if _fafb > 0{_edba .Data [_dbece ]=_fcac (_edba .Data [_dbece ],^_edba .Data [_dbece ],_gbcec );
+};};};};const (Vanilla Color =iota ;Chocolate ;);func (_fdae *Bitmap )connComponentsBitmapsBB (_cgc *Bitmaps ,_bbge int )(_cgbb *Boxes ,_beed error ){const _dcbe ="\u0063\u006f\u006enC\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u0042\u0069\u0074\u006d\u0061\u0070\u0073\u0042\u0042";
+if _bbge !=4&&_bbge !=8{return nil ,_g .Error (_dcbe ,"\u0063\u006f\u006e\u006e\u0065\u0063t\u0069\u0076\u0069\u0074\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u0027\u0034\u0027\u0020\u006fr\u0020\u0027\u0038\u0027");};if _cgc ==nil {return nil ,_g .Error (_dcbe ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0042\u0069\u0074ma\u0070\u0073");
+};if len (_cgc .Values )> 0{return nil ,_g .Error (_dcbe ,"\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u006fn\u002d\u0065\u006d\u0070\u0074\u0079\u0020\u0042\u0069\u0074m\u0061\u0070\u0073");};if _fdae .Zero (){return &Boxes {},nil ;};
+var (_fbca ,_bfge ,_gaada ,_ggad *Bitmap ;);_fdae .setPadBits (0);if _fbca ,_beed =_bgff (nil ,_fdae );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062\u006d\u0031");};if _bfge ,_beed =_bgff (nil ,_fdae );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062\u006d\u0032");
+};_dbabb :=&_db .Stack {};_dbabb .Aux =&_db .Stack {};_cgbb =&Boxes {};var (_fecg ,_fba int ;_gfabb _b .Point ;_befc bool ;_fdc *_b .Rectangle ;);for {if _gfabb ,_befc ,_beed =_fbca .nextOnPixel (_fecg ,_fba );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"");
+};if !_befc {break ;};if _fdc ,_beed =_adbc (_fbca ,_dbabb ,_gfabb .X ,_gfabb .Y ,_bbge );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"");};if _beed =_cgbb .Add (_fdc );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"");};if _gaada ,_beed =_fbca .clipRectangle (_fdc ,nil );
+_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062\u006d\u0033");};if _ggad ,_beed =_bfge .clipRectangle (_fdc ,nil );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062\u006d\u0034");};if _ ,_beed =_acaf (_gaada ,_gaada ,_ggad );_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062m\u0033\u0020\u005e\u0020\u0062\u006d4");
+};if _beed =_bfge .RasterOperation (_fdc .Min .X ,_fdc .Min .Y ,_fdc .Dx (),_fdc .Dy (),PixSrcXorDst ,_gaada ,0,0);_beed !=nil {return nil ,_g .Wrap (_beed ,_dcbe ,"\u0062\u006d\u0032\u0020\u002d\u0058\u004f\u0052\u002d>\u0020\u0062\u006d\u0033");};_cgc .AddBitmap (_gaada );
+_fecg =_gfabb .X ;_fba =_gfabb .Y ;};_cgc .Boxes =*_cgbb ;return _cgbb ,nil ;};func (_dbab *Bitmap )CountPixels ()int {return _dbab .countPixels ()};func (_cbec *Bitmap )thresholdPixelSum (_cbb int )bool {var (_bdae int ;_dbc uint8 ;_ebc byte ;_cgbd int ;
+);_gcag :=_cbec .RowStride ;_ddeeg :=uint (_cbec .Width &0x07);if _ddeeg !=0{_dbc =uint8 ((0xff<<(8-_ddeeg ))&0xff);_gcag --;};for _cceb :=0;_cceb < _cbec .Height ;_cceb ++{for _cgbd =0;_cgbd < _gcag ;_cgbd ++{_ebc =_cbec .Data [_cceb *_cbec .RowStride +_cgbd ];
+_bdae +=int (_fee [_ebc ]);};if _ddeeg !=0{_ebc =_cbec .Data [_cceb *_cbec .RowStride +_cgbd ]&_dbc ;_bdae +=int (_fee [_ebc ]);};if _bdae > _cbb {return true ;};};return false ;};func _efbcc (_adafg *Bitmap ,_eefb int )(*Bitmap ,error ){const _ceacc ="\u0065x\u0070a\u006e\u0064\u0052\u0065\u0070\u006c\u0069\u0063\u0061\u0074\u0065";
+if _adafg ==nil {return nil ,_g .Error (_ceacc ,"\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");};if _eefb <=0{return nil ,_g .Error (_ceacc ,"i\u006e\u0076\u0061\u006cid\u0020f\u0061\u0063\u0074\u006f\u0072 \u002d\u0020\u003c\u003d\u0020\u0030");
+};if _eefb ==1{_gggce ,_eedcd :=_bgff (nil ,_adafg );if _eedcd !=nil {return nil ,_g .Wrap (_eedcd ,_ceacc ,"\u0066\u0061\u0063\u0074\u006f\u0072\u0020\u003d\u0020\u0031");};return _gggce ,nil ;};_ddgc ,_gcc :=_acbb (_adafg ,_eefb ,_eefb );if _gcc !=nil {return nil ,_g .Wrap (_gcc ,_ceacc ,"");
+};return _ddgc ,nil ;};func _edgg (_fgcgd *Bitmap ,_gffad *_db .Stack ,_fbbc ,_facga int )(_dedd *_b .Rectangle ,_cdbe error ){const _eegc ="\u0073e\u0065d\u0046\u0069\u006c\u006c\u0053\u0074\u0061\u0063\u006b\u0042\u0042";if _fgcgd ==nil {return nil ,_g .Error (_eegc ,"\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0027\u0073\u0027\u0020\u0042\u0069\u0074\u006d\u0061\u0070");
+};if _gffad ==nil {return nil ,_g .Error (_eegc ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0027\u0073\u0074ac\u006b\u0027");};_gaef ,_eeebf :=_fgcgd .Width ,_fgcgd .Height ;_beddf :=_gaef -1;_fbaef :=_eeebf -1;if _fbbc < 0||_fbbc > _beddf ||_facga < 0||_facga > _fbaef ||!_fgcgd .GetPixel (_fbbc ,_facga ){return nil ,nil ;
+};var _cgac *_b .Rectangle ;_cgac ,_cdbe =Rect (100000,100000,0,0);if _cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"");};if _cdbe =_gebg (_gffad ,_fbbc ,_fbbc ,_facga ,1,_fbaef ,_cgac );_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"\u0069\u006e\u0069t\u0069\u0061\u006c\u0020\u0070\u0075\u0073\u0068");
+};if _cdbe =_gebg (_gffad ,_fbbc ,_fbbc ,_facga +1,-1,_fbaef ,_cgac );_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"\u0032\u006ed\u0020\u0069\u006ei\u0074\u0069\u0061\u006c\u0020\u0070\u0075\u0073\u0068");};_cgac .Min .X ,_cgac .Max .X =_fbbc ,_fbbc ;
+_cgac .Min .Y ,_cgac .Max .Y =_facga ,_facga ;var (_dffb *fillSegment ;_cfad int ;);for _gffad .Len ()> 0{if _dffb ,_cdbe =_dgdee (_gffad );_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"");};_facga =_dffb ._gdda ;for _fbbc =_dffb ._fgeg ;_fbbc >=0&&_fgcgd .GetPixel (_fbbc ,_facga );
+_fbbc --{if _cdbe =_fgcgd .SetPixel (_fbbc ,_facga ,0);_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"");};};if _fbbc >=_dffb ._fgeg {for _fbbc ++;_fbbc <=_dffb ._efcee &&_fbbc <=_beddf &&!_fgcgd .GetPixel (_fbbc ,_facga );_fbbc ++{};_cfad =_fbbc ;if _fbbc > _dffb ._efcee ||_fbbc > _beddf {continue ;
+};}else {_cfad =_fbbc +1;if _cfad < _dffb ._fgeg -1{if _cdbe =_gebg (_gffad ,_cfad ,_dffb ._fgeg -1,_dffb ._gdda ,-_dffb ._gfff ,_fbaef ,_cgac );_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"\u006c\u0065\u0061\u006b\u0020\u006f\u006e\u0020\u006c\u0065\u0066\u0074 \u0073\u0069\u0064\u0065");
+};};_fbbc =_dffb ._fgeg +1;};for {for ;_fbbc <=_beddf &&_fgcgd .GetPixel (_fbbc ,_facga );_fbbc ++{if _cdbe =_fgcgd .SetPixel (_fbbc ,_facga ,0);_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"\u0032n\u0064\u0020\u0073\u0065\u0074");};};if _cdbe =_gebg (_gffad ,_cfad ,_fbbc -1,_dffb ._gdda ,_dffb ._gfff ,_fbaef ,_cgac );
+_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"n\u006f\u0072\u006d\u0061\u006c\u0020\u0070\u0075\u0073\u0068");};if _fbbc > _dffb ._efcee +1{if _cdbe =_gebg (_gffad ,_dffb ._efcee +1,_fbbc -1,_dffb ._gdda ,-_dffb ._gfff ,_fbaef ,_cgac );_cdbe !=nil {return nil ,_g .Wrap (_cdbe ,_eegc ,"\u006ce\u0061k\u0020\u006f\u006e\u0020\u0072i\u0067\u0068t\u0020\u0073\u0069\u0064\u0065");
+};};for _fbbc ++;_fbbc <=_dffb ._efcee &&_fbbc <=_beddf &&!_fgcgd .GetPixel (_fbbc ,_facga );_fbbc ++{};_cfad =_fbbc ;if _fbbc > _dffb ._efcee ||_fbbc > _beddf {break ;};};};_cgac .Max .X ++;_cgac .Max .Y ++;return _cgac ,nil ;};func _fda (_ebafb ,_faa *Bitmap ,_ int ,_dga []byte ,_fbd int )(_cdd error ){const _ccf ="\u0072\u0065\u0064uc\u0065\u0052\u0061\u006e\u006b\u0042\u0069\u006e\u0061\u0072\u0079\u0032\u004c\u0065\u0076\u0065\u006c\u0032";
+var (_def ,_fccd ,_cga ,_cdb ,_gag ,_da ,_agb ,_dba int ;_abd ,_aae ,_dda ,_cfa uint32 ;_fgf ,_aca byte ;_ged uint16 ;);_bfd :=make ([]byte ,4);_ece :=make ([]byte ,4);for _cga =0;_cga < _ebafb .Height -1;_cga ,_cdb =_cga +2,_cdb +1{_def =_cga *_ebafb .RowStride ;
+_fccd =_cdb *_faa .RowStride ;for _gag ,_da =0,0;_gag < _fbd ;_gag ,_da =_gag +4,_da +1{for _agb =0;_agb < 4;_agb ++{_dba =_def +_gag +_agb ;if _dba <=len (_ebafb .Data )-1&&_dba < _def +_ebafb .RowStride {_bfd [_agb ]=_ebafb .Data [_dba ];}else {_bfd [_agb ]=0x00;
+};_dba =_def +_ebafb .RowStride +_gag +_agb ;if _dba <=len (_ebafb .Data )-1&&_dba < _def +(2*_ebafb .RowStride ){_ece [_agb ]=_ebafb .Data [_dba ];}else {_ece [_agb ]=0x00;};};_abd =_ge .BigEndian .Uint32 (_bfd );_aae =_ge .BigEndian .Uint32 (_ece );_dda =_abd &_aae ;
+_dda |=_dda <<1;_cfa =_abd |_aae ;_cfa &=_cfa <<1;_aae =_dda |_cfa ;_aae &=0xaaaaaaaa;_abd =_aae |(_aae <<7);_fgf =byte (_abd >>24);_aca =byte ((_abd >>8)&0xff);_dba =_fccd +_da ;if _dba +1==len (_faa .Data )-1||_dba +1>=_fccd +_faa .RowStride {if _cdd =_faa .SetByte (_dba ,_dga [_fgf ]);
+_cdd !=nil {return _g .Wrapf (_cdd ,_ccf ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0025d",_dba );};}else {_ged =(uint16 (_dga [_fgf ])<<8)|uint16 (_dga [_aca ]);if _cdd =_faa .setTwoBytes (_dba ,_ged );_cdd !=nil {return _g .Wrapf (_cdd ,_ccf ,"s\u0065\u0074\u0074\u0069\u006e\u0067 \u0074\u0077\u006f\u0020\u0062\u0079t\u0065\u0073\u0020\u0066\u0061\u0069\u006ce\u0064\u002c\u0020\u0069\u006e\u0064\u0065\u0078\u003a\u0020%\u0064",_dba );
+};_da ++;};};};return nil ;};var _ _dd .Interface =&ClassedPoints {};func (_egbd *Bitmaps )SelectBySize (width ,height int ,tp LocationFilter ,relation SizeComparison )(_efcf *Bitmaps ,_ffgd error ){const _eebg ="B\u0069t\u006d\u0061\u0070\u0073\u002e\u0053\u0065\u006ce\u0063\u0074\u0042\u0079Si\u007a\u0065";
+if _egbd ==nil {return nil ,_g .Error (_eebg ,"\u0027\u0062\u0027 B\u0069\u0074\u006d\u0061\u0070\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};switch tp {case LocSelectWidth ,LocSelectHeight ,LocSelectIfEither ,LocSelectIfBoth :default:return nil ,_g .Errorf (_eebg ,"\u0070\u0072\u006f\u0076\u0069d\u0065\u0064\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u006fc\u0061\u0074\u0069\u006f\u006e\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0064",tp );
+};switch relation {case SizeSelectIfLT ,SizeSelectIfGT ,SizeSelectIfLTE ,SizeSelectIfGTE ,SizeSelectIfEQ :default:return nil ,_g .Errorf (_eebg ,"\u0069\u006e\u0076\u0061li\u0064\u0020\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0027\u0025d\u0027",relation );
+};_dccc ,_ffgd :=_egbd .makeSizeIndicator (width ,height ,tp ,relation );if _ffgd !=nil {return nil ,_g .Wrap (_ffgd ,_eebg ,"");};_efcf ,_ffgd =_egbd .selectByIndicator (_dccc );if _ffgd !=nil {return nil ,_g .Wrap (_ffgd ,_eebg ,"");};return _efcf ,nil ;
+};func _cff (_dbb ,_gfe int )*Bitmap {return &Bitmap {Width :_dbb ,Height :_gfe ,RowStride :(_dbb +7)>>3};};func TstWordBitmap (t *_f .T ,scale ...int )*Bitmap {_acef :=1;if len (scale )> 0{_acef =scale [0];};_afca :=3;_cbeg :=9+7+15+2*_afca ;_bfcae :=5+_afca +5;
+_ggcde :=New (_cbeg *_acef ,_bfcae *_acef );_beddd :=&Bitmaps {};var _dfbfd *int ;_afca *=_acef ;_gdefb :=0;_dfbfd =&_gdefb ;_bebe :=0;_aagg :=TstDSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstOSymbol (t ,scale ...);
+TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,_afca );_aagg =TstISymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstTSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,_afca );_aagg =TstNSymbol (t ,scale ...);
+TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstOSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstWSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,0);*_dfbfd =0;_bebe =5*_acef +_afca ;
+_aagg =TstOSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstRSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,_afca );_aagg =TstNSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );
+_aagg =TstESymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstVSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );_aagg =TstESymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,1*_acef );
+_aagg =TstRSymbol (t ,scale ...);TstAddSymbol (t ,_beddd ,_aagg ,_dfbfd ,_bebe ,0);TstWriteSymbols (t ,_beddd ,_ggcde );return _ggcde ;};func _gcee (_ggbf ,_fdfe int )int {if _ggbf > _fdfe {return _ggbf ;};return _fdfe ;};func TstImageBitmapData ()[]byte {return _cfdf .Data };
+func (_acd *Bitmap )GetBitOffset (x int )int {return x &0x07};func (_fade Points )YSorter ()func (_cafb ,_egca int )bool {return func (_fdfb ,_egb int )bool {return _fade [_fdfb ].Y < _fade [_egb ].Y };};func _bccb (_gdbf ,_cdcf *Bitmap ,_cdda *Selection )(*Bitmap ,error ){const _ecbd ="c\u006c\u006f\u0073\u0065\u0042\u0069\u0074\u006d\u0061\u0070";
+var _aafb error ;if _gdbf ,_aafb =_aaa (_gdbf ,_cdcf ,_cdda );_aafb !=nil {return nil ,_aafb ;};_ceea ,_aafb :=_gdc (nil ,_cdcf ,_cdda );if _aafb !=nil {return nil ,_g .Wrap (_aafb ,_ecbd ,"");};if _ ,_aafb =_adbe (_gdbf ,_ceea ,_cdda );_aafb !=nil {return nil ,_g .Wrap (_aafb ,_ecbd ,"");
+};return _gdbf ,nil ;};func (_gcfac *Bitmaps )ClipToBitmap (s *Bitmap )(*Bitmaps ,error ){const _gfbg ="B\u0069t\u006d\u0061\u0070\u0073\u002e\u0043\u006c\u0069p\u0054\u006f\u0042\u0069tm\u0061\u0070";if _gcfac ==nil {return nil ,_g .Error (_gfbg ,"\u0042\u0069\u0074\u006dap\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if s ==nil {return nil ,_g .Error (_gfbg ,"\u0073o\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061p\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");};_cgef :=len (_gcfac .Values );_bgdf :=&Bitmaps {Values :make ([]*Bitmap ,_cgef ),Boxes :make ([]*_b .Rectangle ,_cgef )};
+var (_ddab ,_ddbg *Bitmap ;_adea *_b .Rectangle ;_facbf error ;);for _dbbf :=0;_dbbf < _cgef ;_dbbf ++{if _ddab ,_facbf =_gcfac .GetBitmap (_dbbf );_facbf !=nil {return nil ,_g .Wrap (_facbf ,_gfbg ,"");};if _adea ,_facbf =_gcfac .GetBox (_dbbf );_facbf !=nil {return nil ,_g .Wrap (_facbf ,_gfbg ,"");
+};if _ddbg ,_facbf =s .clipRectangle (_adea ,nil );_facbf !=nil {return nil ,_g .Wrap (_facbf ,_gfbg ,"");};if _ddbg ,_facbf =_ddbg .And (_ddab );_facbf !=nil {return nil ,_g .Wrap (_facbf ,_gfbg ,"");};_bgdf .Values [_dbbf ]=_ddbg ;_bgdf .Boxes [_dbbf ]=_adea ;
+};return _bgdf ,nil ;};func (_aaec *Bitmap )setPadBits (_gcfad int ){_egcd :=8-_aaec .Width %8;if _egcd ==8{return ;};_cfbc :=_aaec .Width /8;_gbgd :=_eebb [_egcd ];if _gcfad ==0{_gbgd ^=_gbgd ;};var _cddg int ;for _cgbee :=0;_cgbee < _aaec .Height ;_cgbee ++{_cddg =_cgbee *_aaec .RowStride +_cfbc ;
+if _gcfad ==0{_aaec .Data [_cddg ]&=_gbgd ;}else {_aaec .Data [_cddg ]|=_gbgd ;};};};const (AsymmetricMorphBC BoundaryCondition =iota ;SymmetricMorphBC ;);func _fc (_ef ,_fg *Bitmap )(_ed error ){const _cc ="\u0065\u0078\u0070\u0061nd\u0042\u0069\u006e\u0061\u0072\u0079\u0046\u0061\u0063\u0074\u006f\u0072\u0032";
+_ec :=_fg .RowStride ;_fd :=_ef .RowStride ;var (_a byte ;_fgg uint16 ;_ecd ,_aa ,_ac ,_dca ,_gg int ;);for _ac =0;_ac < _fg .Height ;_ac ++{_ecd =_ac *_ec ;_aa =2*_ac *_fd ;for _dca =0;_dca < _ec ;_dca ++{_a =_fg .Data [_ecd +_dca ];_fgg =_bged [_a ];
+_gg =_aa +_dca *2;if _ef .RowStride !=_fg .RowStride *2&&(_dca +1)*2> _ef .RowStride {_ed =_ef .SetByte (_gg ,byte (_fgg >>8));}else {_ed =_ef .setTwoBytes (_gg ,_fgg );};if _ed !=nil {return _g .Wrap (_ed ,_cc ,"");};};for _dca =0;_dca < _fd ;_dca ++{_gg =_aa +_fd +_dca ;
+_a =_ef .Data [_aa +_dca ];if _ed =_ef .SetByte (_gg ,_a );_ed !=nil {return _g .Wrapf (_ed ,_cc ,"c\u006f\u0070\u0079\u0020\u0064\u006fu\u0062\u006c\u0065\u0064\u0020\u006ci\u006e\u0065\u003a\u0020\u0027\u0025\u0064'\u002c\u0020\u0042\u0079\u0074\u0065\u003a\u0020\u0027\u0025d\u0027",_aa +_dca ,_aa +_fd +_dca );
+};};};return nil ;};func (_dddc *Bitmaps )SortByHeight (){_cgfe :=(*byHeight )(_dddc );_dd .Sort (_cgfe )};func (_bdbf *Boxes )Get (i int )(*_b .Rectangle ,error ){const _aabc ="\u0042o\u0078\u0065\u0073\u002e\u0047\u0065t";if _bdbf ==nil {return nil ,_g .Error (_aabc ,"\u0027\u0042\u006f\u0078es\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if i > len (*_bdbf )-1{return nil ,_g .Errorf (_aabc ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};return (*_bdbf )[i ],nil ;};func (_daa *Bitmap )addBorderGeneral (_bcf ,_agce ,_eeee ,_decg int ,_gbeb int )(*Bitmap ,error ){const _acc ="\u0061\u0064d\u0042\u006f\u0072d\u0065\u0072\u0047\u0065\u006e\u0065\u0072\u0061\u006c";
+if _bcf < 0||_agce < 0||_eeee < 0||_decg < 0{return nil ,_g .Error (_acc ,"n\u0065\u0067\u0061\u0074iv\u0065 \u0062\u006f\u0072\u0064\u0065r\u0020\u0061\u0064\u0064\u0065\u0064");};_ada ,_aee :=_daa .Width ,_daa .Height ;_ecab :=_ada +_bcf +_agce ;_acbe :=_aee +_eeee +_decg ;
+_faag :=New (_ecab ,_acbe );_faag .Color =_daa .Color ;_baf :=PixClr ;if _gbeb > 0{_baf =PixSet ;};_gbgg :=_faag .RasterOperation (0,0,_bcf ,_acbe ,_baf ,nil ,0,0);if _gbgg !=nil {return nil ,_g .Wrap (_gbgg ,_acc ,"\u006c\u0065\u0066\u0074");};_gbgg =_faag .RasterOperation (_ecab -_agce ,0,_agce ,_acbe ,_baf ,nil ,0,0);
+if _gbgg !=nil {return nil ,_g .Wrap (_gbgg ,_acc ,"\u0072\u0069\u0067h\u0074");};_gbgg =_faag .RasterOperation (0,0,_ecab ,_eeee ,_baf ,nil ,0,0);if _gbgg !=nil {return nil ,_g .Wrap (_gbgg ,_acc ,"\u0074\u006f\u0070");};_gbgg =_faag .RasterOperation (0,_acbe -_decg ,_ecab ,_decg ,_baf ,nil ,0,0);
+if _gbgg !=nil {return nil ,_g .Wrap (_gbgg ,_acc ,"\u0062\u006f\u0074\u0074\u006f\u006d");};_gbgg =_faag .RasterOperation (_bcf ,_eeee ,_ada ,_aee ,PixSrc ,_daa ,0,0);if _gbgg !=nil {return nil ,_g .Wrap (_gbgg ,_acc ,"\u0063\u006f\u0070\u0079");};return _faag ,nil ;
+};var MorphBC BoundaryCondition ;func _becd (_ccgg ,_fcbg *Bitmap ,_aced ,_febc int )(*Bitmap ,error ){const _cafg ="\u0063\u006c\u006f\u0073\u0065\u0042\u0072\u0069\u0063\u006b";if _fcbg ==nil {return nil ,_g .Error (_cafg ,"\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");
+};if _aced < 1||_febc < 1{return nil ,_g .Error (_cafg ,"\u0068S\u0069\u007a\u0065\u0020\u0061\u006e\u0064\u0020\u0076\u0053\u0069z\u0065\u0020\u006e\u006f\u0074\u0020\u003e\u003d\u0020\u0031");};if _aced ==1&&_febc ==1{return _fcbg .Copy (),nil ;};if _aced ==1||_febc ==1{_eabca :=SelCreateBrick (_febc ,_aced ,_febc /2,_aced /2,SelHit );
+var _dbfe error ;_ccgg ,_dbfe =_bccb (_ccgg ,_fcbg ,_eabca );if _dbfe !=nil {return nil ,_g .Wrap (_dbfe ,_cafg ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u007c\u007c \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");};
+return _ccgg ,nil ;};_cafd :=SelCreateBrick (1,_aced ,0,_aced /2,SelHit );_abed :=SelCreateBrick (_febc ,1,_febc /2,0,SelHit );_cbae ,_acde :=_gdc (nil ,_fcbg ,_cafd );if _acde !=nil {return nil ,_g .Wrap (_acde ,_cafg ,"\u0031\u0073\u0074\u0020\u0064\u0069\u006c\u0061\u0074\u0065");
+};if _ccgg ,_acde =_gdc (_ccgg ,_cbae ,_abed );_acde !=nil {return nil ,_g .Wrap (_acde ,_cafg ,"\u0032\u006e\u0064\u0020\u0064\u0069\u006c\u0061\u0074\u0065");};if _ ,_acde =_adbe (_cbae ,_ccgg ,_cafd );_acde !=nil {return nil ,_g .Wrap (_acde ,_cafg ,"\u0031s\u0074\u0020\u0065\u0072\u006f\u0064e");
+};if _ ,_acde =_adbe (_ccgg ,_cbae ,_abed );_acde !=nil {return nil ,_g .Wrap (_acde ,_cafg ,"\u0032n\u0064\u0020\u0065\u0072\u006f\u0064e");};return _ccgg ,nil ;};type Points []Point ;func (_cdf *Bitmap )equivalent (_bbfc *Bitmap )bool {if _cdf ==_bbfc {return true ;
+};if !_cdf .SizesEqual (_bbfc ){return false ;};_gcfa :=_cfegd (_cdf ,_bbfc ,CmbOpXor );_degd :=_cdf .countPixels ();_caeg :=int (0.25*float32 (_degd ));if _gcfa .thresholdPixelSum (_caeg ){return false ;};var (_fea [9][9]int ;_bbc [18][9]int ;_adaf [9][18]int ;
+_aff int ;_ggg int ;);_eedaf :=9;_gba :=_cdf .Height /_eedaf ;_fgb :=_cdf .Width /_eedaf ;_cab ,_fcd :=_gba /2,_fgb /2;if _gba < _fgb {_cab =_fgb /2;_fcd =_gba /2;};_ebe :=float64 (_cab )*float64 (_fcd )*_gf .Pi ;_agdbd :=int (float64 (_gba *_fgb /2)*0.9);
+_gfacc :=int (float64 (_fgb *_gba /2)*0.9);for _caae :=0;_caae < _eedaf ;_caae ++{_fcgd :=_fgb *_caae +_aff ;var _fgcg int ;if _caae ==_eedaf -1{_aff =0;_fgcg =_cdf .Width ;}else {_fgcg =_fcgd +_fgb ;if ((_cdf .Width -_aff )%_eedaf )> 0{_aff ++;_fgcg ++;
+};};for _gfd :=0;_gfd < _eedaf ;_gfd ++{_fde :=_gba *_gfd +_ggg ;var _cef int ;if _gfd ==_eedaf -1{_ggg =0;_cef =_cdf .Height ;}else {_cef =_fde +_gba ;if (_cdf .Height -_ggg )%_eedaf > 0{_ggg ++;_cef ++;};};var _ffef ,_feca ,_dffg ,_dbfd int ;_ddee :=(_fcgd +_fgcg )/2;
+_dcaa :=(_fde +_cef )/2;for _cdff :=_fcgd ;_cdff < _fgcg ;_cdff ++{for _cgf :=_fde ;_cgf < _cef ;_cgf ++{if _gcfa .GetPixel (_cdff ,_cgf ){if _cdff < _ddee {_ffef ++;}else {_feca ++;};if _cgf < _dcaa {_dbfd ++;}else {_dffg ++;};};};};_fea [_caae ][_gfd ]=_ffef +_feca ;
+_bbc [_caae *2][_gfd ]=_ffef ;_bbc [_caae *2+1][_gfd ]=_feca ;_adaf [_caae ][_gfd *2]=_dbfd ;_adaf [_caae ][_gfd *2+1]=_dffg ;};};for _agbf :=0;_agbf < _eedaf *2-1;_agbf ++{for _dgb :=0;_dgb < (_eedaf -1);_dgb ++{var _abc int ;for _ddeg :=0;_ddeg < 2;_ddeg ++{for _dbbc :=0;
+_dbbc < 2;_dbbc ++{_abc +=_bbc [_agbf +_ddeg ][_dgb +_dbbc ];};};if _abc > _gfacc {return false ;};};};for _affa :=0;_affa < (_eedaf -1);_affa ++{for _bfab :=0;_bfab < ((_eedaf *2)-1);_bfab ++{var _gacf int ;for _bag :=0;_bag < 2;_bag ++{for _bgabg :=0;
+_bgabg < 2;_bgabg ++{_gacf +=_adaf [_affa +_bag ][_bfab +_bgabg ];};};if _gacf > _agdbd {return false ;};};};for _ddd :=0;_ddd < (_eedaf -2);_ddd ++{for _afd :=0;_afd < (_eedaf -2);_afd ++{var _edec ,_fgcc int ;for _fccg :=0;_fccg < 3;_fccg ++{for _ccd :=0;
+_ccd < 3;_ccd ++{if _fccg ==_ccd {_edec +=_fea [_ddd +_fccg ][_afd +_ccd ];};if (2-_fccg )==_ccd {_fgcc +=_fea [_ddd +_fccg ][_afd +_ccd ];};};};if _edec > _gfacc ||_fgcc > _gfacc {return false ;};};};for _faac :=0;_faac < (_eedaf -1);_faac ++{for _cbge :=0;
+_cbge < (_eedaf -1);_cbge ++{var _fcdb int ;for _dbfdf :=0;_dbfdf < 2;_dbfdf ++{for _dabc :=0;_dabc < 2;_dabc ++{_fcdb +=_fea [_faac +_dbfdf ][_cbge +_dabc ];};};if float64 (_fcdb )> _ebe {return false ;};};};return true ;};func TstESymbol (t *_f .T ,scale ...int )*Bitmap {_efbbg ,_bgbdg :=NewWithData (4,5,[]byte {0xF0,0x80,0xE0,0x80,0xF0});
+_e .NoError (t ,_bgbdg );return TstGetScaledSymbol (t ,_efbbg ,scale ...);};type BitmapsArray struct{Values []*Bitmaps ;Boxes []*_b .Rectangle ;};func TstNSymbol (t *_f .T ,scale ...int )*Bitmap {_bfff ,_abdgd :=NewWithData (4,5,[]byte {0x90,0xD0,0xB0,0x90,0x90});
+_e .NoError (t ,_abdgd );return TstGetScaledSymbol (t ,_bfff ,scale ...);};func (_bdgd *Bitmap )GetByte (index int )(byte ,error ){if index > len (_bdgd .Data )-1||index < 0{return 0,_g .Errorf ("\u0047e\u0074\u0042\u0079\u0074\u0065","\u0069\u006e\u0064\u0065x:\u0020\u0025\u0064\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006eg\u0065",index );
+};return _bdgd .Data [index ],nil ;};var (_gebag =[]byte {0x00,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};_eebb =[]byte {0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};);func (_dggb *ClassedPoints )GroupByY ()([]*ClassedPoints ,error ){const _aaae ="\u0043\u006c\u0061\u0073se\u0064\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0072\u006f\u0075\u0070\u0042y\u0059";
+if _cdac :=_dggb .validateIntSlice ();_cdac !=nil {return nil ,_g .Wrap (_cdac ,_aaae ,"");};if _dggb .IntSlice .Size ()==0{return nil ,_g .Error (_aaae ,"\u004e\u006f\u0020\u0063la\u0073\u0073\u0065\u0073\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");
+};_dggb .SortByY ();var (_ecdg []*ClassedPoints ;_gggg int ;);_degc :=-1;var _acdc *ClassedPoints ;for _fagd :=0;_fagd < len (_dggb .IntSlice );_fagd ++{_gggg =int (_dggb .YAtIndex (_fagd ));if _gggg !=_degc {_acdc =&ClassedPoints {Points :_dggb .Points };
+_degc =_gggg ;_ecdg =append (_ecdg ,_acdc );};_acdc .IntSlice =append (_acdc .IntSlice ,_dggb .IntSlice [_fagd ]);};for _ ,_egf :=range _ecdg {_egf .SortByX ();};return _ecdg ,nil ;};type ClassedPoints struct{*Points ;_db .IntSlice ;_bdde func (_dcgba ,_gcfb int )bool ;
+};type CombinationOperator int ;func (_gfab *Bitmap )GetByteIndex (x ,y int )int {return y *_gfab .RowStride +(x >>3)};func (_edcg *Bitmap )ClipRectangle (box *_b .Rectangle )(_egc *Bitmap ,_dffa *_b .Rectangle ,_ggb error ){const _gfac ="\u0043\u006c\u0069\u0070\u0052\u0065\u0063\u0074\u0061\u006e\u0067\u006c\u0065";
+if box ==nil {return nil ,nil ,_g .Error (_gfac ,"\u0062o\u0078 \u0069\u0073\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");};_gbe ,_fbe :=_edcg .Width ,_edcg .Height ;_fdba :=_b .Rect (0,0,_gbe ,_fbe );if !box .Overlaps (_fdba ){return nil ,nil ,_g .Error (_gfac ,"b\u006f\u0078\u0020\u0064oe\u0073n\u0027\u0074\u0020\u006f\u0076e\u0072\u006c\u0061\u0070\u0020\u0062");
+};_bace :=box .Intersect (_fdba );_ddb ,_gcg :=_bace .Min .X ,_bace .Min .Y ;_cac ,_fcgb :=_bace .Dx (),_bace .Dy ();_egc =New (_cac ,_fcgb );_egc .Text =_edcg .Text ;if _ggb =_egc .RasterOperation (0,0,_cac ,_fcgb ,PixSrc ,_edcg ,_ddb ,_gcg );_ggb !=nil {return nil ,nil ,_g .Wrap (_ggb ,_gfac ,"\u0050\u0069\u0078\u0053\u0072\u0063\u0020\u0074\u006f\u0020\u0063\u006ci\u0070\u0070\u0065\u0064");
+};_dffa =&_bace ;return _egc ,_dffa ,nil ;};func _eaac (_ddfb *Bitmap ,_cagb *Bitmap ,_cgdd int )(_fcec error ){const _agfb ="\u0073\u0065\u0065\u0064\u0066\u0069\u006c\u006c\u0042\u0069\u006e\u0061r\u0079\u004c\u006f\u0077";_feec :=_gdef (_ddfb .Height ,_cagb .Height );
+_agceg :=_gdef (_ddfb .RowStride ,_cagb .RowStride );switch _cgdd {case 4:_fcec =_bced (_ddfb ,_cagb ,_feec ,_agceg );case 8:_fcec =_gffca (_ddfb ,_cagb ,_feec ,_agceg );default:return _g .Errorf (_agfb ,"\u0063\u006f\u006e\u006e\u0065\u0063\u0074\u0069\u0076\u0069\u0074\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0034\u0020\u006fr\u0020\u0038\u0020\u002d\u0020i\u0073\u003a \u0027\u0025\u0064\u0027",_cgdd );
+};if _fcec !=nil {return _g .Wrap (_fcec ,_agfb ,"");};return nil ;};func TstVSymbol (t *_f .T ,scale ...int )*Bitmap {_afdg ,_bacef :=NewWithData (5,5,[]byte {0x88,0x88,0x88,0x50,0x20});_e .NoError (t ,_bacef );return TstGetScaledSymbol (t ,_afdg ,scale ...);
+};func (_cafa *Bitmap )resizeImageData (_efbg *Bitmap )error {if _efbg ==nil {return _g .Error ("\u0072e\u0073i\u007a\u0065\u0049\u006d\u0061\u0067\u0065\u0044\u0061\u0074\u0061","\u0073r\u0063 \u0069\u0073\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");
+};if _cafa .SizesEqual (_efbg ){return nil ;};_cafa .Data =make ([]byte ,len (_efbg .Data ));_cafa .Width =_efbg .Width ;_cafa .Height =_efbg .Height ;_cafa .RowStride =_efbg .RowStride ;return nil ;};func (_aggge *byWidth )Swap (i ,j int ){_aggge .Values [i ],_aggge .Values [j ]=_aggge .Values [j ],_aggge .Values [i ];
+if _aggge .Boxes !=nil {_aggge .Boxes [i ],_aggge .Boxes [j ]=_aggge .Boxes [j ],_aggge .Boxes [i ];};};func NewWithData (width ,height int ,data []byte )(*Bitmap ,error ){const _gac ="N\u0065\u0077\u0057\u0069\u0074\u0068\u0044\u0061\u0074\u0061";_ffe :=_cff (width ,height );
+_ffe .Data =data ;if len (data )< height *_ffe .RowStride {return nil ,_g .Errorf (_gac ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061\u0020l\u0065\u006e\u0067\u0074\u0068\u003a \u0025\u0064\u0020\u002d\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062e\u003a\u0020\u0025\u0064",len (data ),height *_ffe .RowStride );
+};return _ffe ,nil ;};func (_acag *Bitmaps )CountPixels ()*_db .NumSlice {_dbag :=&_db .NumSlice {};for _ ,_gaffe :=range _acag .Values {_dbag .AddInt (_gaffe .CountPixels ());};return _dbag ;};func _dfdg (_bcafg *Bitmap ,_abg ,_dbcf ,_facg ,_eeeb int ,_aedfg RasterOperator ,_dcfe *Bitmap ,_agabe ,_dfce int )error {var (_gegg byte ;
+_bbfae int ;_gfag int ;_efd ,_egcg int ;_gdad ,_cacg int ;);_fafd :=_facg >>3;_eggae :=_facg &7;if _eggae > 0{_gegg =_gebag [_eggae ];};_bbfae =_dcfe .RowStride *_dfce +(_agabe >>3);_gfag =_bcafg .RowStride *_dbcf +(_abg >>3);switch _aedfg {case PixSrc :for _gdad =0;
+_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=_dcfe .Data [_efd ];_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ],_gegg );
+};};case PixNotSrc :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=^(_dcfe .Data [_efd ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^_dcfe .Data [_efd ],_gegg );
+};};case PixSrcOrDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]|=_dcfe .Data [_efd ];_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ]|_bcafg .Data [_egcg ],_gegg );
+};};case PixSrcAndDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]&=_dcfe .Data [_efd ];_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ]&_bcafg .Data [_egcg ],_gegg );
+};};case PixSrcXorDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]^=_dcfe .Data [_efd ];_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ]^_bcafg .Data [_egcg ],_gegg );
+};};case PixNotSrcOrDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]|=^(_dcfe .Data [_efd ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^(_dcfe .Data [_efd ])|_bcafg .Data [_egcg ],_gegg );
+};};case PixNotSrcAndDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]&=^(_dcfe .Data [_efd ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^(_dcfe .Data [_efd ])&_bcafg .Data [_egcg ],_gegg );
+};};case PixSrcOrNotDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=_dcfe .Data [_efd ]|^(_bcafg .Data [_egcg ]);_egcg ++;
+_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ]|^(_bcafg .Data [_egcg ]),_gegg );};};case PixSrcAndNotDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;
+for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=_dcfe .Data [_efd ]&^(_bcafg .Data [_egcg ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],_dcfe .Data [_efd ]&^(_bcafg .Data [_egcg ]),_gegg );};};case PixNotPixSrcOrDst :for _gdad =0;
+_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=^(_dcfe .Data [_efd ]|_bcafg .Data [_egcg ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^(_dcfe .Data [_efd ]|_bcafg .Data [_egcg ]),_gegg );
+};};case PixNotPixSrcAndDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=^(_dcfe .Data [_efd ]&_bcafg .Data [_egcg ]);_egcg ++;
+_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^(_dcfe .Data [_efd ]&_bcafg .Data [_egcg ]),_gegg );};};case PixNotPixSrcXorDst :for _gdad =0;_gdad < _eeeb ;_gdad ++{_efd =_bbfae +_gdad *_dcfe .RowStride ;_egcg =_gfag +_gdad *_bcafg .RowStride ;
+for _cacg =0;_cacg < _fafd ;_cacg ++{_bcafg .Data [_egcg ]=^(_dcfe .Data [_efd ]^_bcafg .Data [_egcg ]);_egcg ++;_efd ++;};if _eggae > 0{_bcafg .Data [_egcg ]=_fcac (_bcafg .Data [_egcg ],^(_dcfe .Data [_efd ]^_bcafg .Data [_egcg ]),_gegg );};};default:_de .Log .Debug ("\u0050\u0072ov\u0069\u0064\u0065d\u0020\u0069\u006e\u0076ali\u0064 r\u0061\u0073\u0074\u0065\u0072\u0020\u006fpe\u0072\u0061\u0074\u006f\u0072\u003a\u0020%\u0076",_aedfg );
+return _g .Error ("\u0072\u0061\u0073\u0074er\u004f\u0070\u0042\u0079\u0074\u0065\u0041\u006c\u0069\u0067\u006e\u0065\u0064\u004co\u0077","\u0069\u006e\u0076al\u0069\u0064\u0020\u0072\u0061\u0073\u0074\u0065\u0072\u0020\u006f\u0070\u0065\u0072\u0061\u0074\u006f\u0072");
+};return nil ;};func _gdc (_aaedb *Bitmap ,_baabb *Bitmap ,_ababf *Selection )(*Bitmap ,error ){var (_eeba *Bitmap ;_dgdd error ;);_aaedb ,_dgdd =_cfca (_aaedb ,_baabb ,_ababf ,&_eeba );if _dgdd !=nil {return nil ,_dgdd ;};if _dgdd =_aaedb .clearAll ();
+_dgdd !=nil {return nil ,_dgdd ;};var _agca SelectionValue ;for _gdg :=0;_gdg < _ababf .Height ;_gdg ++{for _gcdf :=0;_gcdf < _ababf .Width ;_gcdf ++{_agca =_ababf .Data [_gdg ][_gcdf ];if _agca ==SelHit {if _dgdd =_aaedb .RasterOperation (_gcdf -_ababf .Cx ,_gdg -_ababf .Cy ,_baabb .Width ,_baabb .Height ,PixSrcOrDst ,_eeba ,0,0);
+_dgdd !=nil {return nil ,_dgdd ;};};};};return _aaedb ,nil ;};func _ceb (_cfcc *Bitmap ,_bdff ...MorphProcess )(_ecaac *Bitmap ,_gagaf error ){const _fbae ="\u006d\u006f\u0072\u0070\u0068\u0053\u0065\u0071\u0075\u0065\u006e\u0063\u0065";if _cfcc ==nil {return nil ,_g .Error (_fbae ,"\u006d\u006f\u0072\u0070\u0068\u0053\u0065\u0071\u0075\u0065\u006e\u0063\u0065 \u0073\u006f\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061\u0070\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064");
+};if len (_bdff )==0{return nil ,_g .Error (_fbae ,"m\u006f\u0072\u0070\u0068\u0053\u0065q\u0075\u0065\u006e\u0063\u0065\u002c \u0073\u0065\u0071\u0075\u0065\u006e\u0063e\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064");};if _gagaf =_dbfb (_bdff ...);
+_gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};var _bfcd ,_befa ,_bdd int ;_ecaac =_cfcc .Copy ();for _ ,_dgeba :=range _bdff {switch _dgeba .Operation {case MopDilation :_bfcd ,_befa =_dgeba .getWidthHeight ();_ecaac ,_gagaf =DilateBrick (nil ,_ecaac ,_bfcd ,_befa );
+if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};case MopErosion :_bfcd ,_befa =_dgeba .getWidthHeight ();_ecaac ,_gagaf =_ebba (nil ,_ecaac ,_bfcd ,_befa );if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};case MopOpening :_bfcd ,_befa =_dgeba .getWidthHeight ();
+_ecaac ,_gagaf =_cegb (nil ,_ecaac ,_bfcd ,_befa );if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};case MopClosing :_bfcd ,_befa =_dgeba .getWidthHeight ();_ecaac ,_gagaf =_cddge (nil ,_ecaac ,_bfcd ,_befa );if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");
+};case MopRankBinaryReduction :_ecaac ,_gagaf =_fgd (_ecaac ,_dgeba .Arguments ...);if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};case MopReplicativeBinaryExpansion :_ecaac ,_gagaf =_efbcc (_ecaac ,_dgeba .Arguments [0]);if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");
+};case MopAddBorder :_bdd =_dgeba .Arguments [0];_ecaac ,_gagaf =_ecaac .AddBorder (_bdd ,0);if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"");};default:return nil ,_g .Error (_fbae ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006d\u006fr\u0070\u0068\u004f\u0070\u0065\u0072\u0061ti\u006f\u006e\u0020\u0070r\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0074\u006f t\u0068\u0065 \u0073\u0065\u0071\u0075\u0065\u006e\u0063\u0065");
+};};if _bdd > 0{_ecaac ,_gagaf =_ecaac .RemoveBorder (_bdd );if _gagaf !=nil {return nil ,_g .Wrap (_gagaf ,_fbae ,"\u0062\u006f\u0072\u0064\u0065\u0072\u0020\u003e\u0020\u0030");};};return _ecaac ,nil ;};func (_ddfe *Bitmap )ThresholdPixelSum (thresh int ,tab8 []int )(_dbf bool ,_gafa error ){const _daf ="\u0042i\u0074\u006d\u0061\u0070\u002e\u0054\u0068\u0072\u0065\u0073\u0068o\u006c\u0064\u0050\u0069\u0078\u0065\u006c\u0053\u0075\u006d";
+if tab8 ==nil {tab8 =_eadbd ();};_fafe :=_ddfe .Width >>3;_bgf :=_ddfe .Width &7;_afee :=byte (0xff<<uint (8-_bgf ));var (_agcb ,_bda ,_aac ,_dgf int ;_eeda byte ;);for _agcb =0;_agcb < _ddfe .Height ;_agcb ++{_aac =_ddfe .RowStride *_agcb ;for _bda =0;
+_bda < _fafe ;_bda ++{_eeda ,_gafa =_ddfe .GetByte (_aac +_bda );if _gafa !=nil {return false ,_g .Wrap (_gafa ,_daf ,"\u0066\u0075\u006c\u006c\u0042\u0079\u0074\u0065");};_dgf +=tab8 [_eeda ];};if _bgf !=0{_eeda ,_gafa =_ddfe .GetByte (_aac +_bda );if _gafa !=nil {return false ,_g .Wrap (_gafa ,_daf ,"p\u0061\u0072\u0074\u0069\u0061\u006c\u0042\u0079\u0074\u0065");
+};_eeda &=_afee ;_dgf +=tab8 [_eeda ];};if _dgf > thresh {return true ,nil ;};};return _dbf ,nil ;};type Color int ;type fillSegment struct{_fgeg int ;_efcee int ;_gdda int ;_gfff int ;};func (_dcbgg *byHeight )Less (i ,j int )bool {return _dcbgg .Values [i ].Height < _dcbgg .Values [j ].Height };
+func Copy (d ,s *Bitmap )(*Bitmap ,error ){return _bgff (d ,s )};func (_gea *Bitmap )SizesEqual (s *Bitmap )bool {if _gea ==s {return true ;};if _gea .Width !=s .Width ||_gea .Height !=s .Height {return false ;};return true ;};func _adbe (_begb ,_bagbb *Bitmap ,_agdd *Selection )(*Bitmap ,error ){const _gefa ="\u0065\u0072\u006fd\u0065";
+var (_adgb error ;_ebcb *Bitmap ;);_begb ,_adgb =_cfca (_begb ,_bagbb ,_agdd ,&_ebcb );if _adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"");};if _adgb =_begb .setAll ();_adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"");};var _agfa SelectionValue ;
+for _cafc :=0;_cafc < _agdd .Height ;_cafc ++{for _accfb :=0;_accfb < _agdd .Width ;_accfb ++{_agfa =_agdd .Data [_cafc ][_accfb ];if _agfa ==SelHit {_adgb =_gbee (_begb ,_agdd .Cx -_accfb ,_agdd .Cy -_cafc ,_bagbb .Width ,_bagbb .Height ,PixSrcAndDst ,_ebcb ,0,0);
+if _adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"");};};};};if MorphBC ==SymmetricMorphBC {return _begb ,nil ;};_ebgd ,_gbbg ,_fbfbg ,_aecb :=_agdd .findMaxTranslations ();if _ebgd > 0{if _adgb =_begb .RasterOperation (0,0,_ebgd ,_bagbb .Height ,PixClr ,nil ,0,0);
+_adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"\u0078\u0070\u0020\u003e\u0020\u0030");};};if _fbfbg > 0{if _adgb =_begb .RasterOperation (_bagbb .Width -_fbfbg ,0,_fbfbg ,_bagbb .Height ,PixClr ,nil ,0,0);_adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"\u0078\u006e\u0020\u003e\u0020\u0030");
+};};if _gbbg > 0{if _adgb =_begb .RasterOperation (0,0,_bagbb .Width ,_gbbg ,PixClr ,nil ,0,0);_adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"\u0079\u0070\u0020\u003e\u0020\u0030");};};if _aecb > 0{if _adgb =_begb .RasterOperation (0,_bagbb .Height -_aecb ,_bagbb .Width ,_aecb ,PixClr ,nil ,0,0);
+_adgb !=nil {return nil ,_g .Wrap (_adgb ,_gefa ,"\u0079\u006e\u0020\u003e\u0020\u0030");};};return _begb ,nil ;};func (_gdefg *Bitmaps )WidthSorter ()func (_cfff ,_dfgd int )bool {return func (_ccdb ,_adbdb int )bool {return _gdefg .Values [_ccdb ].Width < _gdefg .Values [_adbdb ].Width };
+};const (SelDontCare SelectionValue =iota ;SelHit ;SelMiss ;);func (_afff *BitmapsArray )GetBitmaps (i int )(*Bitmaps ,error ){const _bbdgb ="\u0042\u0069\u0074ma\u0070\u0073\u0041\u0072\u0072\u0061\u0079\u002e\u0047\u0065\u0074\u0042\u0069\u0074\u006d\u0061\u0070\u0073";
+if _afff ==nil {return nil ,_g .Error (_bbdgb ,"p\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u006e\u0069\u006c\u0020\u0027\u0042\u0069\u0074m\u0061\u0070\u0073A\u0072r\u0061\u0079\u0027");};if i > len (_afff .Values )-1{return nil ,_g .Errorf (_bbdgb ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};return _afff .Values [i ],nil ;};func (_dceaf *Bitmap )centroid (_afbg ,_ffcb []int )(Point ,error ){_gefb :=Point {};_dceaf .setPadBits (0);if len (_afbg )==0{_afbg =_cddb ();};if len (_ffcb )==0{_ffcb =_eadbd ();};var _aebg ,_bdab ,_egcf ,_gagad ,_bcc ,_cgfa int ;
+var _bccg byte ;for _bcc =0;_bcc < _dceaf .Height ;_bcc ++{_dcgb :=_dceaf .RowStride *_bcc ;_gagad =0;for _cgfa =0;_cgfa < _dceaf .RowStride ;_cgfa ++{_bccg =_dceaf .Data [_dcgb +_cgfa ];if _bccg !=0{_gagad +=_ffcb [_bccg ];_aebg +=_afbg [_bccg ]+_cgfa *8*_ffcb [_bccg ];
+};};_egcf +=_gagad ;_bdab +=_gagad *_bcc ;};if _egcf !=0{_gefb .X =float32 (_aebg )/float32 (_egcf );_gefb .Y =float32 (_bdab )/float32 (_egcf );};return _gefb ,nil ;};func TstOSymbol (t *_f .T ,scale ...int )*Bitmap {_aaga ,_abac :=NewWithData (4,5,[]byte {0xF0,0x90,0x90,0x90,0xF0});
+_e .NoError (t ,_abac );return TstGetScaledSymbol (t ,_aaga ,scale ...);};func (_dgad *Bitmap )And (s *Bitmap )(_fef *Bitmap ,_aba error ){const _gcd ="\u0042\u0069\u0074\u006d\u0061\u0070\u002e\u0041\u006e\u0064";if _dgad ==nil {return nil ,_g .Error (_gcd ,"\u0027b\u0069t\u006d\u0061\u0070\u0020\u0027b\u0027\u0020i\u0073\u0020\u006e\u0069\u006c");
+};if s ==nil {return nil ,_g .Error (_gcd ,"\u0062\u0069\u0074\u006d\u0061\u0070\u0020\u0027\u0073\u0027\u0020\u0069s\u0020\u006e\u0069\u006c");};if !_dgad .SizesEqual (s ){_de .Log .Debug ("\u0025\u0073\u0020-\u0020\u0042\u0069\u0074\u006d\u0061\u0070\u0020\u0027\u0073\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0073\u0069\u007a\u0065 \u0077\u0069\u0074\u0068\u0020\u0027\u0062\u0027",_gcd );
+};if _fef ,_aba =_bgff (_fef ,_dgad );_aba !=nil {return nil ,_g .Wrap (_aba ,_gcd ,"\u0063\u0061\u006e't\u0020\u0063\u0072\u0065\u0061\u0074\u0065\u0020\u0027\u0064\u0027\u0020\u0062\u0069\u0074\u006d\u0061\u0070");};if _aba =_fef .RasterOperation (0,0,_fef .Width ,_fef .Height ,PixSrcAndDst ,s ,0,0);
+_aba !=nil {return nil ,_g .Wrap (_aba ,_gcd ,"");};return _fef ,nil ;};func _ggdg (_eaa ,_fbbb *Bitmap ,_cbfe ,_gef ,_ggbb ,_ffdc ,_cbcf ,_gecb ,_eeag ,_ffda int ,_gbd CombinationOperator )error {var _fdde int ;_eafgd :=func (){_fdde ++;_ggbb +=_fbbb .RowStride ;
+_ffdc +=_eaa .RowStride ;_cbcf +=_eaa .RowStride };for _fdde =_cbfe ;_fdde < _gef ;_eafgd (){var _dceg uint16 ;_gfae :=_ggbb ;for _dgcc :=_ffdc ;_dgcc <=_cbcf ;_dgcc ++{_bee ,_abdd :=_fbbb .GetByte (_gfae );if _abdd !=nil {return _abdd ;};_cegd ,_abdd :=_eaa .GetByte (_dgcc );
+if _abdd !=nil {return _abdd ;};_dceg =(_dceg |uint16 (_cegd ))<<uint (_ffda );_cegd =byte (_dceg >>8);if _dgcc ==_cbcf {_cegd =_agaf (uint (_gecb ),_cegd );};if _abdd =_fbbb .SetByte (_gfae ,_bagb (_bee ,_cegd ,_gbd ));_abdd !=nil {return _abdd ;};_gfae ++;
+_dceg <<=uint (_eeag );};};return nil ;};const (CmbOpOr CombinationOperator =iota ;CmbOpAnd ;CmbOpXor ;CmbOpXNor ;CmbOpReplace ;CmbOpNot ;);func _aefd (_fcaea *Bitmap ,_eebf ,_fafc ,_afbbac ,_cabd int ,_fbgf RasterOperator ){if _eebf < 0{_afbbac +=_eebf ;
+_eebf =0;};_ecgg :=_eebf +_afbbac -_fcaea .Width ;if _ecgg > 0{_afbbac -=_ecgg ;};if _fafc < 0{_cabd +=_fafc ;_fafc =0;};_bdfe :=_fafc +_cabd -_fcaea .Height ;if _bdfe > 0{_cabd -=_bdfe ;};if _afbbac <=0||_cabd <=0{return ;};if (_eebf &7)==0{_dag (_fcaea ,_eebf ,_fafc ,_afbbac ,_cabd ,_fbgf );
+}else {_gbcc (_fcaea ,_eebf ,_fafc ,_afbbac ,_cabd ,_fbgf );};};func (_fggc *Bitmap )SetByte (index int ,v byte )error {if index > len (_fggc .Data )-1||index < 0{return _g .Errorf ("\u0053e\u0074\u0042\u0079\u0074\u0065","\u0069\u006e\u0064\u0065x \u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020%\u0064",index );
+};_fggc .Data [index ]=v ;return nil ;};func (_bdbc *Boxes )SelectBySize (width ,height int ,tp LocationFilter ,relation SizeComparison )(_bff *Boxes ,_gge error ){const _cbgc ="\u0042o\u0078e\u0073\u002e\u0053\u0065\u006ce\u0063\u0074B\u0079\u0053\u0069\u007a\u0065";
+if _bdbc ==nil {return nil ,_g .Error (_cbgc ,"b\u006f\u0078\u0065\u0073 '\u0062'\u0020\u006e\u006f\u0074\u0020d\u0065\u0066\u0069\u006e\u0065\u0064");};if len (*_bdbc )==0{return _bdbc ,nil ;};switch tp {case LocSelectWidth ,LocSelectHeight ,LocSelectIfEither ,LocSelectIfBoth :default:return nil ,_g .Errorf (_cbgc ,"\u0069\u006e\u0076al\u0069\u0064\u0020\u0066\u0069\u006c\u0074\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0064",tp );
+};switch relation {case SizeSelectIfLT ,SizeSelectIfGT ,SizeSelectIfLTE ,SizeSelectIfGTE :default:return nil ,_g .Errorf (_cbgc ,"i\u006e\u0076\u0061\u006c\u0069\u0064 \u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0020t\u0079\u0070\u0065:\u0020'\u0025\u0064\u0027",tp );
+};_faacd :=_bdbc .makeSizeIndicator (width ,height ,tp ,relation );_dfbb ,_gge :=_bdbc .selectWithIndicator (_faacd );if _gge !=nil {return nil ,_g .Wrap (_gge ,_cbgc ,"");};return _dfbb ,nil ;};func (_becg *ClassedPoints )GetIntXByClass (i int )(int ,error ){const _bfdd ="\u0043\u006c\u0061\u0073s\u0065\u0064\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047e\u0074I\u006e\u0074\u0059\u0042\u0079\u0043\u006ca\u0073\u0073";
+if i >=_becg .IntSlice .Size (){return 0,_g .Errorf (_bfdd ,"\u0069\u003a\u0020\u0027\u0025\u0064\u0027 \u0069\u0073\u0020o\u0075\u0074\u0020\u006ff\u0020\u0074\u0068\u0065\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0074\u0068\u0065\u0020\u0049\u006e\u0074\u0053\u006c\u0069\u0063\u0065",i );
+};return int (_becg .XAtIndex (i )),nil ;};func (_aaba Points )GetIntX (i int )(int ,error ){if i >=len (_aaba ){return 0,_g .Errorf ("\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0065t\u0049\u006e\u0074\u0058","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};return int (_aaba [i ].X ),nil ;};func (_gdb *Bitmap )SetPadBits (value int ){_gdb .setPadBits (value )};func (_badf *byWidth )Less (i ,j int )bool {return _badf .Values [i ].Width < _badf .Values [j ].Width };func _cage (_eecf ,_abfb *Bitmap ,_bfca ,_eaga int )(*Bitmap ,error ){const _ccbcf ="d\u0069\u006c\u0061\u0074\u0065\u0042\u0072\u0069\u0063\u006b";
+if _abfb ==nil {_de .Log .Debug ("\u0064\u0069\u006c\u0061\u0074\u0065\u0042\u0072\u0069\u0063k\u0020\u0073\u006f\u0075\u0072\u0063\u0065 \u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");return nil ,_g .Error (_ccbcf ,"\u0073o\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061p\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");
+};if _bfca < 1||_eaga < 1{return nil ,_g .Error (_ccbcf ,"\u0068\u0053\u007a\u0069\u0065 \u0061\u006e\u0064\u0020\u0076\u0053\u0069\u007a\u0065\u0020\u0061\u0072\u0065 \u006e\u006f\u0020\u0067\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0031");
+};if _bfca ==1&&_eaga ==1{_agcc ,_adc :=_bgff (_eecf ,_abfb );if _adc !=nil {return nil ,_g .Wrap (_adc ,_ccbcf ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u0026\u0026 \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");};
+return _agcc ,nil ;};if _bfca ==1||_eaga ==1{_geee :=SelCreateBrick (_eaga ,_bfca ,_eaga /2,_bfca /2,SelHit );_fdea ,_befb :=_gdc (_eecf ,_abfb ,_geee );if _befb !=nil {return nil ,_g .Wrap (_befb ,_ccbcf ,"\u0068s\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u007c\u007c \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");
+};return _fdea ,nil ;};_cefda :=SelCreateBrick (1,_bfca ,0,_bfca /2,SelHit );_ddgg :=SelCreateBrick (_eaga ,1,_eaga /2,0,SelHit );_fbcc ,_eae :=_gdc (nil ,_abfb ,_cefda );if _eae !=nil {return nil ,_g .Wrap (_eae ,_ccbcf ,"\u0031\u0073\u0074\u0020\u0064\u0069\u006c\u0061\u0074\u0065");
+};_eecf ,_eae =_gdc (_eecf ,_fbcc ,_ddgg );if _eae !=nil {return nil ,_g .Wrap (_eae ,_ccbcf ,"\u0032\u006e\u0064\u0020\u0064\u0069\u006c\u0061\u0074\u0065");};return _eecf ,nil ;};func DilateBrick (d ,s *Bitmap ,hSize ,vSize int )(*Bitmap ,error ){return _cage (d ,s ,hSize ,vSize )};
+func (_fgff *Bitmaps )Size ()int {return len (_fgff .Values )};func (_dfdb *Bitmaps )HeightSorter ()func (_cbad ,_degb int )bool {return func (_ecaf ,_ffeb int )bool {_daae :=_dfdb .Values [_ecaf ].Height < _dfdb .Values [_ffeb ].Height ;_de .Log .Debug ("H\u0065i\u0067\u0068\u0074\u003a\u0020\u0025\u0076\u0020<\u0020\u0025\u0076\u0020= \u0025\u0076",_dfdb .Values [_ecaf ].Height ,_dfdb .Values [_ffeb ].Height ,_daae );
+return _daae ;};};func (_cffb *Bitmap )addPadBits ()(_agge error ){const _ecee ="\u0062\u0069\u0074\u006d\u0061\u0070\u002e\u0061\u0064\u0064\u0050\u0061d\u0042\u0069\u0074\u0073";_gab :=_cffb .Width %8;if _gab ==0{return nil ;};_dcb :=_cffb .Width /8;
+_gbf :=_dc .NewReader (_cffb .Data );_aed :=make ([]byte ,_cffb .Height *_cffb .RowStride );_dfc :=_dc .NewWriterMSB (_aed );_cfag :=make ([]byte ,_dcb );var (_cbed int ;_gagf uint64 ;);for _cbed =0;_cbed < _cffb .Height ;_cbed ++{if _ ,_agge =_gbf .Read (_cfag );
+_agge !=nil {return _g .Wrap (_agge ,_ecee ,"\u0066u\u006c\u006c\u0020\u0062\u0079\u0074e");};if _ ,_agge =_dfc .Write (_cfag );_agge !=nil {return _g .Wrap (_agge ,_ecee ,"\u0066\u0075\u006c\u006c\u0020\u0062\u0079\u0074\u0065\u0073");};if _gagf ,_agge =_gbf .ReadBits (byte (_gab ));
+_agge !=nil {return _g .Wrap (_agge ,_ecee ,"\u0073\u006b\u0069\u0070\u0070\u0069\u006e\u0067\u0020\u0062\u0069\u0074\u0073");};if _agge =_dfc .WriteByte (byte (_gagf )<<uint (8-_gab ));_agge !=nil {return _g .Wrap (_agge ,_ecee ,"\u006ca\u0073\u0074\u0020\u0062\u0079\u0074e");
+};};_cffb .Data =_dfc .Data ();return nil ;};func (_eedc *Bitmap )setEightBytes (_fbeg int ,_gff uint64 )error {_bfef :=_eedc .RowStride -(_fbeg %_eedc .RowStride );if _eedc .RowStride !=_eedc .Width >>3{_bfef --;};if _bfef >=8{return _eedc .setEightFullBytes (_fbeg ,_gff );
+};return _eedc .setEightPartlyBytes (_fbeg ,_bfef ,_gff );};func SelCreateBrick (h ,w int ,cy ,cx int ,tp SelectionValue )*Selection {_aecf :=_ffeeg (h ,w ,"");_aecf .setOrigin (cy ,cx );var _daab ,_cgcd int ;for _daab =0;_daab < h ;_daab ++{for _cgcd =0;
+_cgcd < w ;_cgcd ++{_aecf .Data [_daab ][_cgcd ]=tp ;};};return _aecf ;};func (_bfaed Points )GetIntY (i int )(int ,error ){if i >=len (_bfaed ){return 0,_g .Errorf ("\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0065t\u0049\u006e\u0074\u0059","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};return int (_bfaed [i ].Y ),nil ;};func (_gde *Bitmap )setFourBytes (_dacc int ,_ceg uint32 )error {if _dacc +3> len (_gde .Data )-1{return _g .Errorf ("\u0073\u0065\u0074F\u006f\u0075\u0072\u0042\u0079\u0074\u0065\u0073","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",_dacc );
+};_gde .Data [_dacc ]=byte ((_ceg &0xff000000)>>24);_gde .Data [_dacc +1]=byte ((_ceg &0xff0000)>>16);_gde .Data [_dacc +2]=byte ((_ceg &0xff00)>>8);_gde .Data [_dacc +3]=byte (_ceg &0xff);return nil ;};func _af (_eb ,_bd *Bitmap )(_ad error ){const _fce ="\u0065\u0078\u0070\u0061nd\u0042\u0069\u006e\u0061\u0072\u0079\u0046\u0061\u0063\u0074\u006f\u0072\u0034";
+_gfa :=_bd .RowStride ;_aag :=_eb .RowStride ;_dde :=_bd .RowStride *4-_eb .RowStride ;var (_bc ,_ba byte ;_be uint32 ;_bg ,_fcc ,_cf ,_ce ,_cb ,_fe ,_df int ;);for _cf =0;_cf < _bd .Height ;_cf ++{_bg =_cf *_gfa ;_fcc =4*_cf *_aag ;for _ce =0;_ce < _gfa ;
+_ce ++{_bc =_bd .Data [_bg +_ce ];_be =_cgab [_bc ];_fe =_fcc +_ce *4;if _dde !=0&&(_ce +1)*4> _eb .RowStride {for _cb =_dde ;_cb > 0;_cb --{_ba =byte ((_be >>uint (_cb *8))&0xff);_df =_fe +(_dde -_cb );if _ad =_eb .SetByte (_df ,_ba );_ad !=nil {return _g .Wrapf (_ad ,_fce ,"D\u0069\u0066\u0066\u0065\u0072\u0065n\u0074\u0020\u0072\u006f\u0077\u0073\u0074\u0072\u0069d\u0065\u0073\u002e \u004b:\u0020\u0025\u0064",_cb );
+};};}else if _ad =_eb .setFourBytes (_fe ,_be );_ad !=nil {return _g .Wrap (_ad ,_fce ,"");};if _ad =_eb .setFourBytes (_fcc +_ce *4,_cgab [_bd .Data [_bg +_ce ]]);_ad !=nil {return _g .Wrap (_ad ,_fce ,"");};};for _cb =1;_cb < 4;_cb ++{for _ce =0;_ce < _aag ;
+_ce ++{if _ad =_eb .SetByte (_fcc +_cb *_aag +_ce ,_eb .Data [_fcc +_ce ]);_ad !=nil {return _g .Wrapf (_ad ,_fce ,"\u0063\u006f\u0070\u0079\u0020\u0027\u0071\u0075\u0061\u0064\u0072\u0061\u0062l\u0065\u0027\u0020\u006c\u0069\u006ee\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0062\u0079\u0074\u0065\u003a \u0027\u0025\u0064\u0027",_cb ,_ce );
+};};};};return nil ;};type SizeSelection int ;func _gca (_bfg ,_caef *Bitmap ,_aaff int ,_bba []byte ,_egg int )(_fggf error ){const _fgc ="\u0072\u0065\u0064uc\u0065\u0052\u0061\u006e\u006b\u0042\u0069\u006e\u0061\u0072\u0079\u0032\u004c\u0065\u0076\u0065\u006c\u0034";
+var (_aage ,_fbg ,_gfbd ,_acaa ,_aga ,_ecf ,_gbc ,_bfba int ;_cdbc ,_dgd uint32 ;_fcea ,_bbb byte ;_bga uint16 ;);_ede :=make ([]byte ,4);_gbg :=make ([]byte ,4);for _gfbd =0;_gfbd < _bfg .Height -1;_gfbd ,_acaa =_gfbd +2,_acaa +1{_aage =_gfbd *_bfg .RowStride ;
+_fbg =_acaa *_caef .RowStride ;for _aga ,_ecf =0,0;_aga < _egg ;_aga ,_ecf =_aga +4,_ecf +1{for _gbc =0;_gbc < 4;_gbc ++{_bfba =_aage +_aga +_gbc ;if _bfba <=len (_bfg .Data )-1&&_bfba < _aage +_bfg .RowStride {_ede [_gbc ]=_bfg .Data [_bfba ];}else {_ede [_gbc ]=0x00;
+};_bfba =_aage +_bfg .RowStride +_aga +_gbc ;if _bfba <=len (_bfg .Data )-1&&_bfba < _aage +(2*_bfg .RowStride ){_gbg [_gbc ]=_bfg .Data [_bfba ];}else {_gbg [_gbc ]=0x00;};};_cdbc =_ge .BigEndian .Uint32 (_ede );_dgd =_ge .BigEndian .Uint32 (_gbg );_dgd &=_cdbc ;
+_dgd &=_dgd <<1;_dgd &=0xaaaaaaaa;_cdbc =_dgd |(_dgd <<7);_fcea =byte (_cdbc >>24);_bbb =byte ((_cdbc >>8)&0xff);_bfba =_fbg +_ecf ;if _bfba +1==len (_caef .Data )-1||_bfba +1>=_fbg +_caef .RowStride {_caef .Data [_bfba ]=_bba [_fcea ];if _fggf =_caef .SetByte (_bfba ,_bba [_fcea ]);
+_fggf !=nil {return _g .Wrapf (_fggf ,_fgc ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0025d",_bfba );};}else {_bga =(uint16 (_bba [_fcea ])<<8)|uint16 (_bba [_bbb ]);if _fggf =_caef .setTwoBytes (_bfba ,_bga );_fggf !=nil {return _g .Wrapf (_fggf ,_fgc ,"s\u0065\u0074\u0074\u0069\u006e\u0067 \u0074\u0077\u006f\u0020\u0062\u0079t\u0065\u0073\u0020\u0066\u0061\u0069\u006ce\u0064\u002c\u0020\u0069\u006e\u0064\u0065\u0078\u003a\u0020%\u0064",_bfba );
+};_ecf ++;};};};return nil ;};var _fee [256]uint8 ;func (_bfgc *Bitmap )AddBorderGeneral (left ,right ,top ,bot int ,val int )(*Bitmap ,error ){return _bfgc .addBorderGeneral (left ,right ,top ,bot ,val );};func _fbf (_edc *Bitmap ,_caa int ,_eaf []byte )(_cba *Bitmap ,_eba error ){const _fgge ="\u0072\u0065\u0064\u0075\u0063\u0065\u0052\u0061\u006e\u006b\u0042\u0069n\u0061\u0072\u0079\u0032";
+if _edc ==nil {return nil ,_g .Error (_fgge ,"\u0073o\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061p\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");};if _caa < 1||_caa > 4{return nil ,_g .Error (_fgge ,"\u006c\u0065\u0076\u0065\u006c\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0069\u006e\u0020\u0073e\u0074\u0020\u007b\u0031\u002c\u0032\u002c\u0033\u002c\u0034\u007d");
+};if _edc .Height <=1{return nil ,_g .Errorf (_fgge ,"\u0073o\u0075\u0072c\u0065\u0020\u0068e\u0069\u0067\u0068\u0074\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061t\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u0027\u0032\u0027\u0020-\u0020\u0069\u0073\u003a\u0020\u0027\u0025\u0064\u0027",_edc .Height );
+};_cba =New (_edc .Width /2,_edc .Height /2);if _eaf ==nil {_eaf =_bggf ();};_egd :=_gdef (_edc .RowStride ,2*_cba .RowStride );switch _caa {case 1:_eba =_efb (_edc ,_cba ,_caa ,_eaf ,_egd );case 2:_eba =_fda (_edc ,_cba ,_caa ,_eaf ,_egd );case 3:_eba =_aaf (_edc ,_cba ,_caa ,_eaf ,_egd );
+case 4:_eba =_gca (_edc ,_cba ,_caa ,_eaf ,_egd );};if _eba !=nil {return nil ,_eba ;};return _cba ,nil ;};func (_efcd MorphProcess )verify (_ded int ,_egcdf ,_aceg *int )error {const _faeg ="\u004d\u006f\u0072\u0070hP\u0072\u006f\u0063\u0065\u0073\u0073\u002e\u0076\u0065\u0072\u0069\u0066\u0079";
+switch _efcd .Operation {case MopDilation ,MopErosion ,MopOpening ,MopClosing :if len (_efcd .Arguments )!=2{return _g .Error (_faeg ,"\u004f\u0070\u0065\u0072\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0027\u0064\u0027\u002c\u0020\u0027\u0065\u0027\u002c \u0027\u006f\u0027\u002c\u0020\u0027\u0063\u0027\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u0032\u0020\u0061r\u0067\u0075\u006d\u0065\u006et\u0073");
+};_beb ,_dbaa :=_efcd .getWidthHeight ();if _beb <=0||_dbaa <=0{return _g .Error (_faeg ,"O\u0070er\u0061t\u0069o\u006e\u003a\u0020\u0027\u0064'\u002c\u0020\u0027e\u0027\u002c\u0020\u0027\u006f'\u002c\u0020\u0027c\u0027\u0020\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0062\u006f\u0074h w\u0069\u0064\u0074\u0068\u0020\u0061n\u0064\u0020\u0068\u0065\u0069\u0067\u0068\u0074\u0020\u0074\u006f\u0020b\u0065 \u003e\u003d\u0020\u0030");
+};case MopRankBinaryReduction :_ced :=len (_efcd .Arguments );*_egcdf +=_ced ;if _ced < 1||_ced > 4{return _g .Error (_faeg ,"\u004f\u0070\u0065\u0072\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0027\u0072\u0027\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061s\u0074\u0020\u0031\u0020\u0061\u006e\u0064\u0020\u0061\u0074\u0020\u006d\u006fs\u0074\u0020\u0034\u0020\u0061\u0072g\u0075\u006d\u0065n\u0074\u0073");
+};for _gbdg :=0;_gbdg < _ced ;_gbdg ++{if _efcd .Arguments [_gbdg ]< 1||_efcd .Arguments [_gbdg ]> 4{return _g .Error (_faeg ,"\u0052\u0061\u006e\u006b\u0042\u0069n\u0061\u0072\u0079\u0052\u0065\u0064\u0075\u0063\u0074\u0069\u006f\u006e\u0020\u006c\u0065\u0076\u0065\u006c\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065 \u00280\u002c\u0020\u0034\u003e");
+};};case MopReplicativeBinaryExpansion :if len (_efcd .Arguments )==0{return _g .Error (_faeg ,"\u0052\u0065\u0070\u006c\u0069\u0063\u0061\u0074i\u0076\u0065\u0042in\u0061\u0072\u0079\u0045\u0078\u0070a\u006e\u0073\u0069\u006f\u006e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020o\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");
+};_fcb :=_efcd .Arguments [0];if _fcb !=2&&_fcb !=4&&_fcb !=8{return _g .Error (_faeg ,"R\u0065\u0070\u006c\u0069\u0063\u0061\u0074\u0069\u0076\u0065\u0042\u0069\u006e\u0061\u0072\u0079\u0045\u0078\u0070\u0061\u006e\u0073\u0069\u006f\u006e\u0020m\u0075s\u0074\u0020\u0062\u0065 \u006f\u0066 \u0066\u0061\u0063\u0074\u006f\u0072\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u007b\u0032\u002c\u0034\u002c\u0038\u007d");
+};*_egcdf -=_edge [_fcb /4];case MopAddBorder :if len (_efcd .Arguments )==0{return _g .Error (_faeg ,"\u0041\u0064\u0064B\u006f\u0072\u0064\u0065r\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");
+};_abfe :=_efcd .Arguments [0];if _ded > 0{return _g .Error (_faeg ,"\u0041\u0064\u0064\u0042\u006f\u0072\u0064\u0065\u0072\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u0020f\u0069\u0072\u0073\u0074\u0020\u006d\u006f\u0072\u0070\u0068\u0020\u0070\u0072o\u0063\u0065\u0073\u0073");
+};if _abfe < 1{return _g .Error (_faeg ,"\u0041\u0064\u0064\u0042o\u0072\u0064\u0065\u0072\u0020\u0076\u0061\u006c\u0075\u0065 \u006co\u0077\u0065\u0072\u0020\u0074\u0068\u0061n\u0020\u0030");};*_aceg =_abfe ;};return nil ;};func NewClassedPoints (points *Points ,classes _db .IntSlice )(*ClassedPoints ,error ){const _aedf ="\u004e\u0065w\u0043\u006c\u0061s\u0073\u0065\u0064\u0050\u006f\u0069\u006e\u0074\u0073";
+if points ==nil {return nil ,_g .Error (_aedf ,"\u0070\u0072\u006f\u0076id\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0070\u006f\u0069\u006e\u0074\u0073");};if classes ==nil {return nil ,_g .Error (_aedf ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0063\u006c\u0061ss\u0065\u0073");
+};_cega :=&ClassedPoints {Points :points ,IntSlice :classes };if _eegee :=_cega .validateIntSlice ();_eegee !=nil {return nil ,_g .Wrap (_eegee ,_aedf ,"");};return _cega ,nil ;};func _cddb ()[]int {_acac :=make ([]int ,256);_acac [0]=0;_acac [1]=7;var _beaad int ;
+for _beaad =2;_beaad < 4;_beaad ++{_acac [_beaad ]=_acac [_beaad -2]+6;};for _beaad =4;_beaad < 8;_beaad ++{_acac [_beaad ]=_acac [_beaad -4]+5;};for _beaad =8;_beaad < 16;_beaad ++{_acac [_beaad ]=_acac [_beaad -8]+4;};for _beaad =16;_beaad < 32;_beaad ++{_acac [_beaad ]=_acac [_beaad -16]+3;
+};for _beaad =32;_beaad < 64;_beaad ++{_acac [_beaad ]=_acac [_beaad -32]+2;};for _beaad =64;_beaad < 128;_beaad ++{_acac [_beaad ]=_acac [_beaad -64]+1;};for _beaad =128;_beaad < 256;_beaad ++{_acac [_beaad ]=_acac [_beaad -128];};return _acac ;};func _bagb (_ggfg ,_dgadd byte ,_efce CombinationOperator )byte {switch _efce {case CmbOpOr :return _dgadd |_ggfg ;
+case CmbOpAnd :return _dgadd &_ggfg ;case CmbOpXor :return _dgadd ^_ggfg ;case CmbOpXNor :return ^(_dgadd ^_ggfg );case CmbOpNot :return ^(_dgadd );default:return _dgadd ;};};func TstWSymbol (t *_f .T ,scale ...int )*Bitmap {_cegbb ,_gfca :=NewWithData (5,5,[]byte {0x88,0x88,0xA8,0xD8,0x88});
+_e .NoError (t ,_gfca );return TstGetScaledSymbol (t ,_cegbb ,scale ...);};func Blit (src *Bitmap ,dst *Bitmap ,x ,y int ,op CombinationOperator )error {var _decf ,_cdbcf int ;_fgdd :=src .RowStride -1;if x < 0{_cdbcf =-x ;x =0;}else if x +src .Width > dst .Width {_fgdd -=src .Width +x -dst .Width ;
+};if y < 0{_decf =-y ;y =0;_cdbcf +=src .RowStride ;_fgdd +=src .RowStride ;}else if y +src .Height > dst .Height {_decf =src .Height +y -dst .Height ;};var (_bbfe int ;_dbdge error ;);_cfef :=x &0x07;_dacg :=8-_cfef ;_egggd :=src .Width &0x07;_cfeg :=_dacg -_egggd ;
+_ccbc :=_dacg &0x07!=0;_dbec :=src .Width <=((_fgdd -_cdbcf )<<3)+_dacg ;_fge :=dst .GetByteIndex (x ,y );_beaa :=_decf +dst .Height ;if src .Height > _beaa {_bbfe =_beaa ;}else {_bbfe =src .Height ;};switch {case !_ccbc :_dbdge =_ccea (src ,dst ,_decf ,_bbfe ,_fge ,_cdbcf ,_fgdd ,op );
+case _dbec :_dbdge =_ggdg (src ,dst ,_decf ,_bbfe ,_fge ,_cdbcf ,_fgdd ,_cfeg ,_cfef ,_dacg ,op );default:_dbdge =_ccgc (src ,dst ,_decf ,_bbfe ,_fge ,_cdbcf ,_fgdd ,_cfeg ,_cfef ,_dacg ,op ,_egggd );};return _dbdge ;};func (_gcge *Bitmap )nextOnPixelLow (_acf ,_cde ,_aef ,_bfcf ,_gcgf int )(_deca _b .Point ,_abf bool ,_gafg error ){const _gaad ="B\u0069\u0074\u006d\u0061p.\u006ee\u0078\u0074\u004f\u006e\u0050i\u0078\u0065\u006c\u004c\u006f\u0077";
+var (_abab int ;_abba byte ;);_gcae :=_gcgf *_aef ;_gfeb :=_gcae +(_bfcf /8);if _abba ,_gafg =_gcge .GetByte (_gfeb );_gafg !=nil {return _deca ,false ,_g .Wrap (_gafg ,_gaad ,"\u0078\u0053\u0074\u0061\u0072\u0074\u0020\u0061\u006e\u0064 \u0079\u0053\u0074\u0061\u0072\u0074\u0020o\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065");
+};if _abba !=0{_bgb :=_bfcf -(_bfcf %8)+7;for _abab =_bfcf ;_abab <=_bgb &&_abab < _acf ;_abab ++{if _gcge .GetPixel (_abab ,_gcgf ){_deca .X =_abab ;_deca .Y =_gcgf ;return _deca ,true ,nil ;};};};_cdba :=(_bfcf /8)+1;_abab =8*_cdba ;var _fab int ;for _gfeb =_gcae +_cdba ;
+_abab < _acf ;_gfeb ,_abab =_gfeb +1,_abab +8{if _abba ,_gafg =_gcge .GetByte (_gfeb );_gafg !=nil {return _deca ,false ,_g .Wrap (_gafg ,_gaad ,"r\u0065\u0073\u0074\u0020of\u0020t\u0068\u0065\u0020\u006c\u0069n\u0065\u0020\u0062\u0079\u0074\u0065");};
+if _abba ==0{continue ;};for _fab =0;_fab < 8&&_abab < _acf ;_fab ,_abab =_fab +1,_abab +1{if _gcge .GetPixel (_abab ,_gcgf ){_deca .X =_abab ;_deca .Y =_gcgf ;return _deca ,true ,nil ;};};};for _ecec :=_gcgf +1;_ecec < _cde ;_ecec ++{_gcae =_ecec *_aef ;
+for _gfeb ,_abab =_gcae ,0;_abab < _acf ;_gfeb ,_abab =_gfeb +1,_abab +8{if _abba ,_gafg =_gcge .GetByte (_gfeb );_gafg !=nil {return _deca ,false ,_g .Wrap (_gafg ,_gaad ,"\u0066o\u006cl\u006f\u0077\u0069\u006e\u0067\u0020\u006c\u0069\u006e\u0065\u0073");
+};if _abba ==0{continue ;};for _fab =0;_fab < 8&&_abab < _acf ;_fab ,_abab =_fab +1,_abab +1{if _gcge .GetPixel (_abab ,_ecec ){_deca .X =_abab ;_deca .Y =_ecec ;return _deca ,true ,nil ;};};};};return _deca ,false ,nil ;};func _gffca (_gage ,_cbbbg *Bitmap ,_edbg ,_aabd int )(_efcdd error ){const _bgbd ="\u0073e\u0065d\u0066\u0069\u006c\u006c\u0042i\u006e\u0061r\u0079\u004c\u006f\u0077\u0038";
+var (_cecb ,_eddef ,_faege ,_fggd int ;_deffd ,_dcegc ,_gaed ,_edacb ,_dbfc ,_ceffc ,_fgef ,_eceb byte ;);for _cecb =0;_cecb < _edbg ;_cecb ++{_faege =_cecb *_gage .RowStride ;_fggd =_cecb *_cbbbg .RowStride ;for _eddef =0;_eddef < _aabd ;_eddef ++{if _deffd ,_efcdd =_gage .GetByte (_faege +_eddef );
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0067e\u0074 \u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0062\u0079\u0074\u0065");};if _dcegc ,_efcdd =_cbbbg .GetByte (_fggd +_eddef );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0067\u0065\u0074\u0020\u006d\u0061\u0073\u006b\u0020\u0062\u0079\u0074\u0065");
+};if _cecb > 0{if _gaed ,_efcdd =_gage .GetByte (_faege -_gage .RowStride +_eddef );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0069\u0020\u003e\u0020\u0030\u0020\u0062\u0079\u0074\u0065");};_deffd |=_gaed |(_gaed <<1)|(_gaed >>1);if _eddef > 0{if _eceb ,_efcdd =_gage .GetByte (_faege -_gage .RowStride +_eddef -1);
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0069\u0020\u003e\u00200 \u0026\u0026\u0020\u006a\u0020\u003e\u0020\u0030\u0020\u0062\u0079\u0074\u0065");};_deffd |=_eceb <<7;};if _eddef < _aabd -1{if _eceb ,_efcdd =_gage .GetByte (_faege -_gage .RowStride +_eddef +1);
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u006a\u0020<\u0020\u0077\u0070l\u0020\u002d\u0020\u0031\u0020\u0062\u0079\u0074\u0065");};_deffd |=_eceb >>7;};};if _eddef > 0{if _edacb ,_efcdd =_gage .GetByte (_faege +_eddef -1);_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u006a\u0020\u003e \u0030");
+};_deffd |=_edacb <<7;};_deffd &=_dcegc ;if _deffd ==0||^_deffd ==0{if _efcdd =_gage .SetByte (_faege +_eddef ,_deffd );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0073e\u0074t\u0069\u006e\u0067\u0020\u0065m\u0070\u0074y\u0020\u0062\u0079\u0074\u0065");
+};};for {_fgef =_deffd ;_deffd =(_deffd |(_deffd >>1)|(_deffd <<1))&_dcegc ;if (_deffd ^_fgef )==0{if _efcdd =_gage .SetByte (_faege +_eddef ,_deffd );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0073\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0070\u0072\u0065\u0076 \u0062\u0079\u0074\u0065");
+};break ;};};};};for _cecb =_edbg -1;_cecb >=0;_cecb --{_faege =_cecb *_gage .RowStride ;_fggd =_cecb *_cbbbg .RowStride ;for _eddef =_aabd -1;_eddef >=0;_eddef --{if _deffd ,_efcdd =_gage .GetByte (_faege +_eddef );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0072\u0065\u0076er\u0073\u0065\u0020\u0067\u0065\u0074\u0020\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0062\u0079\u0074\u0065");
+};if _dcegc ,_efcdd =_cbbbg .GetByte (_fggd +_eddef );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"r\u0065\u0076\u0065\u0072se\u0020g\u0065\u0074\u0020\u006d\u0061s\u006b\u0020\u0062\u0079\u0074\u0065");};if _cecb < _edbg -1{if _dbfc ,_efcdd =_gage .GetByte (_faege +_gage .RowStride +_eddef );
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0069\u0020\u003c\u0020h\u0020\u002d\u0020\u0031\u0020\u002d\u003e\u0020\u0067\u0065t\u0020s\u006f\u0075\u0072\u0063\u0065\u0020\u0062y\u0074\u0065");};_deffd |=_dbfc |(_dbfc <<1)|_dbfc >>1;if _eddef > 0{if _eceb ,_efcdd =_gage .GetByte (_faege +_gage .RowStride +_eddef -1);
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0069\u0020\u003c h\u002d\u0031\u0020\u0026\u0020\u006a\u0020\u003e\u00200\u0020-\u003e \u0067e\u0074\u0020\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0062\u0079\u0074\u0065");};_deffd |=_eceb <<7;};if _eddef < _aabd -1{if _eceb ,_efcdd =_gage .GetByte (_faege +_gage .RowStride +_eddef +1);
+_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0069\u0020\u003c\u0020\u0068\u002d\u0031\u0020\u0026\u0026\u0020\u006a\u0020\u003c\u0077\u0070\u006c\u002d\u0031\u0020\u002d\u003e\u0020\u0067e\u0074\u0020\u0073\u006f\u0075r\u0063\u0065 \u0062\u0079\u0074\u0065");
+};_deffd |=_eceb >>7;};};if _eddef < _aabd -1{if _ceffc ,_efcdd =_gage .GetByte (_faege +_eddef +1);_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u006a\u0020<\u0020\u0077\u0070\u006c\u0020\u002d\u0031\u0020\u002d\u003e\u0020\u0067\u0065\u0074\u0020\u0073\u006f\u0075\u0072\u0063\u0065\u0020by\u0074\u0065");
+};_deffd |=_ceffc >>7;};_deffd &=_dcegc ;if _deffd ==0||(^_deffd )==0{if _efcdd =_gage .SetByte (_faege +_eddef ,_deffd );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"\u0073e\u0074 \u006d\u0061\u0073\u006b\u0065\u0064\u0020\u0062\u0079\u0074\u0065");
+};};for {_fgef =_deffd ;_deffd =(_deffd |(_deffd >>1)|(_deffd <<1))&_dcegc ;if (_deffd ^_fgef )==0{if _efcdd =_gage .SetByte (_faege +_eddef ,_deffd );_efcdd !=nil {return _g .Wrap (_efcdd ,_bgbd ,"r\u0065\u0076\u0065\u0072se\u0020s\u0065\u0074\u0020\u0070\u0072e\u0076\u0020\u0062\u0079\u0074\u0065");
+};break ;};};};};return nil ;};func _aaa (_gaaf ,_adbd *Bitmap ,_fcdd *Selection )(*Bitmap ,error ){const _adfe ="\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u004d\u006f\u0072\u0070\u0068A\u0072\u0067\u0073\u0032";var _cece ,_fegb int ;if _adbd ==nil {return nil ,_g .Error (_adfe ,"s\u006fu\u0072\u0063\u0065\u0020\u0062\u0069\u0074\u006da\u0070\u0020\u0069\u0073 n\u0069\u006c");
+};if _fcdd ==nil {return nil ,_g .Error (_adfe ,"\u0073e\u006c \u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};_cece =_fcdd .Width ;_fegb =_fcdd .Height ;if _cece ==0||_fegb ==0{return nil ,_g .Error (_adfe ,"\u0073\u0065\u006c\u0020\u006f\u0066\u0020\u0073\u0069\u007a\u0065\u0020\u0030");
+};if _gaaf ==nil {return _adbd .createTemplate (),nil ;};if _degdg :=_gaaf .resizeImageData (_adbd );_degdg !=nil {return nil ,_degdg ;};return _gaaf ,nil ;};func _cfegd (_gcaae ,_gffa *Bitmap ,_abaa CombinationOperator )*Bitmap {_ddad :=New (_gcaae .Width ,_gcaae .Height );
+for _dbbd :=0;_dbbd < len (_ddad .Data );_dbbd ++{_ddad .Data [_dbbd ]=_bagb (_gcaae .Data [_dbbd ],_gffa .Data [_dbbd ],_abaa );};return _ddad ;};type Bitmaps struct{Values []*Bitmap ;Boxes []*_b .Rectangle ;};func CorrelationScoreThresholded (bm1 ,bm2 *Bitmap ,area1 ,area2 int ,delX ,delY float32 ,maxDiffW ,maxDiffH int ,tab ,downcount []int ,scoreThreshold float32 )(bool ,error ){const _fed ="C\u006f\u0072\u0072\u0065\u006c\u0061t\u0069\u006f\u006e\u0053\u0063\u006f\u0072\u0065\u0054h\u0072\u0065\u0073h\u006fl\u0064\u0065\u0064";
+if bm1 ==nil {return false ,_g .Error (_fed ,"\u0063\u006f\u0072\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0053\u0063\u006f\u0072\u0065\u0054\u0068\u0072\u0065\u0073\u0068\u006f\u006cd\u0065\u0064\u0020\u0062\u006d1\u0020\u0069s\u0020\u006e\u0069\u006c");
+};if bm2 ==nil {return false ,_g .Error (_fed ,"\u0063\u006f\u0072\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0053\u0063\u006f\u0072\u0065\u0054\u0068\u0072\u0065\u0073\u0068\u006f\u006cd\u0065\u0064\u0020\u0062\u006d2\u0020\u0069s\u0020\u006e\u0069\u006c");
+};if area1 <=0||area2 <=0{return false ,_g .Error (_fed ,"c\u006f\u0072\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0053\u0063\u006f\u0072\u0065\u0054\u0068re\u0073\u0068\u006f\u006cd\u0065\u0064\u0020\u002d\u0020\u0061\u0072\u0065\u0061s \u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u003e\u0020\u0030");
+};if downcount ==nil {return false ,_g .Error (_fed ,"\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u006e\u006f\u0020\u0027\u0064\u006f\u0077\u006e\u0063\u006f\u0075\u006e\u0074\u0027");};if tab ==nil {return false ,_g .Error (_fed ,"p\u0072\u006f\u0076\u0069de\u0064 \u006e\u0069\u006c\u0020\u0027s\u0075\u006d\u0074\u0061\u0062\u0027");
+};_cdg ,_dgcd :=bm1 .Width ,bm1 .Height ;_abcg ,_feeg :=bm2 .Width ,bm2 .Height ;if _db .Abs (_cdg -_abcg )> maxDiffW {return false ,nil ;};if _db .Abs (_dgcd -_feeg )> maxDiffH {return false ,nil ;};_baab :=int (delX +_db .Sign (delX )*0.5);_eadd :=int (delY +_db .Sign (delY )*0.5);
+_abfg :=int (_gf .Ceil (_gf .Sqrt (float64 (scoreThreshold )*float64 (area1 )*float64 (area2 ))));_cffbf :=bm2 .RowStride ;_eage :=_gcee (_eadd ,0);_fbfb :=_gdef (_feeg +_eadd ,_dgcd );_gfad :=bm1 .RowStride *_eage ;_gbb :=bm2 .RowStride *(_eage -_eadd );
+var _cbda int ;if _fbfb <=_dgcd {_cbda =downcount [_fbfb -1];};_efeg :=_gcee (_baab ,0);_cbfea :=_gdef (_abcg +_baab ,_cdg );var _cdaa ,_ggag int ;if _baab >=8{_cdaa =_baab >>3;_gfad +=_cdaa ;_efeg -=_cdaa <<3;_cbfea -=_cdaa <<3;_baab &=7;}else if _baab <=-8{_ggag =-((_baab +7)>>3);
+_gbb +=_ggag ;_cffbf -=_ggag ;_baab +=_ggag <<3;};var (_egga ,_ceaa ,_effg int ;_cafac ,_ebb ,_egae byte ;);if _efeg >=_cbfea ||_eage >=_fbfb {return false ,nil ;};_gcdb :=(_cbfea +7)>>3;switch {case _baab ==0:for _ceaa =_eage ;_ceaa < _fbfb ;_ceaa ,_gfad ,_gbb =_ceaa +1,_gfad +bm1 .RowStride ,_gbb +bm2 .RowStride {for _effg =0;
+_effg < _gcdb ;_effg ++{_cafac =bm1 .Data [_gfad +_effg ]&bm2 .Data [_gbb +_effg ];_egga +=tab [_cafac ];};if _egga >=_abfg {return true ,nil ;};if _gbfd :=_egga +downcount [_ceaa ]-_cbda ;_gbfd < _abfg {return false ,nil ;};};case _baab > 0&&_cffbf < _gcdb :for _ceaa =_eage ;
+_ceaa < _fbfb ;_ceaa ,_gfad ,_gbb =_ceaa +1,_gfad +bm1 .RowStride ,_gbb +bm2 .RowStride {_ebb =bm1 .Data [_gfad ];_egae =bm2 .Data [_gbb ]>>uint (_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];for _effg =1;_effg < _cffbf ;_effg ++{_ebb =bm1 .Data [_gfad +_effg ];
+_egae =bm2 .Data [_gbb +_effg ]>>uint (_baab )|bm2 .Data [_gbb +_effg -1]<<uint (8-_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];};_ebb =bm1 .Data [_gfad +_effg ];_egae =bm2 .Data [_gbb +_effg -1]<<uint (8-_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];
+if _egga >=_abfg {return true ,nil ;}else if _egga +downcount [_ceaa ]-_cbda < _abfg {return false ,nil ;};};case _baab > 0&&_cffbf >=_gcdb :for _ceaa =_eage ;_ceaa < _fbfb ;_ceaa ,_gfad ,_gbb =_ceaa +1,_gfad +bm1 .RowStride ,_gbb +bm2 .RowStride {_ebb =bm1 .Data [_gfad ];
+_egae =bm2 .Data [_gbb ]>>uint (_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];for _effg =1;_effg < _gcdb ;_effg ++{_ebb =bm1 .Data [_gfad +_effg ];_egae =bm2 .Data [_gbb +_effg ]>>uint (_baab );_egae |=bm2 .Data [_gbb +_effg -1]<<uint (8-_baab );_cafac =_ebb &_egae ;
+_egga +=tab [_cafac ];};if _egga >=_abfg {return true ,nil ;}else if _egga +downcount [_ceaa ]-_cbda < _abfg {return false ,nil ;};};case _gcdb < _cffbf :for _ceaa =_eage ;_ceaa < _fbfb ;_ceaa ,_gfad ,_gbb =_ceaa +1,_gfad +bm1 .RowStride ,_gbb +bm2 .RowStride {for _effg =0;
+_effg < _gcdb ;_effg ++{_ebb =bm1 .Data [_gfad +_effg ];_egae =bm2 .Data [_gbb +_effg ]<<uint (-_baab );_egae |=bm2 .Data [_gbb +_effg +1]>>uint (8+_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];};if _egga >=_abfg {return true ,nil ;}else if _geae :=_egga +downcount [_ceaa ]-_cbda ;
+_geae < _abfg {return false ,nil ;};};case _cffbf >=_gcdb :for _ceaa =_eage ;_ceaa < _fbfb ;_ceaa ,_gfad ,_gbb =_ceaa +1,_gfad +bm1 .RowStride ,_gbb +bm2 .RowStride {for _effg =0;_effg < _gcdb ;_effg ++{_ebb =bm1 .Data [_gfad +_effg ];_egae =bm2 .Data [_gbb +_effg ]<<uint (-_baab );
+_egae |=bm2 .Data [_gbb +_effg +1]>>uint (8+_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];};_ebb =bm1 .Data [_gfad +_effg ];_egae =bm2 .Data [_gbb +_effg ]<<uint (-_baab );_cafac =_ebb &_egae ;_egga +=tab [_cafac ];if _egga >=_abfg {return true ,nil ;
+}else if _egga +downcount [_ceaa ]-_cbda < _abfg {return false ,nil ;};};};_caag :=float32 (_egga )*float32 (_egga )/(float32 (area1 )*float32 (area2 ));if _caag >=scoreThreshold {_de .Log .Trace ("\u0063\u006f\u0075\u006e\u0074\u003a\u0020\u0025\u0064\u0020\u003c\u0020\u0074\u0068\u0072\u0065\u0073\u0068\u006f\u006cd\u0020\u0025\u0064\u0020\u0062\u0075\u0074\u0020\u0073c\u006f\u0072\u0065\u0020\u0025\u0066\u0020\u003e\u003d\u0020\u0073\u0063\u006fr\u0065\u0054\u0068\u0072\u0065\u0073h\u006f\u006c\u0064 \u0025\u0066",_egga ,_abfg ,_caag ,scoreThreshold );
+};return false ,nil ;};func MorphSequence (src *Bitmap ,sequence ...MorphProcess )(*Bitmap ,error ){return _ceb (src ,sequence ...);};func TstRSymbol (t *_f .T ,scale ...int )*Bitmap {_cbba ,_bfffg :=NewWithData (4,5,[]byte {0xF0,0x90,0xF0,0xA0,0x90});
+_e .NoError (t ,_bfffg );return TstGetScaledSymbol (t ,_cbba ,scale ...);};func (_ddadc *Bitmaps )GetBox (i int )(*_b .Rectangle ,error ){const _dcda ="\u0047\u0065\u0074\u0042\u006f\u0078";if _ddadc ==nil {return nil ,_g .Error (_dcda ,"\u0070\u0072\u006f\u0076id\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0027\u0042\u0069\u0074\u006d\u0061\u0070s\u0027");
+};if i > len (_ddadc .Boxes )-1{return nil ,_g .Errorf (_dcda ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};return _ddadc .Boxes [i ],nil ;};type BoundaryCondition int ;
+func (_cda *Bitmap )setEightPartlyBytes (_bcff ,_dgde int ,_dcbf uint64 )(_fad error ){var (_ccgf byte ;_fbb int ;);const _fbc ="\u0073\u0065\u0074\u0045ig\u0068\u0074\u0050\u0061\u0072\u0074\u006c\u0079\u0042\u0079\u0074\u0065\u0073";for _gedd :=1;_gedd <=_dgde ;
+_gedd ++{_fbb =64-_gedd *8;_ccgf =byte (_dcbf >>uint (_fbb )&0xff);_de .Log .Trace ("\u0074\u0065\u006d\u0070\u003a\u0020\u0025\u0030\u0038\u0062\u002c\u0020\u0069\u006e\u0064\u0065\u0078\u003a %\u0064,\u0020\u0069\u0064\u0078\u003a\u0020\u0025\u0064\u002c\u0020\u0066\u0075l\u006c\u0042\u0079\u0074\u0065\u0073\u004e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c \u0073\u0068\u0069\u0066\u0074\u003a\u0020\u0025\u0064",_ccgf ,_bcff ,_bcff +_gedd -1,_dgde ,_fbb );
+if _fad =_cda .SetByte (_bcff +_gedd -1,_ccgf );_fad !=nil {return _g .Wrap (_fad ,_fbc ,"\u0066\u0075\u006c\u006c\u0042\u0079\u0074\u0065");};};_adgf :=_cda .RowStride *8-_cda .Width ;if _adgf ==0{return nil ;};_fbb -=8;_ccgf =byte (_dcbf >>uint (_fbb )&0xff)<<uint (_adgf );
+if _fad =_cda .SetByte (_bcff +_dgde ,_ccgf );_fad !=nil {return _g .Wrap (_fad ,_fbc ,"\u0070\u0061\u0064\u0064\u0065\u0064");};return nil ;};func (_gcaag *ClassedPoints )XAtIndex (i int )float32 {return (*_gcaag .Points )[_gcaag .IntSlice [i ]].X };func CorrelationScore (bm1 ,bm2 *Bitmap ,area1 ,area2 int ,delX ,delY float32 ,maxDiffW ,maxDiffH int ,tab []int )(_gbfe float64 ,_fceb error ){const _cgfc ="\u0063\u006fr\u0072\u0065\u006ca\u0074\u0069\u006f\u006e\u0053\u0063\u006f\u0072\u0065";
+if bm1 ==nil ||bm2 ==nil {return 0,_g .Error (_cgfc ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0062\u0069\u0074ma\u0070\u0073");};if tab ==nil {return 0,_g .Error (_cgfc ,"\u0027\u0074\u0061\u0062\u0027\u0020\u006e\u006f\u0074\u0020\u0064\u0065f\u0069\u006e\u0065\u0064");
+};if area1 <=0||area2 <=0{return 0,_g .Error (_cgfc ,"\u0061\u0072\u0065\u0061s\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0067r\u0065a\u0074\u0065\u0072\u0020\u0074\u0068\u0061n\u0020\u0030");};_eafee ,_cefd :=bm1 .Width ,bm1 .Height ;_gaee ,_efbb :=bm2 .Width ,bm2 .Height ;
+_bcd :=_ebca (_eafee -_gaee );if _bcd > maxDiffW {return 0,nil ;};_dbba :=_ebca (_cefd -_efbb );if _dbba > maxDiffH {return 0,nil ;};var _adba ,_dabg int ;if delX >=0{_adba =int (delX +0.5);}else {_adba =int (delX -0.5);};if delY >=0{_dabg =int (delY +0.5);
+}else {_dabg =int (delY -0.5);};_defbg :=_gcee (_dabg ,0);_gggc :=_gdef (_efbb +_dabg ,_cefd );_acff :=bm1 .RowStride *_defbg ;_cceba :=bm2 .RowStride *(_defbg -_dabg );_agab :=_gcee (_adba ,0);_eadg :=_gdef (_gaee +_adba ,_eafee );_dbg :=bm2 .RowStride ;
+var _fff ,_ebg int ;if _adba >=8{_fff =_adba >>3;_acff +=_fff ;_agab -=_fff <<3;_eadg -=_fff <<3;_adba &=7;}else if _adba <=-8{_ebg =-((_adba +7)>>3);_cceba +=_ebg ;_dbg -=_ebg ;_adba +=_ebg <<3;};if _agab >=_eadg ||_defbg >=_gggc {return 0,nil ;};_ffc :=(_eadg +7)>>3;
+var (_fbff ,_geag ,_befg byte ;_gbgde ,_dbca ,_ddgb int ;);switch {case _adba ==0:for _ddgb =_defbg ;_ddgb < _gggc ;_ddgb ,_acff ,_cceba =_ddgb +1,_acff +bm1 .RowStride ,_cceba +bm2 .RowStride {for _dbca =0;_dbca < _ffc ;_dbca ++{_befg =bm1 .Data [_acff +_dbca ]&bm2 .Data [_cceba +_dbca ];
+_gbgde +=tab [_befg ];};};case _adba > 0:if _dbg < _ffc {for _ddgb =_defbg ;_ddgb < _gggc ;_ddgb ,_acff ,_cceba =_ddgb +1,_acff +bm1 .RowStride ,_cceba +bm2 .RowStride {_fbff ,_geag =bm1 .Data [_acff ],bm2 .Data [_cceba ]>>uint (_adba );_befg =_fbff &_geag ;
+_gbgde +=tab [_befg ];for _dbca =1;_dbca < _dbg ;_dbca ++{_fbff ,_geag =bm1 .Data [_acff +_dbca ],(bm2 .Data [_cceba +_dbca ]>>uint (_adba ))|(bm2 .Data [_cceba +_dbca -1]<<uint (8-_adba ));_befg =_fbff &_geag ;_gbgde +=tab [_befg ];};_fbff =bm1 .Data [_acff +_dbca ];
+_geag =bm2 .Data [_cceba +_dbca -1]<<uint (8-_adba );_befg =_fbff &_geag ;_gbgde +=tab [_befg ];};}else {for _ddgb =_defbg ;_ddgb < _gggc ;_ddgb ,_acff ,_cceba =_ddgb +1,_acff +bm1 .RowStride ,_cceba +bm2 .RowStride {_fbff ,_geag =bm1 .Data [_acff ],bm2 .Data [_cceba ]>>uint (_adba );
+_befg =_fbff &_geag ;_gbgde +=tab [_befg ];for _dbca =1;_dbca < _ffc ;_dbca ++{_fbff =bm1 .Data [_acff +_dbca ];_geag =(bm2 .Data [_cceba +_dbca ]>>uint (_adba ))|(bm2 .Data [_cceba +_dbca -1]<<uint (8-_adba ));_befg =_fbff &_geag ;_gbgde +=tab [_befg ];
+};};};default:if _ffc < _dbg {for _ddgb =_defbg ;_ddgb < _gggc ;_ddgb ,_acff ,_cceba =_ddgb +1,_acff +bm1 .RowStride ,_cceba +bm2 .RowStride {for _dbca =0;_dbca < _ffc ;_dbca ++{_fbff =bm1 .Data [_acff +_dbca ];_geag =bm2 .Data [_cceba +_dbca ]<<uint (-_adba );
+_geag |=bm2 .Data [_cceba +_dbca +1]>>uint (8+_adba );_befg =_fbff &_geag ;_gbgde +=tab [_befg ];};};}else {for _ddgb =_defbg ;_ddgb < _gggc ;_ddgb ,_acff ,_cceba =_ddgb +1,_acff +bm1 .RowStride ,_cceba +bm2 .RowStride {for _dbca =0;_dbca < _ffc -1;_dbca ++{_fbff =bm1 .Data [_acff +_dbca ];
+_geag =bm2 .Data [_cceba +_dbca ]<<uint (-_adba );_geag |=bm2 .Data [_cceba +_dbca +1]>>uint (8+_adba );_befg =_fbff &_geag ;_gbgde +=tab [_befg ];};_fbff =bm1 .Data [_acff +_dbca ];_geag =bm2 .Data [_cceba +_dbca ]<<uint (-_adba );_befg =_fbff &_geag ;
+_gbgde +=tab [_befg ];};};};_gbfe =float64 (_gbgde )*float64 (_gbgde )/(float64 (area1 )*float64 (area2 ));return _gbfe ,nil ;};func (_agdgf *Bitmaps )GroupByHeight ()(*BitmapsArray ,error ){const _bcbb ="\u0047\u0072\u006f\u0075\u0070\u0042\u0079\u0048\u0065\u0069\u0067\u0068\u0074";
+if len (_agdgf .Values )==0{return nil ,_g .Error (_bcbb ,"\u006eo\u0020v\u0061\u006c\u0075\u0065\u0073 \u0070\u0072o\u0076\u0069\u0064\u0065\u0064");};_gccc :=&BitmapsArray {};_agdgf .SortByHeight ();_efad :=-1;_ffab :=-1;for _cacf :=0;_cacf < len (_agdgf .Values );
+_cacf ++{_ccag :=_agdgf .Values [_cacf ].Height ;if _ccag > _efad {_efad =_ccag ;_ffab ++;_gccc .Values =append (_gccc .Values ,&Bitmaps {});};_gccc .Values [_ffab ].AddBitmap (_agdgf .Values [_cacf ]);};return _gccc ,nil ;};func _bfabg (_cbca *Bitmap ,_bdcc ,_facf ,_fbed ,_ebfc int ,_cgdf RasterOperator ,_cegdf *Bitmap ,_adcd ,_afbba int )error {var (_aaca bool ;
+_decfd bool ;_aefe byte ;_edgfef int ;_eabce int ;_cafe int ;_aecd int ;_cefa bool ;_efff int ;_dacce int ;_ggaf int ;_gafbd bool ;_fefb byte ;_bad int ;_ebac int ;_gdff int ;_ebbd byte ;_fggfb int ;_bfgba int ;_gcagb uint ;_agdbg uint ;_dada byte ;_cfeff shift ;
+_fdbd bool ;_bcbg bool ;_ceba ,_bdfca int ;);if _adcd &7!=0{_bfgba =8-(_adcd &7);};if _bdcc &7!=0{_eabce =8-(_bdcc &7);};if _bfgba ==0&&_eabce ==0{_dada =_eebb [0];}else {if _eabce > _bfgba {_gcagb =uint (_eabce -_bfgba );}else {_gcagb =uint (8-(_bfgba -_eabce ));
+};_agdbg =8-_gcagb ;_dada =_eebb [_gcagb ];};if (_bdcc &7)!=0{_aaca =true ;_edgfef =8-(_bdcc &7);_aefe =_eebb [_edgfef ];_cafe =_cbca .RowStride *_facf +(_bdcc >>3);_aecd =_cegdf .RowStride *_afbba +(_adcd >>3);_fggfb =8-(_adcd &7);if _edgfef > _fggfb {_cfeff =_geaaa ;
+if _fbed >=_bfgba {_fdbd =true ;};}else {_cfeff =_fbegg ;};};if _fbed < _edgfef {_decfd =true ;_aefe &=_gebag [8-_edgfef +_fbed ];};if !_decfd {_efff =(_fbed -_edgfef )>>3;if _efff !=0{_cefa =true ;_dacce =_cbca .RowStride *_facf +((_bdcc +_eabce )>>3);
+_ggaf =_cegdf .RowStride *_afbba +((_adcd +_eabce )>>3);};};_bad =(_bdcc +_fbed )&7;if !_decfd &&_bad !=0{_gafbd =true ;_fefb =_gebag [_bad ];_ebac =_cbca .RowStride *_facf +((_bdcc +_eabce )>>3)+_efff ;_gdff =_cegdf .RowStride *_afbba +((_adcd +_eabce )>>3)+_efff ;
+if _bad > int (_agdbg ){_bcbg =true ;};};switch _cgdf {case PixSrc :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;
+};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd ,_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );
+_cbca .Data [_dacce +_bdfca ]=_ebbd ;};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );
+};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd ,_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixNotSrc :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^_ebbd ,_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );
+_cbca .Data [_dacce +_bdfca ]=^_ebbd ;};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );
+};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^_ebbd ,_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixSrcOrDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd |_cbca .Data [_cafe ],_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;
+_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]|=_ebbd ;};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;
+_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd |_cbca .Data [_ebac ],_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;
+};};case PixSrcAndDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd &_cbca .Data [_cafe ],_aefe );
+_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]&=_ebbd ;
+};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd &_cbca .Data [_ebac ],_fefb );
+_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixSrcXorDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd ^_cbca .Data [_cafe ],_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;
+_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]^=_ebbd ;};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;
+_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd ^_cbca .Data [_ebac ],_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;
+};};case PixNotSrcOrDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^_ebbd |_cbca .Data [_cafe ],_aefe );
+_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]|=^_ebbd ;
+};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^_ebbd |_cbca .Data [_ebac ],_fefb );
+_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixNotSrcAndDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^_ebbd &_cbca .Data [_cafe ],_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;
+_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]&=^_ebbd ;};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;
+_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^_ebbd &_cbca .Data [_ebac ],_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;
+};};case PixSrcOrNotDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd |^_cbca .Data [_cafe ],_aefe );
+_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]=_ebbd |^_cbca .Data [_dacce +_bdfca ];
+};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd |^_cbca .Data [_ebac ],_fefb );
+_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixSrcAndNotDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],_ebbd &^_cbca .Data [_cafe ],_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;
+_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]=_ebbd &^_cbca .Data [_dacce +_bdfca ];};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;
+};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],_ebbd &^_cbca .Data [_ebac ],_fefb );_ebac +=_cbca .RowStride ;
+_gdff +=_cegdf .RowStride ;};};case PixNotPixSrcOrDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;
+};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^(_ebbd |_cbca .Data [_cafe ]),_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );
+_cbca .Data [_dacce +_bdfca ]=^(_ebbd |_cbca .Data [_dacce +_bdfca ]);};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );
+};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^(_ebbd |_cbca .Data [_ebac ]),_fefb );_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixNotPixSrcAndDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;
+if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^(_ebbd &_cbca .Data [_cafe ]),_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;
+};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]=^(_ebbd &_cbca .Data [_dacce +_bdfca ]);
+};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^(_ebbd &_cbca .Data [_ebac ]),_fefb );
+_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};case PixNotPixSrcXorDst :if _aaca {for _ceba =0;_ceba < _ebfc ;_ceba ++{if _cfeff ==_geaaa {_ebbd =_cegdf .Data [_aecd ]<<_gcagb ;if _fdbd {_ebbd =_fcac (_ebbd ,_cegdf .Data [_aecd +1]>>_agdbg ,_dada );
+};}else {_ebbd =_cegdf .Data [_aecd ]>>_agdbg ;};_cbca .Data [_cafe ]=_fcac (_cbca .Data [_cafe ],^(_ebbd ^_cbca .Data [_cafe ]),_aefe );_cafe +=_cbca .RowStride ;_aecd +=_cegdf .RowStride ;};};if _cefa {for _ceba =0;_ceba < _ebfc ;_ceba ++{for _bdfca =0;
+_bdfca < _efff ;_bdfca ++{_ebbd =_fcac (_cegdf .Data [_ggaf +_bdfca ]<<_gcagb ,_cegdf .Data [_ggaf +_bdfca +1]>>_agdbg ,_dada );_cbca .Data [_dacce +_bdfca ]=^(_ebbd ^_cbca .Data [_dacce +_bdfca ]);};_dacce +=_cbca .RowStride ;_ggaf +=_cegdf .RowStride ;
+};};if _gafbd {for _ceba =0;_ceba < _ebfc ;_ceba ++{_ebbd =_cegdf .Data [_gdff ]<<_gcagb ;if _bcbg {_ebbd =_fcac (_ebbd ,_cegdf .Data [_gdff +1]>>_agdbg ,_dada );};_cbca .Data [_ebac ]=_fcac (_cbca .Data [_ebac ],^(_ebbd ^_cbca .Data [_ebac ]),_fefb );
+_ebac +=_cbca .RowStride ;_gdff +=_cegdf .RowStride ;};};default:_de .Log .Debug ("\u004f\u0070e\u0072\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0070\u0065\u0072\u006d\u0069tt\u0065\u0064",_cgdf );
+return _g .Error ("\u0072a\u0073t\u0065\u0072\u004f\u0070\u0047e\u006e\u0065r\u0061\u006c\u004c\u006f\u0077","\u0072\u0061\u0073\u0074\u0065\u0072\u0020\u006f\u0070\u0065r\u0061\u0074\u0069\u006f\u006e\u0020\u006eo\u0074\u0020\u0070\u0065\u0072\u006d\u0069\u0074\u0074\u0065\u0064");
+};return nil ;};func _ffeeg (_fcfb ,_dgdf int ,_daea string )*Selection {_cfcb :=&Selection {Height :_fcfb ,Width :_dgdf ,Name :_daea };_cfcb .Data =make ([][]SelectionValue ,_fcfb );for _dfed :=0;_dfed < _fcfb ;_dfed ++{_cfcb .Data [_dfed ]=make ([]SelectionValue ,_dgdf );
+};return _cfcb ;};func TstWriteSymbols (t *_f .T ,bms *Bitmaps ,src *Bitmap ){for _egcad :=0;_egcad < bms .Size ();_egcad ++{_fgegc :=bms .Values [_egcad ];_eafc :=bms .Boxes [_egcad ];_ceead :=src .RasterOperation (_eafc .Min .X ,_eafc .Min .Y ,_fgegc .Width ,_fgegc .Height ,PixSrc ,_fgegc ,0,0);
+_e .NoError (t ,_ceead );};};func (_dabe *Bitmap )removeBorderGeneral (_ccbg ,_eeeef ,_dcfc ,_bggc int )(*Bitmap ,error ){const _acbf ="\u0072\u0065\u006d\u006fve\u0042\u006f\u0072\u0064\u0065\u0072\u0047\u0065\u006e\u0065\u0072\u0061\u006c";if _ccbg < 0||_eeeef < 0||_dcfc < 0||_bggc < 0{return nil ,_g .Error (_acbf ,"\u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020\u0062\u0072\u006f\u0064\u0065\u0072\u0020\u0072\u0065\u006d\u006f\u0076\u0065\u0020\u0076\u0061lu\u0065\u0073");
+};_fca ,_eaba :=_dabe .Width ,_dabe .Height ;_edee :=_fca -_ccbg -_eeeef ;_cfb :=_eaba -_dcfc -_bggc ;if _edee <=0{return nil ,_g .Errorf (_acbf ,"w\u0069\u0064\u0074\u0068: \u0025d\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u003e\u0020\u0030",_edee );
+};if _cfb <=0{return nil ,_g .Errorf (_acbf ,"\u0068\u0065\u0069\u0067ht\u003a\u0020\u0025\u0064\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u003e \u0030",_cfb );};_abdf :=New (_edee ,_cfb );_abdf .Color =_dabe .Color ;_deb :=_abdf .RasterOperation (0,0,_edee ,_cfb ,PixSrc ,_dabe ,_ccbg ,_dcfc );
+if _deb !=nil {return nil ,_g .Wrap (_deb ,_acbf ,"");};return _abdf ,nil ;};func (_ggcfa *Bitmap )setAll ()error {_cceg :=_gbee (_ggcfa ,0,0,_ggcfa .Width ,_ggcfa .Height ,PixSet ,nil ,0,0);if _cceg !=nil {return _g .Wrap (_cceg ,"\u0073\u0065\u0074\u0041\u006c\u006c","");
+};return nil ;};func (_agd *Bitmap )String ()string {var _becaf ="\u000a";for _bdgc :=0;_bdgc < _agd .Height ;_bdgc ++{var _ccga string ;for _eeg :=0;_eeg < _agd .Width ;_eeg ++{_ecc :=_agd .GetPixel (_eeg ,_bdgc );if _ecc {_ccga +="\u0031";}else {_ccga +="\u0030";
+};};_becaf +=_ccga +"\u000a";};return _becaf ;};func _cegb (_ege ,_dgdg *Bitmap ,_ggcfe ,_dedg int )(*Bitmap ,error ){const _dbce ="\u006fp\u0065\u006e\u0042\u0072\u0069\u0063k";if _dgdg ==nil {return nil ,_g .Error (_dbce ,"\u0073o\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061p\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");
+};if _ggcfe < 1&&_dedg < 1{return nil ,_g .Error (_dbce ,"\u0068\u0053\u0069\u007ae \u003c\u0020\u0031\u0020\u0026\u0026\u0020\u0076\u0053\u0069\u007a\u0065\u0020\u003c \u0031");};if _ggcfe ==1&&_dedg ==1{return _dgdg .Copy (),nil ;};if _ggcfe ==1||_dedg ==1{var _bafd error ;
+_cfdc :=SelCreateBrick (_dedg ,_ggcfe ,_dedg /2,_ggcfe /2,SelHit );_ege ,_bafd =_fgfd (_ege ,_dgdg ,_cfdc );if _bafd !=nil {return nil ,_g .Wrap (_bafd ,_dbce ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u007c\u007c \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");
+};return _ege ,nil ;};_adga :=SelCreateBrick (1,_ggcfe ,0,_ggcfe /2,SelHit );_gdab :=SelCreateBrick (_dedg ,1,_dedg /2,0,SelHit );_cca ,_bbce :=_adbe (nil ,_dgdg ,_adga );if _bbce !=nil {return nil ,_g .Wrap (_bbce ,_dbce ,"\u0031s\u0074\u0020\u0065\u0072\u006f\u0064e");
+};_ege ,_bbce =_adbe (_ege ,_cca ,_gdab );if _bbce !=nil {return nil ,_g .Wrap (_bbce ,_dbce ,"\u0032n\u0064\u0020\u0065\u0072\u006f\u0064e");};_ ,_bbce =_gdc (_cca ,_ege ,_adga );if _bbce !=nil {return nil ,_g .Wrap (_bbce ,_dbce ,"\u0031\u0073\u0074\u0020\u0064\u0069\u006c\u0061\u0074\u0065");
+};_ ,_bbce =_gdc (_ege ,_cca ,_gdab );if _bbce !=nil {return nil ,_g .Wrap (_bbce ,_dbce ,"\u0032\u006e\u0064\u0020\u0064\u0069\u006c\u0061\u0074\u0065");};return _ege ,nil ;};func (_aea *Bitmap )clipRectangle (_gad ,_cgge *_b .Rectangle )(_geb *Bitmap ,_ffa error ){const _cad ="\u0063\u006c\u0069\u0070\u0052\u0065\u0063\u0074\u0061\u006e\u0067\u006c\u0065";
+if _gad ==nil {return nil ,_g .Error (_cad ,"\u0070r\u006fv\u0069\u0064\u0065\u0064\u0020n\u0069\u006c \u0027\u0062\u006f\u0078\u0027");};_abb ,_agdb :=_aea .Width ,_aea .Height ;_cbf ,_ffa :=ClipBoxToRectangle (_gad ,_abb ,_agdb );if _ffa !=nil {_de .Log .Warning ("\u0027\u0062ox\u0027\u0020\u0064o\u0065\u0073\u006e\u0027t o\u0076er\u006c\u0061\u0070\u0020\u0062\u0069\u0074ma\u0070\u0020\u0027\u0062\u0027\u003a\u0020%\u0076",_ffa );
+return nil ,nil ;};_fcef ,_gce :=_cbf .Min .X ,_cbf .Min .Y ;_cadc ,_adab :=_cbf .Max .X -_cbf .Min .X ,_cbf .Max .Y -_cbf .Min .Y ;_geb =New (_cadc ,_adab );_geb .Text =_aea .Text ;if _ffa =_geb .RasterOperation (0,0,_cadc ,_adab ,PixSrc ,_aea ,_fcef ,_gce );
+_ffa !=nil {return nil ,_g .Wrap (_ffa ,_cad ,"");};if _cgge !=nil {*_cgge =*_cbf ;};return _geb ,nil ;};func (_bbbff CombinationOperator )String ()string {var _eefg string ;switch _bbbff {case CmbOpOr :_eefg ="\u004f\u0052";case CmbOpAnd :_eefg ="\u0041\u004e\u0044";
+case CmbOpXor :_eefg ="\u0058\u004f\u0052";case CmbOpXNor :_eefg ="\u0058\u004e\u004f\u0052";case CmbOpReplace :_eefg ="\u0052E\u0050\u004c\u0041\u0043\u0045";case CmbOpNot :_eefg ="\u004e\u004f\u0054";};return _eefg ;};func (_gabf *Bitmap )createTemplate ()*Bitmap {return &Bitmap {Width :_gabf .Width ,Height :_gabf .Height ,RowStride :_gabf .RowStride ,Color :_gabf .Color ,Text :_gabf .Text ,BitmapNumber :_gabf .BitmapNumber ,Special :_gabf .Special ,Data :make ([]byte ,len (_gabf .Data ))};
+};func (_febcd *BitmapsArray )GetBox (i int )(*_b .Rectangle ,error ){const _egdf ="\u0042\u0069\u0074\u006dap\u0073\u0041\u0072\u0072\u0061\u0079\u002e\u0047\u0065\u0074\u0042\u006f\u0078";if _febcd ==nil {return nil ,_g .Error (_egdf ,"p\u0072\u006f\u0076\u0069\u0064\u0065d\u0020\u006e\u0069\u006c\u0020\u0027\u0042\u0069\u0074m\u0061\u0070\u0073A\u0072r\u0061\u0079\u0027");
+};if i > len (_febcd .Boxes )-1{return nil ,_g .Errorf (_egdf ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};return _febcd .Boxes [i ],nil ;};func _ccea (_fged ,_ggba *Bitmap ,_ceae ,_ecea ,_ffbcg ,_gda ,_dcea int ,_cbab CombinationOperator )error {var _fgfa int ;
+_edg :=func (){_fgfa ++;_ffbcg +=_ggba .RowStride ;_gda +=_fged .RowStride ;_dcea +=_fged .RowStride };for _fgfa =_ceae ;_fgfa < _ecea ;_edg (){_addd :=_ffbcg ;for _gcfe :=_gda ;_gcfe <=_dcea ;_gcfe ++{_gacfe ,_ggf :=_ggba .GetByte (_addd );if _ggf !=nil {return _ggf ;
+};_bfdb ,_ggf :=_fged .GetByte (_gcfe );if _ggf !=nil {return _ggf ;};if _ggf =_ggba .SetByte (_addd ,_bagb (_gacfe ,_bfdb ,_cbab ));_ggf !=nil {return _ggf ;};_addd ++;};};return nil ;};func _ddgd (_ccfaf *Bitmap ,_ccebc *_db .Stack ,_febfc ,_fgead int )(_bddeg *_b .Rectangle ,_bcee error ){const _cddaf ="\u0073e\u0065d\u0046\u0069\u006c\u006c\u0053\u0074\u0061\u0063\u006b\u0042\u0042";
+if _ccfaf ==nil {return nil ,_g .Error (_cddaf ,"\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0027\u0073\u0027\u0020\u0042\u0069\u0074\u006d\u0061\u0070");};if _ccebc ==nil {return nil ,_g .Error (_cddaf ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0027\u0073\u0074ac\u006b\u0027");
+};_edcc ,_efag :=_ccfaf .Width ,_ccfaf .Height ;_egccd :=_edcc -1;_cbfb :=_efag -1;if _febfc < 0||_febfc > _egccd ||_fgead < 0||_fgead > _cbfb ||!_ccfaf .GetPixel (_febfc ,_fgead ){return nil ,nil ;};_efcdg :=_b .Rect (100000,100000,0,0);if _bcee =_gebg (_ccebc ,_febfc ,_febfc ,_fgead ,1,_cbfb ,&_efcdg );
+_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u0069\u006e\u0069t\u0069\u0061\u006c\u0020\u0070\u0075\u0073\u0068");};if _bcee =_gebg (_ccebc ,_febfc ,_febfc ,_fgead +1,-1,_cbfb ,&_efcdg );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u0032\u006ed\u0020\u0069\u006ei\u0074\u0069\u0061\u006c\u0020\u0070\u0075\u0073\u0068");
+};_efcdg .Min .X ,_efcdg .Max .X =_febfc ,_febfc ;_efcdg .Min .Y ,_efcdg .Max .Y =_fgead ,_fgead ;var (_agbb *fillSegment ;_bdga int ;);for _ccebc .Len ()> 0{if _agbb ,_bcee =_dgdee (_ccebc );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"");};_fgead =_agbb ._gdda ;
+for _febfc =_agbb ._fgeg -1;_febfc >=0&&_ccfaf .GetPixel (_febfc ,_fgead );_febfc --{if _bcee =_ccfaf .SetPixel (_febfc ,_fgead ,0);_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u0031s\u0074\u0020\u0073\u0065\u0074");};};if _febfc >=_agbb ._fgeg -1{for {for _febfc ++;
+_febfc <=_agbb ._efcee +1&&_febfc <=_egccd &&!_ccfaf .GetPixel (_febfc ,_fgead );_febfc ++{};_bdga =_febfc ;if _febfc > _agbb ._efcee +1||_febfc > _egccd {break ;};for ;_febfc <=_egccd &&_ccfaf .GetPixel (_febfc ,_fgead );_febfc ++{if _bcee =_ccfaf .SetPixel (_febfc ,_fgead ,0);
+_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u0032n\u0064\u0020\u0073\u0065\u0074");};};if _bcee =_gebg (_ccebc ,_bdga ,_febfc -1,_agbb ._gdda ,_agbb ._gfff ,_cbfb ,&_efcdg );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"n\u006f\u0072\u006d\u0061\u006c\u0020\u0070\u0075\u0073\u0068");
+};if _febfc > _agbb ._efcee {if _bcee =_gebg (_ccebc ,_agbb ._efcee +1,_febfc -1,_agbb ._gdda ,-_agbb ._gfff ,_cbfb ,&_efcdg );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u006ce\u0061k\u0020\u006f\u006e\u0020\u0072i\u0067\u0068t\u0020\u0073\u0069\u0064\u0065");
+};};};continue ;};_bdga =_febfc +1;if _bdga < _agbb ._fgeg {if _bcee =_gebg (_ccebc ,_bdga ,_agbb ._fgeg -1,_agbb ._gdda ,-_agbb ._gfff ,_cbfb ,&_efcdg );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u006c\u0065\u0061\u006b\u0020\u006f\u006e\u0020\u006c\u0065\u0066\u0074 \u0073\u0069\u0064\u0065");
+};};_febfc =_agbb ._fgeg ;for {for ;_febfc <=_egccd &&_ccfaf .GetPixel (_febfc ,_fgead );_febfc ++{if _bcee =_ccfaf .SetPixel (_febfc ,_fgead ,0);_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u0032n\u0064\u0020\u0073\u0065\u0074");};};if _bcee =_gebg (_ccebc ,_bdga ,_febfc -1,_agbb ._gdda ,_agbb ._gfff ,_cbfb ,&_efcdg );
+_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"n\u006f\u0072\u006d\u0061\u006c\u0020\u0070\u0075\u0073\u0068");};if _febfc > _agbb ._efcee {if _bcee =_gebg (_ccebc ,_agbb ._efcee +1,_febfc -1,_agbb ._gdda ,-_agbb ._gfff ,_cbfb ,&_efcdg );_bcee !=nil {return nil ,_g .Wrap (_bcee ,_cddaf ,"\u006ce\u0061k\u0020\u006f\u006e\u0020\u0072i\u0067\u0068t\u0020\u0073\u0069\u0064\u0065");
+};};for _febfc ++;_febfc <=_agbb ._efcee +1&&_febfc <=_egccd &&!_ccfaf .GetPixel (_febfc ,_fgead );_febfc ++{};_bdga =_febfc ;if _febfc > _agbb ._efcee +1||_febfc > _egccd {break ;};};};_efcdg .Max .X ++;_efcdg .Max .Y ++;return &_efcdg ,nil ;};func (_ceeg *Bitmap )RasterOperation (dx ,dy ,dw ,dh int ,op RasterOperator ,src *Bitmap ,sx ,sy int )error {return _gbee (_ceeg ,dx ,dy ,dw ,dh ,op ,src ,sx ,sy );
+};type Boxes []*_b .Rectangle ;func _fgd (_gaag *Bitmap ,_eg ...int )(_ee *Bitmap ,_eed error ){const _dgg ="\u0072\u0065\u0064uc\u0065\u0052\u0061\u006e\u006b\u0042\u0069\u006e\u0061\u0072\u0079\u0043\u0061\u0073\u0063\u0061\u0064\u0065";if _gaag ==nil {return nil ,_g .Error (_dgg ,"\u0073o\u0075\u0072\u0063\u0065 \u0062\u0069\u0074\u006d\u0061p\u0020n\u006ft\u0020\u0064\u0065\u0066\u0069\u006e\u0065d");
+};if len (_eg )==0||len (_eg )> 4{return nil ,_g .Error (_dgg ,"t\u0068\u0065\u0072\u0065\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0061\u0074\u0020\u006cea\u0073\u0074\u0020\u006fn\u0065\u0020\u0061\u006e\u0064\u0020\u0061\u0074\u0020mo\u0073\u0074 \u0034\u0020\u006c\u0065\u0076\u0065\u006c\u0073");
+};if _eg [0]<=0{_de .Log .Debug ("\u006c\u0065\u0076\u0065\u006c\u0031\u0020\u003c\u003d\u0020\u0030 \u002d\u0020\u006e\u006f\u0020\u0072\u0065\u0064\u0075\u0063t\u0069\u006f\u006e");_ee ,_eed =_bgff (nil ,_gaag );if _eed !=nil {return nil ,_g .Wrap (_eed ,_dgg ,"l\u0065\u0076\u0065\u006c\u0031\u0020\u003c\u003d\u0020\u0030");
+};return _ee ,nil ;};_bfb :=_bggf ();_ee =_gaag ;for _ccbd ,_cbe :=range _eg {if _cbe <=0{break ;};_ee ,_eed =_fbf (_ee ,_cbe ,_bfb );if _eed !=nil {return nil ,_g .Wrapf (_eed ,_dgg ,"\u006c\u0065\u0076\u0065\u006c\u0025\u0064\u0020\u0072\u0065\u0064\u0075c\u0074\u0069\u006f\u006e",_ccbd );
+};};return _ee ,nil ;};func (_cgfb Points )XSorter ()func (_bbaeb ,_bgbc int )bool {return func (_bcbd ,_dfbe int )bool {return _cgfb [_bcbd ].X < _cgfb [_dfbe ].X };};const (PixSrc RasterOperator =0xc;PixDst RasterOperator =0xa;PixNotSrc RasterOperator =0x3;
+PixNotDst RasterOperator =0x5;PixClr RasterOperator =0x0;PixSet RasterOperator =0xf;PixSrcOrDst RasterOperator =0xe;PixSrcAndDst RasterOperator =0x8;PixSrcXorDst RasterOperator =0x6;PixNotSrcOrDst RasterOperator =0xb;PixNotSrcAndDst RasterOperator =0x2;
+PixSrcOrNotDst RasterOperator =0xd;PixSrcAndNotDst RasterOperator =0x4;PixNotPixSrcOrDst RasterOperator =0x1;PixNotPixSrcAndDst RasterOperator =0x7;PixNotPixSrcXorDst RasterOperator =0x9;PixPaint =PixSrcOrDst ;PixSubtract =PixNotSrcAndDst ;PixMask =PixSrcAndDst ;
+);func RasterOperation (dest *Bitmap ,dx ,dy ,dw ,dh int ,op RasterOperator ,src *Bitmap ,sx ,sy int )error {return _gbee (dest ,dx ,dy ,dw ,dh ,op ,src ,sx ,sy );};func _adbc (_geaabe *Bitmap ,_ggef *_db .Stack ,_gbgdec ,_dbeb ,_fdfd int )(_dace *_b .Rectangle ,_gdbg error ){const _dfdgg ="\u0073e\u0065d\u0046\u0069\u006c\u006c\u0053\u0074\u0061\u0063\u006b\u0042\u0042";
+if _geaabe ==nil {return nil ,_g .Error (_dfdgg ,"\u0070\u0072\u006fvi\u0064\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0027\u0073\u0027\u0020\u0042\u0069\u0074\u006d\u0061\u0070");};if _ggef ==nil {return nil ,_g .Error (_dfdgg ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0027\u0073\u0074ac\u006b\u0027");
+};switch _fdfd {case 4:if _dace ,_gdbg =_edgg (_geaabe ,_ggef ,_gbgdec ,_dbeb );_gdbg !=nil {return nil ,_g .Wrap (_gdbg ,_dfdgg ,"");};return _dace ,nil ;case 8:if _dace ,_gdbg =_ddgd (_geaabe ,_ggef ,_gbgdec ,_dbeb );_gdbg !=nil {return nil ,_g .Wrap (_gdbg ,_dfdgg ,"");
+};return _dace ,nil ;default:return nil ,_g .Errorf (_dfdgg ,"\u0063\u006f\u006e\u006e\u0065\u0063\u0074\u0069\u0076\u0069\u0074\u0079\u0020\u0069\u0073 \u006eo\u0074\u0020\u0034\u0020\u006f\u0072\u0020\u0038\u003a\u0020\u0027\u0025\u0064\u0027",_fdfd );
+};};func _ca (_gd *Bitmap ,_gaa int )(*Bitmap ,error ){const _dcc ="\u0065x\u0070a\u006e\u0064\u0042\u0069\u006ea\u0072\u0079P\u006f\u0077\u0065\u0072\u0032";if _gd ==nil {return nil ,_g .Error (_dcc ,"\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");
+};if _gaa ==1{return _bgff (nil ,_gd );};if _gaa !=2&&_gaa !=4&&_gaa !=8{return nil ,_g .Error (_dcc ,"\u0066\u0061\u0063t\u006f\u0072\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0069n\u0020\u007b\u0032\u002c\u0034\u002c\u0038\u007d\u0020\u0072\u0061\u006e\u0067\u0065");
+};_aab :=_gaa *_gd .Width ;_gae :=_gaa *_gd .Height ;_dg :=New (_aab ,_gae );var _acb error ;switch _gaa {case 2:_acb =_fc (_dg ,_gd );case 4:_acb =_af (_dg ,_gd );case 8:_acb =_dff (_dg ,_gd );};if _acb !=nil {return nil ,_g .Wrap (_acb ,_dcc ,"");};return _dg ,nil ;
+};func (_cgb *Bitmap )SetDefaultPixel (){for _bfc :=range _cgb .Data {_cgb .Data [_bfc ]=byte (0xff);};};type Point struct{X ,Y float32 ;};func (_baed Points )Get (i int )(Point ,error ){if i > len (_baed )-1{return Point {},_g .Errorf ("\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047\u0065\u0074","\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );
+};return _baed [i ],nil ;};func RankHausTest (p1 ,p2 ,p3 ,p4 *Bitmap ,delX ,delY float32 ,maxDiffW ,maxDiffH ,area1 ,area3 int ,rank float32 ,tab8 []int )(_gbce bool ,_beaag error ){const _ceaae ="\u0052\u0061\u006ek\u0048\u0061\u0075\u0073\u0054\u0065\u0073\u0074";
+_aaed ,_abdc :=p1 .Width ,p1 .Height ;_dbed ,_efcg :=p3 .Width ,p3 .Height ;if _db .Abs (_aaed -_dbed )> maxDiffW {return false ,nil ;};if _db .Abs (_abdc -_efcg )> maxDiffH {return false ,nil ;};_ggdf :=int (float32 (area1 )*(1.0-rank )+0.5);_fbda :=int (float32 (area3 )*(1.0-rank )+0.5);
+var _aeb ,_ddbb int ;if delX >=0{_aeb =int (delX +0.5);}else {_aeb =int (delX -0.5);};if delY >=0{_ddbb =int (delY +0.5);}else {_ddbb =int (delY -0.5);};_dcfd :=p1 .CreateTemplate ();if _beaag =_dcfd .RasterOperation (0,0,_aaed ,_abdc ,PixSrc ,p1 ,0,0);
+_beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"p\u0031\u0020\u002d\u0053\u0052\u0043\u002d\u003e\u0020\u0074");};if _beaag =_dcfd .RasterOperation (_aeb ,_ddbb ,_aaed ,_abdc ,PixNotSrcAndDst ,p4 ,0,0);_beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"\u0074 \u0026\u0020\u0021\u0070\u0034");
+};_gbce ,_beaag =_dcfd .ThresholdPixelSum (_ggdf ,tab8 );if _beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"\u0074\u002d\u003e\u0074\u0068\u0072\u0065\u0073\u0068\u0031");};if _gbce {return false ,nil ;};if _beaag =_dcfd .RasterOperation (_aeb ,_ddbb ,_dbed ,_efcg ,PixSrc ,p3 ,0,0);
+_beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"p\u0033\u0020\u002d\u0053\u0052\u0043\u002d\u003e\u0020\u0074");};if _beaag =_dcfd .RasterOperation (0,0,_dbed ,_efcg ,PixNotSrcAndDst ,p2 ,0,0);_beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"\u0074 \u0026\u0020\u0021\u0070\u0032");
+};_gbce ,_beaag =_dcfd .ThresholdPixelSum (_fbda ,tab8 );if _beaag !=nil {return false ,_g .Wrap (_beaag ,_ceaae ,"\u0074\u002d\u003e\u0074\u0068\u0072\u0065\u0073\u0068\u0033");};return !_gbce ,nil ;};func (_agafc *Points )Add (pt *Points )error {const _edb ="\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0041\u0064\u0064";
+if _agafc ==nil {return _g .Error (_edb ,"\u0070o\u0069n\u0074\u0073\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");};if pt ==nil {return _g .Error (_edb ,"a\u0072\u0067\u0075\u006d\u0065\u006et\u0020\u0070\u006f\u0069\u006e\u0074\u0073\u0020\u006eo\u0074\u0020\u0064e\u0066i\u006e\u0065\u0064");
+};*_agafc =append (*_agafc ,*pt ...);return nil ;};func (_cddga *Bitmap )setEightFullBytes (_afcb int ,_fbbg uint64 )error {if _afcb +7> len (_cddga .Data )-1{return _g .Error ("\u0073\u0065\u0074\u0045\u0069\u0067\u0068\u0074\u0042\u0079\u0074\u0065\u0073","\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
+};_cddga .Data [_afcb ]=byte ((_fbbg &0xff00000000000000)>>56);_cddga .Data [_afcb +1]=byte ((_fbbg &0xff000000000000)>>48);_cddga .Data [_afcb +2]=byte ((_fbbg &0xff0000000000)>>40);_cddga .Data [_afcb +3]=byte ((_fbbg &0xff00000000)>>32);_cddga .Data [_afcb +4]=byte ((_fbbg &0xff000000)>>24);
+_cddga .Data [_afcb +5]=byte ((_fbbg &0xff0000)>>16);_cddga .Data [_afcb +6]=byte ((_fbbg &0xff00)>>8);_cddga .Data [_afcb +7]=byte (_fbbg &0xff);return nil ;};func TstAddSymbol (t *_f .T ,bms *Bitmaps ,sym *Bitmap ,x *int ,y int ,space int ){bms .AddBitmap (sym );
+_ggeff :=_b .Rect (*x ,y ,*x +sym .Width ,y +sym .Height );bms .AddBox (&_ggeff );*x +=sym .Width +space ;};func (_ggfe *ClassedPoints )YAtIndex (i int )float32 {return (*_ggfe .Points )[_ggfe .IntSlice [i ]].Y };func (_gdeb *ClassedPoints )Less (i ,j int )bool {return _gdeb ._bdde (i ,j )};
+func (_afb *Bitmap )CreateTemplate ()*Bitmap {return _afb .createTemplate ()};func (_aedd *Selection )findMaxTranslations ()(_dfagc ,_bgffc ,_afec ,_dbfdd int ){for _baca :=0;_baca < _aedd .Height ;_baca ++{for _fece :=0;_fece < _aedd .Width ;_fece ++{if _aedd .Data [_baca ][_fece ]==SelHit {_dfagc =_gcee (_dfagc ,_aedd .Cx -_fece );
+_bgffc =_gcee (_bgffc ,_aedd .Cy -_baca );_afec =_gcee (_afec ,_fece -_aedd .Cx );_dbfdd =_gcee (_dbfdd ,_baca -_aedd .Cy );};};};return _dfagc ,_bgffc ,_afec ,_dbfdd ;};func (_fega MorphProcess )getWidthHeight ()(_faec ,_gged int ){return _fega .Arguments [0],_fega .Arguments [1];
+};func (_gcagd Points )Size ()int {return len (_gcagd )};func (_dge *Bitmap )SetPixel (x ,y int ,pixel byte )error {_eca :=_dge .GetByteIndex (x ,y );if _eca > len (_dge .Data )-1{return _g .Errorf ("\u0053\u0065\u0074\u0050\u0069\u0078\u0065\u006c","\u0069\u006e\u0064\u0065x \u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065\u003a\u0020%\u0064",_eca );
+};_gafe :=_dge .GetBitOffset (x );_ddc :=uint (7-_gafe );_eafg :=_dge .Data [_eca ];var _dgeb byte ;if pixel ==1{_dgeb =_eafg |(pixel &0x01<<_ddc );}else {_dgeb =_eafg &^(1<<_ddc );};_dge .Data [_eca ]=_dgeb ;return nil ;};func (_agba *Bitmap )RemoveBorderGeneral (left ,right ,top ,bot int )(*Bitmap ,error ){return _agba .removeBorderGeneral (left ,right ,top ,bot );
+};func (_ddg *Bitmap )countPixels ()int {var (_bfda int ;_dfcg uint8 ;_daad byte ;_ggcf int ;);_ead :=_ddg .RowStride ;_eacg :=uint (_ddg .Width &0x07);if _eacg !=0{_dfcg =uint8 ((0xff<<(8-_eacg ))&0xff);_ead --;};for _edce :=0;_edce < _ddg .Height ;_edce ++{for _ggcf =0;
+_ggcf < _ead ;_ggcf ++{_daad =_ddg .Data [_edce *_ddg .RowStride +_ggcf ];_bfda +=int (_fee [_daad ]);};if _eacg !=0{_bfda +=int (_fee [_ddg .Data [_edce *_ddg .RowStride +_ggcf ]&_dfcg ]);};};return _bfda ;};type byWidth Bitmaps ;func (_ggfd *ClassedPoints )validateIntSlice ()error {const _bcab ="\u0076\u0061l\u0069\u0064\u0061t\u0065\u0049\u006e\u0074\u0053\u006c\u0069\u0063\u0065";
+for _ ,_abag :=range _ggfd .IntSlice {if _abag >=(_ggfd .Points .Size ()){return _g .Errorf (_bcab ,"c\u006c\u0061\u0073\u0073\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0076\u0061\u006ci\u0064 \u0069\u006e\u0064\u0065x\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0070\u006f\u0069\u006e\u0074\u0073\u0020\u006f\u0066\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0064",_abag ,_ggfd .Points .Size ());
+};};return nil ;};func (_dbabf *Selection )setOrigin (_eeage ,_abdg int ){_dbabf .Cy ,_dbabf .Cx =_eeage ,_abdg };func (_fdg *Bitmap )clearAll ()error {return _fdg .RasterOperation (0,0,_fdg .Width ,_fdg .Height ,PixClr ,nil ,0,0);};const (_ SizeSelection =iota ;
+SizeSelectByWidth ;SizeSelectByHeight ;SizeSelectByMaxDimension ;SizeSelectByArea ;SizeSelectByPerimeter ;);func CombineBytes (oldByte ,newByte byte ,op CombinationOperator )byte {return _bagb (oldByte ,newByte ,op );};func (_bfgb *Boxes )selectWithIndicator (_dabec *_db .NumSlice )(_fgda *Boxes ,_abe error ){const _eeb ="\u0042o\u0078\u0065\u0073\u002es\u0065\u006c\u0065\u0063\u0074W\u0069t\u0068I\u006e\u0064\u0069\u0063\u0061\u0074\u006fr";
+if _bfgb ==nil {return nil ,_g .Error (_eeb ,"b\u006f\u0078\u0065\u0073 '\u0062'\u0020\u006e\u006f\u0074\u0020d\u0065\u0066\u0069\u006e\u0065\u0064");};if _dabec ==nil {return nil ,_g .Error (_eeb ,"\u0027\u006ea\u0027\u0020\u006eo\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if len (*_dabec )!=len (*_bfgb ){return nil ,_g .Error (_eeb ,"\u0062\u006f\u0078\u0065\u0073\u0020\u0027\u0062\u0027\u0020\u0068\u0061\u0073\u0020\u0064\u0069\u0066\u0066\u0065\u0072\u0065\u006e\u0074\u0020s\u0069\u007a\u0065\u0020\u0074h\u0061\u006e \u0027\u006e\u0061\u0027");
+};var _ccdd ,_fcgf int ;for _aggg :=0;_aggg < len (*_dabec );_aggg ++{if _ccdd ,_abe =_dabec .GetInt (_aggg );_abe !=nil {return nil ,_g .Wrap (_abe ,_eeb ,"\u0063\u0068\u0065\u0063\u006b\u0069\u006e\u0067\u0020c\u006f\u0075\u006e\u0074");};if _ccdd ==1{_fcgf ++;
+};};if _fcgf ==len (*_bfgb ){return _bfgb ,nil ;};_ccc :=Boxes {};for _geg :=0;_geg < len (*_dabec );_geg ++{_ccdd =int ((*_dabec )[_geg ]);if _ccdd ==0{continue ;};_ccc =append (_ccc ,(*_bfgb )[_geg ]);};_fgda =&_ccc ;return _fgda ,nil ;};func (_dee *Bitmap )GetChocolateData ()[]byte {if _dee .Color ==Vanilla {_dee .inverseData ();
+};return _dee .Data ;};func _acaf (_accc ,_bea ,_gebc *Bitmap )(*Bitmap ,error ){const _gbaf ="\u0062\u0069\u0074\u006d\u0061\u0070\u002e\u0078\u006f\u0072";if _bea ==nil {return nil ,_g .Error (_gbaf ,"'\u0062\u0031\u0027\u0020\u0069\u0073\u0020\u006e\u0069\u006c");
+};if _gebc ==nil {return nil ,_g .Error (_gbaf ,"'\u0062\u0032\u0027\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};if _accc ==_gebc {return nil ,_g .Error (_gbaf ,"'\u0064\u0027\u0020\u003d\u003d\u0020\u0027\u0062\u0032\u0027");};if !_bea .SizesEqual (_gebc ){_de .Log .Debug ("\u0025s\u0020\u002d \u0042\u0069\u0074\u006da\u0070\u0020\u0027b\u0031\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074 e\u0071\u0075\u0061l\u0020\u0073i\u007a\u0065\u0020\u0077\u0069\u0074h\u0020\u0027b\u0032\u0027",_gbaf );
+};var _fae error ;if _accc ,_fae =_bgff (_accc ,_bea );_fae !=nil {return nil ,_g .Wrap (_fae ,_gbaf ,"\u0063\u0061n\u0027\u0074\u0020c\u0072\u0065\u0061\u0074\u0065\u0020\u0027\u0064\u0027");};if _fae =_accc .RasterOperation (0,0,_accc .Width ,_accc .Height ,PixSrcXorDst ,_gebc ,0,0);
+_fae !=nil {return nil ,_g .Wrap (_fae ,_gbaf ,"");};return _accc ,nil ;};func TstWordBitmapWithSpaces (t *_f .T ,scale ...int )*Bitmap {_afdaa :=1;if len (scale )> 0{_afdaa =scale [0];};_agfac :=3;_gfeba :=9+7+15+2*_agfac +2*_agfac ;_ggca :=5+_agfac +5+2*_agfac ;
+_adeaf :=New (_gfeba *_afdaa ,_ggca *_afdaa );_eaaf :=&Bitmaps {};var _bccec *int ;_agfac *=_afdaa ;_eecfd :=_agfac ;_bccec =&_eecfd ;_aege :=_agfac ;_fabc :=TstDSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstOSymbol (t ,scale ...);
+TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,_agfac );_fabc =TstISymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstTSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,_agfac );_fabc =TstNSymbol (t ,scale ...);
+TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstOSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstWSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,0);*_bccec =_agfac ;_aege =5*_afdaa +_agfac ;
+_fabc =TstOSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstRSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,_agfac );_fabc =TstNSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );
+_fabc =TstESymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstVSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );_fabc =TstESymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,1*_afdaa );
+_fabc =TstRSymbol (t ,scale ...);TstAddSymbol (t ,_eaaf ,_fabc ,_bccec ,_aege ,0);TstWriteSymbols (t ,_eaaf ,_adeaf );return _adeaf ;};func (_acee *Bitmaps )SortByWidth (){_gcccb :=(*byWidth )(_acee );_dd .Sort (_gcccb )};func _gbcc (_ecda *Bitmap ,_gcb ,_ccbga int ,_egbf ,_afa int ,_fgce RasterOperator ){var (_edcb bool ;
+_fadfg bool ;_gfage int ;_deff int ;_gbbd int ;_afgb int ;_bega bool ;_cbbg byte ;);_ageg :=8-(_gcb &7);_bgbg :=_eebb [_ageg ];_facb :=_ecda .RowStride *_ccbga +(_gcb >>3);if _egbf < _ageg {_edcb =true ;_bgbg &=_gebag [8-_ageg +_egbf ];};if !_edcb {_gfage =(_egbf -_ageg )>>3;
+if _gfage !=0{_fadfg =true ;_deff =_facb +1;};};_gbbd =(_gcb +_egbf )&7;if !_edcb &&_gbbd !=0{_bega =true ;_cbbg =_gebag [_gbbd ];_afgb =_facb +1+_gfage ;};var _egbga ,_afcbb int ;switch _fgce {case PixClr :for _egbga =0;_egbga < _afa ;_egbga ++{_ecda .Data [_facb ]=_fcac (_ecda .Data [_facb ],0x0,_bgbg );
+_facb +=_ecda .RowStride ;};if _fadfg {for _egbga =0;_egbga < _afa ;_egbga ++{for _afcbb =0;_afcbb < _gfage ;_afcbb ++{_ecda .Data [_deff +_afcbb ]=0x0;};_deff +=_ecda .RowStride ;};};if _bega {for _egbga =0;_egbga < _afa ;_egbga ++{_ecda .Data [_afgb ]=_fcac (_ecda .Data [_afgb ],0x0,_cbbg );
+_afgb +=_ecda .RowStride ;};};case PixSet :for _egbga =0;_egbga < _afa ;_egbga ++{_ecda .Data [_facb ]=_fcac (_ecda .Data [_facb ],0xff,_bgbg );_facb +=_ecda .RowStride ;};if _fadfg {for _egbga =0;_egbga < _afa ;_egbga ++{for _afcbb =0;_afcbb < _gfage ;
+_afcbb ++{_ecda .Data [_deff +_afcbb ]=0xff;};_deff +=_ecda .RowStride ;};};if _bega {for _egbga =0;_egbga < _afa ;_egbga ++{_ecda .Data [_afgb ]=_fcac (_ecda .Data [_afgb ],0xff,_cbbg );_afgb +=_ecda .RowStride ;};};case PixNotDst :for _egbga =0;_egbga < _afa ;
+_egbga ++{_ecda .Data [_facb ]=_fcac (_ecda .Data [_facb ],^_ecda .Data [_facb ],_bgbg );_facb +=_ecda .RowStride ;};if _fadfg {for _egbga =0;_egbga < _afa ;_egbga ++{for _afcbb =0;_afcbb < _gfage ;_afcbb ++{_ecda .Data [_deff +_afcbb ]=^(_ecda .Data [_deff +_afcbb ]);
+};_deff +=_ecda .RowStride ;};};if _bega {for _egbga =0;_egbga < _afa ;_egbga ++{_ecda .Data [_afgb ]=_fcac (_ecda .Data [_afgb ],^_ecda .Data [_afgb ],_cbbg );_afgb +=_ecda .RowStride ;};};};};func (_eec *Bitmap )connComponentsBB (_cabg int )(_gbdaf *Boxes ,_dbac error ){const _ceff ="\u0042\u0069\u0074ma\u0070\u002e\u0063\u006f\u006e\u006e\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u0042\u0042";
+if _cabg !=4&&_cabg !=8{return nil ,_g .Error (_ceff ,"\u0063\u006f\u006e\u006e\u0065\u0063t\u0069\u0076\u0069\u0074\u0079\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u0027\u0034\u0027\u0020\u006fr\u0020\u0027\u0038\u0027");};if _eec .Zero (){return &Boxes {},nil ;
+};_eec .setPadBits (0);_edeef ,_dbac :=_bgff (nil ,_eec );if _dbac !=nil {return nil ,_g .Wrap (_dbac ,_ceff ,"\u0062\u006d\u0031");};_ceef :=&_db .Stack {};_ceef .Aux =&_db .Stack {};_gbdaf =&Boxes {};var (_ddef ,_ddbe int ;_affb _b .Point ;_bbg bool ;
+_edeb *_b .Rectangle ;);for {if _affb ,_bbg ,_dbac =_edeef .nextOnPixel (_ddbe ,_ddef );_dbac !=nil {return nil ,_g .Wrap (_dbac ,_ceff ,"");};if !_bbg {break ;};if _edeb ,_dbac =_adbc (_edeef ,_ceef ,_affb .X ,_affb .Y ,_cabg );_dbac !=nil {return nil ,_g .Wrap (_dbac ,_ceff ,"");
+};if _dbac =_gbdaf .Add (_edeb );_dbac !=nil {return nil ,_g .Wrap (_dbac ,_ceff ,"");};_ddbe =_affb .X ;_ddef =_affb .Y ;};return _gbdaf ,nil ;};type MorphProcess struct{Operation MorphOperation ;Arguments []int ;};type shift int ;func _fgfd (_face ,_aega *Bitmap ,_gecgb *Selection )(*Bitmap ,error ){const _ffca ="\u006f\u0070\u0065\u006e";
+var _ddbbg error ;_face ,_ddbbg =_aaa (_face ,_aega ,_gecgb );if _ddbbg !=nil {return nil ,_g .Wrap (_ddbbg ,_ffca ,"");};_ecfa ,_ddbbg :=_adbe (nil ,_aega ,_gecgb );if _ddbbg !=nil {return nil ,_g .Wrap (_ddbbg ,_ffca ,"");};_ ,_ddbbg =_gdc (_face ,_ecfa ,_gecgb );
+if _ddbbg !=nil {return nil ,_g .Wrap (_ddbbg ,_ffca ,"");};return _face ,nil ;};func TstCSymbol (t *_f .T )*Bitmap {t .Helper ();_eadf :=New (6,6);_e .NoError (t ,_eadf .SetPixel (1,0,1));_e .NoError (t ,_eadf .SetPixel (2,0,1));_e .NoError (t ,_eadf .SetPixel (3,0,1));
+_e .NoError (t ,_eadf .SetPixel (4,0,1));_e .NoError (t ,_eadf .SetPixel (0,1,1));_e .NoError (t ,_eadf .SetPixel (5,1,1));_e .NoError (t ,_eadf .SetPixel (0,2,1));_e .NoError (t ,_eadf .SetPixel (0,3,1));_e .NoError (t ,_eadf .SetPixel (0,4,1));_e .NoError (t ,_eadf .SetPixel (5,4,1));
+_e .NoError (t ,_eadf .SetPixel (1,5,1));_e .NoError (t ,_eadf .SetPixel (2,5,1));_e .NoError (t ,_eadf .SetPixel (3,5,1));_e .NoError (t ,_eadf .SetPixel (4,5,1));return _eadf ;};func _cddge (_fdca ,_ecff *Bitmap ,_dfg ,_cecde int )(*Bitmap ,error ){const _cegc ="\u0063\u006c\u006f\u0073\u0065\u0053\u0061\u0066\u0065B\u0072\u0069\u0063\u006b";
+if _ecff ==nil {return nil ,_g .Error (_cegc ,"\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0069\u0073\u0020\u006e\u0069\u006c");};if _dfg < 1||_cecde < 1{return nil ,_g .Error (_cegc ,"\u0068s\u0069\u007a\u0065\u0020\u0061\u006e\u0064\u0020\u0076\u0073\u0069z\u0065\u0020\u006e\u006f\u0074\u0020\u003e\u003d\u0020\u0031");
+};if _dfg ==1&&_cecde ==1{return _bgff (_fdca ,_ecff );};if MorphBC ==SymmetricMorphBC {_efab ,_degf :=_becd (_fdca ,_ecff ,_dfg ,_cecde );if _degf !=nil {return nil ,_g .Wrap (_degf ,_cegc ,"\u0053\u0079m\u006d\u0065\u0074r\u0069\u0063\u004d\u006f\u0072\u0070\u0068\u0042\u0043");
+};return _efab ,nil ;};_agac :=_gcee (_dfg /2,_cecde /2);_bcca :=8*((_agac +7)/8);_edfg ,_fgea :=_ecff .AddBorder (_bcca ,0);if _fgea !=nil {return nil ,_g .Wrapf (_fgea ,_cegc ,"\u0042\u006f\u0072\u0064\u0065\u0072\u0053\u0069\u007ae\u003a\u0020\u0025\u0064",_bcca );
+};var _dcgc ,_bae *Bitmap ;if _dfg ==1||_cecde ==1{_gagca :=SelCreateBrick (_cecde ,_dfg ,_cecde /2,_dfg /2,SelHit );_dcgc ,_fgea =_bccb (nil ,_edfg ,_gagca );if _fgea !=nil {return nil ,_g .Wrap (_fgea ,_cegc ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u007c\u007c \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");
+};}else {_eabb :=SelCreateBrick (1,_dfg ,0,_dfg /2,SelHit );_accf ,_gfdfb :=_gdc (nil ,_edfg ,_eabb );if _gfdfb !=nil {return nil ,_g .Wrap (_gfdfb ,_cegc ,"\u0072\u0065\u0067\u0075la\u0072\u0020\u002d\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0064\u0069\u006c\u0061t\u0065");
+};_gcaf :=SelCreateBrick (_cecde ,1,_cecde /2,0,SelHit );_dcgc ,_gfdfb =_gdc (nil ,_accf ,_gcaf );if _gfdfb !=nil {return nil ,_g .Wrap (_gfdfb ,_cegc ,"\u0072\u0065\u0067ul\u0061\u0072\u0020\u002d\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0064\u0069\u006c\u0061\u0074\u0065");
+};if _ ,_gfdfb =_adbe (_accf ,_dcgc ,_eabb );_gfdfb !=nil {return nil ,_g .Wrap (_gfdfb ,_cegc ,"r\u0065\u0067\u0075\u006car\u0020-\u0020\u0066\u0069\u0072\u0073t\u0020\u0065\u0072\u006f\u0064\u0065");};if _ ,_gfdfb =_adbe (_dcgc ,_accf ,_gcaf );_gfdfb !=nil {return nil ,_g .Wrap (_gfdfb ,_cegc ,"\u0072\u0065\u0067\u0075la\u0072\u0020\u002d\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0065\u0072\u006fd\u0065");
+};};if _bae ,_fgea =_dcgc .RemoveBorder (_bcca );_fgea !=nil {return nil ,_g .Wrap (_fgea ,_cegc ,"\u0072e\u0067\u0075\u006c\u0061\u0072");};if _fdca ==nil {return _bae ,nil ;};if _ ,_fgea =_bgff (_fdca ,_bae );_fgea !=nil {return nil ,_fgea ;};return _fdca ,nil ;
+};func NewWithUnpaddedData (width ,height int ,data []byte )(*Bitmap ,error ){const _dac ="\u004e\u0065\u0077\u0057it\u0068\u0055\u006e\u0070\u0061\u0064\u0064\u0065\u0064\u0044\u0061\u0074\u0061";_eda :=_cff (width ,height );_eda .Data =data ;if _aeg :=((width *height )+7)>>3;
+len (data )< _aeg {return nil ,_g .Errorf (_dac ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0064a\u0074\u0061\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003a\u0020\u0027\u0025\u0064\u0027\u002e\u0020\u0054\u0068\u0065\u0020\u0064\u0061t\u0061\u0020s\u0068\u006fu\u006c\u0064\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0061\u0074 l\u0065\u0061\u0073\u0074\u003a\u0020\u0027\u0025\u0064'\u0020\u0062\u0079\u0074\u0065\u0073",len (data ),_aeg );
+};if _daca :=_eda .addPadBits ();_daca !=nil {return nil ,_g .Wrap (_daca ,_dac ,"");};return _eda ,nil ;};func TstDSymbol (t *_f .T ,scale ...int )*Bitmap {_agbae ,_fagde :=NewWithData (4,5,[]byte {0xf0,0x90,0x90,0x90,0xE0});_e .NoError (t ,_fagde );return TstGetScaledSymbol (t ,_agbae ,scale ...);
+};func (_aec *Bitmap )Equals (s *Bitmap )bool {if len (_aec .Data )!=len (s .Data )||_aec .Width !=s .Width ||_aec .Height !=s .Height {return false ;};for _fdfg :=0;_fdfg < _aec .Height ;_fdfg ++{_bfga :=_fdfg *_aec .RowStride ;for _bbaa :=0;_bbaa < _aec .RowStride ;
+_bbaa ++{if _aec .Data [_bfga +_bbaa ]!=s .Data [_bfga +_bbaa ]{return false ;};};};return true ;};func TstISymbol (t *_f .T ,scale ...int )*Bitmap {_bgec ,_gdcc :=NewWithData (1,5,[]byte {0x80,0x80,0x80,0x80,0x80});_e .NoError (t ,_gdcc );return TstGetScaledSymbol (t ,_bgec ,scale ...);
+};func (_fcaa *ClassedPoints )GetIntYByClass (i int )(int ,error ){const _bded ="\u0043\u006c\u0061\u0073s\u0065\u0064\u0050\u006f\u0069\u006e\u0074\u0073\u002e\u0047e\u0074I\u006e\u0074\u0059\u0042\u0079\u0043\u006ca\u0073\u0073";if i >=_fcaa .IntSlice .Size (){return 0,_g .Errorf (_bded ,"\u0069\u003a\u0020\u0027\u0025\u0064\u0027 \u0069\u0073\u0020o\u0075\u0074\u0020\u006ff\u0020\u0074\u0068\u0065\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0074\u0068\u0065\u0020\u0049\u006e\u0074\u0053\u006c\u0069\u0063\u0065",i );
+};return int (_fcaa .YAtIndex (i )),nil ;};func (_gfbf *Bitmap )Zero ()bool {_cgbf :=_gfbf .Width /8;_cfaa :=_gfbf .Width &7;var _deea byte ;if _cfaa !=0{_deea =byte (0xff<<uint (8-_cfaa ));};var _cgg ,_cgbe ,_ace int ;for _cgbe =0;_cgbe < _gfbf .Height ;
+_cgbe ++{_cgg =_gfbf .RowStride *_cgbe ;for _ace =0;_ace < _cgbf ;_ace ,_cgg =_ace +1,_cgg +1{if _gfbf .Data [_cgg ]!=0{return false ;};};if _cfaa > 0{if _gfbf .Data [_cgg ]&_deea !=0{return false ;};};};return true ;};func init (){const _ffcg ="\u0062\u0069\u0074\u006dap\u0073\u002e\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0069\u007a\u0061\u0074\u0069o\u006e";
+_efdb =New (50,40);var _ebfa error ;_efdb ,_ebfa =_efdb .AddBorder (2,1);if _ebfa !=nil {panic (_g .Wrap (_ebfa ,_ffcg ,"f\u0072\u0061\u006d\u0065\u0042\u0069\u0074\u006d\u0061\u0070"));};_cfdf ,_ebfa =NewWithData (50,22,_daadf );if _ebfa !=nil {panic (_g .Wrap (_ebfa ,_ffcg ,"i\u006d\u0061\u0067\u0065\u0042\u0069\u0074\u006d\u0061\u0070"));
+};};func Extract (roi _b .Rectangle ,src *Bitmap )(*Bitmap ,error ){_cfgc :=New (roi .Dx (),roi .Dy ());_bfbe :=roi .Min .X &0x07;_edece :=8-_bfbe ;_acfd :=uint (8-_cfgc .Width &0x07);_dcd :=src .GetByteIndex (roi .Min .X ,roi .Min .Y );_bgdd :=src .GetByteIndex (roi .Max .X -1,roi .Min .Y );
+_fcgdg :=_cfgc .RowStride ==_bgdd +1-_dcd ;var _adf int ;for _beg :=roi .Min .Y ;_beg < roi .Max .Y ;_beg ++{_ceag :=_dcd ;_age :=_adf ;switch {case _dcd ==_bgdd :_efba ,_bdbd :=src .GetByte (_ceag );if _bdbd !=nil {return nil ,_bdbd ;};_efba <<=uint (_bfbe );
+_bdbd =_cfgc .SetByte (_age ,_agaf (_acfd ,_efba ));if _bdbd !=nil {return nil ,_bdbd ;};case _bfbe ==0:for _ecdff :=_dcd ;_ecdff <=_bgdd ;_ecdff ++{_affd ,_daed :=src .GetByte (_ceag );if _daed !=nil {return nil ,_daed ;};_ceag ++;if _ecdff ==_bgdd &&_fcgdg {_affd =_agaf (_acfd ,_affd );
+};_daed =_cfgc .SetByte (_age ,_affd );if _daed !=nil {return nil ,_daed ;};_age ++;};default:_gffc :=_bfae (src ,_cfgc ,uint (_bfbe ),uint (_edece ),_acfd ,_dcd ,_bgdd ,_fcgdg ,_ceag ,_age );if _gffc !=nil {return nil ,_gffc ;};};_dcd +=src .RowStride ;
+_bgdd +=src .RowStride ;_adf +=_cfgc .RowStride ;};return _cfgc ,nil ;};func (_baec *Bitmaps )String ()string {_eaab :=_d .Builder {};for _ ,_cdbef :=range _baec .Values {_eaab .WriteString (_cdbef .String ());_eaab .WriteRune ('\n');};return _eaab .String ();
+};func _bced (_gdgf ,_ggede *Bitmap ,_fadc ,_eccf int )(_cffa error ){const _babd ="\u0073e\u0065d\u0066\u0069\u006c\u006c\u0042i\u006e\u0061r\u0079\u004c\u006f\u0077\u0034";var (_ggea ,_edde ,_dcdb ,_degg int ;_decaa ,_aged ,_adda ,_fcfe ,_bdgf ,_eabe ,_gebf byte ;
+);for _ggea =0;_ggea < _fadc ;_ggea ++{_dcdb =_ggea *_gdgf .RowStride ;_degg =_ggea *_ggede .RowStride ;for _edde =0;_edde < _eccf ;_edde ++{_decaa ,_cffa =_gdgf .GetByte (_dcdb +_edde );if _cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0066i\u0072\u0073\u0074\u0020\u0067\u0065t");
+};_aged ,_cffa =_ggede .GetByte (_degg +_edde );if _cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0067\u0065\u0074");};if _ggea > 0{_adda ,_cffa =_gdgf .GetByte (_dcdb -_gdgf .RowStride +_edde );if _cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0069\u0020\u003e \u0030");
+};_decaa |=_adda ;};if _edde > 0{_fcfe ,_cffa =_gdgf .GetByte (_dcdb +_edde -1);if _cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u006a\u0020\u003e \u0030");};_decaa |=_fcfe <<7;};_decaa &=_aged ;if _decaa ==0||(^_decaa )==0{if _cffa =_gdgf .SetByte (_dcdb +_edde ,_decaa );
+_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"b\u0074\u0020\u003d\u003d 0\u0020|\u007c\u0020\u0028\u005e\u0062t\u0029\u0020\u003d\u003d\u0020\u0030");};continue ;};for {_gebf =_decaa ;_decaa =(_decaa |(_decaa >>1)|(_decaa <<1))&_aged ;if (_decaa ^_gebf )==0{if _cffa =_gdgf .SetByte (_dcdb +_edde ,_decaa );
+_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0073\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0070\u0072\u0065\u0076 \u0062\u0079\u0074\u0065");};break ;};};};};for _ggea =_fadc -1;_ggea >=0;_ggea --{_dcdb =_ggea *_gdgf .RowStride ;_degg =_ggea *_ggede .RowStride ;
+for _edde =_eccf -1;_edde >=0;_edde --{if _decaa ,_cffa =_gdgf .GetByte (_dcdb +_edde );_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0072\u0065\u0076\u0065\u0072\u0073\u0065\u0020\u0066\u0069\u0072\u0073t\u0020\u0067\u0065\u0074");};if _aged ,_cffa =_ggede .GetByte (_degg +_edde );
+_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"r\u0065\u0076\u0065\u0072se\u0020g\u0065\u0074\u0020\u006d\u0061s\u006b\u0020\u0062\u0079\u0074\u0065");};if _ggea < _fadc -1{if _bdgf ,_cffa =_gdgf .GetByte (_dcdb +_gdgf .RowStride +_edde );_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0072\u0065v\u0065\u0072\u0073e\u0020\u0069\u0020\u003c\u0020\u0068\u0020\u002d\u0031");
+};_decaa |=_bdgf ;};if _edde < _eccf -1{if _eabe ,_cffa =_gdgf .GetByte (_dcdb +_edde +1);_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0072\u0065\u0076\u0065rs\u0065\u0020\u006a\u0020\u003c\u0020\u0077\u0070\u006c\u0020\u002d\u0020\u0031");};_decaa |=_eabe >>7;
+};_decaa &=_aged ;if _decaa ==0||(^_decaa )==0{if _cffa =_gdgf .SetByte (_dcdb +_edde ,_decaa );_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0073\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u006d\u0061\u0073k\u0065\u0064\u0020\u0062\u0079\u0074\u0065\u0020\u0066\u0061i\u006c\u0065\u0064");
+};continue ;};for {_gebf =_decaa ;_decaa =(_decaa |(_decaa >>1)|(_decaa <<1))&_aged ;if (_decaa ^_gebf )==0{if _cffa =_gdgf .SetByte (_dcdb +_edde ,_decaa );_cffa !=nil {return _g .Wrap (_cffa ,_babd ,"\u0072e\u0076\u0065\u0072\u0073e\u0020\u0073\u0065\u0074\u0074i\u006eg\u0020p\u0072\u0065\u0076\u0020\u0062\u0079\u0074e");
+};break ;};};};};return nil ;};func (_bcdg *BitmapsArray )AddBox (box *_b .Rectangle ){_bcdg .Boxes =append (_bcdg .Boxes ,box )};func _ebba (_cead ,_dega *Bitmap ,_cbbb ,_fdga int )(*Bitmap ,error ){const _acbfa ="\u0065\u0072\u006f\u0064\u0065\u0042\u0072\u0069\u0063\u006b";
+if _dega ==nil {return nil ,_g .Error (_acbfa ,"\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");};if _cbbb < 1||_fdga < 1{return nil ,_g .Error (_acbfa ,"\u0068\u0073\u0069\u007a\u0065\u0020\u0061\u006e\u0064\u0020\u0076\u0073\u0069\u007a\u0065\u0020\u0061\u0072e\u0020\u006e\u006f\u0074\u0020\u0067\u0072e\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u006fr\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0031");
+};if _cbbb ==1&&_fdga ==1{_agdg ,_cacc :=_bgff (_cead ,_dega );if _cacc !=nil {return nil ,_g .Wrap (_cacc ,_acbfa ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u0026\u0026 \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");
+};return _agdg ,nil ;};if _cbbb ==1||_fdga ==1{_fbbdf :=SelCreateBrick (_fdga ,_cbbb ,_fdga /2,_cbbb /2,SelHit );_gbbb ,_cfga :=_adbe (_cead ,_dega ,_fbbdf );if _cfga !=nil {return nil ,_g .Wrap (_cfga ,_acbfa ,"\u0068S\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031\u0020\u007c\u007c \u0076\u0053\u0069\u007a\u0065\u0020\u003d\u003d\u0020\u0031");
+};return _gbbb ,nil ;};_bffc :=SelCreateBrick (1,_cbbb ,0,_cbbb /2,SelHit );_dafe :=SelCreateBrick (_fdga ,1,_fdga /2,0,SelHit );_afbe ,_ffee :=_adbe (nil ,_dega ,_bffc );if _ffee !=nil {return nil ,_g .Wrap (_ffee ,_acbfa ,"\u0031s\u0074\u0020\u0065\u0072\u006f\u0064e");
+};_cead ,_ffee =_adbe (_cead ,_afbe ,_dafe );if _ffee !=nil {return nil ,_g .Wrap (_ffee ,_acbfa ,"\u0032n\u0064\u0020\u0065\u0072\u006f\u0064e");};return _cead ,nil ;};func (_deg *Bitmap )AddBorder (borderSize ,val int )(*Bitmap ,error ){if borderSize ==0{return _deg .Copy (),nil ;
+};_eafe ,_efe :=_deg .addBorderGeneral (borderSize ,borderSize ,borderSize ,borderSize ,val );if _efe !=nil {return nil ,_g .Wrap (_efe ,"\u0041d\u0064\u0042\u006f\u0072\u0064\u0065r","");};return _eafe ,nil ;};type SizeComparison int ;type RasterOperator int ;
+func (_aedc *Bitmaps )AddBitmap (bm *Bitmap ){_aedc .Values =append (_aedc .Values ,bm )};func _acbb (_ffb *Bitmap ,_fcg ,_dgc int )(*Bitmap ,error ){const _bf ="e\u0078\u0070\u0061\u006edB\u0069n\u0061\u0072\u0079\u0052\u0065p\u006c\u0069\u0063\u0061\u0074\u0065";
+if _ffb ==nil {return nil ,_g .Error (_bf ,"\u0073o\u0075r\u0063\u0065\u0020\u006e\u006ft\u0020\u0064e\u0066\u0069\u006e\u0065\u0064");};if _fcg <=0||_dgc <=0{return nil ,_g .Error (_bf ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0063\u0061l\u0065\u0020\u0066\u0061\u0063\u0074\u006f\u0072\u003a\u0020<\u003d\u0020\u0030");
+};if _fcg ==_dgc {if _fcg ==1{_ab ,_bbf :=_bgff (nil ,_ffb );if _bbf !=nil {return nil ,_g .Wrap (_bbf ,_bf ,"\u0078\u0046\u0061\u0063\u0074\u0020\u003d\u003d\u0020y\u0046\u0061\u0063\u0074");};return _ab ,nil ;};if _fcg ==2||_fcg ==4||_fcg ==8{_cbg ,_gcf :=_ca (_ffb ,_fcg );
+if _gcf !=nil {return nil ,_g .Wrap (_gcf ,_bf ,"\u0078\u0046a\u0063\u0074\u0020i\u006e\u0020\u007b\u0032\u002c\u0034\u002c\u0038\u007d");};return _cbg ,nil ;};};_fccb :=_fcg *_ffb .Width ;_cea :=_dgc *_ffb .Height ;_dfa :=New (_fccb ,_cea );_bfa :=_dfa .RowStride ;
+var (_afc ,_fa ,_cag ,_bdf ,_bdfc int ;_gaf byte ;_afcg error ;);for _fa =0;_fa < _ffb .Height ;_fa ++{_afc =_dgc *_fa *_bfa ;for _cag =0;_cag < _ffb .Width ;_cag ++{if _cbd :=_ffb .GetPixel (_cag ,_fa );_cbd {_bdfc =_fcg *_cag ;for _bdf =0;_bdf < _fcg ;
+_bdf ++{_dfa .setBit (_afc *8+_bdfc +_bdf );};};};for _bdf =1;_bdf < _dgc ;_bdf ++{_caf :=_afc +_bdf *_bfa ;for _ecg :=0;_ecg < _bfa ;_ecg ++{if _gaf ,_afcg =_dfa .GetByte (_afc +_ecg );_afcg !=nil {return nil ,_g .Wrapf (_afcg ,_bf ,"\u0072\u0065\u0070\u006cic\u0061\u0074\u0069\u006e\u0067\u0020\u006c\u0069\u006e\u0065\u003a\u0020\u0027\u0025d\u0027",_bdf );
+};if _afcg =_dfa .SetByte (_caf +_ecg ,_gaf );_afcg !=nil {return nil ,_g .Wrap (_afcg ,_bf ,"\u0053\u0065\u0074\u0074in\u0067\u0020\u0062\u0079\u0074\u0065\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};};};};return _dfa ,nil ;};func (_dbdg *Bitmap )GetVanillaData ()[]byte {if _dbdg .Color ==Chocolate {_dbdg .inverseData ();
+};return _dbdg .Data ;};func (_gaac *Bitmaps )selectByIndicator (_ccfb *_db .NumSlice )(_ddeed *Bitmaps ,_beae error ){const _edcbe ="\u0042i\u0074\u006d\u0061\u0070s\u002e\u0073\u0065\u006c\u0065c\u0074B\u0079I\u006e\u0064\u0069\u0063\u0061\u0074\u006fr";
+if _gaac ==nil {return nil ,_g .Error (_edcbe ,"\u0027\u0062\u0027 b\u0069\u0074\u006d\u0061\u0070\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if _ccfb ==nil {return nil ,_g .Error (_edcbe ,"'\u006e\u0061\u0027\u0020\u0069\u006ed\u0069\u0063\u0061\u0074\u006f\u0072\u0073\u0020\u006eo\u0074\u0020\u0064e\u0066i\u006e\u0065\u0064");
+};if len (_gaac .Values )==0{return _gaac ,nil ;};if len (*_ccfb )!=len (_gaac .Values ){return nil ,_g .Errorf (_edcbe ,"\u006ea\u0020\u006ce\u006e\u0067\u0074\u0068:\u0020\u0025\u0064,\u0020\u0069\u0073\u0020\u0064\u0069\u0066\u0066\u0065re\u006e\u0074\u0020t\u0068\u0061n\u0020\u0062\u0069\u0074\u006d\u0061p\u0073\u003a \u0025\u0064",len (*_ccfb ),len (_gaac .Values ));
+};var _fdcg ,_ebdg ,_ccab int ;for _ebdg =0;_ebdg < len (*_ccfb );_ebdg ++{if _fdcg ,_beae =_ccfb .GetInt (_ebdg );_beae !=nil {return nil ,_g .Wrap (_beae ,_edcbe ,"f\u0069\u0072\u0073\u0074\u0020\u0063\u0068\u0065\u0063\u006b");};if _fdcg ==1{_ccab ++;
+};};if _ccab ==len (_gaac .Values ){return _gaac ,nil ;};_ddeed =&Bitmaps {};_egfee :=len (_gaac .Values )==len (_gaac .Boxes );for _ebdg =0;_ebdg < len (*_ccfb );_ebdg ++{if _fdcg =int ((*_ccfb )[_ebdg ]);_fdcg ==0{continue ;};_ddeed .Values =append (_ddeed .Values ,_gaac .Values [_ebdg ]);
+if _egfee {_ddeed .Boxes =append (_ddeed .Boxes ,_gaac .Boxes [_ebdg ]);};};return _ddeed ,nil ;};const (ComponentConn Component =iota ;ComponentCharacters ;ComponentWords ;);func TstPSymbol (t *_f .T )*Bitmap {t .Helper ();_adeae :=New (5,8);_e .NoError (t ,_adeae .SetPixel (0,0,1));
+_e .NoError (t ,_adeae .SetPixel (1,0,1));_e .NoError (t ,_adeae .SetPixel (2,0,1));_e .NoError (t ,_adeae .SetPixel (3,0,1));_e .NoError (t ,_adeae .SetPixel (4,1,1));_e .NoError (t ,_adeae .SetPixel (0,1,1));_e .NoError (t ,_adeae .SetPixel (4,2,1));
+_e .NoError (t ,_adeae .SetPixel (0,2,1));_e .NoError (t ,_adeae .SetPixel (4,3,1));_e .NoError (t ,_adeae .SetPixel (0,3,1));_e .NoError (t ,_adeae .SetPixel (0,4,1));_e .NoError (t ,_adeae .SetPixel (1,4,1));_e .NoError (t ,_adeae .SetPixel (2,4,1));
+_e .NoError (t ,_adeae .SetPixel (3,4,1));_e .NoError (t ,_adeae .SetPixel (0,5,1));_e .NoError (t ,_adeae .SetPixel (0,6,1));_e .NoError (t ,_adeae .SetPixel (0,7,1));return _adeae ;};func _dff (_ff ,_ccb *Bitmap )(_dfb error ){const _fdd ="\u0065\u0078\u0070\u0061nd\u0042\u0069\u006e\u0061\u0072\u0079\u0046\u0061\u0063\u0074\u006f\u0072\u0038";
+_ga :=_ccb .RowStride ;_efg :=_ff .RowStride ;var _fb ,_gee ,_gc ,_bge ,_ea int ;for _gc =0;_gc < _ccb .Height ;_gc ++{_fb =_gc *_ga ;_gee =8*_gc *_efg ;for _bge =0;_bge < _ga ;_bge ++{if _dfb =_ff .setEightBytes (_gee +_bge *8,_aebe [_ccb .Data [_fb +_bge ]]);
+_dfb !=nil {return _g .Wrap (_dfb ,_fdd ,"");};};for _ea =1;_ea < 8;_ea ++{for _bge =0;_bge < _efg ;_bge ++{if _dfb =_ff .SetByte (_gee +_ea *_efg +_bge ,_ff .Data [_gee +_bge ]);_dfb !=nil {return _g .Wrap (_dfb ,_fdd ,"");};};};};return nil ;};const (_ LocationFilter =iota ;
+LocSelectWidth ;LocSelectHeight ;LocSelectXVal ;LocSelectYVal ;LocSelectIfEither ;LocSelectIfBoth ;);func _ccgc (_eabc ,_bef *Bitmap ,_bcfe ,_bde ,_bbbf ,_egcc ,_bbcb ,_ggbfc ,_bbdf ,_ccfa int ,_gcaa CombinationOperator ,_gaea int )error {var _geaab int ;
+_gecf :=func (){_geaab ++;_bbbf +=_bef .RowStride ;_egcc +=_eabc .RowStride ;_bbcb +=_eabc .RowStride };for _geaab =_bcfe ;_geaab < _bde ;_gecf (){var _fccc uint16 ;_edac :=_bbbf ;for _bgd :=_egcc ;_bgd <=_bbcb ;_bgd ++{_dgdeg ,_fgec :=_bef .GetByte (_edac );
+if _fgec !=nil {return _fgec ;};_gbebb ,_fgec :=_eabc .GetByte (_bgd );if _fgec !=nil {return _fgec ;};_fccc =(_fccc |(uint16 (_gbebb )&0xff))<<uint (_ccfa );_gbebb =byte (_fccc >>8);if _fgec =_bef .SetByte (_edac ,_bagb (_dgdeg ,_gbebb ,_gcaa ));_fgec !=nil {return _fgec ;
+};_edac ++;_fccc <<=uint (_bbdf );if _bgd ==_bbcb {_gbebb =byte (_fccc >>(8-uint8 (_ccfa )));if _gaea !=0{_gbebb =_agaf (uint (8+_ggbfc ),_gbebb );};_dgdeg ,_fgec =_bef .GetByte (_edac );if _fgec !=nil {return _fgec ;};if _fgec =_bef .SetByte (_edac ,_bagb (_dgdeg ,_gbebb ,_gcaa ));
+_fgec !=nil {return _fgec ;};};};};return nil ;};func (_ccfg *Bitmaps )GetBitmap (i int )(*Bitmap ,error ){const _fecd ="\u0047e\u0074\u0042\u0069\u0074\u006d\u0061p";if _ccfg ==nil {return nil ,_g .Error (_fecd ,"p\u0072o\u0076\u0069\u0064\u0065\u0064\u0020\u006e\u0069l\u0020\u0042\u0069\u0074ma\u0070\u0073");
+};if i > len (_ccfg .Values )-1{return nil ,_g .Errorf (_fecd ,"\u0069n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006fu\u0074\u0020\u006f\u0066\u0020\u0072\u0061\u006e\u0067\u0065",i );};return _ccfg .Values [i ],nil ;};func (_egab *ClassedPoints )SortByY (){_egab ._bdde =_egab .ySortFunction ();
+_dd .Sort (_egab )};func (_ffbc *Bitmap )ToImage ()_b .Image {_dfff ,_ffg :=_cg .NewImage (_ffbc .Width ,_ffbc .Height ,1,1,_ffbc .Data ,nil ,nil );if _ffg !=nil {_de .Log .Error ("\u0043\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020j\u0062\u0069\u0067\u0032\u002e\u0042\u0069\u0074m\u0061p\u0020\u0074\u006f\u0020\u0069\u006d\u0061\u0067\u0065\u0075\u0074\u0069\u006c\u002e\u0049\u006d\u0061\u0067e\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_ffg );
+};return _dfff ;};func _bcb ()(_dfd [256]uint64 ){for _baa :=0;_baa < 256;_baa ++{if _baa &0x01!=0{_dfd [_baa ]|=0xff;};if _baa &0x02!=0{_dfd [_baa ]|=0xff00;};if _baa &0x04!=0{_dfd [_baa ]|=0xff0000;};if _baa &0x08!=0{_dfd [_baa ]|=0xff000000;};if _baa &0x10!=0{_dfd [_baa ]|=0xff00000000;
+};if _baa &0x20!=0{_dfd [_baa ]|=0xff0000000000;};if _baa &0x40!=0{_dfd [_baa ]|=0xff000000000000;};if _baa &0x80!=0{_dfd [_baa ]|=0xff00000000000000;};};return _dfd ;};func (_daga *Bitmaps )GroupByWidth ()(*BitmapsArray ,error ){const _eagab ="\u0047\u0072\u006fu\u0070\u0042\u0079\u0057\u0069\u0064\u0074\u0068";
+if len (_daga .Values )==0{return nil ,_g .Error (_eagab ,"\u006eo\u0020v\u0061\u006c\u0075\u0065\u0073 \u0070\u0072o\u0076\u0069\u0064\u0065\u0064");};_egfe :=&BitmapsArray {};_daga .SortByWidth ();_dged :=-1;_bfee :=-1;for _ccega :=0;_ccega < len (_daga .Values );
+_ccega ++{_deeb :=_daga .Values [_ccega ].Width ;if _deeb > _dged {_dged =_deeb ;_bfee ++;_egfe .Values =append (_egfe .Values ,&Bitmaps {});};_egfe .Values [_bfee ].AddBitmap (_daga .Values [_ccega ]);};return _egfe ,nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go
new file mode 100644
index 0000000..d96d7a5
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/arithmetic/arithmetic.go
@@ -0,0 +1,36 @@
+//
+// 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 arithmetic ;import (_a "fmt";_b "github.com/unidoc/unipdf/v4/common";_fe "github.com/unidoc/unipdf/v4/internal/bitwise";_fc "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_f "io";_e "strings";);var (_fb =[][4]uint32 {{0x5601,1,1,1},{0x3401,2,6,0},{0x1801,3,9,0},{0x0AC1,4,12,0},{0x0521,5,29,0},{0x0221,38,33,0},{0x5601,7,6,1},{0x5401,8,14,0},{0x4801,9,14,0},{0x3801,10,14,0},{0x3001,11,17,0},{0x2401,12,18,0},{0x1C01,13,20,0},{0x1601,29,21,0},{0x5601,15,14,1},{0x5401,16,14,0},{0x5101,17,15,0},{0x4801,18,16,0},{0x3801,19,17,0},{0x3401,20,18,0},{0x3001,21,19,0},{0x2801,22,19,0},{0x2401,23,20,0},{0x2201,24,21,0},{0x1C01,25,22,0},{0x1801,26,23,0},{0x1601,27,24,0},{0x1401,28,25,0},{0x1201,29,26,0},{0x1101,30,27,0},{0x0AC1,31,28,0},{0x09C1,32,29,0},{0x08A1,33,30,0},{0x0521,34,31,0},{0x0441,35,32,0},{0x02A1,36,33,0},{0x0221,37,34,0},{0x0141,38,35,0},{0x0111,39,36,0},{0x0085,40,37,0},{0x0049,41,38,0},{0x0025,42,39,0},{0x0015,43,40,0},{0x0009,44,41,0},{0x0005,45,42,0},{0x0001,45,43,0},{0x5601,46,46,0}};
+);func (_ade *Decoder )DecodeBit (stats *DecoderStats )(int ,error ){var (_fac int ;_dd =_fb [stats .cx ()][0];_df =int32 (stats .cx ()););defer func (){_ade ._fcg ++}();_ade ._cb -=_dd ;if (_ade ._d >>16)< uint64 (_dd ){_fac =_ade .lpsExchange (stats ,_df ,_dd );
+if _cd :=_ade .renormalize ();_cd !=nil {return 0,_cd ;};}else {_ade ._d -=uint64 (_dd )<<16;if (_ade ._cb &0x8000)==0{_fac =_ade .mpsExchange (stats ,_df );if _ab :=_ade .renormalize ();_ab !=nil {return 0,_ab ;};}else {_fac =int (stats .getMps ());};
+};return _fac ,nil ;};func (_de *Decoder )DecodeInt (stats *DecoderStats )(int32 ,error ){var (_dee ,_dg int32 ;_cde ,_edf ,_ge int ;_abc error ;);if stats ==nil {stats =NewStats (512,1);};_de ._bb =1;_edf ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;
+};_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );
+if _abc !=nil {return 0,_abc ;};if _cde ==1{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};if _cde ==1{_ge =32;_dg =4436;}else {_ge =12;_dg =340;};}else {_ge =8;_dg =84;};}else {_ge =6;_dg =20;};}else {_ge =4;_dg =4;};}else {_ge =2;
+_dg =0;};for _dga :=0;_dga < _ge ;_dga ++{_cde ,_abc =_de .decodeIntBit (stats );if _abc !=nil {return 0,_abc ;};_dee =(_dee <<1)|int32 (_cde );};_dee +=_dg ;if _edf ==0{return _dee ,nil ;}else if _edf ==1&&_dee > 0{return -_dee ,nil ;};return 0,_fc .ErrOOB ;
+};func (_ggg *DecoderStats )Reset (){for _ca :=0;_ca < len (_ggg ._dfg );_ca ++{_ggg ._dfg [_ca ]=0;_ggg ._bad [_ca ]=0;};};func (_cc *Decoder )mpsExchange (_dde *DecoderStats ,_ccf int32 )int {_gb :=_dde ._bad [_dde ._ba ];if _cc ._cb < _fb [_ccf ][0]{if _fb [_ccf ][3]==1{_dde .toggleMps ();
+};_dde .setEntry (int (_fb [_ccf ][2]));return int (1-_gb );};_dde .setEntry (int (_fb [_ccf ][1]));return int (_gb );};type DecoderStats struct{_ba int32 ;_fba int32 ;_dfg []byte ;_bad []byte ;};func (_ef *Decoder )init ()error {_ef ._eg =_ef ._aa .AbsolutePosition ();
+_cbf ,_ff :=_ef ._aa .ReadByte ();if _ff !=nil {_b .Log .Debug ("B\u0075\u0066\u0066\u0065\u0072\u0030 \u0072\u0065\u0061\u0064\u0042\u0079\u0074\u0065\u0020f\u0061\u0069\u006ce\u0064.\u0020\u0025\u0076",_ff );return _ff ;};_ef ._ad =_cbf ;_ef ._d =uint64 (_cbf )<<16;
+if _ff =_ef .readByte ();_ff !=nil {return _ff ;};_ef ._d <<=7;_ef ._fa -=7;_ef ._cb =0x8000;_ef ._fcg ++;return nil ;};type Decoder struct{ContextSize []uint32 ;ReferedToContextSize []uint32 ;_aa *_fe .Reader ;_ad uint8 ;_d uint64 ;_cb uint32 ;_bb int64 ;
+_fa int32 ;_fcg int32 ;_eg int64 ;};func (_cg *Decoder )DecodeIAID (codeLen uint64 ,stats *DecoderStats )(int64 ,error ){_cg ._bb =1;var _ee uint64 ;for _ee =0;_ee < codeLen ;_ee ++{stats .SetIndex (int32 (_cg ._bb ));_feg ,_adc :=_cg .DecodeBit (stats );
+if _adc !=nil {return 0,_adc ;};_cg ._bb =(_cg ._bb <<1)|int64 (_feg );};_ac :=_cg ._bb -(1<<codeLen );return _ac ,nil ;};func (_eff *Decoder )decodeIntBit (_abd *DecoderStats )(int ,error ){_abd .SetIndex (int32 (_eff ._bb ));_ag ,_bd :=_eff .DecodeBit (_abd );
+if _bd !=nil {_b .Log .Debug ("\u0041\u0072\u0069\u0074\u0068\u006d\u0065t\u0069\u0063\u0044e\u0063\u006f\u0064e\u0072\u0020'\u0064\u0065\u0063\u006f\u0064\u0065I\u006etB\u0069\u0074\u0027\u002d\u003e\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0042\u0069\u0074\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bd );
+return _ag ,_bd ;};if _eff ._bb < 256{_eff ._bb =((_eff ._bb <<uint64 (1))|int64 (_ag ))&0x1ff;}else {_eff ._bb =(((_eff ._bb <<uint64 (1)|int64 (_ag ))&511)|256)&0x1ff;};return _ag ,nil ;};func (_ea *DecoderStats )Overwrite (dNew *DecoderStats ){for _cgb :=0;
+_cgb < len (_ea ._dfg );_cgb ++{_ea ._dfg [_cgb ]=dNew ._dfg [_cgb ];_ea ._bad [_cgb ]=dNew ._bad [_cgb ];};};func (_cgg *Decoder )lpsExchange (_gbb *DecoderStats ,_ddf int32 ,_bbf uint32 )int {_bf :=_gbb .getMps ();if _cgg ._cb < _bbf {_gbb .setEntry (int (_fb [_ddf ][1]));
+_cgg ._cb =_bbf ;return int (_bf );};if _fb [_ddf ][3]==1{_gbb .toggleMps ();};_gbb .setEntry (int (_fb [_ddf ][2]));_cgg ._cb =_bbf ;return int (1-_bf );};func (_eec *Decoder )readByte ()error {if _eec ._aa .AbsolutePosition ()> _eec ._eg {if _ ,_eda :=_eec ._aa .Seek (-1,_f .SeekCurrent );
+_eda !=nil {return _eda ;};};_dfb ,_db :=_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;if _eec ._ad ==0xFF{_abe ,_bc :=_eec ._aa .ReadByte ();if _bc !=nil {return _bc ;};if _abe > 0x8F{_eec ._d +=0xFF00;_eec ._fa =8;if _ ,_gd :=_eec ._aa .Seek (-2,_f .SeekCurrent );
+_gd !=nil {return _gd ;};}else {_eec ._d +=uint64 (_abe )<<9;_eec ._fa =7;};}else {_dfb ,_db =_eec ._aa .ReadByte ();if _db !=nil {return _db ;};_eec ._ad =_dfb ;_eec ._d +=uint64 (_eec ._ad )<<8;_eec ._fa =8;};_eec ._d &=0xFFFFFFFFFF;return nil ;};func (_efg *DecoderStats )getMps ()byte {return _efg ._bad [_efg ._ba ]};
+func (_dba *DecoderStats )cx ()byte {return _dba ._dfg [_dba ._ba ]};func (_cdb *DecoderStats )Copy ()*DecoderStats {_bg :=&DecoderStats {_fba :_cdb ._fba ,_dfg :make ([]byte ,_cdb ._fba )};copy (_bg ._dfg ,_cdb ._dfg );return _bg ;};func (_cbc *DecoderStats )toggleMps (){_cbc ._bad [_cbc ._ba ]^=1};
+func (_eea *DecoderStats )SetIndex (index int32 ){_eea ._ba =index };func New (r *_fe .Reader )(*Decoder ,error ){_ed :=&Decoder {_aa :r ,ContextSize :[]uint32 {16,13,10,10},ReferedToContextSize :[]uint32 {13,10}};if _g :=_ed .init ();_g !=nil {return nil ,_g ;
+};return _ed ,nil ;};func (_cbe *Decoder )renormalize ()error {for {if _cbe ._fa ==0{if _egg :=_cbe .readByte ();_egg !=nil {return _egg ;};};_cbe ._cb <<=1;_cbe ._d <<=1;_cbe ._fa --;if (_cbe ._cb &0x8000)!=0{break ;};};_cbe ._d &=0xffffffff;return nil ;
+};func (_dbg *DecoderStats )String ()string {_deb :=&_e .Builder {};_a .Fprintf (_deb ,"S\u0074\u0061\u0074\u0073\u003a\u0020\u0020\u0025\u0064\u000a",len (_dbg ._dfg ));for _ce ,_ged :=range _dbg ._dfg {if _ged !=0{_a .Fprintf (_deb ,"N\u006f\u0074\u0020\u007aer\u006f \u0061\u0074\u003a\u0020\u0025d\u0020\u002d\u0020\u0025\u0064\u000a",_ce ,_ged );
+};};return _deb .String ();};func NewStats (contextSize int32 ,index int32 )*DecoderStats {return &DecoderStats {_ba :index ,_fba :contextSize ,_dfg :make ([]byte ,contextSize ),_bad :make ([]byte ,contextSize )};};func (_eaa *DecoderStats )setEntry (_faf int ){_ga :=byte (_faf &0x7f);
+_eaa ._dfg [_eaa ._ba ]=_ga }; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/decoder/decoder.go b/unipdf/internal/jbig2/decoder/decoder.go
new file mode 100644
index 0000000..6642ff3
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/decoder.go
@@ -0,0 +1,22 @@
+//
+// 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 decoder ;import (_b "github.com/unidoc/unipdf/v4/internal/bitwise";_df "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_c "github.com/unidoc/unipdf/v4/internal/jbig2/document";_e "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_d "image";
+);func (_eg *Decoder )DecodePageImage (pageNumber int )(_d .Image ,error ){const _ca ="\u0064\u0065\u0063od\u0065\u0072\u002e\u0044\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0067\u0065\u0049\u006d\u0061\u0067\u0065";_fa ,_ae :=_eg .decodePageImage (pageNumber );
+if _ae !=nil {return nil ,_e .Wrap (_ae ,_ca ,"");};return _fa ,nil ;};func (_ce *Decoder )decodePage (_be int )([]byte ,error ){const _fb ="\u0064\u0065\u0063\u006f\u0064\u0065\u0050\u0061\u0067\u0065";if _be < 0{return nil ,_e .Errorf (_fb ,"\u0069n\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0067\u0065 \u006eu\u006db\u0065\u0072\u003a\u0020\u0027\u0025\u0064'",_be );
+};if _be > int (_ce ._af .NumberOfPages ){return nil ,_e .Errorf (_fb ,"p\u0061\u0067\u0065\u003a\u0020\u0027%\u0064\u0027\u0020\u006e\u006f\u0074 \u0066\u006f\u0075\u006e\u0064\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0064\u0065\u0063\u006f\u0064e\u0072",_be );
+};_aeb ,_fg :=_ce ._af .GetPage (_be );if _fg !=nil {return nil ,_e .Wrap (_fg ,_fb ,"");};_dccg ,_fg :=_aeb .GetBitmap ();if _fg !=nil {return nil ,_e .Wrap (_fg ,_fb ,"");};_dccg .InverseData ();if !_ce ._ge .UnpaddedData {return _dccg .Data ,nil ;};
+return _dccg .GetUnpaddedData ();};func (_dcc *Decoder )PageNumber ()(int ,error ){const _cd ="\u0044e\u0063o\u0064\u0065\u0072\u002e\u0050a\u0067\u0065N\u0075\u006d\u0062\u0065\u0072";if _dcc ._af ==nil {return 0,_e .Error (_cd ,"d\u0065\u0063\u006f\u0064\u0065\u0072 \u006e\u006f\u0074\u0020\u0069\u006e\u0069\u0074\u0069a\u006c\u0069\u007ae\u0064 \u0079\u0065\u0074");
+};return int (_dcc ._af .NumberOfPages ),nil ;};func (_dc *Decoder )DecodeNextPage ()([]byte ,error ){_dc ._g ++;_gea :=_dc ._g ;return _dc .decodePage (_gea );};func (_eb *Decoder )decodePageImage (_fc int )(_d .Image ,error ){const _gd ="\u0064e\u0063o\u0064\u0065\u0050\u0061\u0067\u0065\u0049\u006d\u0061\u0067\u0065";
+if _fc < 0{return nil ,_e .Errorf (_gd ,"\u0069n\u0076\u0061\u006c\u0069d\u0020\u0070\u0061\u0067\u0065 \u006eu\u006db\u0065\u0072\u003a\u0020\u0027\u0025\u0064'",_fc );};if _fc > int (_eb ._af .NumberOfPages ){return nil ,_e .Errorf (_gd ,"p\u0061\u0067\u0065\u003a\u0020\u0027%\u0064\u0027\u0020\u006e\u006f\u0074 \u0066\u006f\u0075\u006e\u0064\u0020\u0069n\u0020\u0074\u0068\u0065\u0020\u0064\u0065\u0063\u006f\u0064e\u0072",_fc );
+};_ebe ,_de :=_eb ._af .GetPage (_fc );if _de !=nil {return nil ,_e .Wrap (_de ,_gd ,"");};_egb ,_de :=_ebe .GetBitmap ();if _de !=nil {return nil ,_e .Wrap (_de ,_gd ,"");};_egb .InverseData ();return _egb .ToImage (),nil ;};func Decode (input []byte ,parameters Parameters ,globals *_c .Globals )(*Decoder ,error ){_fge :=_b .NewReader (input );
+_ga ,_ab :=_c .DecodeDocument (_fge ,globals );if _ab !=nil {return nil ,_ab ;};return &Decoder {_aa :_fge ,_af :_ga ,_ge :parameters },nil ;};func (_f *Decoder )DecodePage (pageNumber int )([]byte ,error ){return _f .decodePage (pageNumber )};type Parameters struct{UnpaddedData bool ;
+Color _df .Color ;};type Decoder struct{_aa *_b .Reader ;_af *_c .Document ;_g int ;_ge Parameters ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/decoder/huffman/huffman.go b/unipdf/internal/jbig2/decoder/huffman/huffman.go
new file mode 100644
index 0000000..49952a7
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/huffman/huffman.go
@@ -0,0 +1,43 @@
+//
+// 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 huffman ;import (_d "errors";_cf "fmt";_bf "github.com/unidoc/unipdf/v4/internal/bitwise";_c "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_a "math";_f "strings";);func (_cfg *ValueNode )String ()string {return _cf .Sprintf ("\u0025\u0064\u002f%\u0064",_cfg ._ae ,_cfg ._afc );
+};func (_ef *OutOfBandNode )Decode (r *_bf .Reader )(int64 ,error ){return 0,_c .ErrOOB };func (_af *FixedSizeTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_ebg :=range codeTable {_bb :=_af ._bd .append (_ebg );if _bb !=nil {return _bb ;
+};};return nil ;};func (_db *EncodedTable )Decode (r *_bf .Reader )(int64 ,error ){return _db ._g .Decode (r )};type ValueNode struct{_ae int32 ;_afc int32 ;_cab bool ;};func NewCode (prefixLength ,rangeLength ,rangeLow int32 ,isLowerRange bool )*Code {return &Code {_gfde :prefixLength ,_fgge :rangeLength ,_cbb :rangeLow ,_agc :isLowerRange ,_dc :-1};
+};func _fa (_cgd int32 )*InternalNode {return &InternalNode {_cc :_cgd }};type EncodedTable struct{BasicTabler ;_g *InternalNode ;};func (_eee *FixedSizeTable )RootNode ()*InternalNode {return _eee ._bd };func (_gcc *InternalNode )String ()string {_ba :=&_f .Builder {};
+_ba .WriteString ("\u000a");_gcc .pad (_ba );_ba .WriteString ("\u0030\u003a\u0020");_ba .WriteString (_gcc ._df .String ()+"\u000a");_gcc .pad (_ba );_ba .WriteString ("\u0031\u003a\u0020");_ba .WriteString (_gcc ._gg .String ()+"\u000a");return _ba .String ();
+};var _cgf =[][][]int32 {{{1,4,0},{2,8,16},{3,16,272},{3,32,65808}},{{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{6,32,75},{6,-1,0}},{{8,8,-256},{1,0,0},{2,0,1},{3,0,2},{4,3,3},{5,6,11},{8,32,-257,999},{7,32,75},{6,-1,0}},{{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{5,32,76}},{{7,8,-255},{1,0,1},{2,0,2},{3,0,3},{4,3,4},{5,6,12},{7,32,-256,999},{6,32,76}},{{5,10,-2048},{4,9,-1024},{4,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{2,7,0},{3,7,128},{3,8,256},{4,9,512},{4,10,1024},{6,32,-2049,999},{6,32,2048}},{{4,9,-1024},{3,8,-512},{4,7,-256},{5,6,-128},{5,5,-64},{4,5,-32},{4,5,0},{5,5,32},{5,6,64},{4,7,128},{3,8,256},{3,9,512},{3,10,1024},{5,32,-1025,999},{5,32,2048}},{{8,3,-15},{9,1,-7},{8,1,-5},{9,0,-3},{7,0,-2},{4,0,-1},{2,1,0},{5,0,2},{6,0,3},{3,4,4},{6,1,20},{4,4,22},{4,5,38},{5,6,70},{5,7,134},{6,7,262},{7,8,390},{6,10,646},{9,32,-16,999},{9,32,1670},{2,-1,0}},{{8,4,-31},{9,2,-15},{8,2,-11},{9,1,-7},{7,1,-5},{4,1,-3},{3,1,-1},{3,1,1},{5,1,3},{6,1,5},{3,5,7},{6,2,39},{4,5,43},{4,6,75},{5,7,139},{5,8,267},{6,8,523},{7,9,779},{6,11,1291},{9,32,-32,999},{9,32,3339},{2,-1,0}},{{7,4,-21},{8,0,-5},{7,0,-4},{5,0,-3},{2,2,-2},{5,0,2},{6,0,3},{7,0,4},{8,0,5},{2,6,6},{5,5,70},{6,5,102},{6,6,134},{6,7,198},{6,8,326},{6,9,582},{6,10,1094},{7,11,2118},{8,32,-22,999},{8,32,4166},{2,-1,0}},{{1,0,1},{2,1,2},{4,0,4},{4,1,5},{5,1,7},{5,2,9},{6,2,13},{7,2,17},{7,3,21},{7,4,29},{7,5,45},{7,6,77},{7,32,141}},{{1,0,1},{2,0,2},{3,1,3},{5,0,5},{5,1,6},{6,1,8},{7,0,10},{7,1,11},{7,2,13},{7,3,17},{7,4,25},{8,5,41},{8,32,73}},{{1,0,1},{3,0,2},{4,0,3},{5,0,4},{4,1,5},{3,3,7},{6,1,15},{6,2,17},{6,3,21},{6,4,29},{6,5,45},{7,6,77},{7,32,141}},{{3,0,-2},{3,0,-1},{1,0,0},{3,0,1},{3,0,2}},{{7,4,-24},{6,2,-8},{5,1,-4},{4,0,-2},{3,0,-1},{1,0,0},{3,0,1},{4,0,2},{5,1,3},{6,2,5},{7,4,9},{7,32,-25,999},{7,32,25}}};
+type Tabler interface{Decode (_bdg *_bf .Reader )(int64 ,error );InitTree (_cda []*Code )error ;String ()string ;RootNode ()*InternalNode ;};var _ Node =&OutOfBandNode {};func GetStandardTable (number int )(Tabler ,error ){if number <=0||number > len (_ceb ){return nil ,_d .New ("\u0049n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
+};_ebgc :=_ceb [number -1];if _ebgc ==nil {var _baf error ;_ebgc ,_baf =_ea (_cgf [number -1]);if _baf !=nil {return nil ,_baf ;};_ceb [number -1]=_ebgc ;};return _ebgc ,nil ;};func _fcc (_bg ,_eea int32 )string {var _abc int32 ;_ggb :=make ([]rune ,_eea );
+for _ebd :=int32 (1);_ebd <=_eea ;_ebd ++{_abc =_bg >>uint (_eea -_ebd )&1;if _abc !=0{_ggb [_ebd -1]='1';}else {_ggb [_ebd -1]='0';};};return string (_ggb );};func (_e *EncodedTable )String ()string {return _e ._g .String ()+"\u000a"};func _edf (_bagf ,_efa int32 )int32 {if _bagf > _efa {return _bagf ;
+};return _efa ;};func _abg (_fgd []*Code ){var _cgdf int32 ;for _ ,_cdd :=range _fgd {_cgdf =_edf (_cgdf ,_cdd ._gfde );};_cfa :=make ([]int32 ,_cgdf +1);for _ ,_bbc :=range _fgd {_cfa [_bbc ._gfde ]++;};var _acf int32 ;_gacd :=make ([]int32 ,len (_cfa )+1);
+_cfa [0]=0;for _bac :=int32 (1);_bac <=int32 (len (_cfa ));_bac ++{_gacd [_bac ]=(_gacd [_bac -1]+(_cfa [_bac -1]))<<1;_acf =_gacd [_bac ];for _ ,_eeaa :=range _fgd {if _eeaa ._gfde ==_bac {_eeaa ._dc =_acf ;_acf ++;};};};};func (_ad *FixedSizeTable )Decode (r *_bf .Reader )(int64 ,error ){return _ad ._bd .Decode (r )};
+func _gfd (_gcbe *Code )*ValueNode {return &ValueNode {_ae :_gcbe ._fgge ,_afc :_gcbe ._cbb ,_cab :_gcbe ._agc };};func _ff (_ec *Code )*OutOfBandNode {return &OutOfBandNode {}};func (_ab *OutOfBandNode )String ()string {return _cf .Sprintf ("\u0025\u0030\u00364\u0062",int64 (_a .MaxInt64 ));
+};func NewFixedSizeTable (codeTable []*Code )(*FixedSizeTable ,error ){_fgb :=&FixedSizeTable {_bd :&InternalNode {}};if _ee :=_fgb .InitTree (codeTable );_ee !=nil {return nil ,_ee ;};return _fgb ,nil ;};type FixedSizeTable struct{_bd *InternalNode };
+func (_gac *StandardTable )RootNode ()*InternalNode {return _gac ._gbe };type Node interface{Decode (_caa *_bf .Reader )(int64 ,error );String ()string ;};func (_ac *InternalNode )pad (_ebf *_f .Builder ){for _fc :=int32 (0);_fc < _ac ._cc ;_fc ++{_ebf .WriteString ("\u0020\u0020\u0020");
+};};type BasicTabler interface{HtHigh ()int32 ;HtLow ()int32 ;StreamReader ()*_bf .Reader ;HtPS ()int32 ;HtRS ()int32 ;HtOOB ()int32 ;};type StandardTable struct{_gbe *InternalNode };func _ea (_dfg [][]int32 )(*StandardTable ,error ){var _dbf []*Code ;
+for _fd :=0;_fd < len (_dfg );_fd ++{_fab :=_dfg [_fd ][0];_fb :=_dfg [_fd ][1];_cb :=_dfg [_fd ][2];var _fdg bool ;if len (_dfg [_fd ])> 3{_fdg =true ;};_dbf =append (_dbf ,NewCode (_fab ,_fb ,_cb ,_fdg ));};_gbd :=&StandardTable {_gbe :_fa (0)};if _ggg :=_gbd .InitTree (_dbf );
+_ggg !=nil {return nil ,_ggg ;};return _gbd ,nil ;};type OutOfBandNode struct{};func (_be *InternalNode )Decode (r *_bf .Reader )(int64 ,error ){_cd ,_cgb :=r .ReadBit ();if _cgb !=nil {return 0,_cgb ;};if _cd ==0{return _be ._df .Decode (r );};return _be ._gg .Decode (r );
+};var _ Node =&InternalNode {};func (_egb *InternalNode )append (_dfc *Code )(_bag error ){if _dfc ._gfde ==0{return nil ;};_egde :=_dfc ._gfde -1-_egb ._cc ;if _egde < 0{return _d .New ("\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0073\u0068\u0069\u0066\u0074\u0069n\u0067 \u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u006c\u006c\u006f\u0077\u0065\u0064");
+};_gaf :=(_dfc ._dc >>uint (_egde ))&0x1;if _egde ==0{if _dfc ._fgge ==-1{if _gaf ==1{if _egb ._gg !=nil {return _cf .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_dfc );
+};_egb ._gg =_ff (_dfc );}else {if _egb ._df !=nil {return _cf .Errorf ("O\u004f\u0042\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0073\u0065\u0074\u0020\u0066o\u0072\u0020\u0063o\u0064e\u0020\u0025\u0073",_dfc );};_egb ._df =_ff (_dfc );};}else {if _gaf ==1{if _egb ._gg !=nil {return _cf .Errorf ("\u0076\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_dfc );
+};_egb ._gg =_gfd (_dfc );}else {if _egb ._df !=nil {return _cf .Errorf ("\u0076\u0061\u006cue\u0020\u004e\u006f\u0064\u0065\u0020\u0061\u006c\u0072e\u0061d\u0079 \u0073e\u0074\u0020\u0066\u006f\u0072\u0020\u0063\u006f\u0064\u0065\u0020\u0025\u0073",_dfc );
+};_egb ._df =_gfd (_dfc );};};}else {if _gaf ==1{if _egb ._gg ==nil {_egb ._gg =_fa (_egb ._cc +1);};if _bag =_egb ._gg .(*InternalNode ).append (_dfc );_bag !=nil {return _bag ;};}else {if _egb ._df ==nil {_egb ._df =_fa (_egb ._cc +1);};if _bag =_egb ._df .(*InternalNode ).append (_dfc );
+_bag !=nil {return _bag ;};};};return nil ;};func (_ggf *StandardTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_gge :=range codeTable {if _ce :=_ggf ._gbe .append (_gge );_ce !=nil {return _ce ;};};return nil ;};func (_dda *StandardTable )String ()string {return _dda ._gbe .String ()+"\u000a"};
+func (_de *StandardTable )Decode (r *_bf .Reader )(int64 ,error ){return _de ._gbe .Decode (r )};var _ceb =make ([]Tabler ,len (_cgf ));func (_ca *EncodedTable )InitTree (codeTable []*Code )error {_abg (codeTable );for _ ,_gc :=range codeTable {if _fe :=_ca ._g .append (_gc );
+_fe !=nil {return _fe ;};};return nil ;};type Code struct{_gfde int32 ;_fgge int32 ;_cbb int32 ;_agc bool ;_dc int32 ;};func (_eg *FixedSizeTable )String ()string {return _eg ._bd .String ()+"\u000a"};func NewEncodedTable (table BasicTabler )(*EncodedTable ,error ){_fg :=&EncodedTable {_g :&InternalNode {},BasicTabler :table };
+if _cg :=_fg .parseTable ();_cg !=nil {return nil ,_cg ;};return _fg ,nil ;};func (_gf *EncodedTable )parseTable ()error {var (_ed []*Code ;_fgg ,_bc ,_gfc int32 ;_gb uint64 ;_edc error ;);_eb :=_gf .StreamReader ();_gcb :=_gf .HtLow ();for _gcb < _gf .HtHigh (){_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));
+if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_gb ,_edc =_eb .ReadBits (byte (_gf .HtRS ()));if _edc !=nil {return _edc ;};_bc =int32 (_gb );_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,false ));_gcb +=1<<uint (_bc );};_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));
+if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_bc =32;_gfc =_gf .HtLow ()-1;_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,true ));_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_bc =32;_gfc =_gf .HtHigh ();
+_ed =append (_ed ,NewCode (_fgg ,_bc ,_gfc ,false ));if _gf .HtOOB ()==1{_gb ,_edc =_eb .ReadBits (byte (_gf .HtPS ()));if _edc !=nil {return _edc ;};_fgg =int32 (_gb );_ed =append (_ed ,NewCode (_fgg ,-1,-1,false ));};if _edc =_gf .InitTree (_ed );_edc !=nil {return _edc ;
+};return nil ;};type InternalNode struct{_cc int32 ;_df Node ;_gg Node ;};func (_cga *EncodedTable )RootNode ()*InternalNode {return _cga ._g };func (_egd *ValueNode )Decode (r *_bf .Reader )(int64 ,error ){_ffa ,_bcc :=r .ReadBits (byte (_egd ._ae ));
+if _bcc !=nil {return 0,_bcc ;};if _egd ._cab {_ffa =-_ffa ;};return int64 (_egd ._afc )+int64 (_ffa ),nil ;};var _ Tabler =&EncodedTable {};func (_agf *Code )String ()string {var _eeb string ;if _agf ._dc !=-1{_eeb =_fcc (_agf ._dc ,_agf ._gfde );}else {_eeb ="\u003f";
+};return _cf .Sprintf ("%\u0073\u002f\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_eeb ,_agf ._gfde ,_agf ._fgge ,_agf ._cbb );};var _ Node =&ValueNode {}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/decoder/mmr/mmr.go b/unipdf/internal/jbig2/decoder/mmr/mmr.go
new file mode 100644
index 0000000..7e003bf
--- /dev/null
+++ b/unipdf/internal/jbig2/decoder/mmr/mmr.go
@@ -0,0 +1,50 @@
+//
+// 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 (_df "errors";_g "fmt";_c "github.com/unidoc/unipdf/v4/common";_ad "github.com/unidoc/unipdf/v4/internal/bitwise";_de "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_a "io";);func New (r *_ad .Reader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ce :=&Decoder {_ge :width ,_ebc :height };
+_ec ,_fe :=r .NewPartialReader (int (dataOffset ),int (dataLength ),false );if _fe !=nil {return nil ,_fe ;};_fd ,_fe :=_gdd (_ec );if _fe !=nil {return nil ,_fe ;};_ ,_fe =r .Seek (_ec .RelativePosition (),_a .SeekCurrent );if _fe !=nil {return nil ,_fe ;
+};_ce ._aga =_fd ;if _afb :=_ce .initTables ();_afb !=nil {return nil ,_afb ;};return _ce ,nil ;};var (_gca =[][3]int {{4,0x1,int (_db )},{3,0x1,int (_ed )},{1,0x1,int (_fa )},{3,0x3,int (_dec )},{6,0x3,int (_dd )},{7,0x3,int (_ddd )},{3,0x2,int (_eb )},{6,0x2,int (_ebf )},{7,0x2,int (_gc )},{10,0xf,int (_cf )},{12,0xf,int (_gbc )},{12,0x1,int (EOL )}};
+_agb =[][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,_da },{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,_da },{11,0x01,_da },{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}};
+_fgb =[][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,_da },{9,0x18,15},{10,0x01,_da },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_da },{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 (_gdf *runData )uncompressGetCode (_ddea []*code )(*code ,error ){return _gdf .uncompressGetCodeLittleEndian (_ddea );};func (_dde *Decoder )UncompressMMR ()(_eda *_de .Bitmap ,_cfb error ){_eda =_de .New (_dde ._ge ,_dde ._ebc );_ba :=make ([]int ,_eda .Width +5);
+_fdc :=make ([]int ,_eda .Width +5);_fdc [0]=_eda .Width ;_fga :=1;var _fc int ;for _ggf :=0;_ggf < _eda .Height ;_ggf ++{_fc ,_cfb =_dde .uncompress2d (_dde ._aga ,_fdc ,_fga ,_ba ,_eda .Width );if _cfb !=nil {return nil ,_cfb ;};if _fc ==EOF {break ;
+};if _fc > 0{_cfb =_dde .fillBitmap (_eda ,_ggf ,_ba ,_fc );if _cfb !=nil {return nil ,_cfb ;};};_fdc ,_ba =_ba ,_fdc ;_fga =_fc ;};if _cfb =_dde .detectAndSkipEOL ();_cfb !=nil {return nil ,_cfb ;};_dde ._aga .align ();return _eda ,nil ;};type runData struct{_febd *_ad .Reader ;
+_gcc int ;_ggcc int ;_eed int ;_fbg []byte ;_cef int ;_bcg int ;};func (_dbg *Decoder )fillBitmap (_ga *_de .Bitmap ,_bd int ,_daf []int ,_effg int )error {var _bgc byte ;_baa :=0;_gf :=_ga .GetByteIndex (_baa ,_bd );for _bc :=0;_bc < _effg ;_bc ++{_ff :=byte (1);
+_gd :=_daf [_bc ];if (_bc &1)==0{_ff =0;};for _baa < _gd {_bgc =(_bgc <<1)|_ff ;_baa ++;if (_baa &7)==0{if _gee :=_ga .SetByte (_gf ,_bgc );_gee !=nil {return _gee ;};_gf ++;_bgc =0;};};};if (_baa &7)!=0{_bgc <<=uint (8-(_baa &7));if _fbf :=_ga .SetByte (_gf ,_bgc );
+_fbf !=nil {return _fbf ;};};return nil ;};const (EOF =-3;_da =-2;EOL =-1;_ea =8;_be =(1<<_ea )-1;_cda =5;_fg =(1<<_cda )-1;);func (_bg *Decoder )createLittleEndianTable (_ded [][3]int )([]*code ,error ){_edd :=make ([]*code ,_be +1);for _ebcf :=0;_ebcf < len (_ded );
+_ebcf ++{_fcf :=_gb (_ded [_ebcf ]);if _fcf ._b <=_ea {_fb :=_ea -_fcf ._b ;_ef :=_fcf ._e <<uint (_fb );for _gbd :=(1<<uint (_fb ))-1;_gbd >=0;_gbd --{_abg :=_ef |_gbd ;_edd [_abg ]=_fcf ;};}else {_aea :=_fcf ._e >>uint (_fcf ._b -_ea );if _edd [_aea ]==nil {var _feb =_gb ([3]int {});
+_feb ._ag =make ([]*code ,_fg +1);_edd [_aea ]=_feb ;};if _fcf ._b <=_ea +_cda {_dad :=_ea +_cda -_fcf ._b ;_dee :=(_fcf ._e <<uint (_dad ))&_fg ;_edd [_aea ]._cd =true ;for _eff :=(1<<uint (_dad ))-1;_eff >=0;_eff --{_edd [_aea ]._ag [_dee |_eff ]=_fcf ;
+};}else {return nil ,_df .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 _edd ,nil ;};type mmrCode int ;
+type Decoder struct{_ge ,_ebc int ;_aga *runData ;_cdb []*code ;_cg []*code ;_af []*code ;};type code struct{_b int ;_e int ;_cb int ;_ag []*code ;_cd bool ;};func _adg (_dfe ,_f int )int {if _dfe < _f {return _f ;};return _dfe ;};func _gb (_ac [3]int )*code {return &code {_b :_ac [0],_e :_ac [1],_cb :_ac [2]}};
+const (_fab int =1024<<7;_cbc int =3;_eg uint =24;);func (_afc *Decoder )uncompress2d (_ffa *runData ,_gde []int ,_eae int ,_gge []int ,_fdg int )(int ,error ){var (_dfed int ;_ggaf int ;_gad int ;_feff =true ;_dca error ;_ebfc *code ;);_gde [_eae ]=_fdg ;
+_gde [_eae +1]=_fdg ;_gde [_eae +2]=_fdg +1;_gde [_eae +3]=_fdg +1;_cgb :for _gad < _fdg {_ebfc ,_dca =_ffa .uncompressGetCode (_afc ._af );if _dca !=nil {return EOL ,nil ;};if _ebfc ==nil {_ffa ._gcc ++;break _cgb ;};_ffa ._gcc +=_ebfc ._b ;switch mmrCode (_ebfc ._cb ){case _fa :_gad =_gde [_dfed ];
+case _dec :_gad =_gde [_dfed ]+1;case _eb :_gad =_gde [_dfed ]-1;case _ed :for {var _ddb []*code ;if _feff {_ddb =_afc ._cdb ;}else {_ddb =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_ddb );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ;
+};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;_ebfc =nil ;break _cgb ;};_gad +=_ebfc ._cb ;_gge [_ggaf ]=_gad ;_ggaf ++;break ;};_gad +=_ebfc ._cb ;};_ebb :=_gad ;_afa :for {var _aag []*code ;if !_feff {_aag =_afc ._cdb ;
+}else {_aag =_afc ._cg ;};_ebfc ,_dca =_ffa .uncompressGetCode (_aag );if _dca !=nil {return 0,_dca ;};if _ebfc ==nil {break _cgb ;};_ffa ._gcc +=_ebfc ._b ;if _ebfc ._cb < 64{if _ebfc ._cb < 0{_gge [_ggaf ]=_gad ;_ggaf ++;break _cgb ;};_gad +=_ebfc ._cb ;
+if _gad < _fdg ||_gad !=_ebb {_gge [_ggaf ]=_gad ;_ggaf ++;};break _afa ;};_gad +=_ebfc ._cb ;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};continue _cgb ;case _db :_dfed ++;_gad =_gde [_dfed ];_dfed ++;continue _cgb ;case _dd :_gad =_gde [_dfed ]+2;
+case _ebf :_gad =_gde [_dfed ]-2;case _ddd :_gad =_gde [_dfed ]+3;case _gc :_gad =_gde [_dfed ]-3;default:if _ffa ._gcc ==12&&_ebfc ._cb ==EOL {_ffa ._gcc =0;if _ ,_dca =_afc .uncompress1d (_ffa ,_gde ,_fdg );_dca !=nil {return 0,_dca ;};_ffa ._gcc ++;
+if _ ,_dca =_afc .uncompress1d (_ffa ,_gge ,_fdg );_dca !=nil {return 0,_dca ;};_cc ,_ede :=_afc .uncompress1d (_ffa ,_gde ,_fdg );if _ede !=nil {return EOF ,_ede ;};_ffa ._gcc ++;return _cc ,nil ;};_gad =_fdg ;continue _cgb ;};if _gad <=_fdg {_feff =!_feff ;
+_gge [_ggaf ]=_gad ;_ggaf ++;if _dfed > 0{_dfed --;}else {_dfed ++;};for _gad < _fdg &&_gde [_dfed ]<=_gad {_dfed +=2;};};};if _gge [_ggaf ]!=_fdg {_gge [_ggaf ]=_fdg ;};if _ebfc ==nil {return EOL ,nil ;};return _ggaf ,nil ;};func (_afbc *Decoder )initTables ()(_dfd error ){if _afbc ._cdb ==nil {_afbc ._cdb ,_dfd =_afbc .createLittleEndianTable (_agb );
+if _dfd !=nil {return ;};_afbc ._cg ,_dfd =_afbc .createLittleEndianTable (_fgb );if _dfd !=nil {return ;};_afbc ._af ,_dfd =_afbc .createLittleEndianTable (_gca );if _dfd !=nil {return ;};};return nil ;};const (_db mmrCode =iota ;_ed ;_fa ;_dec ;_dd ;
+_ddd ;_eb ;_ebf ;_gc ;_cf ;_gbc ;);func (_gae *runData )fillBuffer (_dbgf int )error {_gae ._cef =_dbgf ;_ ,_dgb :=_gae ._febd .Seek (int64 (_dbgf ),_a .SeekStart );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");
+_gae ._bcg =-1;}else {return _dgb ;};};if _dgb ==nil {_gae ._bcg ,_dgb =_gae ._febd .Read (_gae ._fbg );if _dgb !=nil {if _dgb ==_a .EOF {_c .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_gae ._bcg =-1;}else {return _dgb ;};};};if _gae ._bcg > -1&&_gae ._bcg < 3{for _gae ._bcg < 3{_dda ,_cdf :=_gae ._febd .ReadByte ();
+if _cdf !=nil {if _cdf ==_a .EOF {_gae ._fbg [_gae ._bcg ]=0;}else {return _cdf ;};}else {_gae ._fbg [_gae ._bcg ]=_dda &0xFF;};_gae ._bcg ++;};};_gae ._bcg -=3;if _gae ._bcg < 0{_gae ._fbg =make ([]byte ,len (_gae ._fbg ));_gae ._bcg =len (_gae ._fbg )-3;
+};return nil ;};func (_dc *Decoder )detectAndSkipEOL ()error {for {_abgd ,_aa :=_dc ._aga .uncompressGetCode (_dc ._af );if _aa !=nil {return _aa ;};if _abgd !=nil &&_abgd ._cb ==EOL {_dc ._aga ._gcc +=_abgd ._b ;}else {return nil ;};};};func _ae (_ab ,_dg int )int {if _ab > _dg {return _dg ;
+};return _ab ;};func (_cbb *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_dded :=_cbb ._gcc -_cbb ._ggcc ;if _dded < 0||_dded > 24{_afg :=(_cbb ._gcc >>3)-_cbb ._cef ;if _afg >=_cbb ._bcg {_afg +=_cbb ._cef ;if _ffeb :=_cbb .fillBuffer (_afg );
+_ffeb !=nil {return 0,_ffeb ;};_afg -=_cbb ._cef ;};_fafg :=(uint32 (_cbb ._fbg [_afg ]&0xFF)<<16)|(uint32 (_cbb ._fbg [_afg +1]&0xFF)<<8)|(uint32 (_cbb ._fbg [_afg +2]&0xFF));_gda :=uint32 (_cbb ._gcc &7);_fafg <<=_gda ;_cbb ._eed =int (_fafg );}else {_edb :=_cbb ._ggcc &7;
+_bb :=7-_edb ;if _dded <=_bb {_cbb ._eed <<=uint (_dded );}else {_bca :=(_cbb ._ggcc >>3)+3-_cbb ._cef ;if _bca >=_cbb ._bcg {_bca +=_cbb ._cef ;if _eec :=_cbb .fillBuffer (_bca );_eec !=nil {return 0,_eec ;};_bca -=_cbb ._cef ;};_edb =8-_edb ;for {_cbb ._eed <<=uint (_edb );
+_cbb ._eed |=int (uint (_cbb ._fbg [_bca ])&0xFF);_dded -=_edb ;_bca ++;_edb =8;if !(_dded >=8){break ;};};_cbb ._eed <<=uint (_dded );};};_cbb ._ggcc =_cbb ._gcc ;return _cbb ._eed ,nil ;};func (_dag *Decoder )uncompress1d (_bcf *runData ,_abc []int ,_fgd int )(int ,error ){var (_ffe =true ;
+_fef int ;_fbfd *code ;_bec int ;_ggc error ;);_edc :for _fef < _fgd {_gga :for {if _ffe {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cdb );if _ggc !=nil {return 0,_ggc ;};}else {_fbfd ,_ggc =_bcf .uncompressGetCode (_dag ._cg );if _ggc !=nil {return 0,_ggc ;
+};};_bcf ._gcc +=_fbfd ._b ;if _fbfd ._cb < 0{break _edc ;};_fef +=_fbfd ._cb ;if _fbfd ._cb < 64{_ffe =!_ffe ;_abc [_bec ]=_fef ;_bec ++;break _gga ;};};};if _abc [_bec ]!=_fgd {_abc [_bec ]=_fgd ;};_fbe :=EOL ;if _fbfd !=nil &&_fbfd ._cb !=EOL {_fbe =_bec ;
+};return _fbe ,nil ;};func _gdd (_fdd *_ad .Reader )(*runData ,error ){_ffc :=&runData {_febd :_fdd ,_gcc :0,_ggcc :1};_bge :=_ae (_adg (_cbc ,int (_fdd .Length ())),_fab );_ffc ._fbg =make ([]byte ,_bge );if _abcd :=_ffc .fillBuffer (0);_abcd !=nil {if _abcd ==_a .EOF {_ffc ._fbg =make ([]byte ,10);
+_c .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_abcd );}else {return nil ,_abcd ;};};return _ffc ,nil ;};func (_gg *code )String ()string {return _g .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_gg ._b ,_gg ._e ,_gg ._cb );
+};func (_dff *runData )align (){_dff ._gcc =((_dff ._gcc +7)>>3)<<3};func (_ecf *runData )uncompressGetCodeLittleEndian (_edf []*code )(*code ,error ){_edeg ,_faf :=_ecf .uncompressGetNextCodeLittleEndian ();if _faf !=nil {_c .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",_faf );
+return nil ,_faf ;};_edeg &=0xffffff;_abe :=_edeg >>(_eg -_ea );_efc :=_edf [_abe ];if _efc !=nil &&_efc ._cd {_abe =(_edeg >>(_eg -_ea -_cda ))&_fg ;_efc =_efc ._ag [_abe ];};return _efc ,nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/document/document.go b/unipdf/internal/jbig2/document/document.go
new file mode 100644
index 0000000..83ec811
--- /dev/null
+++ b/unipdf/internal/jbig2/document/document.go
@@ -0,0 +1,132 @@
+//
+// 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 (_fd "encoding/binary";_a "fmt";_fac "github.com/unidoc/unipdf/v4/common";_ag "github.com/unidoc/unipdf/v4/internal/bitwise";_c "github.com/unidoc/unipdf/v4/internal/jbig2/basic";_ed "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";
+_cf "github.com/unidoc/unipdf/v4/internal/jbig2/document/segments";_ede "github.com/unidoc/unipdf/v4/internal/jbig2/encoder/classer";_b "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_ac "io";_fa "math";_e "runtime/debug";);func (_fded *Page )GetSegment (number int )(*_cf .Header ,error ){const _cab ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
+for _ ,_eecg :=range _fded .Segments {if _eecg .SegmentNumber ==uint32 (number ){return _eecg ,nil ;};};_eaf :=make ([]uint32 ,len (_fded .Segments ));for _ggc ,_fag :=range _fded .Segments {_eaf [_ggc ]=_fag .SegmentNumber ;};return nil ,_b .Errorf (_cab ,"\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 ,_fded .PageNumber ,_eaf );
+};func (_gcg *Page )AddPageInformationSegment (){_ddg :=&_cf .PageInformationSegment {PageBMWidth :_gcg .FinalWidth ,PageBMHeight :_gcg .FinalHeight ,ResolutionX :_gcg .ResolutionX ,ResolutionY :_gcg .ResolutionY ,IsLossless :_gcg .IsLossless };if _gcg .BlackIsOne {_ddg .DefaultPixelValue =uint8 (0x1);
+};_cbe :=&_cf .Header {PageAssociation :_gcg .PageNumber ,SegmentDataLength :uint64 (_ddg .Size ()),SegmentData :_ddg ,Type :_cf .TPageInformation };_gcg .Segments =append (_gcg .Segments ,_cbe );};func (_ddc *Document )encodeSegment (_gca *_cf .Header ,_ege *int )error {const _de ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
+_gca .SegmentNumber =_ddc .nextSegmentNumber ();_dae ,_dcf :=_gca .Encode (_ddc ._g );if _dcf !=nil {return _b .Wrapf (_dcf ,_de ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_gca .SegmentNumber );};*_ege +=_dae ;return nil ;
+};func (_ab *Document )mapData ()error {const _dg ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_eef []*_cf .Header ;_ded int64 ;_adf _cf .Type ;);_ebe ,_eec :=_ab .isFileHeaderPresent ();if _eec !=nil {return _b .Wrap (_eec ,_dg ,"");};if _ebe {if _eec =_ab .parseFileHeader ();
+_eec !=nil {return _b .Wrap (_eec ,_dg ,"");};_ded +=int64 (_ab ._ff );_ab .FullHeaders =true ;};var (_bfg *Page ;_fdbe bool ;);for _adf !=51&&!_fdbe {_dfb ,_daeb :=_cf .NewHeader (_ab ,_ab .InputStream ,_ded ,_ab .OrganizationType );if _daeb !=nil {return _b .Wrap (_daeb ,_dg ,"");
+};_fac .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",_dfb .SegmentNumber ,_dfb .Type );
+_adf =_dfb .Type ;if _adf !=_cf .TEndOfFile {if _dfb .PageAssociation !=0{_bfg =_ab .Pages [_dfb .PageAssociation ];if _bfg ==nil {_bfg =_cafe (_ab ,_dfb .PageAssociation );_ab .Pages [_dfb .PageAssociation ]=_bfg ;if _ab .NumberOfPagesUnknown {_ab .NumberOfPages ++;
+};};_bfg .Segments =append (_bfg .Segments ,_dfb );}else {_ab .GlobalSegments .AddSegment (_dfb );};};_eef =append (_eef ,_dfb );_ded =_ab .InputStream .AbsolutePosition ();if _ab .OrganizationType ==_cf .OSequential {_ded +=int64 (_dfb .SegmentDataLength );
+};_fdbe ,_daeb =_ab .reachedEOF (_ded );if _daeb !=nil {_fac .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",_daeb );
+return _b .Wrap (_daeb ,_dg ,"");};};_ab .determineRandomDataOffsets (_eef ,uint64 (_ded ));return nil ;};func (_feb *Globals )AddSegment (segment *_cf .Header ){_feb .Segments =append (_feb .Segments ,segment )};func (_dbc *Page )collectPageStripes ()(_agd []_cf .Segmenter ,_fae error ){const _gcb ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
+var _gec _cf .Segmenter ;for _ ,_gcea :=range _dbc .Segments {switch _gcea .Type {case 6,7,22,23,38,39,42,43:_gec ,_fae =_gcea .GetSegmentData ();if _fae !=nil {return nil ,_b .Wrap (_fae ,_gcb ,"");};_agd =append (_agd ,_gec );case 50:_gec ,_fae =_gcea .GetSegmentData ();
+if _fae !=nil {return nil ,_fae ;};_afa ,_eafe :=_gec .(*_cf .EndOfStripe );if !_eafe {return nil ,_b .Errorf (_gcb ,"\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",_gec );
+};_agd =append (_agd ,_afa );_dbc .FinalHeight =_afa .LineNumber ();};};return _agd ,nil ;};func (_cc *Document )completeClassifiedPages ()(_gbc error ){const _eb ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
+if _cc .Classer ==nil {return nil ;};_cc ._cd =make ([]int ,_cc .Classer .UndilatedTemplates .Size ());for _dc :=0;_dc < _cc .Classer .ClassIDs .Size ();_dc ++{_fde ,_ea :=_cc .Classer .ClassIDs .Get (_dc );if _ea !=nil {return _b .Wrapf (_ea ,_eb ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dc );
+};_cc ._cd [_fde ]++;};var _dcg []int ;for _ga :=0;_ga < _cc .Classer .UndilatedTemplates .Size ();_ga ++{if _cc .NumberOfPages ==1||_cc ._cd [_ga ]> 1{_dcg =append (_dcg ,_ga );};};var (_gbf *Page ;_eba bool ;);for _da ,_fg :=range *_cc .Classer .ComponentPageNumbers {if _gbf ,_eba =_cc .Pages [_fg ];
+!_eba {return _b .Errorf (_eb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_da );};if _gbf .EncodingMethod ==GenericEM {_fac .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",_da );
+continue ;};_cc ._gb [_fg ]=append (_cc ._gb [_fg ],_da );_fdef ,_bgf :=_cc .Classer .ClassIDs .Get (_da );if _bgf !=nil {return _b .Wrapf (_bgf ,_eb ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_da );
+};if _cc ._cd [_fdef ]==1&&_cc .NumberOfPages !=1{_ead :=append (_cc ._dd [_fg ],_fdef );_cc ._dd [_fg ]=_ead ;};};if _gbc =_cc .Classer .ComputeLLCorners ();_gbc !=nil {return _b .Wrap (_gbc ,_eb ,"");};if _ ,_gbc =_cc .addSymbolDictionary (0,_cc .Classer .UndilatedTemplates ,_dcg ,_cc ._cb ,false );
+_gbc !=nil {return _b .Wrap (_gbc ,_eb ,"");};return nil ;};func (_afad *Page )fitsPage (_edbga *_cf .PageInformationSegment ,_dfa *_ed .Bitmap )bool {return _afad .countRegions ()==1&&_edbga .DefaultPixelValue ==0&&_edbga .PageBMWidth ==_dfa .Width &&_edbga .PageBMHeight ==_dfa .Height ;
+};func (_bge *Document )reachedEOF (_cee int64 )(bool ,error ){const _ffd ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_gdb :=_bge .InputStream .Seek (_cee ,_ac .SeekStart );if _gdb !=nil {_fac .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",_gdb );
+return false ,_b .Wrap (_gdb ,_ffd ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_gdb =_bge .InputStream .ReadBits (32);if _gdb ==_ac .EOF {return true ,nil ;
+}else if _gdb !=nil {return false ,_b .Wrap (_gdb ,_ffd ,"");};return false ,nil ;};func (_ddab *Document )isFileHeaderPresent ()(bool ,error ){_ddab .InputStream .Mark ();for _ ,_gbe :=range _d {_cac ,_edfc :=_ddab .InputStream .ReadByte ();if _edfc !=nil {return false ,_edfc ;
+};if _gbe !=_cac {_ddab .InputStream .Reset ();return false ,nil ;};};_ddab .InputStream .Reset ();return true ,nil ;};type Globals struct{Segments []*_cf .Header ;};func _fdd (_ba *_ag .Reader ,_ccc *Globals )(*Document ,error ){_bdd :=&Document {Pages :make (map[int ]*Page ),InputStream :_ba ,OrganizationType :_cf .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_ccc ,_ff :9};
+if _bdd .GlobalSegments ==nil {_bdd .GlobalSegments =&Globals {};};if _dbb :=_bdd .mapData ();_dbb !=nil {return nil ,_dbb ;};return _bdd ,nil ;};func (_gge *Globals )GetSymbolDictionary ()(*_cf .Header ,error ){const _gfe ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
+if _gge ==nil {return nil ,_b .Error (_gfe ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gge .Segments )==0{return nil ,_b .Error (_gfe ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
+};for _ ,_ggg :=range _gge .Segments {if _ggg .Type ==_cf .TSymbolDictionary {return _ggg ,nil ;};};return nil ,_b .Error (_gfe ,"\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 (_bfc *Globals )GetSegment (segmentNumber int )(*_cf .Header ,error ){const _cedc ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bfc ==nil {return nil ,_b .Error (_cedc ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if len (_bfc .Segments )==0{return nil ,_b .Error (_cedc ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _be *_cf .Header ;for _ ,_be =range _bfc .Segments {if _be .SegmentNumber ==uint32 (segmentNumber ){break ;
+};};if _be ==nil {return nil ,_b .Error (_cedc ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _be ,nil ;};func (_facd *Page )getCombinationOperator (_efe *_cf .PageInformationSegment ,_fff _ed .CombinationOperator )_ed .CombinationOperator {if _efe .CombinationOperatorOverrideAllowed (){return _fff ;
+};return _efe .CombinationOperator ();};func (_fgd *Document )parseFileHeader ()error {const _cfef ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_fb :=_fgd .InputStream .Seek (8,_ac .SeekStart );if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u0069\u0064");
+};_ ,_fb =_fgd .InputStream .ReadBits (5);if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_abe ,_fb :=_fgd .InputStream .ReadBit ();if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
+};if _abe ==1{_fgd .GBUseExtTemplate =true ;};_abe ,_fb =_fgd .InputStream .ReadBit ();if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _abe !=1{_fgd .NumberOfPagesUnknown =false ;
+};_abe ,_fb =_fgd .InputStream .ReadBit ();if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_fgd .OrganizationType =_cf .OrganizationType (_abe );if !_fgd .NumberOfPagesUnknown {_fgd .NumberOfPages ,_fb =_fgd .InputStream .ReadUint32 ();
+if _fb !=nil {return _b .Wrap (_fb ,_cfef ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_fgd ._ff =13;};return nil ;};func (_fbc *Page )nextSegmentNumber ()uint32 {return _fbc .Document .nextSegmentNumber ()};func (_dac *Page )GetWidth ()(int ,error ){return _dac .getWidth ()};
+func _fga (_cg int )int {_gfd :=0;_dfd :=(_cg &(_cg -1))==0;_cg >>=1;for ;_cg !=0;_cg >>=1{_gfd ++;};if _dfd {return _gfd ;};return _gfd +1;};func (_ca *Document )produceClassifiedPage (_gc *Page ,_ccf *_cf .Header )(_gce error ){const _fgb ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
+var _bb map[int ]int ;_fdf :=_ca ._bc ;_edf :=[]*_cf .Header {_ccf };if len (_ca ._dd [_gc .PageNumber ])> 0{_bb =map[int ]int {};_edb ,_aa :=_ca .addSymbolDictionary (_gc .PageNumber ,_ca .Classer .UndilatedTemplates ,_ca ._dd [_gc .PageNumber ],_bb ,false );
+if _aa !=nil {return _b .Wrap (_aa ,_fgb ,"");};_edf =append (_edf ,_edb );_fdf +=len (_ca ._dd [_gc .PageNumber ]);};_ebb :=_ca ._gb [_gc .PageNumber ];_fac .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_gc .PageNumber ,_ebb );
+_gc .addTextRegionSegment (_edf ,_ca ._cb ,_bb ,_ca ._gb [_gc .PageNumber ],_ca .Classer .PtaLL ,_ca .Classer .UndilatedTemplates ,_ca .Classer .ClassIDs ,nil ,_fga (_fdf ),len (_ca ._gb [_gc .PageNumber ]));return nil ;};func (_fec *Page )GetBitmap ()(_fda *_ed .Bitmap ,_bad error ){_fac .Log .Trace (_a .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",_fec .PageNumber ));
+defer func (){if _bad !=nil {_fac .Log .Trace (_a .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",_fec .PageNumber ,_bad ));
+}else {_fac .Log .Trace (_a .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",_fec .PageNumber ));};}();if _fec .Bitmap !=nil {return _fec .Bitmap ,nil ;
+};_bad =_fec .composePageBitmap ();if _bad !=nil {return nil ,_bad ;};return _fec .Bitmap ,nil ;};func (_cgd *Document )addSymbolDictionary (_ae int ,_bd *_ed .Bitmaps ,_aae []int ,_cgda map[int ]int ,_dad bool )(*_cf .Header ,error ){const _ad ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
+_gdg :=&_cf .SymbolDictionary {};if _bcf :=_gdg .InitEncode (_bd ,_aae ,_cgda ,_dad );_bcf !=nil {return nil ,_bcf ;};_acf :=&_cf .Header {Type :_cf .TSymbolDictionary ,PageAssociation :_ae ,SegmentData :_gdg };if _ae ==0{if _cgd .GlobalSegments ==nil {_cgd .GlobalSegments =&Globals {};
+};_cgd .GlobalSegments .AddSegment (_acf );return _acf ,nil ;};_bda ,_eed :=_cgd .Pages [_ae ];if !_eed {return nil ,_b .Errorf (_ad ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ae );};var (_bce int ;
+_bgg *_cf .Header ;);for _bce ,_bgg =range _bda .Segments {if _bgg .Type ==_cf .TPageInformation {break ;};};_bce ++;_bda .Segments =append (_bda .Segments ,nil );copy (_bda .Segments [_bce +1:],_bda .Segments [_bce :]);_bda .Segments [_bce ]=_acf ;return _acf ,nil ;
+};func (_afg *Page )addTextRegionSegment (_faa []*_cf .Header ,_bed ,_bcbd map[int ]int ,_gdc []int ,_cdf *_ed .Points ,_ggbg *_ed .Bitmaps ,_dfg *_c .IntSlice ,_bef *_ed .Boxes ,_eaef ,_ega int ){_eaec :=&_cf .TextRegion {NumberOfSymbols :uint32 (_ega )};
+_eaec .InitEncode (_bed ,_bcbd ,_gdc ,_cdf ,_ggbg ,_dfg ,_bef ,_afg .FinalWidth ,_afg .FinalHeight ,_eaef );_cde :=&_cf .Header {RTSegments :_faa ,SegmentData :_eaec ,PageAssociation :_afg .PageNumber ,Type :_cf .TImmediateTextRegion };_egg :=_cf .TPageInformation ;
+if _bcbd !=nil {_egg =_cf .TSymbolDictionary ;};var _bfbf int ;for ;_bfbf < len (_afg .Segments );_bfbf ++{if _afg .Segments [_bfbf ].Type ==_egg {_bfbf ++;break ;};};_afg .Segments =append (_afg .Segments ,nil );copy (_afg .Segments [_bfbf +1:],_afg .Segments [_bfbf :]);
+_afg .Segments [_bfbf ]=_cde ;};func (_fba *Page )getPageInformationSegment ()*_cf .Header {for _ ,_dbd :=range _fba .Segments {if _dbd .Type ==_cf .TPageInformation {return _dbd ;};};_fac .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",_fba );
+return nil ;};func (_eae *Document )nextSegmentNumber ()uint32 {_bdga :=_eae .CurrentSegmentNumber ;_eae .CurrentSegmentNumber ++;return _bdga ;};func (_dfag *Page )getWidth ()(int ,error ){const _gaea ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";
+if _dfag .FinalWidth !=0{return _dfag .FinalWidth ,nil ;};_egeb :=_dfag .getPageInformationSegment ();if _egeb ==nil {return 0,_b .Error (_gaea ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_egdb ,_adbc :=_egeb .GetSegmentData ();
+if _adbc !=nil {return 0,_b .Wrap (_adbc ,_gaea ,"");};_dde ,_cbg :=_egdb .(*_cf .PageInformationSegment );if !_cbg {return 0,_b .Errorf (_gaea ,"\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",_egdb );
+};_dfag .FinalWidth =_dde .PageBMWidth ;return _dfag .FinalWidth ,nil ;};func (_afb *Page )clearSegmentData (){for _ecg :=range _afb .Segments {_afb .Segments [_ecg ].CleanSegmentData ();};};func (_ggeg *Page )GetResolutionX ()(int ,error ){return _ggeg .getResolutionX ()};
+func (_bff *Page )AddEndOfPageSegment (){_ge :=&_cf .Header {Type :_cf .TEndOfPage ,PageAssociation :_bff .PageNumber };_bff .Segments =append (_bff .Segments ,_ge );};func _cafe (_edbg *Document ,_aea int )*Page {return &Page {Document :_edbg ,PageNumber :_aea ,Segments :[]*_cf .Header {}};
+};func (_egf *Document )nextPageNumber ()uint32 {_egf .NumberOfPages ++;return _egf .NumberOfPages };func (_ceb *Document )encodeEOFHeader (_ebba _ag .BinaryWriter )(_cdg int ,_aab error ){_fca :=&_cf .Header {SegmentNumber :_ceb .nextSegmentNumber (),Type :_cf .TEndOfFile };
+if _cdg ,_aab =_fca .Encode (_ebba );_aab !=nil {return 0,_b .Wrap (_aab ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _cdg ,nil ;};func (_acc *Document )determineRandomDataOffsets (_af []*_cf .Header ,_gg uint64 ){if _acc .OrganizationType !=_cf .ORandom {return ;
+};for _ ,_caa :=range _af {_caa .SegmentDataStartOffset =_gg ;_gg +=_caa .SegmentDataLength ;};};func (_dada *Document )Encode ()(_cbc []byte ,_caf error ){const _db ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bf ,_acg int ;
+if _dada .FullHeaders {if _bf ,_caf =_dada .encodeFileHeader (_dada ._g );_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");};};var (_fdc bool ;_ef *_cf .Header ;_fcd *Page ;);if _caf =_dada .completeClassifiedPages ();_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");
+};if _caf =_dada .produceClassifiedPages ();_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");};if _dada .GlobalSegments !=nil {for _ ,_ef =range _dada .GlobalSegments .Segments {if _caf =_dada .encodeSegment (_ef ,&_bf );_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");
+};};};for _aaa :=1;_aaa <=int (_dada .NumberOfPages );_aaa ++{if _fcd ,_fdc =_dada .Pages [_aaa ];!_fdc {return nil ,_b .Errorf (_db ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_aaa );};for _ ,_ef =range _fcd .Segments {if _caf =_dada .encodeSegment (_ef ,&_bf );
+_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");};};};if _dada .FullHeaders {if _acg ,_caf =_dada .encodeEOFHeader (_dada ._g );_caf !=nil {return nil ,_b .Wrap (_caf ,_db ,"");};_bf +=_acg ;};_cbc =_dada ._g .Data ();if len (_cbc )!=_bf {_fac .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",_bf ,len (_cbc ));
+};return _cbc ,nil ;};func (_gcd *Document )GetGlobalSegment (i int )(*_cf .Header ,error ){_bfa ,_gae :=_gcd .GlobalSegments .GetSegment (i );if _gae !=nil {return nil ,_b .Wrap (_gae ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
+};return _bfa ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);var _d =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_eg *Document )AddGenericPage (bm *_ed .Bitmap ,duplicateLineRemoval bool )(_cff error ){const _bg ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
+if !_eg .FullHeaders &&_eg .NumberOfPages !=0{return _b .Error (_bg ,"\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");
+};_ee :=&Page {Segments :[]*_cf .Header {},Bitmap :bm ,Document :_eg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ed .Chocolate };_ee .PageNumber =int (_eg .nextPageNumber ());_eg .Pages [_ee .PageNumber ]=_ee ;
+bm .InverseData ();_ee .AddPageInformationSegment ();if _cff =_ee .AddGenericRegion (bm ,0,0,0,_cf .TImmediateGenericRegion ,duplicateLineRemoval );_cff !=nil {return _b .Wrap (_cff ,_bg ,"");};if _eg .FullHeaders {_ee .AddEndOfPageSegment ();};return nil ;
+};func (_afac *Page )countRegions ()int {var _gbfe int ;for _ ,_abcb :=range _afac .Segments {switch _abcb .Type {case 6,7,22,23,38,39,42,43:_gbfe ++;};};return _gbfe ;};func (_cag *Document )GetNumberOfPages ()(uint32 ,error ){if _cag .NumberOfPagesUnknown ||_cag .NumberOfPages ==0{if len (_cag .Pages )==0{if _bdg :=_cag .mapData ();
+_bdg !=nil {return 0,_b .Wrap (_bdg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cag .Pages )),nil ;};return _cag .NumberOfPages ,nil ;};func (_bbe *Page )createStripedPage (_cffd *_cf .PageInformationSegment )error {const _bee ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
+_bgfa ,_bbdf :=_bbe .collectPageStripes ();if _bbdf !=nil {return _b .Wrap (_bbdf ,_bee ,"");};var _beg int ;for _ ,_faag :=range _bgfa {if _ffb ,_fgag :=_faag .(*_cf .EndOfStripe );_fgag {_beg =_ffb .LineNumber ()+1;}else {_gaef :=_faag .(_cf .Regioner );
+_dgb :=_gaef .GetRegionInfo ();_ebcd :=_bbe .getCombinationOperator (_cffd ,_dgb .CombinaionOperator );_cbd ,_bcg :=_gaef .GetRegionBitmap ();if _bcg !=nil {return _b .Wrap (_bcg ,_bee ,"");};_bcg =_ed .Blit (_cbd ,_bbe .Bitmap ,int (_dgb .XLocation ),_beg ,_ebcd );
+if _bcg !=nil {return _b .Wrap (_bcg ,_bee ,"");};};};return nil ;};func (_ccb *Page )getHeight ()(int ,error ){const _fbb ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _ccb .FinalHeight !=0{return _ccb .FinalHeight ,nil ;};_deg :=_ccb .getPageInformationSegment ();
+if _deg ==nil {return 0,_b .Error (_fbb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bbae ,_ggae :=_deg .GetSegmentData ();if _ggae !=nil {return 0,_b .Wrap (_ggae ,_fbb ,"");};_ace ,_bcd :=_bbae .(*_cf .PageInformationSegment );
+if !_bcd {return 0,_b .Errorf (_fbb ,"\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",_bbae );
+};if _ace .PageBMHeight ==_fa .MaxInt32 {_ ,_ggae =_ccb .GetBitmap ();if _ggae !=nil {return 0,_b .Wrap (_ggae ,_fbb ,"");};}else {_ccb .FinalHeight =_ace .PageBMHeight ;};return _ccb .FinalHeight ,nil ;};type EncodingMethod int ;func (_cfe *Document )AddClassifiedPage (bm *_ed .Bitmap ,method _ede .Method )(_gf error ){const _fe ="\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 !_cfe .FullHeaders &&_cfe .NumberOfPages !=0{return _b .Error (_fe ,"\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 _cfe .Classer ==nil {if _cfe .Classer ,_gf =_ede .Init (_ede .DefaultSettings ());_gf !=nil {return _b .Wrap (_gf ,_fe ,"");};};_cda :=int (_cfe .nextPageNumber ());_gd :=&Page {Segments :[]*_cf .Header {},Bitmap :bm ,Document :_cfe ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_cda };
+_cfe .Pages [_cda ]=_gd ;switch method {case _ede .RankHaus :_gd .EncodingMethod =RankHausEM ;case _ede .Correlation :_gd .EncodingMethod =CorrelationEM ;};_gd .AddPageInformationSegment ();if _gf =_cfe .Classer .AddPage (bm ,_cda ,method );_gf !=nil {return _b .Wrap (_gf ,_fe ,"");
+};if _cfe .FullHeaders {_gd .AddEndOfPageSegment ();};return nil ;};func (_acb *Document )completeSymbols ()(_ec error ){const _ce ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _acb .Classer ==nil {return nil ;};
+if _acb .Classer .UndilatedTemplates ==nil {return _b .Error (_ce ,"\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");};_cgb :=len (_acb .Pages )==1;
+_dca :=make ([]int ,_acb .Classer .UndilatedTemplates .Size ());var _fc int ;for _bdb :=0;_bdb < _acb .Classer .ClassIDs .Size ();_bdb ++{_fc ,_ec =_acb .Classer .ClassIDs .Get (_bdb );if _ec !=nil {return _b .Wrap (_ec ,_ce ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
+};_dca [_fc ]++;};var _fcb []int ;for _ced :=0;_ced < _acb .Classer .UndilatedTemplates .Size ();_ced ++{if _dca [_ced ]==0{return _b .Error (_ce ,"\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 _dca [_ced ]> 1||_cgb {_fcb =append (_fcb ,_ced );};};_acb ._bc =len (_fcb );var _adb ,_aag int ;for _aef :=0;_aef < _acb .Classer .ComponentPageNumbers .Size ();_aef ++{_adb ,_ec =_acb .Classer .ComponentPageNumbers .Get (_aef );if _ec !=nil {return _b .Wrapf (_ec ,_ce ,"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",_aef );
+};_aag ,_ec =_acb .Classer .ClassIDs .Get (_aef );if _ec !=nil {return _b .Wrapf (_ec ,_ce ,"\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",_adb );
+};if _dca [_aag ]==1&&!_cgb {_acb ._dd [_adb ]=append (_acb ._dd [_adb ],_aag );};};if _ec =_acb .Classer .ComputeLLCorners ();_ec !=nil {return _b .Wrap (_ec ,_ce ,"");};return nil ;};func (_abg *Page )createPage (_acfd *_cf .PageInformationSegment )error {var _dbe error ;
+if !_acfd .IsStripe ||_acfd .PageBMHeight !=-1{_dbe =_abg .createNormalPage (_acfd );}else {_dbe =_abg .createStripedPage (_acfd );};return _dbe ;};func (_df *Document )produceClassifiedPages ()(_age error ){const _egd ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
+if _df .Classer ==nil {return nil ;};var (_fdb *Page ;_bcb bool ;_aca *_cf .Header ;);for _faf :=1;_faf <=int (_df .NumberOfPages );_faf ++{if _fdb ,_bcb =_df .Pages [_faf ];!_bcb {return _b .Errorf (_egd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_faf );
+};if _fdb .EncodingMethod ==GenericEM {continue ;};if _aca ==nil {if _aca ,_age =_df .GlobalSegments .GetSymbolDictionary ();_age !=nil {return _b .Wrap (_age ,_egd ,"");};};if _age =_df .produceClassifiedPage (_fdb ,_aca );_age !=nil {return _b .Wrapf (_age ,_egd ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_faf );
+};};return nil ;};func (_bfb *Document )encodeFileHeader (_gde _ag .BinaryWriter )(_ggb int ,_fgg error ){const _gadf ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ggb ,_fgg =_gde .Write (_d );if _fgg !=nil {return _ggb ,_b .Wrap (_fgg ,_gadf ,"\u0069\u0064");
+};if _fgg =_gde .WriteByte (0x01);_fgg !=nil {return _ggb ,_b .Wrap (_fgg ,_gadf ,"\u0066\u006c\u0061g\u0073");};_ggb ++;_acac :=make ([]byte ,4);_fd .BigEndian .PutUint32 (_acac ,_bfb .NumberOfPages );_bgd ,_fgg :=_gde .Write (_acac );if _fgg !=nil {return _bgd ,_b .Wrap (_fgg ,_gadf ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
+};_ggb +=_bgd ;return _ggb ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream *_ag .Reader ;GlobalSegments *Globals ;OrganizationType _cf .OrganizationType ;Classer *_ede .Classer ;
+XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ed .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ff uint8 ;_g *_ag .BufferedWriter ;EncodeGlobals bool ;_bc int ;_dd map[int ][]int ;_gb map[int ][]int ;
+_cd []int ;_cb map[int ]int ;};func DecodeDocument (input *_ag .Reader ,globals *Globals )(*Document ,error ){return _fdd (input ,globals );};func (_bged *Page )GetResolutionY ()(int ,error ){return _bged .getResolutionY ()};func (_bggb *Page )AddGenericRegion (bm *_ed .Bitmap ,xloc ,yloc ,template int ,tp _cf .Type ,duplicateLineRemoval bool )error {const _eea ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
+_gfde :=&_cf .GenericRegion {};if _accg :=_gfde .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_accg !=nil {return _b .Wrap (_accg ,_eea ,"");};_fbd :=&_cf .Header {Type :_cf .TImmediateGenericRegion ,PageAssociation :_bggb .PageNumber ,SegmentData :_gfde };
+_bggb .Segments =append (_bggb .Segments ,_fbd );return nil ;};func (_eead *Page )composePageBitmap ()error {const _ccg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _eead .PageNumber ==0{return nil ;
+};_bfd :=_eead .getPageInformationSegment ();if _bfd ==nil {return _b .Error (_ccg ,"\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");
+};_ccda ,_ddabd :=_bfd .GetSegmentData ();if _ddabd !=nil {return _ddabd ;};_gea ,_cef :=_ccda .(*_cf .PageInformationSegment );if !_cef {return _b .Error (_ccg ,"\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 _ddabd =_eead .createPage (_gea );_ddabd !=nil {return _b .Wrap (_ddabd ,_ccg ,"");};_eead .clearSegmentData ();return nil ;};func (_bbd *Page )String ()string {return _a .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_bbd .PageNumber );
+};func (_bcec *Page )GetHeight ()(int ,error ){return _bcec .getHeight ()};func (_ecc *Page )Encode (w _ag .BinaryWriter )(_aaab int ,_ebaf error ){const _cbf ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _ggbc int ;for _ ,_dcb :=range _ecc .Segments {if _ggbc ,_ebaf =_dcb .Encode (w );
+_ebaf !=nil {return _aaab ,_b .Wrap (_ebaf ,_cbf ,"");};_aaab +=_ggbc ;};return _aaab ,nil ;};type Page struct{Segments []*_cf .Header ;PageNumber int ;Bitmap *_ed .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;
+Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_cec *Globals )GetSegmentByIndex (index int )(*_cf .Header ,error ){const _bec ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
+if _cec ==nil {return nil ,_b .Error (_bec ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cec .Segments )==0{return nil ,_b .Error (_bec ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
+};if index > len (_cec .Segments )-1{return nil ,_b .Error (_bec ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _cec .Segments [index ],nil ;};func (_add *Page )getResolutionY ()(int ,error ){const _bege ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
+if _add .ResolutionY !=0{return _add .ResolutionY ,nil ;};_fcg :=_add .getPageInformationSegment ();if _fcg ==nil {return 0,_b .Error (_bege ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdac ,_ccge :=_fcg .GetSegmentData ();
+if _ccge !=nil {return 0,_b .Wrap (_ccge ,_bege ,"");};_caaf ,_dge :=_bdac .(*_cf .PageInformationSegment );if !_dge {return 0,_b .Errorf (_bege ,"\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",_bdac );
+};_add .ResolutionY =_caaf .ResolutionY ;return _add .ResolutionY ,nil ;};func (_egb *Document )GetPage (pageNumber int )(_cf .Pager ,error ){const _ffa ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_fac .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 ,_e .Stack ());
+return nil ,_b .Errorf (_ffa ,"\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 (_egb .Pages ){_fac .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_e .Stack ());return nil ,_b .Error (_ffa ,"\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");
+};_cdc ,_fgae :=_egb .Pages [pageNumber ];if !_fgae {_fac .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_e .Stack ());return nil ,_b .Errorf (_ffa ,"\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 _cdc ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_g :_ag .BufferedMSB (),Pages :map[int ]*Page {},_dd :map[int ][]int {},_cb :map[int ]int {},_gb :map[int ][]int {}};};func (_eece *Page )createNormalPage (_fdbg *_cf .PageInformationSegment )error {const _gaee ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";
+_eece .Bitmap =_ed .New (_fdbg .PageBMWidth ,_fdbg .PageBMHeight );if _fdbg .DefaultPixelValue !=0{_eece .Bitmap .SetDefaultPixel ();};for _ ,_ebc :=range _eece .Segments {switch _ebc .Type {case 6,7,22,23,38,39,42,43:_fac .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_ebc .SegmentNumber );
+_eeb ,_bfcg :=_ebc .GetSegmentData ();if _bfcg !=nil {return _bfcg ;};_acab ,_fggg :=_eeb .(_cf .Regioner );if !_fggg {_fac .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",_eeb );
+return _b .Errorf (_gaee ,"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",_eeb );
+};_fbf ,_bfcg :=_acab .GetRegionBitmap ();if _bfcg !=nil {return _b .Wrap (_bfcg ,_gaee ,"");};if _eece .fitsPage (_fdbg ,_fbf ){_eece .Bitmap =_fbf ;}else {_daf :=_acab .GetRegionInfo ();_gga :=_eece .getCombinationOperator (_fdbg ,_daf .CombinaionOperator );
+_bfcg =_ed .Blit (_fbf ,_eece .Bitmap ,int (_daf .XLocation ),int (_daf .YLocation ),_gga );if _bfcg !=nil {return _b .Wrap (_bfcg ,_gaee ,"");};};};};return nil ;};func (_ccdf *Page )lastSegmentNumber ()(_cbdg uint32 ,_faff error ){const _eebe ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
+if len (_ccdf .Segments )==0{return _cbdg ,_b .Errorf (_eebe ,"\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",_ccdf .PageNumber );
+};return _ccdf .Segments [len (_ccdf .Segments )-1].SegmentNumber ,nil ;};func (_gceb *Page )getResolutionX ()(int ,error ){const _ggf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gceb .ResolutionX !=0{return _gceb .ResolutionX ,nil ;
+};_aec :=_gceb .getPageInformationSegment ();if _aec ==nil {return 0,_b .Error (_ggf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bbf ,_fdag :=_aec .GetSegmentData ();if _fdag !=nil {return 0,_b .Wrap (_fdag ,_ggf ,"");
+};_abcc ,_bac :=_bbf .(*_cf .PageInformationSegment );if !_bac {return 0,_b .Errorf (_ggf ,"\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",_bbf );
+};_gceb .ResolutionX =_abcc .ResolutionX ;return _gceb .ResolutionX ,nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/document/segments/segments.go b/unipdf/internal/jbig2/document/segments/segments.go
new file mode 100644
index 0000000..8144416
--- /dev/null
+++ b/unipdf/internal/jbig2/document/segments/segments.go
@@ -0,0 +1,618 @@
+//
+// 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 segments ;import (_b "encoding/binary";_ec "errors";_gb "fmt";_age "github.com/unidoc/unipdf/v4/common";_c "github.com/unidoc/unipdf/v4/internal/bitwise";_ag "github.com/unidoc/unipdf/v4/internal/jbig2/basic";_f "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";
+_cc "github.com/unidoc/unipdf/v4/internal/jbig2/decoder/arithmetic";_ece "github.com/unidoc/unipdf/v4/internal/jbig2/decoder/huffman";_ee "github.com/unidoc/unipdf/v4/internal/jbig2/decoder/mmr";_bdc "github.com/unidoc/unipdf/v4/internal/jbig2/encoder/arithmetic";
+_dg "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_d "github.com/unidoc/unipdf/v4/internal/jbig2/internal";_g "image";_ed "io";_a "math";_ab "strings";_bd "time";);func (_fbaa *PageInformationSegment )readContainsRefinement ()error {_caea ,_agfc :=_fbaa ._eade .ReadBit ();
+if _agfc !=nil {return _agfc ;};if _caea ==1{_fbaa ._fabe =true ;};return nil ;};func (_aecd *SymbolDictionary )setCodingStatistics ()error {if _aecd ._fbbc ==nil {_aecd ._fbbc =_cc .NewStats (512,1);};if _aecd ._adbgg ==nil {_aecd ._adbgg =_cc .NewStats (512,1);
+};if _aecd ._ggcfb ==nil {_aecd ._ggcfb =_cc .NewStats (512,1);};if _aecd ._dbdb ==nil {_aecd ._dbdb =_cc .NewStats (512,1);};if _aecd ._ggec ==nil {_aecd ._ggec =_cc .NewStats (512,1);};if _aecd .UseRefinementAggregation &&_aecd ._fbac ==nil {_aecd ._fbac =_cc .NewStats (1<<uint (_aecd ._gdfg ),1);
+_aecd ._gffd =_cc .NewStats (512,1);_aecd ._fdff =_cc .NewStats (512,1);};if _aecd ._cfba ==nil {_aecd ._cfba =_cc .NewStats (65536,1);};if _aecd ._ded ==nil {var _cadd error ;_aecd ._ded ,_cadd =_cc .New (_aecd ._dabd );if _cadd !=nil {return _cadd ;};
+};return nil ;};func (_eafg *SymbolDictionary )retrieveImportSymbols ()error {for _ ,_fefa :=range _eafg .Header .RTSegments {if _fefa .Type ==0{_aafg ,_ebcb :=_fefa .GetSegmentData ();if _ebcb !=nil {return _ebcb ;};_cggf ,_agbcd :=_aafg .(*SymbolDictionary );
+if !_agbcd {return _gb .Errorf ("\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0044\u0061\u0074a\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0053\u0079\u006d\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0053\u0065\u0067m\u0065\u006e\u0074\u003a\u0020%\u0054",_aafg );
+};_acdd ,_ebcb :=_cggf .GetDictionary ();if _ebcb !=nil {return _gb .Errorf ("\u0072\u0065\u006c\u0061\u0074\u0065\u0064 \u0073\u0065\u0067m\u0065\u006e\u0074 \u0077\u0069t\u0068\u0020\u0069\u006e\u0064\u0065x\u003a %\u0064\u0020\u0067\u0065\u0074\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0073",_fefa .SegmentNumber ,_ebcb .Error ());
+};_eafg ._dfbg =append (_eafg ._dfbg ,_acdd ...);_eafg ._acg +=_cggf .NumberOfExportedSymbols ;};};return nil ;};func _dabc (_bffc *_c .Reader ,_fbeg *Header )*TextRegion {_bgcee :=&TextRegion {_bgge :_bffc ,Header :_fbeg ,RegionInfo :NewRegionSegment (_bffc )};
+return _bgcee ;};func (_bbad *SymbolDictionary )getSymbol (_gabad int )(*_f .Bitmap ,error ){const _edae ="\u0067e\u0074\u0053\u0079\u006d\u0062\u006fl";_ddfa ,_dge :=_bbad ._gabd .GetBitmap (_bbad ._cacb [_gabad ]);if _dge !=nil {return nil ,_dg .Wrap (_dge ,_edae ,"\u0063\u0061n\u0027\u0074\u0020g\u0065\u0074\u0020\u0073\u0079\u006d\u0062\u006f\u006c");
+};return _ddfa ,nil ;};func (_bdac *TextRegion )decodeStripT ()(_afge int64 ,_fcf error ){if _bdac .IsHuffmanEncoded {if _bdac .SbHuffDT ==3{if _bdac ._bddg ==nil {var _gfef int ;if _bdac .SbHuffFS ==3{_gfef ++;};if _bdac .SbHuffDS ==3{_gfef ++;};_bdac ._bddg ,_fcf =_bdac .getUserTable (_gfef );
+if _fcf !=nil {return 0,_fcf ;};};_afge ,_fcf =_bdac ._bddg .Decode (_bdac ._bgge );if _fcf !=nil {return 0,_fcf ;};}else {var _geegf _ece .Tabler ;_geegf ,_fcf =_ece .GetStandardTable (11+int (_bdac .SbHuffDT ));if _fcf !=nil {return 0,_fcf ;};_afge ,_fcf =_geegf .Decode (_bdac ._bgge );
+if _fcf !=nil {return 0,_fcf ;};};}else {var _ebbbg int32 ;_ebbbg ,_fcf =_bdac ._cefb .DecodeInt (_bdac ._fecfa );if _fcf !=nil {return 0,_fcf ;};_afge =int64 (_ebbbg );};_afge *=int64 (-_bdac .SbStrips );return _afge ,nil ;};func (_cgd *GenericRegion )decodeTemplate2 (_aac ,_ega ,_gfag int ,_aagf ,_gbad int )(_aebe error ){const _abd ="\u0064e\u0063o\u0064\u0065\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0032";
+var (_fdbe ,_ecff int ;_eab ,_bdb int ;_aea byte ;_afc ,_bceg int ;);if _aac >=1{_aea ,_aebe =_cgd .Bitmap .GetByte (_gbad );if _aebe !=nil {return _dg .Wrap (_aebe ,_abd ,"\u006ci\u006ee\u004e\u0075\u006d\u0062\u0065\u0072\u0020\u003e\u003d\u0020\u0031");
+};_eab =int (_aea );};if _aac >=2{_aea ,_aebe =_cgd .Bitmap .GetByte (_gbad -_cgd .Bitmap .RowStride );if _aebe !=nil {return _dg .Wrap (_aebe ,_abd ,"\u006ci\u006ee\u004e\u0075\u006d\u0062\u0065\u0072\u0020\u003e\u003d\u0020\u0032");};_bdb =int (_aea )<<4;
+};_fdbe =(_eab >>3&0x7c)|(_bdb >>3&0x380);for _egeg :=0;_egeg < _gfag ;_egeg =_afc {var (_fafe byte ;_baa int ;);_afc =_egeg +8;if _bagc :=_ega -_egeg ;_bagc > 8{_baa =8;}else {_baa =_bagc ;};if _aac > 0{_eab <<=8;if _afc < _ega {_aea ,_aebe =_cgd .Bitmap .GetByte (_gbad +1);
+if _aebe !=nil {return _dg .Wrap (_aebe ,_abd ,"\u006c\u0069\u006e\u0065\u004e\u0075\u006d\u0062\u0065r\u0020\u003e\u0020\u0030");};_eab |=int (_aea );};};if _aac > 1{_bdb <<=8;if _afc < _ega {_aea ,_aebe =_cgd .Bitmap .GetByte (_gbad -_cgd .Bitmap .RowStride +1);
+if _aebe !=nil {return _dg .Wrap (_aebe ,_abd ,"\u006c\u0069\u006e\u0065\u004e\u0075\u006d\u0062\u0065r\u0020\u003e\u0020\u0031");};_bdb |=int (_aea )<<4;};};for _gffg :=0;_gffg < _baa ;_gffg ++{_fff :=uint (10-_gffg );if _cgd ._aeed {_ecff =_cgd .overrideAtTemplate2 (_fdbe ,_egeg +_gffg ,_aac ,int (_fafe ),_gffg );
+_cgd ._fgce .SetIndex (int32 (_ecff ));}else {_cgd ._fgce .SetIndex (int32 (_fdbe ));};_bceg ,_aebe =_cgd ._fba .DecodeBit (_cgd ._fgce );if _aebe !=nil {return _dg .Wrap (_aebe ,_abd ,"");};_fafe |=byte (_bceg <<uint (7-_gffg ));_fdbe =((_fdbe &0x1bd)<<1)|_bceg |((_eab >>_fff )&0x4)|((_bdb >>_fff )&0x80);
+};if _adb :=_cgd .Bitmap .SetByte (_aagf ,_fafe );_adb !=nil {return _dg .Wrap (_adb ,_abd ,"");};_aagf ++;_gbad ++;};return nil ;};func (_fcde *Header )Encode (w _c .BinaryWriter )(_dagca int ,_cdbd error ){const _fgef ="\u0048\u0065\u0061d\u0065\u0072\u002e\u0057\u0072\u0069\u0074\u0065";
+var _fegb _c .BinaryWriter ;_age .Log .Trace ("\u005b\u0053\u0045G\u004d\u0045\u004e\u0054-\u0048\u0045\u0041\u0044\u0045\u0052\u005d[\u0045\u004e\u0043\u004f\u0044\u0045\u005d\u0020\u0042\u0065\u0067\u0069\u006e\u0073");defer func (){if _cdbd !=nil {_age .Log .Trace ("[\u0053\u0045\u0047\u004d\u0045\u004eT\u002d\u0048\u0045\u0041\u0044\u0045R\u005d\u005b\u0045\u004e\u0043\u004f\u0044E\u005d\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u002e\u0020%\u0076",_cdbd );
+}else {_age .Log .Trace ("\u005b\u0053\u0045\u0047ME\u004e\u0054\u002d\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u0020\u0025\u0076",_fcde );_age .Log .Trace ("\u005b\u0053\u0045\u0047\u004d\u0045N\u0054\u002d\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u005b\u0045\u004e\u0043O\u0044\u0045\u005d\u0020\u0046\u0069\u006ei\u0073\u0068\u0065\u0064");
+};}();w .FinishByte ();if _fcde .SegmentData !=nil {_cfb ,_ffd :=_fcde .SegmentData .(SegmentEncoder );if !_ffd {return 0,_dg .Errorf (_fgef ,"\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0064\u006f\u0065s\u006e\u0027\u0074\u0020\u0069\u006d\u0070\u006c\u0065\u006d\u0065\u006e\u0074 \u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0045\u006e\u0063\u006f\u0064er\u0020\u0069\u006e\u0074\u0065\u0072\u0066\u0061\u0063\u0065",_fcde .SegmentData );
+};_fegb =_c .BufferedMSB ();_dagca ,_cdbd =_cfb .Encode (_fegb );if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");};_fcde .SegmentDataLength =uint64 (_dagca );};if _fcde .pageSize ()==4{_fcde .PageAssociationFieldSize =true ;};var _ageg int ;_ageg ,_cdbd =_fcde .writeSegmentNumber (w );
+if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");};_dagca +=_ageg ;if _cdbd =_fcde .writeFlags (w );_cdbd !=nil {return _dagca ,_dg .Wrap (_cdbd ,_fgef ,"");};_dagca ++;_ageg ,_cdbd =_fcde .writeReferredToCount (w );if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");
+};_dagca +=_ageg ;_ageg ,_cdbd =_fcde .writeReferredToSegments (w );if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");};_dagca +=_ageg ;_ageg ,_cdbd =_fcde .writeSegmentPageAssociation (w );if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");};_dagca +=_ageg ;
+_ageg ,_cdbd =_fcde .writeSegmentDataLength (w );if _cdbd !=nil {return 0,_dg .Wrap (_cdbd ,_fgef ,"");};_dagca +=_ageg ;_fcde .HeaderLength =int64 (_dagca )-int64 (_fcde .SegmentDataLength );if _fegb !=nil {if _ ,_cdbd =w .Write (_fegb .Data ());_cdbd !=nil {return _dagca ,_dg .Wrap (_cdbd ,_fgef ,"\u0077r\u0069t\u0065\u0020\u0073\u0065\u0067m\u0065\u006et\u0020\u0064\u0061\u0074\u0061");
+};};return _dagca ,nil ;};func (_cdedg *SymbolDictionary )Init (h *Header ,r *_c .Reader )error {_cdedg .Header =h ;_cdedg ._dabd =r ;return _cdedg .parseHeader ();};func (_aebb *PatternDictionary )extractPatterns (_eced *_f .Bitmap )error {var _faaf int ;
+_ecgb :=make ([]*_f .Bitmap ,_aebb .GrayMax +1);for _faaf <=int (_aebb .GrayMax ){_ccd :=int (_aebb .HdpWidth )*_faaf ;_dgdf :=_g .Rect (_ccd ,0,_ccd +int (_aebb .HdpWidth ),int (_aebb .HdpHeight ));_ffgdf ,_faba :=_f .Extract (_dgdf ,_eced );if _faba !=nil {return _faba ;
+};_ecgb [_faaf ]=_ffgdf ;_faaf ++;};_aebb .Patterns =_ecgb ;return nil ;};func (_fgd *GenericRegion )computeSegmentDataStructure ()error {_fgd .DataOffset =_fgd ._faca .AbsolutePosition ();_fgd .DataHeaderLength =_fgd .DataOffset -_fgd .DataHeaderOffset ;
+_fgd .DataLength =int64 (_fgd ._faca .AbsoluteLength ())-_fgd .DataHeaderLength ;return nil ;};func (_geeg *PageInformationSegment )readRequiresAuxiliaryBuffer ()error {_bcfa ,_fggc :=_geeg ._eade .ReadBit ();if _fggc !=nil {return _fggc ;};if _bcfa ==1{_geeg ._bdag =true ;
+};return nil ;};func (_db *GenericRefinementRegion )getGrReference ()(*_f .Bitmap ,error ){segments :=_db ._gg .RTSegments ;if len (segments )==0{return nil ,_ec .New ("\u0052\u0065f\u0065\u0072\u0065\u006e\u0063\u0065\u0064\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0065\u0078is\u0074\u0073");
+};_gfd ,_gff :=segments [0].GetSegmentData ();if _gff !=nil {return nil ,_gff ;};_afd ,_acd :=_gfd .(Regioner );if !_acd {return nil ,_gb .Errorf ("\u0072\u0065\u0066\u0065\u0072r\u0065\u0064\u0020\u0074\u006f\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074 \u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_gfd );
+};return _afd .GetRegionBitmap ();};func (_bbd *GenericRefinementRegion )overrideAtTemplate0 (_cbc ,_eef ,_agb ,_aaf ,_cba int )int {if _bbd ._eecb [0]{_cbc &=0xfff7;if _bbd .GrAtY [0]==0&&int (_bbd .GrAtX [0])>=-_cba {_cbc |=(_aaf >>uint (7-(_cba +int (_bbd .GrAtX [0])))&0x1)<<3;
+}else {_cbc |=_bbd .getPixel (_bbd .RegionBitmap ,_eef +int (_bbd .GrAtX [0]),_agb +int (_bbd .GrAtY [0]))<<3;};};if _bbd ._eecb [1]{_cbc &=0xefff;if _bbd .GrAtY [1]==0&&int (_bbd .GrAtX [1])>=-_cba {_cbc |=(_aaf >>uint (7-(_cba +int (_bbd .GrAtX [1])))&0x1)<<12;
+}else {_cbc |=_bbd .getPixel (_bbd .ReferenceBitmap ,_eef +int (_bbd .GrAtX [1]),_agb +int (_bbd .GrAtY [1]));};};return _cbc ;};func (_fga *HalftoneRegion )computeGrayScalePlanes (_ggbcd []*_f .Bitmap ,_begf int )([][]int ,error ){_eceb :=make ([][]int ,_fga .HGridHeight );
+for _fbaf :=0;_fbaf < len (_eceb );_fbaf ++{_eceb [_fbaf ]=make ([]int ,_fga .HGridWidth );};for _bff :=0;_bff < int (_fga .HGridHeight );_bff ++{for _dde :=0;_dde < int (_fga .HGridWidth );_dde +=8{var _ebggc int ;if _ccbb :=int (_fga .HGridWidth )-_dde ;
+_ccbb > 8{_ebggc =8;}else {_ebggc =_ccbb ;};_cdg :=_ggbcd [0].GetByteIndex (_dde ,_bff );for _aeac :=0;_aeac < _ebggc ;_aeac ++{_gaaa :=_aeac +_dde ;_eceb [_bff ][_gaaa ]=0;for _dfd :=0;_dfd < _begf ;_dfd ++{_feff ,_ecee :=_ggbcd [_dfd ].GetByte (_cdg );
+if _ecee !=nil {return nil ,_ecee ;};_abga :=_feff >>uint (7-_gaaa &7);_fbada :=_abga &1;_bcdd :=1<<uint (_dfd );_badea :=int (_fbada )*_bcdd ;_eceb [_bff ][_gaaa ]+=_badea ;};};};};return _eceb ,nil ;};func (_ae *GenericRefinementRegion )Init (header *Header ,r *_c .Reader )error {_ae ._gg =header ;
+_ae ._bf =r ;_ae .RegionInfo =NewRegionSegment (r );return _ae .parseHeader ();};func (_aad *GenericRegion )parseHeader ()(_bcc error ){_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052I\u0043\u002d\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u0020\u0050\u0061\u0072s\u0069\u006e\u0067\u0048\u0065\u0061\u0064e\u0072\u002e\u002e\u002e");
+defer func (){if _bcc !=nil {_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0047\u0049\u004f\u004e]\u0020\u0050\u0061\u0072\u0073\u0069\u006e\u0067\u0048\u0065\u0061\u0064\u0065r\u0020\u0046\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u0020\u0077\u0069th\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u0025\u0076",_bcc );
+}else {_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052\u0049C\u002d\u0052\u0045G\u0049\u004f\u004e]\u0020\u0050a\u0072\u0073\u0069\u006e\u0067\u0048e\u0061de\u0072\u0020\u0046\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u0020\u0053\u0075\u0063\u0063\u0065\u0073\u0073\u0066\u0075\u006c\u006c\u0079\u002e\u002e\u002e");
+};}();var (_egcc int ;_gcb uint64 ;);if _bcc =_aad .RegionSegment .parseHeader ();_bcc !=nil {return _bcc ;};if _ ,_bcc =_aad ._faca .ReadBits (3);_bcc !=nil {return _bcc ;};_egcc ,_bcc =_aad ._faca .ReadBit ();if _bcc !=nil {return _bcc ;};if _egcc ==1{_aad .UseExtTemplates =true ;
+};_egcc ,_bcc =_aad ._faca .ReadBit ();if _bcc !=nil {return _bcc ;};if _egcc ==1{_aad .IsTPGDon =true ;};_gcb ,_bcc =_aad ._faca .ReadBits (2);if _bcc !=nil {return _bcc ;};_aad .GBTemplate =byte (_gcb &0xf);_egcc ,_bcc =_aad ._faca .ReadBit ();if _bcc !=nil {return _bcc ;
+};if _egcc ==1{_aad .IsMMREncoded =true ;};if !_aad .IsMMREncoded {_gee :=1;if _aad .GBTemplate ==0{_gee =4;if _aad .UseExtTemplates {_gee =12;};};if _bcc =_aad .readGBAtPixels (_gee );_bcc !=nil {return _bcc ;};};if _bcc =_aad .computeSegmentDataStructure ();
+_bcc !=nil {return _bcc ;};_age .Log .Trace ("\u0025\u0073",_aad );return nil ;};func (_cgda *PageInformationSegment )readCombinationOperator ()error {_acca ,_ecaed :=_cgda ._eade .ReadBits (2);if _ecaed !=nil {return _ecaed ;};_cgda ._dafc =_f .CombinationOperator (int (_acca ));
+return nil ;};type template1 struct{};func NewGenericRegion (r *_c .Reader )*GenericRegion {return &GenericRegion {RegionSegment :NewRegionSegment (r ),_faca :r };};func _deb (_degd int )int {if _degd ==0{return 0;};_degd |=_degd >>1;_degd |=_degd >>2;
+_degd |=_degd >>4;_degd |=_degd >>8;_degd |=_degd >>16;return (_degd +1)>>1;};func (_dcgd *SymbolDictionary )decodeDirectlyThroughGenericRegion (_eedb ,_fgde uint32 )error {if _dcgd ._cddgf ==nil {_dcgd ._cddgf =NewGenericRegion (_dcgd ._dabd );};_dcgd ._cddgf .setParametersWithAt (false ,byte (_dcgd .SdTemplate ),false ,false ,_dcgd .SdATX ,_dcgd .SdATY ,_eedb ,_fgde ,_dcgd ._cfba ,_dcgd ._ded );
+return _dcgd .addSymbol (_dcgd ._cddgf );};func (_aced *PatternDictionary )readTemplate ()error {_bbbf ,_aaaf :=_aced ._ebcg .ReadBits (2);if _aaaf !=nil {return _aaaf ;};_aced .HDTemplate =byte (_bbbf );return nil ;};func (_fcda *HalftoneRegion )GetPatterns ()([]*_f .Bitmap ,error ){var (_edfa []*_f .Bitmap ;
+_fge error ;);for _ ,_fbgea :=range _fcda ._ccge .RTSegments {var _ffad Segmenter ;_ffad ,_fge =_fbgea .GetSegmentData ();if _fge !=nil {_age .Log .Debug ("\u0047e\u0074\u0053\u0065\u0067m\u0065\u006e\u0074\u0044\u0061t\u0061 \u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025v",_fge );
+return nil ,_fge ;};_aab ,_fbgd :=_ffad .(*PatternDictionary );if !_fbgd {_fge =_gb .Errorf ("\u0072e\u006c\u0061t\u0065\u0064\u0020\u0073e\u0067\u006d\u0065n\u0074\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0070at\u0074\u0065\u0072n\u0020\u0064i\u0063\u0074\u0069\u006f\u006e\u0061r\u0079\u003a \u0025\u0054",_ffad );
+return nil ,_fge ;};var _cfgc []*_f .Bitmap ;_cfgc ,_fge =_aab .GetDictionary ();if _fge !=nil {_age .Log .Debug ("\u0070\u0061\u0074\u0074\u0065\u0072\u006e\u0020\u0047\u0065\u0074\u0044\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_fge );
+return nil ,_fge ;};_edfa =append (_edfa ,_cfgc ...);};return _edfa ,nil ;};func (_bfbb *Header )readNumberOfReferredToSegments (_gadd *_c .Reader )(uint64 ,error ){const _cdfd ="\u0072\u0065\u0061\u0064\u004e\u0075\u006d\u0062\u0065\u0072O\u0066\u0052\u0065\u0066\u0065\u0072\u0072e\u0064\u0054\u006f\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0073";
+_gefc ,_fdd :=_gadd .ReadBits (3);if _fdd !=nil {return 0,_dg .Wrap (_fdd ,_cdfd ,"\u0063\u006f\u0075n\u0074\u0020\u006f\u0066\u0020\u0072\u0074\u0073");};_gefc &=0xf;var _bccc []byte ;if _gefc <=4{_bccc =make ([]byte ,5);for _cfea :=0;_cfea <=4;_cfea ++{_bbaa ,_eda :=_gadd .ReadBit ();
+if _eda !=nil {return 0,_dg .Wrap (_eda ,_cdfd ,"\u0073\u0068\u006fr\u0074\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};_bccc [_cfea ]=byte (_bbaa );};}else {_gefc ,_fdd =_gadd .ReadBits (29);if _fdd !=nil {return 0,_fdd ;};_gefc &=_a .MaxInt32 ;_ccca :=(_gefc +8)>>3;
+_ccca <<=3;_bccc =make ([]byte ,_ccca );var _fceb uint64 ;for _fceb =0;_fceb < _ccca ;_fceb ++{_dfb ,_eac :=_gadd .ReadBit ();if _eac !=nil {return 0,_dg .Wrap (_eac ,_cdfd ,"l\u006f\u006e\u0067\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};_bccc [_fceb ]=byte (_dfb );
+};};return _gefc ,nil ;};func (_bfgb *TextRegion )setContexts (_bacf *_cc .DecoderStats ,_caddc *_cc .DecoderStats ,_dadee *_cc .DecoderStats ,_gaff *_cc .DecoderStats ,_bddb *_cc .DecoderStats ,_cedg *_cc .DecoderStats ,_baedb *_cc .DecoderStats ,_eadf *_cc .DecoderStats ,_cgdf *_cc .DecoderStats ,_cggbf *_cc .DecoderStats ){_bfgb ._fecfa =_caddc ;
+_bfgb ._dfca =_dadee ;_bfgb ._cgbe =_gaff ;_bfgb ._edbc =_bddb ;_bfgb ._gbeg =_baedb ;_bfgb ._gebe =_eadf ;_bfgb ._eadb =_cedg ;_bfgb ._aaba =_cgdf ;_bfgb ._gaad =_cggbf ;_bfgb ._bdfb =_bacf ;};func (_faabe *PageInformationSegment )String ()string {_fgac :=&_ab .Builder {};
+_fgac .WriteString ("\u000a\u005b\u0050\u0041G\u0045\u002d\u0049\u004e\u0046\u004f\u0052\u004d\u0041\u0054I\u004fN\u002d\u0053\u0045\u0047\u004d\u0045\u004eT\u005d\u000a");_fgac .WriteString (_gb .Sprintf ("\u0009\u002d \u0042\u004d\u0048e\u0069\u0067\u0068\u0074\u003a\u0020\u0025\u0064\u000a",_faabe .PageBMHeight ));
+_fgac .WriteString (_gb .Sprintf ("\u0009-\u0020B\u004d\u0057\u0069\u0064\u0074\u0068\u003a\u0020\u0025\u0064\u000a",_faabe .PageBMWidth ));_fgac .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0052es\u006f\u006c\u0075\u0074\u0069\u006f\u006e\u0058\u003a\u0020\u0025\u0064\u000a",_faabe .ResolutionX ));
+_fgac .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0052es\u006f\u006c\u0075\u0074\u0069\u006f\u006e\u0059\u003a\u0020\u0025\u0064\u000a",_faabe .ResolutionY ));_fgac .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0043\u006f\u006d\u0062i\u006e\u0061\u0074\u0069\u006f\u006e\u004f\u0070\u0065r\u0061\u0074\u006fr\u003a \u0025\u0073\u000a",_faabe ._dafc ));
+_fgac .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0043\u006f\u006d\u0062i\u006e\u0061\u0074\u0069\u006f\u006eO\u0070\u0065\u0072\u0061\u0074\u006f\u0072O\u0076\u0065\u0072\u0072\u0069\u0064\u0065\u003a\u0020\u0025v\u000a",_faabe ._cbfcb ));_fgac .WriteString (_gb .Sprintf ("\u0009-\u0020I\u0073\u004c\u006f\u0073\u0073l\u0065\u0073s\u003a\u0020\u0025\u0076\u000a",_faabe .IsLossless ));
+_fgac .WriteString (_gb .Sprintf ("\u0009\u002d\u0020R\u0065\u0071\u0075\u0069r\u0065\u0073\u0041\u0075\u0078\u0069\u006ci\u0061\u0072\u0079\u0042\u0075\u0066\u0066\u0065\u0072\u003a\u0020\u0025\u0076\u000a",_faabe ._bdag ));_fgac .WriteString (_gb .Sprintf ("\u0009\u002d\u0020M\u0069\u0067\u0068\u0074C\u006f\u006e\u0074\u0061\u0069\u006e\u0052e\u0066\u0069\u006e\u0065\u006d\u0065\u006e\u0074\u0073\u003a\u0020\u0025\u0076\u000a",_faabe ._fabe ));
+_fgac .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0049\u0073\u0053\u0074\u0072\u0069\u0070\u0065\u0064:\u0020\u0025\u0076\u000a",_faabe .IsStripe ));_fgac .WriteString (_gb .Sprintf ("\t\u002d\u0020\u004d\u0061xS\u0074r\u0069\u0070\u0065\u0053\u0069z\u0065\u003a\u0020\u0025\u0076\u000a",_faabe .MaxStripeSize ));
+return _fgac .String ();};func (_bgbc *TextRegion )GetRegionBitmap ()(*_f .Bitmap ,error ){if _bgbc .RegionBitmap !=nil {return _bgbc .RegionBitmap ,nil ;};if !_bgbc .IsHuffmanEncoded {if _fdea :=_bgbc .setCodingStatistics ();_fdea !=nil {return nil ,_fdea ;
+};};if _dbbag :=_bgbc .createRegionBitmap ();_dbbag !=nil {return nil ,_dbbag ;};if _defe :=_bgbc .decodeSymbolInstances ();_defe !=nil {return nil ,_defe ;};return _bgbc .RegionBitmap ,nil ;};func (_abee *SymbolDictionary )encodeNumSyms (_dded _c .BinaryWriter )(_eada int ,_dagac error ){const _eccd ="\u0065\u006e\u0063\u006f\u0064\u0065\u004e\u0075\u006d\u0053\u0079\u006d\u0073";
+_edfdd :=make ([]byte ,4);_b .BigEndian .PutUint32 (_edfdd ,_abee .NumberOfExportedSymbols );if _eada ,_dagac =_dded .Write (_edfdd );_dagac !=nil {return _eada ,_dg .Wrap (_dagac ,_eccd ,"\u0065\u0078p\u006f\u0072\u0074e\u0064\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0073");
+};_b .BigEndian .PutUint32 (_edfdd ,_abee .NumberOfNewSymbols );_ffgc ,_dagac :=_dded .Write (_edfdd );if _dagac !=nil {return _eada ,_dg .Wrap (_dagac ,_eccd ,"n\u0065\u0077\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0073");};return _eada +_ffgc ,nil ;
+};func (_bad *GenericRefinementRegion )setParameters (_gfb *_cc .DecoderStats ,_efc *_cc .Decoder ,_abc int8 ,_eeb ,_acdaa uint32 ,_bgdd *_f .Bitmap ,_aeee ,_bgca int32 ,_fecf bool ,_bdae []int8 ,_accf []int8 ){_age .Log .Trace ("\u005b\u0047\u0045NE\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052E\u0047I\u004fN\u005d \u0073\u0065\u0074\u0050\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0073");
+if _gfb !=nil {_bad ._cd =_gfb ;};if _efc !=nil {_bad ._gaf =_efc ;};_bad .TemplateID =_abc ;_bad .RegionInfo .BitmapWidth =_eeb ;_bad .RegionInfo .BitmapHeight =_acdaa ;_bad .ReferenceBitmap =_bgdd ;_bad .ReferenceDX =_aeee ;_bad .ReferenceDY =_bgca ;
+_bad .IsTPGROn =_fecf ;_bad .GrAtX =_bdae ;_bad .GrAtY =_accf ;_bad .RegionBitmap =nil ;_age .Log .Trace ("[\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052E\u0046\u002d\u0052\u0045\u0047\u0049\u004fN]\u0020\u0073\u0065\u0074P\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0073 f\u0069\u006ei\u0073\u0068\u0065\u0064\u002e\u0020\u0025\u0073",_bad );
+};func (_fdfc *TextRegion )Init (header *Header ,r *_c .Reader )error {_fdfc .Header =header ;_fdfc ._bgge =r ;_fdfc .RegionInfo =NewRegionSegment (_fdfc ._bgge );return _fdfc .parseHeader ();};func (_daccf *TextRegion )getUserTable (_ccdb int )(_ece .Tabler ,error ){const _ecga ="\u0067\u0065\u0074U\u0073\u0065\u0072\u0054\u0061\u0062\u006c\u0065";
+var _dgbe int ;for _ ,_faaa :=range _daccf .Header .RTSegments {if _faaa .Type ==53{if _dgbe ==_ccdb {_ebccd ,_gbbe :=_faaa .GetSegmentData ();if _gbbe !=nil {return nil ,_gbbe ;};_eeee ,_ebgd :=_ebccd .(*TableSegment );if !_ebgd {_age .Log .Debug (_gb .Sprintf ("\u0073\u0065\u0067\u006d\u0065\u006e\u0074 \u0077\u0069\u0074h\u0020\u0054\u0079p\u0065\u00205\u0033\u0020\u002d\u0020\u0061\u006ed\u0020in\u0064\u0065\u0078\u003a\u0020\u0025\u0064\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0054\u0061\u0062\u006c\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074",_faaa .SegmentNumber ));
+return nil ,_dg .Error (_ecga ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074 \u0077\u0069\u0074h\u0020\u0054\u0079\u0070e\u0020\u0035\u0033\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u002a\u0054\u0061\u0062\u006c\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074");
+};return _ece .NewEncodedTable (_eeee );};_dgbe ++;};};return nil ,nil ;};type SymbolDictionary struct{_dabd *_c .Reader ;SdrTemplate int8 ;SdTemplate int8 ;_eegc bool ;_eaf bool ;SdHuffAggInstanceSelection bool ;SdHuffBMSizeSelection int8 ;SdHuffDecodeWidthSelection int8 ;
+SdHuffDecodeHeightSelection int8 ;UseRefinementAggregation bool ;IsHuffmanEncoded bool ;SdATX []int8 ;SdATY []int8 ;SdrATX []int8 ;SdrATY []int8 ;NumberOfExportedSymbols uint32 ;NumberOfNewSymbols uint32 ;Header *Header ;_acg uint32 ;_dfbg []*_f .Bitmap ;
+_cec uint32 ;_ddae []*_f .Bitmap ;_gdgd _ece .Tabler ;_gagc _ece .Tabler ;_feea _ece .Tabler ;_afec _ece .Tabler ;_ffdg []*_f .Bitmap ;_ecac []*_f .Bitmap ;_ded *_cc .Decoder ;_fagf *TextRegion ;_cddgf *GenericRegion ;_ggcf *GenericRefinementRegion ;_cfba *_cc .DecoderStats ;
+_adbgg *_cc .DecoderStats ;_ggcfb *_cc .DecoderStats ;_dbdb *_cc .DecoderStats ;_ggec *_cc .DecoderStats ;_gffd *_cc .DecoderStats ;_fdff *_cc .DecoderStats ;_fbbc *_cc .DecoderStats ;_fbac *_cc .DecoderStats ;_gdfg int8 ;_gabd *_f .Bitmaps ;_cacb []int ;
+_gbdf map[int ]int ;_dfadf bool ;};func (_fca *template1 )setIndex (_cfe *_cc .DecoderStats ){_cfe .SetIndex (0x080)};func (_gged *SymbolDictionary )decodeNewSymbols (_dbafd ,_ffec uint32 ,_adgb *_f .Bitmap ,_gdfc ,_cbbe int32 )error {if _gged ._ggcf ==nil {_gged ._ggcf =_bcbf (_gged ._dabd ,nil );
+if _gged ._ded ==nil {var _ecfc error ;_gged ._ded ,_ecfc =_cc .New (_gged ._dabd );if _ecfc !=nil {return _ecfc ;};};if _gged ._cfba ==nil {_gged ._cfba =_cc .NewStats (65536,1);};};_gged ._ggcf .setParameters (_gged ._cfba ,_gged ._ded ,_gged .SdrTemplate ,_dbafd ,_ffec ,_adgb ,_gdfc ,_cbbe ,false ,_gged .SdrATX ,_gged .SdrATY );
+return _gged .addSymbol (_gged ._ggcf );};func (_addce *TextRegion )symbolIDCodeLengths ()error {var (_gedda []*_ece .Code ;_cgac uint64 ;_agff _ece .Tabler ;_fcbg error ;);for _abgcb :=0;_abgcb < 35;_abgcb ++{_cgac ,_fcbg =_addce ._bgge .ReadBits (4);
+if _fcbg !=nil {return _fcbg ;};_debb :=int (_cgac &0xf);if _debb > 0{_gedda =append (_gedda ,_ece .NewCode (int32 (_debb ),0,int32 (_abgcb ),false ));};};_agff ,_fcbg =_ece .NewFixedSizeTable (_gedda );if _fcbg !=nil {return _fcbg ;};var (_acef int64 ;
+_adge uint32 ;_bdff []*_ece .Code ;_febb int64 ;);for _adge < _addce .NumberOfSymbols {_febb ,_fcbg =_agff .Decode (_addce ._bgge );if _fcbg !=nil {return _fcbg ;};if _febb < 32{if _febb > 0{_bdff =append (_bdff ,_ece .NewCode (int32 (_febb ),0,int32 (_adge ),false ));
+};_acef =_febb ;_adge ++;}else {var _dcaf ,_gagee int64 ;switch _febb {case 32:_cgac ,_fcbg =_addce ._bgge .ReadBits (2);if _fcbg !=nil {return _fcbg ;};_dcaf =3+int64 (_cgac );if _adge > 0{_gagee =_acef ;};case 33:_cgac ,_fcbg =_addce ._bgge .ReadBits (3);
+if _fcbg !=nil {return _fcbg ;};_dcaf =3+int64 (_cgac );case 34:_cgac ,_fcbg =_addce ._bgge .ReadBits (7);if _fcbg !=nil {return _fcbg ;};_dcaf =11+int64 (_cgac );};for _cbfac :=0;_cbfac < int (_dcaf );_cbfac ++{if _gagee > 0{_bdff =append (_bdff ,_ece .NewCode (int32 (_gagee ),0,int32 (_adge ),false ));
+};_adge ++;};};};_addce ._bgge .Align ();_addce ._bgcg ,_fcbg =_ece .NewFixedSizeTable (_bdff );return _fcbg ;};func (_afde *TextRegion )decodeRdy ()(int64 ,error ){const _ecebb ="\u0064e\u0063\u006f\u0064\u0065\u0052\u0064y";if _afde .IsHuffmanEncoded {if _afde .SbHuffRDY ==3{if _afde ._fdcag ==nil {var (_fggcc int ;
+_cfgf error ;);if _afde .SbHuffFS ==3{_fggcc ++;};if _afde .SbHuffDS ==3{_fggcc ++;};if _afde .SbHuffDT ==3{_fggcc ++;};if _afde .SbHuffRDWidth ==3{_fggcc ++;};if _afde .SbHuffRDHeight ==3{_fggcc ++;};if _afde .SbHuffRDX ==3{_fggcc ++;};_afde ._fdcag ,_cfgf =_afde .getUserTable (_fggcc );
+if _cfgf !=nil {return 0,_dg .Wrap (_cfgf ,_ecebb ,"");};};return _afde ._fdcag .Decode (_afde ._bgge );};_abgc ,_gdccd :=_ece .GetStandardTable (14+int (_afde .SbHuffRDY ));if _gdccd !=nil {return 0,_gdccd ;};return _abgc .Decode (_afde ._bgge );};_eddaf ,_cafa :=_afde ._cefb .DecodeInt (_afde ._gaad );
+if _cafa !=nil {return 0,_dg .Wrap (_cafa ,_ecebb ,"");};return int64 (_eddaf ),nil ;};func (_gfgc *GenericRegion )Init (h *Header ,r *_c .Reader )error {_gfgc .RegionSegment =NewRegionSegment (r );_gfgc ._faca =r ;return _gfgc .parseHeader ();};func (_ggbf *TextRegion )decodeID ()(int64 ,error ){if _ggbf .IsHuffmanEncoded {if _ggbf ._bgcg ==nil {_fdfg ,_fedb :=_ggbf ._bgge .ReadBits (byte (_ggbf ._aeaca ));
+return int64 (_fdfg ),_fedb ;};return _ggbf ._bgcg .Decode (_ggbf ._bgge );};return _ggbf ._cefb .DecodeIAID (uint64 (_ggbf ._aeaca ),_ggbf ._eadb );};func (_caad *GenericRegion )setParametersMMR (_ddd bool ,_dbc ,_fege int64 ,_baeb ,_dbaf uint32 ,_cbfa byte ,_gbb ,_bef bool ,_ccgg ,_dagc []int8 ){_caad .DataOffset =_dbc ;
+_caad .DataLength =_fege ;_caad .RegionSegment =&RegionSegment {};_caad .RegionSegment .BitmapHeight =_baeb ;_caad .RegionSegment .BitmapWidth =_dbaf ;_caad .GBTemplate =_cbfa ;_caad .IsMMREncoded =_ddd ;_caad .IsTPGDon =_gbb ;_caad .GBAtX =_ccgg ;_caad .GBAtY =_dagc ;
+};func (_gf *EndOfStripe )parseHeader ()error {_ga ,_be :=_gf ._ff .ReadBits (32);if _be !=nil {return _be ;};_gf ._cce =int (_ga &_a .MaxInt32 );return nil ;};func (_bdbad *HalftoneRegion )grayScaleDecoding (_gbde int )([][]int ,error ){var (_ddaf []int8 ;
+_fafg []int8 ;);if !_bdbad .IsMMREncoded {_ddaf =make ([]int8 ,4);_fafg =make ([]int8 ,4);if _bdbad .HTemplate <=1{_ddaf [0]=3;}else if _bdbad .HTemplate >=2{_ddaf [0]=2;};_fafg [0]=-1;_ddaf [1]=-3;_fafg [1]=-1;_ddaf [2]=2;_fafg [2]=-2;_ddaf [3]=-2;_fafg [3]=-2;
+};_fecda :=make ([]*_f .Bitmap ,_gbde );_eegd :=NewGenericRegion (_bdbad ._dade );_eegd .setParametersMMR (_bdbad .IsMMREncoded ,_bdbad .DataOffset ,_bdbad .DataLength ,_bdbad .HGridHeight ,_bdbad .HGridWidth ,_bdbad .HTemplate ,false ,_bdbad .HSkipEnabled ,_ddaf ,_fafg );
+_fffa :=_gbde -1;var _dbee error ;_fecda [_fffa ],_dbee =_eegd .GetRegionBitmap ();if _dbee !=nil {return nil ,_dbee ;};for _fffa > 0{_fffa --;_eegd .Bitmap =nil ;_fecda [_fffa ],_dbee =_eegd .GetRegionBitmap ();if _dbee !=nil {return nil ,_dbee ;};if _dbee =_bdbad .combineGrayscalePlanes (_fecda ,_fffa );
+_dbee !=nil {return nil ,_dbee ;};};return _bdbad .computeGrayScalePlanes (_fecda ,_gbde );};const (ORandom OrganizationType =iota ;OSequential ;);func (_ecde *SymbolDictionary )setExportedSymbols (_agee []int ){for _feee :=uint32 (0);_feee < _ecde ._acg +_ecde .NumberOfNewSymbols ;
+_feee ++{if _agee [_feee ]==1{var _dcac *_f .Bitmap ;if _feee < _ecde ._acg {_dcac =_ecde ._dfbg [_feee ];}else {_dcac =_ecde ._ddae [_feee -_ecde ._acg ];};_age .Log .Trace ("\u005bS\u0059\u004dB\u004f\u004c\u002d\u0044I\u0043\u0054\u0049O\u004e\u0041\u0052\u0059\u005d\u0020\u0041\u0064\u0064 E\u0078\u0070\u006fr\u0074\u0065d\u0053\u0079\u006d\u0062\u006f\u006c:\u0020\u0027%\u0073\u0027",_dcac );
+_ecde ._ffdg =append (_ecde ._ffdg ,_dcac );};};};func (_affgf *RegionSegment )Encode (w _c .BinaryWriter )(_fbbe int ,_face error ){const _gafb ="R\u0065g\u0069\u006f\u006e\u0053\u0065\u0067\u006d\u0065n\u0074\u002e\u0045\u006eco\u0064\u0065";_efcc :=make ([]byte ,4);
+_b .BigEndian .PutUint32 (_efcc ,_affgf .BitmapWidth );_fbbe ,_face =w .Write (_efcc );if _face !=nil {return 0,_dg .Wrap (_face ,_gafb ,"\u0057\u0069\u0064t\u0068");};_b .BigEndian .PutUint32 (_efcc ,_affgf .BitmapHeight );var _faea int ;_faea ,_face =w .Write (_efcc );
+if _face !=nil {return 0,_dg .Wrap (_face ,_gafb ,"\u0048\u0065\u0069\u0067\u0068\u0074");};_fbbe +=_faea ;_b .BigEndian .PutUint32 (_efcc ,_affgf .XLocation );_faea ,_face =w .Write (_efcc );if _face !=nil {return 0,_dg .Wrap (_face ,_gafb ,"\u0058L\u006f\u0063\u0061\u0074\u0069\u006fn");
+};_fbbe +=_faea ;_b .BigEndian .PutUint32 (_efcc ,_affgf .YLocation );_faea ,_face =w .Write (_efcc );if _face !=nil {return 0,_dg .Wrap (_face ,_gafb ,"\u0059L\u006f\u0063\u0061\u0074\u0069\u006fn");};_fbbe +=_faea ;if _face =w .WriteByte (byte (_affgf .CombinaionOperator )&0x07);
+_face !=nil {return 0,_dg .Wrap (_face ,_gafb ,"c\u006fm\u0062\u0069\u006e\u0061\u0074\u0069\u006f\u006e \u006f\u0070\u0065\u0072at\u006f\u0072");};_fbbe ++;return _fbbe ,nil ;};func (_ccb *GenericRegion )decodeSLTP ()(int ,error ){switch _ccb .GBTemplate {case 0:_ccb ._fgce .SetIndex (0x9B25);
+case 1:_ccb ._fgce .SetIndex (0x795);case 2:_ccb ._fgce .SetIndex (0xE5);case 3:_ccb ._fgce .SetIndex (0x195);};return _ccb ._fba .DecodeBit (_ccb ._fgce );};func (_aae *SymbolDictionary )readAtPixels (_bbfc int )error {_aae .SdATX =make ([]int8 ,_bbfc );
+_aae .SdATY =make ([]int8 ,_bbfc );var (_caeaa byte ;_agbe error ;);for _cbcd :=0;_cbcd < _bbfc ;_cbcd ++{_caeaa ,_agbe =_aae ._dabd .ReadByte ();if _agbe !=nil {return _agbe ;};_aae .SdATX [_cbcd ]=int8 (_caeaa );_caeaa ,_agbe =_aae ._dabd .ReadByte ();
+if _agbe !=nil {return _agbe ;};_aae .SdATY [_cbcd ]=int8 (_caeaa );};return nil ;};func (_ggb *GenericRegion )copyLineAbove (_gbgg int )error {_cfgd :=_gbgg *_ggb .Bitmap .RowStride ;_dba :=_cfgd -_ggb .Bitmap .RowStride ;for _dbd :=0;_dbd < _ggb .Bitmap .RowStride ;
+_dbd ++{_fbea ,_dbgf :=_ggb .Bitmap .GetByte (_dba );if _dbgf !=nil {return _dbgf ;};_dba ++;if _dbgf =_ggb .Bitmap .SetByte (_cfgd ,_fbea );_dbgf !=nil {return _dbgf ;};_cfgd ++;};return nil ;};func (_ad *EndOfStripe )Init (h *Header ,r *_c .Reader )error {_ad ._ff =r ;
+return _ad .parseHeader ()};func (_caddd *TextRegion )setCodingStatistics ()error {if _caddd ._fecfa ==nil {_caddd ._fecfa =_cc .NewStats (512,1);};if _caddd ._dfca ==nil {_caddd ._dfca =_cc .NewStats (512,1);};if _caddd ._cgbe ==nil {_caddd ._cgbe =_cc .NewStats (512,1);
+};if _caddd ._edbc ==nil {_caddd ._edbc =_cc .NewStats (512,1);};if _caddd ._adbfe ==nil {_caddd ._adbfe =_cc .NewStats (512,1);};if _caddd ._gbeg ==nil {_caddd ._gbeg =_cc .NewStats (512,1);};if _caddd ._gebe ==nil {_caddd ._gebe =_cc .NewStats (512,1);
+};if _caddd ._eadb ==nil {_caddd ._eadb =_cc .NewStats (1<<uint (_caddd ._aeaca ),1);};if _caddd ._aaba ==nil {_caddd ._aaba =_cc .NewStats (512,1);};if _caddd ._gaad ==nil {_caddd ._gaad =_cc .NewStats (512,1);};if _caddd ._cefb ==nil {var _fgdb error ;
+_caddd ._cefb ,_fgdb =_cc .New (_caddd ._bgge );if _fgdb !=nil {return _fgdb ;};};return nil ;};type template0 struct{};var _ SegmentEncoder =&GenericRegion {};const (TSymbolDictionary Type =0;TIntermediateTextRegion Type =4;TImmediateTextRegion Type =6;
+TImmediateLosslessTextRegion Type =7;TPatternDictionary Type =16;TIntermediateHalftoneRegion Type =20;TImmediateHalftoneRegion Type =22;TImmediateLosslessHalftoneRegion Type =23;TIntermediateGenericRegion Type =36;TImmediateGenericRegion Type =38;TImmediateLosslessGenericRegion Type =39;
+TIntermediateGenericRefinementRegion Type =40;TImmediateGenericRefinementRegion Type =42;TImmediateLosslessGenericRefinementRegion Type =43;TPageInformation Type =48;TEndOfPage Type =49;TEndOfStrip Type =50;TEndOfFile Type =51;TProfiles Type =52;TTables Type =53;
+TExtension Type =62;TBitmap Type =70;);func (_cgag *Header )String ()string {_bee :=&_ab .Builder {};_bee .WriteString ("\u000a[\u0053E\u0047\u004d\u0045\u004e\u0054-\u0048\u0045A\u0044\u0045\u0052\u005d\u000a");_bee .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0053\u0065gm\u0065n\u0074\u004e\u0075\u006d\u0062e\u0072\u003a\u0020\u0025\u0076\u000a",_cgag .SegmentNumber ));
+_bee .WriteString (_gb .Sprintf ("\u0009\u002d\u0020T\u0079\u0070\u0065\u003a\u0020\u0025\u0076\u000a",_cgag .Type ));_bee .WriteString (_gb .Sprintf ("\u0009-\u0020R\u0065\u0074\u0061\u0069\u006eF\u006c\u0061g\u003a\u0020\u0025\u0076\u000a",_cgag .RetainFlag ));
+_bee .WriteString (_gb .Sprintf ("\u0009\u002d\u0020Pa\u0067\u0065\u0041\u0073\u0073\u006f\u0063\u0069\u0061\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0076\u000a",_cgag .PageAssociation ));_bee .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0050\u0061\u0067\u0065\u0041\u0073\u0073\u006f\u0063\u0069\u0061\u0074i\u006fn\u0046\u0069\u0065\u006c\u0064\u0053\u0069\u007a\u0065\u003a\u0020\u0025\u0076\u000a",_cgag .PageAssociationFieldSize ));
+_bee .WriteString ("\u0009-\u0020R\u0054\u0053\u0045\u0047\u004d\u0045\u004e\u0054\u0053\u003a\u000a");for _ ,_cgdc :=range _cgag .RTSNumbers {_bee .WriteString (_gb .Sprintf ("\u0009\t\u002d\u0020\u0025\u0064\u000a",_cgdc ));};_bee .WriteString (_gb .Sprintf ("\t\u002d \u0048\u0065\u0061\u0064\u0065\u0072\u004c\u0065n\u0067\u0074\u0068\u003a %\u0076\u000a",_cgag .HeaderLength ));
+_bee .WriteString (_gb .Sprintf ("\u0009-\u0020\u0053\u0065\u0067m\u0065\u006e\u0074\u0044\u0061t\u0061L\u0065n\u0067\u0074\u0068\u003a\u0020\u0025\u0076\n",_cgag .SegmentDataLength ));_bee .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074D\u0061\u0074\u0061\u0053\u0074\u0061\u0072t\u004f\u0066\u0066\u0073\u0065\u0074\u003a\u0020\u0025\u0076\u000a",_cgag .SegmentDataStartOffset ));
+return _bee .String ();};func (_cdf *GenericRegion )decodeTemplate0a (_dcb ,_bgb ,_bfg int ,_bdcec ,_ggcb int )(_fdb error ){const _dbea ="\u0064\u0065c\u006f\u0064\u0065T\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0030\u0061";var (_bde ,_egg int ;_bdgg ,_bag int ;
+_afdd byte ;_cegc int ;);if _dcb >=1{_afdd ,_fdb =_cdf .Bitmap .GetByte (_ggcb );if _fdb !=nil {return _dg .Wrap (_fdb ,_dbea ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00201");};_bdgg =int (_afdd );};if _dcb >=2{_afdd ,_fdb =_cdf .Bitmap .GetByte (_ggcb -_cdf .Bitmap .RowStride );
+if _fdb !=nil {return _dg .Wrap (_fdb ,_dbea ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00202");};_bag =int (_afdd )<<6;};_bde =(_bdgg &0xf0)|(_bag &0x3800);for _daea :=0;_daea < _bfg ;_daea =_cegc {var (_bdf byte ;_bccb int ;);_cegc =_daea +8;if _cdb :=_bgb -_daea ;
+_cdb > 8{_bccb =8;}else {_bccb =_cdb ;};if _dcb > 0{_bdgg <<=8;if _cegc < _bgb {_afdd ,_fdb =_cdf .Bitmap .GetByte (_ggcb +1);if _fdb !=nil {return _dg .Wrap (_fdb ,_dbea ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0030");};_bdgg |=int (_afdd );};};if _dcb > 1{_gfc :=_ggcb -_cdf .Bitmap .RowStride +1;
+_bag <<=8;if _cegc < _bgb {_afdd ,_fdb =_cdf .Bitmap .GetByte (_gfc );if _fdb !=nil {return _dg .Wrap (_fdb ,_dbea ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0031");};_bag |=int (_afdd )<<6;}else {_bag |=0;};};for _cbaa :=0;_cbaa < _bccb ;_cbaa ++{_bcca :=uint (7-_cbaa );
+if _cdf ._aeed {_egg =_cdf .overrideAtTemplate0a (_bde ,_daea +_cbaa ,_dcb ,int (_bdf ),_cbaa ,int (_bcca ));_cdf ._fgce .SetIndex (int32 (_egg ));}else {_cdf ._fgce .SetIndex (int32 (_bde ));};var _egd int ;_egd ,_fdb =_cdf ._fba .DecodeBit (_cdf ._fgce );
+if _fdb !=nil {return _dg .Wrap (_fdb ,_dbea ,"");};_bdf |=byte (_egd )<<_bcca ;_bde =((_bde &0x7bf7)<<1)|_egd |((_bdgg >>_bcca )&0x10)|((_bag >>_bcca )&0x800);};if _bba :=_cdf .Bitmap .SetByte (_bdcec ,_bdf );_bba !=nil {return _dg .Wrap (_bba ,_dbea ,"");
+};_bdcec ++;_ggcb ++;};return nil ;};type HalftoneRegion struct{_dade *_c .Reader ;_ccge *Header ;DataHeaderOffset int64 ;DataHeaderLength int64 ;DataOffset int64 ;DataLength int64 ;RegionSegment *RegionSegment ;HDefaultPixel int8 ;CombinationOperator _f .CombinationOperator ;
+HSkipEnabled bool ;HTemplate byte ;IsMMREncoded bool ;HGridWidth uint32 ;HGridHeight uint32 ;HGridX int32 ;HGridY int32 ;HRegionX uint16 ;HRegionY uint16 ;HalftoneRegionBitmap *_f .Bitmap ;Patterns []*_f .Bitmap ;};func (_daga *HalftoneRegion )computeSegmentDataStructure ()error {_daga .DataOffset =_daga ._dade .AbsolutePosition ();
+_daga .DataHeaderLength =_daga .DataOffset -_daga .DataHeaderOffset ;_daga .DataLength =int64 (_daga ._dade .AbsoluteLength ())-_daga .DataHeaderLength ;return nil ;};func (_eggf *PatternDictionary )readIsMMREncoded ()error {_dcfc ,_ebf :=_eggf ._ebcg .ReadBit ();
+if _ebf !=nil {return _ebf ;};if _dcfc !=0{_eggf .IsMMREncoded =true ;};return nil ;};func (_eacc *PatternDictionary )readPatternWidthAndHeight ()error {_abde ,_fcebc :=_eacc ._ebcg .ReadByte ();if _fcebc !=nil {return _fcebc ;};_eacc .HdpWidth =_abde ;
+_abde ,_fcebc =_eacc ._ebcg .ReadByte ();if _fcebc !=nil {return _fcebc ;};_eacc .HdpHeight =_abde ;return nil ;};func (_cbee *PatternDictionary )Init (h *Header ,r *_c .Reader )error {_cbee ._ebcg =r ;return _cbee .parseHeader ();};func (_eefbg *SymbolDictionary )setSymbolsArray ()error {if _eefbg ._dfbg ==nil {if _agcc :=_eefbg .retrieveImportSymbols ();
+_agcc !=nil {return _agcc ;};};if _eefbg ._ecac ==nil {_eefbg ._ecac =append (_eefbg ._ecac ,_eefbg ._dfbg ...);};return nil ;};func (_aeec *TextRegion )decodeCurrentT ()(int64 ,error ){if _aeec .SbStrips !=1{if _aeec .IsHuffmanEncoded {_febce ,_decf :=_aeec ._bgge .ReadBits (byte (_aeec .LogSBStrips ));
+return int64 (_febce ),_decf ;};_aggdf ,_dafa :=_aeec ._cefb .DecodeInt (_aeec ._edbc );if _dafa !=nil {return 0,_dafa ;};return int64 (_aggdf ),nil ;};return 0,nil ;};func (_fabb *PatternDictionary )computeSegmentDataStructure ()error {_fabb .DataOffset =_fabb ._ebcg .AbsolutePosition ();
+_fabb .DataHeaderLength =_fabb .DataOffset -_fabb .DataHeaderOffset ;_fabb .DataLength =int64 (_fabb ._ebcg .AbsoluteLength ())-_fabb .DataHeaderLength ;return nil ;};type GenericRefinementRegion struct{_dc templater ;_af templater ;_bf *_c .Reader ;_gg *Header ;
+RegionInfo *RegionSegment ;IsTPGROn bool ;TemplateID int8 ;Template templater ;GrAtX []int8 ;GrAtY []int8 ;RegionBitmap *_f .Bitmap ;ReferenceBitmap *_f .Bitmap ;ReferenceDX int32 ;ReferenceDY int32 ;_gaf *_cc .Decoder ;_cd *_cc .DecoderStats ;_eec bool ;
+_eecb []bool ;};func (_eegfe *HalftoneRegion )renderPattern (_bbgf [][]int )(_acdb error ){var _dbb ,_agc int ;for _gce :=0;_gce < int (_eegfe .HGridHeight );_gce ++{for _bdef :=0;_bdef < int (_eegfe .HGridWidth );_bdef ++{_dbb =_eegfe .computeX (_gce ,_bdef );
+_agc =_eegfe .computeY (_gce ,_bdef );_febd :=_eegfe .Patterns [_bbgf [_gce ][_bdef ]];if _acdb =_f .Blit (_febd ,_eegfe .HalftoneRegionBitmap ,_dbb +int (_eegfe .HGridX ),_agc +int (_eegfe .HGridY ),_eegfe .CombinationOperator );_acdb !=nil {return _acdb ;
+};};};return nil ;};func (_gcea *PageInformationSegment )readDefaultPixelValue ()error {_abcb ,_fccf :=_gcea ._eade .ReadBit ();if _fccf !=nil {return _fccf ;};_gcea .DefaultPixelValue =uint8 (_abcb &0xf);return nil ;};func NewHeader (d Documenter ,r *_c .Reader ,offset int64 ,organizationType OrganizationType )(*Header ,error ){_aedgg :=&Header {Reader :r };
+if _fagcg :=_aedgg .parse (d ,r ,offset ,organizationType );_fagcg !=nil {return nil ,_dg .Wrap (_fagcg ,"\u004ee\u0077\u0048\u0065\u0061\u0064\u0065r","");};return _aedgg ,nil ;};func (_ddbc *GenericRegion )setParameters (_dcef bool ,_dfgc ,_fgca int64 ,_dfef ,_ggac uint32 ){_ddbc .IsMMREncoded =_dcef ;
+_ddbc .DataOffset =_dfgc ;_ddbc .DataLength =_fgca ;_ddbc .RegionSegment .BitmapHeight =_dfef ;_ddbc .RegionSegment .BitmapWidth =_ggac ;_ddbc ._gag =nil ;_ddbc .Bitmap =nil ;};func (_dbfda *SymbolDictionary )decodeAggregate (_bfgf ,_aeea uint32 )error {var (_cbeb int64 ;
+_agfaf error ;);if _dbfda .IsHuffmanEncoded {_cbeb ,_agfaf =_dbfda .huffDecodeRefAggNInst ();if _agfaf !=nil {return _agfaf ;};}else {_cbbc ,_dadc :=_dbfda ._ded .DecodeInt (_dbfda ._dbdb );if _dadc !=nil {return _dadc ;};_cbeb =int64 (_cbbc );};if _cbeb > 1{return _dbfda .decodeThroughTextRegion (_bfgf ,_aeea ,uint32 (_cbeb ));
+}else if _cbeb ==1{return _dbfda .decodeRefinedSymbol (_bfgf ,_aeea );};return nil ;};func (_edfb *HalftoneRegion )combineGrayscalePlanes (_aebf []*_f .Bitmap ,_ebccc int )error {_bbf :=0;for _geded :=0;_geded < _aebf [_ebccc ].Height ;_geded ++{for _ecffe :=0;
+_ecffe < _aebf [_ebccc ].Width ;_ecffe +=8{_fdaa ,_gab :=_aebf [_ebccc +1].GetByte (_bbf );if _gab !=nil {return _gab ;};_aedc ,_gab :=_aebf [_ebccc ].GetByte (_bbf );if _gab !=nil {return _gab ;};_gab =_aebf [_ebccc ].SetByte (_bbf ,_f .CombineBytes (_aedc ,_fdaa ,_f .CmbOpXor ));
+if _gab !=nil {return _gab ;};_bbf ++;};};return nil ;};func (_cdcbf *HalftoneRegion )parseHeader ()error {if _ebd :=_cdcbf .RegionSegment .parseHeader ();_ebd !=nil {return _ebd ;};_dbgfd ,_bbae :=_cdcbf ._dade .ReadBit ();if _bbae !=nil {return _bbae ;
+};_cdcbf .HDefaultPixel =int8 (_dbgfd );_dfec ,_bbae :=_cdcbf ._dade .ReadBits (3);if _bbae !=nil {return _bbae ;};_cdcbf .CombinationOperator =_f .CombinationOperator (_dfec &0xf);_dbgfd ,_bbae =_cdcbf ._dade .ReadBit ();if _bbae !=nil {return _bbae ;
+};if _dbgfd ==1{_cdcbf .HSkipEnabled =true ;};_dfec ,_bbae =_cdcbf ._dade .ReadBits (2);if _bbae !=nil {return _bbae ;};_cdcbf .HTemplate =byte (_dfec &0xf);_dbgfd ,_bbae =_cdcbf ._dade .ReadBit ();if _bbae !=nil {return _bbae ;};if _dbgfd ==1{_cdcbf .IsMMREncoded =true ;
+};_dfec ,_bbae =_cdcbf ._dade .ReadBits (32);if _bbae !=nil {return _bbae ;};_cdcbf .HGridWidth =uint32 (_dfec &_a .MaxUint32 );_dfec ,_bbae =_cdcbf ._dade .ReadBits (32);if _bbae !=nil {return _bbae ;};_cdcbf .HGridHeight =uint32 (_dfec &_a .MaxUint32 );
+_dfec ,_bbae =_cdcbf ._dade .ReadBits (32);if _bbae !=nil {return _bbae ;};_cdcbf .HGridX =int32 (_dfec &_a .MaxInt32 );_dfec ,_bbae =_cdcbf ._dade .ReadBits (32);if _bbae !=nil {return _bbae ;};_cdcbf .HGridY =int32 (_dfec &_a .MaxInt32 );_dfec ,_bbae =_cdcbf ._dade .ReadBits (16);
+if _bbae !=nil {return _bbae ;};_cdcbf .HRegionX =uint16 (_dfec &_a .MaxUint16 );_dfec ,_bbae =_cdcbf ._dade .ReadBits (16);if _bbae !=nil {return _bbae ;};_cdcbf .HRegionY =uint16 (_dfec &_a .MaxUint16 );if _bbae =_cdcbf .computeSegmentDataStructure ();
+_bbae !=nil {return _bbae ;};return _cdcbf .checkInput ();};func (_dfc *Header )CleanSegmentData (){if _dfc .SegmentData !=nil {_dfc .SegmentData =nil ;};};func (_bea *HalftoneRegion )Init (hd *Header ,r *_c .Reader )error {_bea ._dade =r ;_bea ._ccge =hd ;
+_bea .RegionSegment =NewRegionSegment (r );return _bea .parseHeader ();};func (_dfe *template0 )setIndex (_feda *_cc .DecoderStats ){_feda .SetIndex (0x100)};func (_bgad *PageInformationSegment )encodeStripingInformation (_aabe _c .BinaryWriter )(_gagb int ,_cfgg error ){const _gbcb ="\u0065n\u0063\u006f\u0064\u0065S\u0074\u0072\u0069\u0070\u0069n\u0067I\u006ef\u006f\u0072\u006d\u0061\u0074\u0069\u006fn";
+if !_bgad .IsStripe {if _gagb ,_cfgg =_aabe .Write ([]byte {0x00,0x00});_cfgg !=nil {return 0,_dg .Wrap (_cfgg ,_gbcb ,"n\u006f\u0020\u0073\u0074\u0072\u0069\u0070\u0069\u006e\u0067");};return _gagb ,nil ;};_afe :=make ([]byte ,2);_b .BigEndian .PutUint16 (_afe ,_bgad .MaxStripeSize |1<<15);
+if _gagb ,_cfgg =_aabe .Write (_afe );_cfgg !=nil {return 0,_dg .Wrapf (_cfgg ,_gbcb ,"\u0073\u0074\u0072i\u0070\u0069\u006e\u0067\u003a\u0020\u0025\u0064",_bgad .MaxStripeSize );};return _gagb ,nil ;};func (_fgeed *TableSegment )HtOOB ()int32 {return _fgeed ._egcdd };
+func (_bada *GenericRefinementRegion )String ()string {_beda :=&_ab .Builder {};_beda .WriteString ("\u000a[\u0047E\u004e\u0045\u0052\u0049\u0043 \u0052\u0045G\u0049\u004f\u004e\u005d\u000a");_beda .WriteString (_bada .RegionInfo .String ()+"\u000a");_beda .WriteString (_gb .Sprintf ("\u0009\u002d \u0049\u0073\u0054P\u0047\u0052\u006f\u006e\u003a\u0020\u0025\u0076\u000a",_bada .IsTPGROn ));
+_beda .WriteString (_gb .Sprintf ("\u0009-\u0020T\u0065\u006d\u0070\u006c\u0061t\u0065\u0049D\u003a\u0020\u0025\u0076\u000a",_bada .TemplateID ));_beda .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0047\u0072\u0041\u0074\u0058\u003a\u0020\u0025\u0076\u000a",_bada .GrAtX ));
+_beda .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0047\u0072\u0041\u0074\u0059\u003a\u0020\u0025\u0076\u000a",_bada .GrAtY ));_beda .WriteString (_gb .Sprintf ("\u0009-\u0020R\u0065\u0066\u0065\u0072\u0065n\u0063\u0065D\u0058\u0020\u0025\u0076\u000a",_bada .ReferenceDX ));
+_beda .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0052ef\u0065\u0072\u0065\u006e\u0063\u0044\u0065\u0059\u003a\u0020\u0025\u0076\u000a",_bada .ReferenceDY ));return _beda .String ();};func (_cfdb *PageInformationSegment )readMaxStripeSize ()error {_cded ,_agcg :=_cfdb ._eade .ReadBits (15);
+if _agcg !=nil {return _agcg ;};_cfdb .MaxStripeSize =uint16 (_cded &_a .MaxUint16 );return nil ;};var _ SegmentEncoder =&RegionSegment {};func (_ceeca *TextRegion )createRegionBitmap ()error {_ceeca .RegionBitmap =_f .New (int (_ceeca .RegionInfo .BitmapWidth ),int (_ceeca .RegionInfo .BitmapHeight ));
+if _ceeca .DefaultPixel !=0{_ceeca .RegionBitmap .SetDefaultPixel ();};return nil ;};func _bcbf (_cgc *_c .Reader ,_bcfd *Header )*GenericRefinementRegion {return &GenericRefinementRegion {_bf :_cgc ,RegionInfo :NewRegionSegment (_cgc ),_gg :_bcfd ,_dc :&template0 {},_af :&template1 {}};
+};func (_geb *Header )writeReferredToSegments (_abf _c .BinaryWriter )(_facd int ,_ggd error ){const _bgdg ="\u0077\u0072\u0069te\u0052\u0065\u0066\u0065\u0072\u0072\u0065\u0064\u0054\u006f\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0073";var (_facg uint16 ;
+_fbcc uint32 ;);_afa :=_geb .referenceSize ();_adg :=1;_fede :=make ([]byte ,_afa );for _ ,_dfab :=range _geb .RTSNumbers {switch _afa {case 4:_fbcc =uint32 (_dfab );_b .BigEndian .PutUint32 (_fede ,_fbcc );_adg ,_ggd =_abf .Write (_fede );if _ggd !=nil {return 0,_dg .Wrap (_ggd ,_bgdg ,"u\u0069\u006e\u0074\u0033\u0032\u0020\u0073\u0069\u007a\u0065");
+};case 2:_facg =uint16 (_dfab );_b .BigEndian .PutUint16 (_fede ,_facg );_adg ,_ggd =_abf .Write (_fede );if _ggd !=nil {return 0,_dg .Wrap (_ggd ,_bgdg ,"\u0075\u0069\u006e\u0074\u0031\u0036");};default:if _ggd =_abf .WriteByte (byte (_dfab ));_ggd !=nil {return 0,_dg .Wrap (_ggd ,_bgdg ,"\u0075\u0069\u006et\u0038");
+};};_facd +=_adg ;};return _facd ,nil ;};type Documenter interface{GetPage (int )(Pager ,error );GetGlobalSegment (int )(*Header ,error );};func (_ffbd *GenericRegion )setParametersWithAt (_ggbc bool ,_eecbb byte ,_agfa ,_aaag bool ,_eba ,_cddg []int8 ,_dcfd ,_dbfd uint32 ,_bcff *_cc .DecoderStats ,_dfadd *_cc .Decoder ){_ffbd .IsMMREncoded =_ggbc ;
+_ffbd .GBTemplate =_eecbb ;_ffbd .IsTPGDon =_agfa ;_ffbd .GBAtX =_eba ;_ffbd .GBAtY =_cddg ;_ffbd .RegionSegment .BitmapHeight =_dbfd ;_ffbd .RegionSegment .BitmapWidth =_dcfd ;_ffbd ._gag =nil ;_ffbd .Bitmap =nil ;if _bcff !=nil {_ffbd ._fgce =_bcff ;
+};if _dfadd !=nil {_ffbd ._fba =_dfadd ;};_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0047\u0049O\u004e\u005d\u0020\u0073\u0065\u0074P\u0061\u0072\u0061\u006d\u0065\u0074\u0065\u0072\u0073\u0020\u0053\u0044\u0041t\u003a\u0020\u0025\u0073",_ffbd );
+};func (_dgg *template1 )form (_febf ,_cab ,_fagc ,_daf ,_agbc int16 )int16 {return ((_febf &0x02)<<8)|(_cab <<6)|((_fagc &0x03)<<4)|(_daf <<1)|_agbc ;};func (_acebc *TextRegion )setParameters (_ggcc *_cc .Decoder ,_agbcb ,_aagaa bool ,_agae ,_cbdgf uint32 ,_aedad uint32 ,_fgda int8 ,_edad uint32 ,_gbcab int8 ,_egcce _f .CombinationOperator ,_ggab int8 ,_eege int16 ,_feeag ,_bbge ,_bcge ,_bbdg ,_add ,_gbeb ,_bdcfe ,_edge ,_ddcg ,_cfbd int8 ,_defd ,_aaaff []int8 ,_dbafg []*_f .Bitmap ,_addc int8 ){_acebc ._cefb =_ggcc ;
+_acebc .IsHuffmanEncoded =_agbcb ;_acebc .UseRefinement =_aagaa ;_acebc .RegionInfo .BitmapWidth =_agae ;_acebc .RegionInfo .BitmapHeight =_cbdgf ;_acebc .NumberOfSymbolInstances =_aedad ;_acebc .SbStrips =_fgda ;_acebc .NumberOfSymbols =_edad ;_acebc .DefaultPixel =_gbcab ;
+_acebc .CombinationOperator =_egcce ;_acebc .IsTransposed =_ggab ;_acebc .ReferenceCorner =_eege ;_acebc .SbDsOffset =_feeag ;_acebc .SbHuffFS =_bbge ;_acebc .SbHuffDS =_bcge ;_acebc .SbHuffDT =_bbdg ;_acebc .SbHuffRDWidth =_add ;_acebc .SbHuffRDHeight =_gbeb ;
+_acebc .SbHuffRSize =_ddcg ;_acebc .SbHuffRDX =_bdcfe ;_acebc .SbHuffRDY =_edge ;_acebc .SbrTemplate =_cfbd ;_acebc .SbrATX =_defd ;_acebc .SbrATY =_aaaff ;_acebc .Symbols =_dbafg ;_acebc ._aeaca =_addc ;};func (_edce *TableSegment )HtPS ()int32 {return _edce ._beea };
+func (_gbgb *RegionSegment )Size ()int {return 17};func (_bfgg *GenericRegion )decodeTemplate1 (_agbg ,_edda ,_aba int ,_ebc ,_dbeg int )(_eceg error ){const _bedd ="\u0064e\u0063o\u0064\u0065\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0031";var (_ege ,_eed int ;
+_bce ,_cdeg int ;_dee byte ;_cfa ,_ebcc int ;);if _agbg >=1{_dee ,_eceg =_bfgg .Bitmap .GetByte (_dbeg );if _eceg !=nil {return _dg .Wrap (_eceg ,_bedd ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00201");};_bce =int (_dee );};if _agbg >=2{_dee ,_eceg =_bfgg .Bitmap .GetByte (_dbeg -_bfgg .Bitmap .RowStride );
+if _eceg !=nil {return _dg .Wrap (_eceg ,_bedd ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00202");};_cdeg =int (_dee )<<5;};_ege =((_bce >>1)&0x1f8)|((_cdeg >>1)&0x1e00);for _bae :=0;_bae < _aba ;_bae =_cfa {var (_dac byte ;_gda int ;);_cfa =_bae +8;if _gagf :=_edda -_bae ;
+_gagf > 8{_gda =8;}else {_gda =_gagf ;};if _agbg > 0{_bce <<=8;if _cfa < _edda {_dee ,_eceg =_bfgg .Bitmap .GetByte (_dbeg +1);if _eceg !=nil {return _dg .Wrap (_eceg ,_bedd ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0030");};_bce |=int (_dee );};};
+if _agbg > 1{_cdeg <<=8;if _cfa < _edda {_dee ,_eceg =_bfgg .Bitmap .GetByte (_dbeg -_bfgg .Bitmap .RowStride +1);if _eceg !=nil {return _dg .Wrap (_eceg ,_bedd ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0031");};_cdeg |=int (_dee )<<5;};};for _aaga :=0;
+_aaga < _gda ;_aaga ++{if _bfgg ._aeed {_eed =_bfgg .overrideAtTemplate1 (_ege ,_bae +_aaga ,_agbg ,int (_dac ),_aaga );_bfgg ._fgce .SetIndex (int32 (_eed ));}else {_bfgg ._fgce .SetIndex (int32 (_ege ));};_ebcc ,_eceg =_bfgg ._fba .DecodeBit (_bfgg ._fgce );
+if _eceg !=nil {return _dg .Wrap (_eceg ,_bedd ,"");};_dac |=byte (_ebcc )<<uint (7-_aaga );_fdc :=uint (8-_aaga );_ege =((_ege &0xefb)<<1)|_ebcc |((_bce >>_fdc )&0x8)|((_cdeg >>_fdc )&0x200);};if _edc :=_bfgg .Bitmap .SetByte (_ebc ,_dac );_edc !=nil {return _dg .Wrap (_edc ,_bedd ,"");
+};_ebc ++;_dbeg ++;};return nil ;};func (_cbea *SymbolDictionary )decodeHeightClassDeltaHeightWithHuffman ()(int64 ,error ){switch _cbea .SdHuffDecodeHeightSelection {case 0:_afga ,_bfbbg :=_ece .GetStandardTable (4);if _bfbbg !=nil {return 0,_bfbbg ;};
+return _afga .Decode (_cbea ._dabd );case 1:_gcg ,_dcce :=_ece .GetStandardTable (5);if _dcce !=nil {return 0,_dcce ;};return _gcg .Decode (_cbea ._dabd );case 3:if _cbea ._gdgd ==nil {_bbaae ,_aadb :=_ece .GetStandardTable (0);if _aadb !=nil {return 0,_aadb ;
+};_cbea ._gdgd =_bbaae ;};return _cbea ._gdgd .Decode (_cbea ._dabd );};return 0,nil ;};func (_caga *TextRegion )decodeRdw ()(int64 ,error ){const _caf ="\u0064e\u0063\u006f\u0064\u0065\u0052\u0064w";if _caga .IsHuffmanEncoded {if _caga .SbHuffRDWidth ==3{if _caga ._cabg ==nil {var (_feeaa int ;
+_daddc error ;);if _caga .SbHuffFS ==3{_feeaa ++;};if _caga .SbHuffDS ==3{_feeaa ++;};if _caga .SbHuffDT ==3{_feeaa ++;};_caga ._cabg ,_daddc =_caga .getUserTable (_feeaa );if _daddc !=nil {return 0,_dg .Wrap (_daddc ,_caf ,"");};};return _caga ._cabg .Decode (_caga ._bgge );
+};_ffee ,_abdd :=_ece .GetStandardTable (14+int (_caga .SbHuffRDWidth ));if _abdd !=nil {return 0,_dg .Wrap (_abdd ,_caf ,"");};return _ffee .Decode (_caga ._bgge );};_aebg ,_cgdd :=_caga ._cefb .DecodeInt (_caga ._gbeg );if _cgdd !=nil {return 0,_dg .Wrap (_cgdd ,_caf ,"");
+};return int64 (_aebg ),nil ;};func (_ccgac *RegionSegment )String ()string {_ffdb :=&_ab .Builder {};_ffdb .WriteString ("\u0009[\u0052E\u0047\u0049\u004f\u004e\u0020S\u0045\u0047M\u0045\u004e\u0054\u005d\u000a");_ffdb .WriteString (_gb .Sprintf ("\t\u0009\u002d\u0020\u0042\u0069\u0074m\u0061\u0070\u0020\u0028\u0077\u0069d\u0074\u0068\u002c\u0020\u0068\u0065\u0069g\u0068\u0074\u0029\u0020\u005b\u0025\u0064\u0078\u0025\u0064]\u000a",_ccgac .BitmapWidth ,_ccgac .BitmapHeight ));
+_ffdb .WriteString (_gb .Sprintf ("\u0009\u0009\u002d\u0020L\u006f\u0063\u0061\u0074\u0069\u006f\u006e\u0020\u0028\u0078,\u0079)\u003a\u0020\u005b\u0025\u0064\u002c\u0025d\u005d\u000a",_ccgac .XLocation ,_ccgac .YLocation ));_ffdb .WriteString (_gb .Sprintf ("\t\u0009\u002d\u0020\u0043\u006f\u006db\u0069\u006e\u0061\u0074\u0069\u006f\u006e\u004f\u0070e\u0072\u0061\u0074o\u0072:\u0020\u0025\u0073",_ccgac .CombinaionOperator ));
+return _ffdb .String ();};func (_afgf *SymbolDictionary )decodeRefinedSymbol (_aaaag ,_adce uint32 )error {var (_cbff int ;_cgad ,_afff int32 ;);if _afgf .IsHuffmanEncoded {_dcdb ,_aged :=_afgf ._dabd .ReadBits (byte (_afgf ._gdfg ));if _aged !=nil {return _aged ;
+};_cbff =int (_dcdb );_fdbd ,_aged :=_ece .GetStandardTable (15);if _aged !=nil {return _aged ;};_cdgc ,_aged :=_fdbd .Decode (_afgf ._dabd );if _aged !=nil {return _aged ;};_cgad =int32 (_cdgc );_cdgc ,_aged =_fdbd .Decode (_afgf ._dabd );if _aged !=nil {return _aged ;
+};_afff =int32 (_cdgc );_fdbd ,_aged =_ece .GetStandardTable (1);if _aged !=nil {return _aged ;};if _ ,_aged =_fdbd .Decode (_afgf ._dabd );_aged !=nil {return _aged ;};_afgf ._dabd .Align ();}else {_affb ,_bcdb :=_afgf ._ded .DecodeIAID (uint64 (_afgf ._gdfg ),_afgf ._fbac );
+if _bcdb !=nil {return _bcdb ;};_cbff =int (_affb );_cgad ,_bcdb =_afgf ._ded .DecodeInt (_afgf ._gffd );if _bcdb !=nil {return _bcdb ;};_afff ,_bcdb =_afgf ._ded .DecodeInt (_afgf ._fdff );if _bcdb !=nil {return _bcdb ;};};if _bdbe :=_afgf .setSymbolsArray ();
+_bdbe !=nil {return _bdbe ;};_gae :=_afgf ._ecac [_cbff ];if _afcc :=_afgf .decodeNewSymbols (_aaaag ,_adce ,_gae ,_cgad ,_afff );_afcc !=nil {return _afcc ;};if _afgf .IsHuffmanEncoded {_afgf ._dabd .Align ();};return nil ;};func (_bafg *SymbolDictionary )encodeFlags (_aabc _c .BinaryWriter )(_cabd int ,_eacd error ){const _gbfa ="e\u006e\u0063\u006f\u0064\u0065\u0046\u006c\u0061\u0067\u0073";
+if _eacd =_aabc .SkipBits (3);_eacd !=nil {return 0,_dg .Wrap (_eacd ,_gbfa ,"\u0065\u006d\u0070\u0074\u0079\u0020\u0062\u0069\u0074\u0073");};var _dcgf int ;if _bafg .SdrTemplate > 0{_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"s\u0064\u0072\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065");
+};_dcgf =0;if _bafg .SdTemplate > 1{_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065");};_dcgf =0;if _bafg .SdTemplate ==1||_bafg .SdTemplate ==3{_dcgf =1;
+};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065");};_dcgf =0;if _bafg ._eegc {_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0063\u006f\u0064in\u0067\u0020\u0063\u006f\u006e\u0074\u0065\u0078\u0074\u0020\u0072\u0065\u0074\u0061\u0069\u006e\u0065\u0064");
+};_dcgf =0;if _bafg ._eaf {_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0063\u006f\u0064\u0069ng\u0020\u0063\u006f\u006e\u0074\u0065\u0078\u0074\u0020\u0075\u0073\u0065\u0064");};_dcgf =0;if _bafg .SdHuffAggInstanceSelection {_dcgf =1;
+};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0048\u0075\u0066\u0066\u0041\u0067\u0067\u0049\u006e\u0073\u0074");};_dcgf =int (_bafg .SdHuffBMSizeSelection );if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0048u\u0066\u0066\u0042\u006d\u0053\u0069\u007a\u0065");
+};_dcgf =0;if _bafg .SdHuffDecodeWidthSelection > 1{_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"s\u0064\u0048\u0075\u0066\u0066\u0057\u0069\u0064\u0074\u0068");};_dcgf =0;switch _bafg .SdHuffDecodeWidthSelection {case 1,3:_dcgf =1;
+};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"s\u0064\u0048\u0075\u0066\u0066\u0057\u0069\u0064\u0074\u0068");};_dcgf =0;if _bafg .SdHuffDecodeHeightSelection > 1{_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );
+_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0048u\u0066\u0066\u0048\u0065\u0069\u0067\u0068\u0074");};_dcgf =0;switch _bafg .SdHuffDecodeHeightSelection {case 1,3:_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0048u\u0066\u0066\u0048\u0065\u0069\u0067\u0068\u0074");
+};_dcgf =0;if _bafg .UseRefinementAggregation {_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0052\u0065\u0066\u0041\u0067\u0067");};_dcgf =0;if _bafg .IsHuffmanEncoded {_dcgf =1;};if _eacd =_aabc .WriteBit (_dcgf );
+_eacd !=nil {return _cabd ,_dg .Wrap (_eacd ,_gbfa ,"\u0073\u0064\u0048\u0075\u0066\u0066");};return 2,nil ;};func (_affe *PageInformationSegment )Init (h *Header ,r *_c .Reader )(_gggb error ){_affe ._eade =r ;if _gggb =_affe .parseHeader ();_gggb !=nil {return _dg .Wrap (_gggb ,"P\u0061\u0067\u0065\u0049\u006e\u0066o\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0053\u0065g\u006d\u0065\u006et\u002eI\u006e\u0069\u0074","");
+};return nil ;};func (_bbcf *Header )readSegmentNumber (_cdea *_c .Reader )error {const _cbb ="\u0072\u0065\u0061\u0064\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";_cbe :=make ([]byte ,4);_ ,_eegfa :=_cdea .Read (_cbe );if _eegfa !=nil {return _dg .Wrap (_eegfa ,_cbb ,"");
+};_bbcf .SegmentNumber =_b .BigEndian .Uint32 (_cbe );return nil ;};func (_ffga *GenericRegion )overrideAtTemplate0a (_bade ,_bdcb ,_ccf ,_gdgc ,_eeaf ,_gfgb int )int {if _ffga .GBAtOverride [0]{_bade &=0xFFEF;if _ffga .GBAtY [0]==0&&_ffga .GBAtX [0]>=-int8 (_eeaf ){_bade |=(_gdgc >>uint (int8 (_gfgb )-_ffga .GBAtX [0]&0x1))<<4;
+}else {_bade |=int (_ffga .getPixel (_bdcb +int (_ffga .GBAtX [0]),_ccf +int (_ffga .GBAtY [0])))<<4;};};if _ffga .GBAtOverride [1]{_bade &=0xFBFF;if _ffga .GBAtY [1]==0&&_ffga .GBAtX [1]>=-int8 (_eeaf ){_bade |=(_gdgc >>uint (int8 (_gfgb )-_ffga .GBAtX [1]&0x1))<<10;
+}else {_bade |=int (_ffga .getPixel (_bdcb +int (_ffga .GBAtX [1]),_ccf +int (_ffga .GBAtY [1])))<<10;};};if _ffga .GBAtOverride [2]{_bade &=0xF7FF;if _ffga .GBAtY [2]==0&&_ffga .GBAtX [2]>=-int8 (_eeaf ){_bade |=(_gdgc >>uint (int8 (_gfgb )-_ffga .GBAtX [2]&0x1))<<11;
+}else {_bade |=int (_ffga .getPixel (_bdcb +int (_ffga .GBAtX [2]),_ccf +int (_ffga .GBAtY [2])))<<11;};};if _ffga .GBAtOverride [3]{_bade &=0x7FFF;if _ffga .GBAtY [3]==0&&_ffga .GBAtX [3]>=-int8 (_eeaf ){_bade |=(_gdgc >>uint (int8 (_gfgb )-_ffga .GBAtX [3]&0x1))<<15;
+}else {_bade |=int (_ffga .getPixel (_bdcb +int (_ffga .GBAtX [3]),_ccf +int (_ffga .GBAtY [3])))<<15;};};return _bade ;};func (_gdf *GenericRegion )String ()string {_bcd :=&_ab .Builder {};_bcd .WriteString ("\u000a[\u0047E\u004e\u0045\u0052\u0049\u0043 \u0052\u0045G\u0049\u004f\u004e\u005d\u000a");
+_bcd .WriteString (_gdf .RegionSegment .String ()+"\u000a");_bcd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020Us\u0065\u0045\u0078\u0074\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0073\u003a\u0020\u0025\u0076\u000a",_gdf .UseExtTemplates ));_bcd .WriteString (_gb .Sprintf ("\u0009\u002d \u0049\u0073\u0054P\u0047\u0044\u006f\u006e\u003a\u0020\u0025\u0076\u000a",_gdf .IsTPGDon ));
+_bcd .WriteString (_gb .Sprintf ("\u0009-\u0020G\u0042\u0054\u0065\u006d\u0070l\u0061\u0074e\u003a\u0020\u0025\u0064\u000a",_gdf .GBTemplate ));_bcd .WriteString (_gb .Sprintf ("\t\u002d \u0049\u0073\u004d\u004d\u0052\u0045\u006e\u0063o\u0064\u0065\u0064\u003a %\u0076\u000a",_gdf .IsMMREncoded ));
+_bcd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0047\u0042\u0041\u0074\u0058\u003a\u0020\u0025\u0076\u000a",_gdf .GBAtX ));_bcd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0047\u0042\u0041\u0074\u0059\u003a\u0020\u0025\u0076\u000a",_gdf .GBAtY ));
+_bcd .WriteString (_gb .Sprintf ("\t\u002d \u0047\u0042\u0041\u0074\u004f\u0076\u0065\u0072r\u0069\u0064\u0065\u003a %\u0076\u000a",_gdf .GBAtOverride ));return _bcd .String ();};type EncodeInitializer interface{InitEncode ();};func (_defg *Header )readHeaderFlags ()error {const _bgae ="\u0072e\u0061d\u0048\u0065\u0061\u0064\u0065\u0072\u0046\u006c\u0061\u0067\u0073";
+_fffe ,_bbce :=_defg .Reader .ReadBit ();if _bbce !=nil {return _dg .Wrap (_bbce ,_bgae ,"r\u0065\u0074\u0061\u0069\u006e\u0020\u0066\u006c\u0061\u0067");};if _fffe !=0{_defg .RetainFlag =true ;};_fffe ,_bbce =_defg .Reader .ReadBit ();if _bbce !=nil {return _dg .Wrap (_bbce ,_bgae ,"\u0070\u0061g\u0065\u0020\u0061s\u0073\u006f\u0063\u0069\u0061\u0074\u0069\u006f\u006e");
+};if _fffe !=0{_defg .PageAssociationFieldSize =true ;};_cegad ,_bbce :=_defg .Reader .ReadBits (6);if _bbce !=nil {return _dg .Wrap (_bbce ,_bgae ,"\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065");};_defg .Type =Type (int (_cegad ));
+return nil ;};var _ templater =&template0 {};type Regioner interface{GetRegionBitmap ()(*_f .Bitmap ,error );GetRegionInfo ()*RegionSegment ;};func (_cagf *Header )writeSegmentPageAssociation (_fagd _c .BinaryWriter )(_dfeg int ,_gbca error ){const _dbcc ="w\u0072\u0069\u0074\u0065\u0053\u0065g\u006d\u0065\u006e\u0074\u0050\u0061\u0067\u0065\u0041s\u0073\u006f\u0063i\u0061t\u0069\u006f\u006e";
+if _cagf .pageSize ()!=4{if _gbca =_fagd .WriteByte (byte (_cagf .PageAssociation ));_gbca !=nil {return 0,_dg .Wrap (_gbca ,_dbcc ,"\u0070\u0061\u0067\u0065\u0053\u0069\u007a\u0065\u0020\u0021\u003d\u0020\u0034");};return 1,nil ;};_gddf :=make ([]byte ,4);
+_b .BigEndian .PutUint32 (_gddf ,uint32 (_cagf .PageAssociation ));if _dfeg ,_gbca =_fagd .Write (_gddf );_gbca !=nil {return 0,_dg .Wrap (_gbca ,_dbcc ,"\u0034 \u0062y\u0074\u0065\u0020\u0070\u0061g\u0065\u0020n\u0075\u006d\u0062\u0065\u0072");};return _dfeg ,nil ;
+};func (_ceb *SymbolDictionary )decodeHeightClassBitmap (_cbde *_f .Bitmap ,_aegb int64 ,_efb int ,_bcad []int )error {for _fefg :=_aegb ;_fefg < int64 (_ceb ._cec );_fefg ++{var _aeaf int ;for _cbeg :=_aegb ;_cbeg <=_fefg -1;_cbeg ++{_aeaf +=_bcad [_cbeg ];
+};_cfdg :=_g .Rect (_aeaf ,0,_aeaf +_bcad [_fefg ],_efb );_afgc ,_fdad :=_f .Extract (_cfdg ,_cbde );if _fdad !=nil {return _fdad ;};_ceb ._ddae [_fefg ]=_afgc ;_ceb ._ecac =append (_ceb ._ecac ,_afgc );};return nil ;};func (_fac *GenericRefinementRegion )getPixel (_daed *_f .Bitmap ,_cde ,_efg int )int {if _cde < 0||_cde >=_daed .Width {return 0;
+};if _efg < 0||_efg >=_daed .Height {return 0;};if _daed .GetPixel (_cde ,_efg ){return 1;};return 0;};func (_ebe *TextRegion )readUseRefinement ()error {if !_ebe .UseRefinement ||_ebe .SbrTemplate !=0{return nil ;};var (_acgb byte ;_bggf error ;);_ebe .SbrATX =make ([]int8 ,2);
+_ebe .SbrATY =make ([]int8 ,2);_acgb ,_bggf =_ebe ._bgge .ReadByte ();if _bggf !=nil {return _bggf ;};_ebe .SbrATX [0]=int8 (_acgb );_acgb ,_bggf =_ebe ._bgge .ReadByte ();if _bggf !=nil {return _bggf ;};_ebe .SbrATY [0]=int8 (_acgb );_acgb ,_bggf =_ebe ._bgge .ReadByte ();
+if _bggf !=nil {return _bggf ;};_ebe .SbrATX [1]=int8 (_acgb );_acgb ,_bggf =_ebe ._bgge .ReadByte ();if _bggf !=nil {return _bggf ;};_ebe .SbrATY [1]=int8 (_acgb );return nil ;};func (_fcce *Header )readReferredToSegmentNumbers (_dacg *_c .Reader ,_ecggg int )([]int ,error ){const _fbc ="\u0072\u0065\u0061\u0064R\u0065\u0066\u0065\u0072\u0072\u0065\u0064\u0054\u006f\u0053e\u0067m\u0065\u006e\u0074\u004e\u0075\u006d\u0062e\u0072\u0073";
+_ccadb :=make ([]int ,_ecggg );if _ecggg > 0{_fcce .RTSegments =make ([]*Header ,_ecggg );var (_abea uint64 ;_bdcd error ;);for _bgag :=0;_bgag < _ecggg ;_bgag ++{_abea ,_bdcd =_dacg .ReadBits (byte (_fcce .referenceSize ())<<3);if _bdcd !=nil {return nil ,_dg .Wrapf (_bdcd ,_fbc ,"\u0027\u0025\u0064\u0027 \u0072\u0065\u0066\u0065\u0072\u0072\u0065\u0064\u0020\u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u0075\u006db\u0065\u0072",_bgag );
+};_ccadb [_bgag ]=int (_abea &_a .MaxInt32 );};};return _ccadb ,nil ;};func (_bbda *Header )readDataStartOffset (_cdce *_c .Reader ,_acdc OrganizationType ){if _acdc ==OSequential {_bbda .SegmentDataStartOffset =uint64 (_cdce .AbsolutePosition ());};};
+func (_afbb *SymbolDictionary )readNumberOfNewSymbols ()error {_ecaa ,_fbdc :=_afbb ._dabd .ReadBits (32);if _fbdc !=nil {return _fbdc ;};_afbb .NumberOfNewSymbols =uint32 (_ecaa &_a .MaxUint32 );return nil ;};type TextRegion struct{_bgge *_c .Reader ;
+RegionInfo *RegionSegment ;SbrTemplate int8 ;SbDsOffset int8 ;DefaultPixel int8 ;CombinationOperator _f .CombinationOperator ;IsTransposed int8 ;ReferenceCorner int16 ;LogSBStrips int16 ;UseRefinement bool ;IsHuffmanEncoded bool ;SbHuffRSize int8 ;SbHuffRDY int8 ;
+SbHuffRDX int8 ;SbHuffRDHeight int8 ;SbHuffRDWidth int8 ;SbHuffDT int8 ;SbHuffDS int8 ;SbHuffFS int8 ;SbrATX []int8 ;SbrATY []int8 ;NumberOfSymbolInstances uint32 ;_defb int64 ;SbStrips int8 ;NumberOfSymbols uint32 ;RegionBitmap *_f .Bitmap ;Symbols []*_f .Bitmap ;
+_cefb *_cc .Decoder ;_gagbe *GenericRefinementRegion ;_fecfa *_cc .DecoderStats ;_dfca *_cc .DecoderStats ;_cgbe *_cc .DecoderStats ;_edbc *_cc .DecoderStats ;_adbfe *_cc .DecoderStats ;_gbeg *_cc .DecoderStats ;_gebe *_cc .DecoderStats ;_eadb *_cc .DecoderStats ;
+_aaba *_cc .DecoderStats ;_gaad *_cc .DecoderStats ;_bdfb *_cc .DecoderStats ;_aeaca int8 ;_bgcg *_ece .FixedSizeTable ;Header *Header ;_fdabc _ece .Tabler ;_cbge _ece .Tabler ;_bddg _ece .Tabler ;_cabg _ece .Tabler ;_bceb _ece .Tabler ;_acgf _ece .Tabler ;
+_fdcag _ece .Tabler ;_dccdc _ece .Tabler ;_eafd ,_fgf map[int ]int ;_ebab []int ;_efcg *_f .Points ;_afcg *_f .Bitmaps ;_eebf *_ag .IntSlice ;_efae ,_abccf int ;_dddb *_f .Boxes ;};func (_gcce *SymbolDictionary )getToExportFlags ()([]int ,error ){var (_bfc int ;
+_abce int32 ;_gcef error ;_ggcd =int32 (_gcce ._acg +_gcce .NumberOfNewSymbols );_agge =make ([]int ,_ggcd ););for _bbfd :=int32 (0);_bbfd < _ggcd ;_bbfd +=_abce {if _gcce .IsHuffmanEncoded {_cgeee ,_eacdc :=_ece .GetStandardTable (1);if _eacdc !=nil {return nil ,_eacdc ;
+};_ecfff ,_eacdc :=_cgeee .Decode (_gcce ._dabd );if _eacdc !=nil {return nil ,_eacdc ;};_abce =int32 (_ecfff );}else {_abce ,_gcef =_gcce ._ded .DecodeInt (_gcce ._ggec );if _gcef !=nil {return nil ,_gcef ;};};if _abce !=0{if _bbfd +_abce > _ggcd {return nil ,_dg .Error ("\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u002e\u0067\u0065\u0074T\u006f\u0045\u0078\u0070\u006f\u0072\u0074F\u006c\u0061\u0067\u0073","\u006d\u0061\u006c\u0066\u006f\u0072m\u0065\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0064\u0061\u0074\u0061\u0020\u0070\u0072\u006f\u0076\u0069\u0064e\u0064\u002e\u0020\u0069\u006e\u0064\u0065\u0078\u0020\u006f\u0075\u0074\u0020\u006ff\u0020r\u0061\u006e\u0067\u0065");
+};for _cdda :=_bbfd ;_cdda < _bbfd +_abce ;_cdda ++{_agge [_cdda ]=_bfc ;};};if _bfc ==0{_bfc =1;}else {_bfc =0;};};return _agge ,nil ;};func (_dfeb *SymbolDictionary )encodeSymbols (_gcba _c .BinaryWriter )(_decd int ,_dffa error ){const _gfdd ="\u0065\u006e\u0063o\u0064\u0065\u0053\u0079\u006d\u0062\u006f\u006c";
+_ffab :=_bdc .New ();_ffab .Init ();_ceda ,_dffa :=_dfeb ._gabd .SelectByIndexes (_dfeb ._cacb );if _dffa !=nil {return 0,_dg .Wrap (_dffa ,_gfdd ,"\u0069n\u0069\u0074\u0069\u0061\u006c");};_dffcg :=map[*_f .Bitmap ]int {};for _ebfg ,_ffbge :=range _ceda .Values {_dffcg [_ffbge ]=_ebfg ;
+};_ceda .SortByHeight ();var _ebcf ,_ceggc int ;_ddage ,_dffa :=_ceda .GroupByHeight ();if _dffa !=nil {return 0,_dg .Wrap (_dffa ,_gfdd ,"");};for _ ,_ffac :=range _ddage .Values {_cecf :=_ffac .Values [0].Height ;_ffde :=_cecf -_ebcf ;if _dffa =_ffab .EncodeInteger (_bdc .IADH ,_ffde );
+_dffa !=nil {return 0,_dg .Wrapf (_dffa ,_gfdd ,"\u0049\u0041\u0044\u0048\u0020\u0066\u006f\u0072\u0020\u0064\u0068\u003a \u0027\u0025\u0064\u0027",_ffde );};_ebcf =_cecf ;_aega ,_feec :=_ffac .GroupByWidth ();if _feec !=nil {return 0,_dg .Wrapf (_feec ,_gfdd ,"\u0068\u0065\u0069g\u0068\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_cecf );
+};var _daee int ;for _ ,_agac :=range _aega .Values {for _ ,_fbbg :=range _agac .Values {_bffd :=_fbbg .Width ;_bbbb :=_bffd -_daee ;if _feec =_ffab .EncodeInteger (_bdc .IADW ,_bbbb );_feec !=nil {return 0,_dg .Wrapf (_feec ,_gfdd ,"\u0049\u0041\u0044\u0057\u0020\u0066\u006f\u0072\u0020\u0064\u0077\u003a \u0027\u0025\u0064\u0027",_bbbb );
+};_daee +=_bbbb ;if _feec =_ffab .EncodeBitmap (_fbbg ,false );_feec !=nil {return 0,_dg .Wrapf (_feec ,_gfdd ,"H\u0065i\u0067\u0068\u0074\u003a\u0020\u0025\u0064\u0020W\u0069\u0064\u0074\u0068: \u0025\u0064",_cecf ,_bffd );};_aadc :=_dffcg [_fbbg ];_dfeb ._gbdf [_aadc ]=_ceggc ;
+_ceggc ++;};};if _feec =_ffab .EncodeOOB (_bdc .IADW );_feec !=nil {return 0,_dg .Wrap (_feec ,_gfdd ,"\u0049\u0041\u0044\u0057");};};if _dffa =_ffab .EncodeInteger (_bdc .IAEX ,0);_dffa !=nil {return 0,_dg .Wrap (_dffa ,_gfdd ,"\u0065\u0078p\u006f\u0072\u0074e\u0064\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0073");
+};if _dffa =_ffab .EncodeInteger (_bdc .IAEX ,len (_dfeb ._cacb ));_dffa !=nil {return 0,_dg .Wrap (_dffa ,_gfdd ,"\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0073\u0079m\u0062\u006f\u006c\u0073");};_ffab .Final ();_egae ,_dffa :=_ffab .WriteTo (_gcba );
+if _dffa !=nil {return 0,_dg .Wrap (_dffa ,_gfdd ,"\u0077\u0072i\u0074\u0069\u006e\u0067 \u0065\u006ec\u006f\u0064\u0065\u0072\u0020\u0063\u006f\u006et\u0065\u0078\u0074\u0020\u0074\u006f\u0020\u0027\u0077\u0027\u0020\u0077r\u0069\u0074\u0065\u0072");};
+return int (_egae ),nil ;};type PatternDictionary struct{_ebcg *_c .Reader ;DataHeaderOffset int64 ;DataHeaderLength int64 ;DataOffset int64 ;DataLength int64 ;GBAtX []int8 ;GBAtY []int8 ;IsMMREncoded bool ;HDTemplate byte ;HdpWidth byte ;HdpHeight byte ;
+Patterns []*_f .Bitmap ;GrayMax uint32 ;};func (_ddff *SymbolDictionary )getSbSymCodeLen ()int8 {_dacgc :=int8 (_a .Ceil (_a .Log (float64 (_ddff ._acg +_ddff .NumberOfNewSymbols ))/_a .Log (2)));if _ddff .IsHuffmanEncoded &&_dacgc < 1{return 1;};return _dacgc ;
+};func (_cg *GenericRefinementRegion )decodeTemplate (_dda ,_gbe ,_edd ,_beg ,_bcb ,_bac ,_cega ,_egf ,_cac ,_gbf int ,_aede templater )(_ea error ){var (_bbg ,_abg ,_fee ,_gbee ,_bfba int16 ;_ced ,_aa ,_acc ,_ecgg int ;_gdgb byte ;);if _cac >=1&&(_cac -1)< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -_beg );
+if _ea !=nil {return _ea ;};_ced =int (_gdgb );};if _cac >=0&&(_cac )< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf );if _ea !=nil {return _ea ;};_aa =int (_gdgb );};if _cac >=-1&&(_cac +1)< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf +_beg );
+if _ea !=nil {return _ea ;};_acc =int (_gdgb );};_gbf ++;if _dda >=1{_gdgb ,_ea =_cg .RegionBitmap .GetByte (_egf -_edd );if _ea !=nil {return _ea ;};_ecgg =int (_gdgb );};_egf ++;_cga :=_cg .ReferenceDX %8;_cfc :=6+_cga ;_cca :=_gbf %_beg ;if _cfc >=0{if _cfc < 8{_bbg =int16 (_ced >>uint (_cfc ))&0x07;
+};if _cfc < 8{_abg =int16 (_aa >>uint (_cfc ))&0x07;};if _cfc < 8{_fee =int16 (_acc >>uint (_cfc ))&0x07;};if _cfc ==6&&_cca > 1{if _cac >=1&&(_cac -1)< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -_beg -2);if _ea !=nil {return _ea ;
+};_bbg |=int16 (_gdgb <<2)&0x04;};if _cac >=0&&_cac < _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -2);if _ea !=nil {return _ea ;};_abg |=int16 (_gdgb <<2)&0x04;};if _cac >=-1&&_cac +1< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf +_beg -2);
+if _ea !=nil {return _ea ;};_fee |=int16 (_gdgb <<2)&0x04;};};if _cfc ==0{_ced =0;_aa =0;_acc =0;if _cca < _beg -1{if _cac >=1&&_cac -1< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -_beg );if _ea !=nil {return _ea ;};_ced =int (_gdgb );
+};if _cac >=0&&_cac < _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf );if _ea !=nil {return _ea ;};_aa =int (_gdgb );};if _cac >=-1&&_cac +1< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf +_beg );
+if _ea !=nil {return _ea ;};_acc =int (_gdgb );};};_gbf ++;};}else {_bbg =int16 (_ced <<1)&0x07;_abg =int16 (_aa <<1)&0x07;_fee =int16 (_acc <<1)&0x07;_ced =0;_aa =0;_acc =0;if _cca < _beg -1{if _cac >=1&&_cac -1< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -_beg );
+if _ea !=nil {return _ea ;};_ced =int (_gdgb );};if _cac >=0&&_cac < _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf );if _ea !=nil {return _ea ;};_aa =int (_gdgb );};if _cac >=-1&&_cac +1< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf +_beg );
+if _ea !=nil {return _ea ;};_acc =int (_gdgb );};_gbf ++;};_bbg |=int16 ((_ced >>7)&0x07);_abg |=int16 ((_aa >>7)&0x07);_fee |=int16 ((_acc >>7)&0x07);};_gbee =int16 (_ecgg >>6);_bfba =0;_abe :=(2-_cga )%8;_ced <<=uint (_abe );_aa <<=uint (_abe );_acc <<=uint (_abe );
+_ecgg <<=2;var _ddg int ;for _ebg :=0;_ebg < _gbe ;_ebg ++{_gcc :=_ebg &0x07;_fde :=_aede .form (_bbg ,_abg ,_fee ,_gbee ,_bfba );if _cg ._eec {_gdgb ,_ea =_cg .RegionBitmap .GetByte (_cg .RegionBitmap .GetByteIndex (_ebg ,_dda ));if _ea !=nil {return _ea ;
+};_cg ._cd .SetIndex (int32 (_cg .overrideAtTemplate0 (int (_fde ),_ebg ,_dda ,int (_gdgb ),_gcc )));}else {_cg ._cd .SetIndex (int32 (_fde ));};_ddg ,_ea =_cg ._gaf .DecodeBit (_cg ._cd );if _ea !=nil {return _ea ;};if _ea =_cg .RegionBitmap .SetPixel (_ebg ,_dda ,byte (_ddg ));
+_ea !=nil {return _ea ;};_bbg =((_bbg <<1)|0x01&int16 (_ced >>7))&0x07;_abg =((_abg <<1)|0x01&int16 (_aa >>7))&0x07;_fee =((_fee <<1)|0x01&int16 (_acc >>7))&0x07;_gbee =((_gbee <<1)|0x01&int16 (_ecgg >>7))&0x07;_bfba =int16 (_ddg );if (_ebg -int (_cg .ReferenceDX ))%8==5{_ced =0;
+_aa =0;_acc =0;if ((_ebg -int (_cg .ReferenceDX ))/8)+1< _cg .ReferenceBitmap .RowStride {if _cac >=1&&(_cac -1)< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf -_beg );if _ea !=nil {return _ea ;};_ced =int (_gdgb );};if _cac >=0&&_cac < _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf );
+if _ea !=nil {return _ea ;};_aa =int (_gdgb );};if _cac >=-1&&(_cac +1)< _cg .ReferenceBitmap .Height {_gdgb ,_ea =_cg .ReferenceBitmap .GetByte (_gbf +_beg );if _ea !=nil {return _ea ;};_acc =int (_gdgb );};};_gbf ++;}else {_ced <<=1;_aa <<=1;_acc <<=1;
+};if _gcc ==5&&_dda >=1{if ((_ebg >>3)+1)>=_cg .RegionBitmap .RowStride {_ecgg =0;}else {_gdgb ,_ea =_cg .RegionBitmap .GetByte (_egf -_edd );if _ea !=nil {return _ea ;};_ecgg =int (_gdgb );};_egf ++;}else {_ecgg <<=1;};};return nil ;};func (_bebc *TableSegment )parseHeader ()error {var (_bdga int ;
+_gedd uint64 ;_eeac error ;);_bdga ,_eeac =_bebc ._adbf .ReadBit ();if _eeac !=nil {return _eeac ;};if _bdga ==1{return _gb .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0061\u0062\u006c\u0065 \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0064e\u0066\u0069\u006e\u0069\u0074\u0069\u006f\u006e\u002e\u0020\u0042\u002e\u0032\u002e1\u0020\u0043\u006f\u0064\u0065\u0020\u0054\u0061\u0062\u006c\u0065\u0020\u0066\u006c\u0061\u0067\u0073\u003a\u0020\u0042\u0069\u0074\u0020\u0037\u0020\u006d\u0075\u0073\u0074\u0020b\u0065\u0020\u007a\u0065\u0072\u006f\u002e\u0020\u0057a\u0073\u003a \u0025\u0064",_bdga );
+};if _gedd ,_eeac =_bebc ._adbf .ReadBits (3);_eeac !=nil {return _eeac ;};_bebc ._baed =(int32 (_gedd )+1)&0xf;if _gedd ,_eeac =_bebc ._adbf .ReadBits (3);_eeac !=nil {return _eeac ;};_bebc ._beea =(int32 (_gedd )+1)&0xf;if _gedd ,_eeac =_bebc ._adbf .ReadBits (32);
+_eeac !=nil {return _eeac ;};_bebc ._gdb =int32 (_gedd &_a .MaxInt32 );if _gedd ,_eeac =_bebc ._adbf .ReadBits (32);_eeac !=nil {return _eeac ;};_bebc ._ggdc =int32 (_gedd &_a .MaxInt32 );return nil ;};func (_fgcea *SymbolDictionary )readNumberOfExportedSymbols ()error {_edg ,_fadg :=_fgcea ._dabd .ReadBits (32);
+if _fadg !=nil {return _fadg ;};_fgcea .NumberOfExportedSymbols =uint32 (_edg &_a .MaxUint32 );return nil ;};func (_bcec *Header )writeSegmentDataLength (_fddeb _c .BinaryWriter )(_dgde int ,_eecbf error ){_fegc :=make ([]byte ,4);_b .BigEndian .PutUint32 (_fegc ,uint32 (_bcec .SegmentDataLength ));
+if _dgde ,_eecbf =_fddeb .Write (_fegc );_eecbf !=nil {return 0,_dg .Wrap (_eecbf ,"\u0048\u0065a\u0064\u0065\u0072\u002e\u0077\u0072\u0069\u0074\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0044\u0061\u0074\u0061\u004c\u0065ng\u0074\u0068","");};return _dgde ,nil ;
+};func (_bgce *PatternDictionary )parseHeader ()error {_age .Log .Trace ("\u005b\u0050\u0041\u0054\u0054\u0045\u0052\u004e\u002d\u0044\u0049\u0043\u0054I\u004f\u004e\u0041\u0052\u0059\u005d[\u0070\u0061\u0072\u0073\u0065\u0048\u0065\u0061\u0064\u0065\u0072\u005d\u0020b\u0065\u0067\u0069\u006e");
+defer func (){_age .Log .Trace ("\u005b\u0050\u0041T\u0054\u0045\u0052\u004e\u002d\u0044\u0049\u0043\u0054\u0049\u004f\u004e\u0041\u0052\u0059\u005d\u005b\u0070\u0061\u0072\u0073\u0065\u0048\u0065\u0061\u0064\u0065\u0072\u005d \u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064");
+}();_ ,_gegc :=_bgce ._ebcg .ReadBits (5);if _gegc !=nil {return _gegc ;};if _gegc =_bgce .readTemplate ();_gegc !=nil {return _gegc ;};if _gegc =_bgce .readIsMMREncoded ();_gegc !=nil {return _gegc ;};if _gegc =_bgce .readPatternWidthAndHeight ();_gegc !=nil {return _gegc ;
+};if _gegc =_bgce .readGrayMax ();_gegc !=nil {return _gegc ;};if _gegc =_bgce .computeSegmentDataStructure ();_gegc !=nil {return _gegc ;};return _bgce .checkInput ();};func (_daba *PageInformationSegment )Encode (w _c .BinaryWriter )(_ceab int ,_egac error ){const _abge ="\u0050\u0061g\u0065\u0049\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u002e\u0045\u006eco\u0064\u0065";
+_ffdf :=make ([]byte ,4);_b .BigEndian .PutUint32 (_ffdf ,uint32 (_daba .PageBMWidth ));_ceab ,_egac =w .Write (_ffdf );if _egac !=nil {return _ceab ,_dg .Wrap (_egac ,_abge ,"\u0077\u0069\u0064t\u0068");};_b .BigEndian .PutUint32 (_ffdf ,uint32 (_daba .PageBMHeight ));
+var _gge int ;_gge ,_egac =w .Write (_ffdf );if _egac !=nil {return _gge +_ceab ,_dg .Wrap (_egac ,_abge ,"\u0068\u0065\u0069\u0067\u0068\u0074");};_ceab +=_gge ;_b .BigEndian .PutUint32 (_ffdf ,uint32 (_daba .ResolutionX ));_gge ,_egac =w .Write (_ffdf );
+if _egac !=nil {return _gge +_ceab ,_dg .Wrap (_egac ,_abge ,"\u0078\u0020\u0072e\u0073\u006f\u006c\u0075\u0074\u0069\u006f\u006e");};_ceab +=_gge ;_b .BigEndian .PutUint32 (_ffdf ,uint32 (_daba .ResolutionY ));if _gge ,_egac =w .Write (_ffdf );_egac !=nil {return _gge +_ceab ,_dg .Wrap (_egac ,_abge ,"\u0079\u0020\u0072e\u0073\u006f\u006c\u0075\u0074\u0069\u006f\u006e");
+};_ceab +=_gge ;if _egac =_daba .encodeFlags (w );_egac !=nil {return _ceab ,_dg .Wrap (_egac ,_abge ,"");};_ceab ++;if _gge ,_egac =_daba .encodeStripingInformation (w );_egac !=nil {return _ceab ,_dg .Wrap (_egac ,_abge ,"");};_ceab +=_gge ;return _ceab ,nil ;
+};func (_aeda *SymbolDictionary )parseHeader ()(_bcbgc error ){_age .Log .Trace ("\u005b\u0053\u0059\u004d\u0042\u004f\u004c \u0044\u0049\u0043T\u0049\u004f\u004e\u0041R\u0059\u005d\u005b\u0050\u0041\u0052\u0053\u0045\u002d\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e");
+defer func (){if _bcbgc !=nil {_age .Log .Trace ("\u005bS\u0059\u004dB\u004f\u004c\u0020\u0044I\u0043\u0054\u0049O\u004e\u0041\u0052\u0059\u005d\u005b\u0050\u0041\u0052SE\u002d\u0048\u0045A\u0044\u0045R\u005d\u0020\u0066\u0061\u0069\u006ce\u0064\u002e \u0025\u0076",_bcbgc );
+}else {_age .Log .Trace ("\u005b\u0053\u0059\u004d\u0042\u004f\u004c \u0044\u0049\u0043T\u0049\u004f\u004e\u0041R\u0059\u005d\u005b\u0050\u0041\u0052\u0053\u0045\u002d\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u002e");
+};}();if _bcbgc =_aeda .readRegionFlags ();_bcbgc !=nil {return _bcbgc ;};if _bcbgc =_aeda .setAtPixels ();_bcbgc !=nil {return _bcbgc ;};if _bcbgc =_aeda .setRefinementAtPixels ();_bcbgc !=nil {return _bcbgc ;};if _bcbgc =_aeda .readNumberOfExportedSymbols ();
+_bcbgc !=nil {return _bcbgc ;};if _bcbgc =_aeda .readNumberOfNewSymbols ();_bcbgc !=nil {return _bcbgc ;};if _bcbgc =_aeda .setInSyms ();_bcbgc !=nil {return _bcbgc ;};if _aeda ._eaf {_cbdg :=_aeda .Header .RTSegments ;for _efcd :=len (_cbdg )-1;_efcd >=0;
+_efcd --{if _cbdg [_efcd ].Type ==0{_bedc ,_acbf :=_cbdg [_efcd ].SegmentData .(*SymbolDictionary );if !_acbf {_bcbgc =_gb .Errorf ("\u0072\u0065\u006c\u0061\u0074\u0065\u0064\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074:\u0020\u0025\u0076\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020S\u0079\u006d\u0062\u006f\u006c\u0020\u0044\u0069\u0063\u0074\u0069\u006fna\u0072\u0079\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074",_cbdg [_efcd ]);
+return _bcbgc ;};if _bedc ._eaf {_aeda .setRetainedCodingContexts (_bedc );};break ;};};};if _bcbgc =_aeda .checkInput ();_bcbgc !=nil {return _bcbgc ;};return nil ;};type Type int ;func (_adeba *TableSegment )HtRS ()int32 {return _adeba ._baed };func (_dfaa *TextRegion )computeSymbolCodeLength ()error {if _dfaa .IsHuffmanEncoded {return _dfaa .symbolIDCodeLengths ();
+};_dfaa ._aeaca =int8 (_a .Ceil (_a .Log (float64 (_dfaa .NumberOfSymbols ))/_a .Log (2)));return nil ;};func (_aceb *SymbolDictionary )String ()string {_dggd :=&_ab .Builder {};_dggd .WriteString ("\n\u005b\u0053\u0059\u004dBO\u004c-\u0044\u0049\u0043\u0054\u0049O\u004e\u0041\u0052\u0059\u005d\u000a");
+_dggd .WriteString (_gb .Sprintf ("\u0009-\u0020S\u0064\u0072\u0054\u0065\u006dp\u006c\u0061t\u0065\u0020\u0025\u0076\u000a",_aceb .SdrTemplate ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0064\u0054\u0065\u006d\u0070\u006c\u0061\u0074e\u0020\u0025\u0076\u000a",_aceb .SdTemplate ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0069\u0073\u0043\u006f\u0064\u0069\u006eg\u0043\u006f\u006e\u0074\u0065\u0078\u0074R\u0065\u0074\u0061\u0069\u006e\u0065\u0064\u0020\u0025\u0076\u000a",_aceb ._eegc ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0069\u0073\u0043\u006f\u0064\u0069\u006e\u0067C\u006f\u006e\u0074\u0065\u0078\u0074\u0055\u0073\u0065\u0064 \u0025\u0076\u000a",_aceb ._eaf ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0064\u0048u\u0066\u0066\u0041\u0067\u0067\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065S\u0065\u006c\u0065\u0063\u0074\u0069\u006fn\u0020\u0025\u0076\u000a",_aceb .SdHuffAggInstanceSelection ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053d\u0048\u0075\u0066\u0066\u0042\u004d\u0053\u0069\u007a\u0065S\u0065l\u0065\u0063\u0074\u0069\u006f\u006e\u0020%\u0076\u000a",_aceb .SdHuffBMSizeSelection ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0064\u0048u\u0066\u0066\u0044\u0065\u0063\u006f\u0064\u0065\u0057\u0069\u0064\u0074\u0068S\u0065\u006c\u0065\u0063\u0074\u0069\u006fn\u0020\u0025\u0076\u000a",_aceb .SdHuffDecodeWidthSelection ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020Sd\u0048\u0075\u0066\u0066\u0044\u0065\u0063\u006f\u0064e\u0048e\u0069g\u0068t\u0053\u0065\u006c\u0065\u0063\u0074\u0069\u006f\u006e\u0020\u0025\u0076\u000a",_aceb .SdHuffDecodeHeightSelection ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020U\u0073\u0065\u0052\u0065f\u0069\u006e\u0065\u006d\u0065\u006e\u0074A\u0067\u0067\u0072\u0065\u0067\u0061\u0074\u0069\u006f\u006e\u0020\u0025\u0076\u000a",_aceb .UseRefinementAggregation ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020is\u0048\u0075\u0066\u0066\u006d\u0061\u006e\u0045\u006e\u0063\u006f\u0064\u0065\u0064\u0020\u0025\u0076\u000a",_aceb .IsHuffmanEncoded ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020S\u0064\u0041\u0054\u0058\u0020\u0025\u0076\u000a",_aceb .SdATX ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020S\u0064\u0041\u0054\u0059\u0020\u0025\u0076\u000a",_aceb .SdATY ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0064\u0072\u0041\u0054\u0058\u0020\u0025\u0076\u000a",_aceb .SdrATX ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0064\u0072\u0041\u0054\u0059\u0020\u0025\u0076\u000a",_aceb .SdrATY ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u004e\u0075\u006d\u0062\u0065\u0072\u004ff\u0045\u0078\u0070\u006f\u0072\u0074\u0065d\u0053\u0079\u006d\u0062\u006f\u006c\u0073\u0020\u0025\u0076\u000a",_aceb .NumberOfExportedSymbols ));
+_dggd .WriteString (_gb .Sprintf ("\u0009-\u0020\u004e\u0075\u006db\u0065\u0072\u004f\u0066\u004ee\u0077S\u0079m\u0062\u006f\u006c\u0073\u0020\u0025\u0076\n",_aceb .NumberOfNewSymbols ));_dggd .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u004ff\u0049\u006d\u0070\u006f\u0072\u0074\u0065d\u0053\u0079\u006d\u0062\u006f\u006c\u0073\u0020\u0025\u0076\u000a",_aceb ._acg ));
+_dggd .WriteString (_gb .Sprintf ("\u0009\u002d \u006e\u0075\u006d\u0062\u0065\u0072\u004f\u0066\u0044\u0065\u0063\u006f\u0064\u0065\u0064\u0053\u0079\u006d\u0062\u006f\u006c\u0073 %\u0076\u000a",_aceb ._cec ));return _dggd .String ();};func (_beeb *SymbolDictionary )InitEncode (symbols *_f .Bitmaps ,symbolList []int ,symbolMap map[int ]int ,unborderSymbols bool )error {const _dgfa ="S\u0079\u006d\u0062\u006f\u006c\u0044i\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u002eI\u006e\u0069\u0074E\u006ec\u006f\u0064\u0065";
+_beeb .SdATX =[]int8 {3,-3,2,-2};_beeb .SdATY =[]int8 {-1,-1,-2,-2};_beeb ._gabd =symbols ;_beeb ._cacb =make ([]int ,len (symbolList ));copy (_beeb ._cacb ,symbolList );if len (_beeb ._cacb )!=_beeb ._gabd .Size (){return _dg .Error (_dgfa ,"s\u0079\u006d\u0062\u006f\u006c\u0073\u0020\u0061\u006e\u0064\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u004ci\u0073\u0074\u0020\u006f\u0066\u0020\u0064\u0069\u0066\u0066er\u0065\u006e\u0074 \u0073i\u007a\u0065");
+};_beeb .NumberOfNewSymbols =uint32 (symbols .Size ());_beeb .NumberOfExportedSymbols =uint32 (symbols .Size ());_beeb ._gbdf =symbolMap ;_beeb ._dfadf =unborderSymbols ;return nil ;};var (_ Regioner =&TextRegion {};_ Segmenter =&TextRegion {};);func (_geda *Header )writeReferredToCount (_bacc _c .BinaryWriter )(_daeg int ,_ebgb error ){const _cbaad ="w\u0072i\u0074\u0065\u0052\u0065\u0066\u0065\u0072\u0072e\u0064\u0054\u006f\u0043ou\u006e\u0074";
+_geda .RTSNumbers =make ([]int ,len (_geda .RTSegments ));for _gbea ,_cddf :=range _geda .RTSegments {_geda .RTSNumbers [_gbea ]=int (_cddf .SegmentNumber );};if len (_geda .RTSNumbers )<=4{var _afgg byte ;if len (_geda .RetainBits )>=1{_afgg =_geda .RetainBits [0];
+};_afgg |=byte (len (_geda .RTSNumbers ))<<5;if _ebgb =_bacc .WriteByte (_afgg );_ebgb !=nil {return 0,_dg .Wrap (_ebgb ,_cbaad ,"\u0073\u0068\u006fr\u0074\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};return 1,nil ;};_bdd :=uint32 (len (_geda .RTSNumbers ));
+_fdde :=make ([]byte ,4+_ag .Ceil (len (_geda .RTSNumbers )+1,8));_bdd |=0x7<<29;_b .BigEndian .PutUint32 (_fdde ,_bdd );copy (_fdde [1:],_geda .RetainBits );_daeg ,_ebgb =_bacc .Write (_fdde );if _ebgb !=nil {return 0,_dg .Wrap (_ebgb ,_cbaad ,"l\u006f\u006e\u0067\u0020\u0066\u006f\u0072\u006d\u0061\u0074");
+};return _daeg ,nil ;};func (_gcf *template0 )form (_aaa ,_bcg ,_afg ,_ddf ,_dfg int16 )int16 {return (_aaa <<10)|(_bcg <<7)|(_afg <<4)|(_ddf <<1)|_dfg ;};func (_cad *GenericRefinementRegion )readAtPixels ()error {_cad .GrAtX =make ([]int8 ,2);_cad .GrAtY =make ([]int8 ,2);
+_ceac ,_fbg :=_cad ._bf .ReadByte ();if _fbg !=nil {return _fbg ;};_cad .GrAtX [0]=int8 (_ceac );_ceac ,_fbg =_cad ._bf .ReadByte ();if _fbg !=nil {return _fbg ;};_cad .GrAtY [0]=int8 (_ceac );_ceac ,_fbg =_cad ._bf .ReadByte ();if _fbg !=nil {return _fbg ;
+};_cad .GrAtX [1]=int8 (_ceac );_ceac ,_fbg =_cad ._bf .ReadByte ();if _fbg !=nil {return _fbg ;};_cad .GrAtY [1]=int8 (_ceac );return nil ;};func (_cdec *Header )readHeaderLength (_gada *_c .Reader ,_aeab int64 ){_cdec .HeaderLength =_gada .AbsolutePosition ()-_aeab ;
+};func (_fecfb *SymbolDictionary )huffDecodeBmSize ()(int64 ,error ){if _fecfb ._feea ==nil {var (_cdgb int ;_eddab error ;);if _fecfb .SdHuffDecodeHeightSelection ==3{_cdgb ++;};if _fecfb .SdHuffDecodeWidthSelection ==3{_cdgb ++;};_fecfb ._feea ,_eddab =_fecfb .getUserTable (_cdgb );
+if _eddab !=nil {return 0,_eddab ;};};return _fecfb ._feea .Decode (_fecfb ._dabd );};func (_cgaa *TextRegion )decodeRdh ()(int64 ,error ){const _bfe ="\u0064e\u0063\u006f\u0064\u0065\u0052\u0064h";if _cgaa .IsHuffmanEncoded {if _cgaa .SbHuffRDHeight ==3{if _cgaa ._bceb ==nil {var (_eefe int ;
+_dfbd error ;);if _cgaa .SbHuffFS ==3{_eefe ++;};if _cgaa .SbHuffDS ==3{_eefe ++;};if _cgaa .SbHuffDT ==3{_eefe ++;};if _cgaa .SbHuffRDWidth ==3{_eefe ++;};_cgaa ._bceb ,_dfbd =_cgaa .getUserTable (_eefe );if _dfbd !=nil {return 0,_dg .Wrap (_dfbd ,_bfe ,"");
+};};return _cgaa ._bceb .Decode (_cgaa ._bgge );};_acgg ,_bfgd :=_ece .GetStandardTable (14+int (_cgaa .SbHuffRDHeight ));if _bfgd !=nil {return 0,_dg .Wrap (_bfgd ,_bfe ,"");};return _acgg .Decode (_cgaa ._bgge );};_bagg ,_beab :=_cgaa ._cefb .DecodeInt (_cgaa ._gebe );
+if _beab !=nil {return 0,_dg .Wrap (_beab ,_bfe ,"");};return int64 (_bagg ),nil ;};type Pager interface{GetSegment (int )(*Header ,error );GetBitmap ()(*_f .Bitmap ,error );};func (_befd *SymbolDictionary )checkInput ()error {if _befd .SdHuffDecodeHeightSelection ==2{_age .Log .Debug ("\u0053\u0079\u006d\u0062\u006fl\u0020\u0044\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079\u0020\u0044\u0065\u0063\u006f\u0064\u0065\u0020\u0048\u0065\u0069\u0067\u0068\u0074\u0020\u0053e\u006c\u0065\u0063\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0064\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006e\u006f\u0074\u0020\u0070\u0065r\u006d\u0069\u0074\u0074\u0065\u0064",_befd .SdHuffDecodeHeightSelection );
+};if _befd .SdHuffDecodeWidthSelection ==2{_age .Log .Debug ("\u0053\u0079\u006d\u0062\u006f\u006c\u0020\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079 \u0044\u0065\u0063\u006f\u0064\u0065\u0020\u0057\u0069\u0064t\u0068\u0020\u0053\u0065\u006c\u0065\u0063\u0074\u0069\u006f\u006e\u003a\u0020\u0025\u0064\u0020\u0076\u0061l\u0075\u0065\u0020\u006e\u006f\u0074 \u0070\u0065r\u006d\u0069t\u0074e\u0064",_befd .SdHuffDecodeWidthSelection );
+};if _befd .IsHuffmanEncoded {if _befd .SdTemplate !=0{_age .Log .Debug ("\u0053\u0044T\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0020\u003d\u0020\u0025\u0064\u0020\u0028\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062e \u0030\u0029",_befd .SdTemplate );
+};if !_befd .UseRefinementAggregation {if !_befd .UseRefinementAggregation {if _befd ._eegc {_age .Log .Debug ("\u0049\u0073\u0043\u006f\u0064\u0069\u006e\u0067C\u006f\u006e\u0074ex\u0074\u0052\u0065\u0074\u0061\u0069n\u0065\u0064\u0020\u003d\u0020\u0074\u0072\u0075\u0065\u0020\u0028\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020\u0066\u0061\u006cs\u0065\u0029");
+_befd ._eegc =false ;};if _befd ._eaf {_age .Log .Debug ("\u0069s\u0043\u006fd\u0069\u006e\u0067\u0043o\u006e\u0074\u0065x\u0074\u0055\u0073\u0065\u0064\u0020\u003d\u0020\u0074ru\u0065\u0020\u0028s\u0068\u006fu\u006c\u0064\u0020\u0062\u0065\u0020f\u0061\u006cs\u0065\u0029");
+_befd ._eaf =false ;};};};}else {if _befd .SdHuffBMSizeSelection !=0{_age .Log .Debug ("\u0053\u0064\u0048\u0075\u0066\u0066B\u004d\u0053\u0069\u007a\u0065\u0053\u0065\u006c\u0065\u0063\u0074\u0069\u006fn\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u0030");
+_befd .SdHuffBMSizeSelection =0;};if _befd .SdHuffDecodeWidthSelection !=0{_age .Log .Debug ("\u0053\u0064\u0048\u0075\u0066\u0066\u0044\u0065\u0063\u006f\u0064\u0065\u0057\u0069\u0064\u0074\u0068\u0053\u0065\u006c\u0065\u0063\u0074\u0069o\u006e\u0020\u0073\u0068\u006fu\u006c\u0064 \u0062\u0065\u0020\u0030");
+_befd .SdHuffDecodeWidthSelection =0;};if _befd .SdHuffDecodeHeightSelection !=0{_age .Log .Debug ("\u0053\u0064\u0048\u0075\u0066\u0066\u0044\u0065\u0063\u006f\u0064\u0065\u0048e\u0069\u0067\u0068\u0074\u0053\u0065l\u0065\u0063\u0074\u0069\u006f\u006e\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u0030");
+_befd .SdHuffDecodeHeightSelection =0;};};if !_befd .UseRefinementAggregation {if _befd .SdrTemplate !=0{_age .Log .Debug ("\u0053\u0044\u0052\u0054\u0065\u006d\u0070\u006c\u0061\u0074e\u0020\u003d\u0020\u0025\u0064\u0020\u0028s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0030\u0029",_befd .SdrTemplate );
+_befd .SdrTemplate =0;};};if !_befd .IsHuffmanEncoded ||!_befd .UseRefinementAggregation {if _befd .SdHuffAggInstanceSelection {_age .Log .Debug ("\u0053d\u0048\u0075f\u0066\u0041\u0067g\u0049\u006e\u0073\u0074\u0061\u006e\u0063e\u0053\u0065\u006c\u0065\u0063\u0074i\u006f\u006e\u0020\u003d\u0020\u0025\u0064\u0020\u0028\u0073\u0068o\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0030\u0029",_befd .SdHuffAggInstanceSelection );
+};};return nil ;};func (_deg *GenericRegion )InitEncode (bm *_f .Bitmap ,xLoc ,yLoc ,template int ,duplicateLineRemoval bool )error {const _cbf ="\u0047e\u006e\u0065\u0072\u0069\u0063\u0052\u0065\u0067\u0069\u006f\u006e.\u0049\u006e\u0069\u0074\u0045\u006e\u0063\u006f\u0064\u0065";
+if bm ==nil {return _dg .Error (_cbf ,"\u0070\u0072\u006f\u0076id\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0062\u0069\u0074\u006d\u0061\u0070");};if xLoc < 0||yLoc < 0{return _dg .Error (_cbf ,"\u0078\u0020\u0061\u006e\u0064\u0020\u0079\u0020\u006c\u006f\u0063\u0061\u0074i\u006f\u006e\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0067\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0074h\u0061\u006e\u0020\u0030");
+};_deg .Bitmap =bm ;_deg .GBTemplate =byte (template );switch _deg .GBTemplate {case 0:_deg .GBAtX =[]int8 {3,-3,2,-2};_deg .GBAtY =[]int8 {-1,-1,-2,-2};case 1:_deg .GBAtX =[]int8 {3};_deg .GBAtY =[]int8 {-1};case 2,3:_deg .GBAtX =[]int8 {2};_deg .GBAtY =[]int8 {-1};
+default:return _dg .Errorf (_cbf ,"\u0070\u0072o\u0076\u0069\u0064\u0065\u0064 \u0074\u0065\u006d\u0070\u006ca\u0074\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0020\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u007b\u0030\u002c\u0031\u002c\u0032\u002c\u0033\u007d",template );
+};_deg .RegionSegment =&RegionSegment {BitmapHeight :uint32 (bm .Height ),BitmapWidth :uint32 (bm .Width ),XLocation :uint32 (xLoc ),YLocation :uint32 (yLoc )};_deg .IsTPGDon =duplicateLineRemoval ;return nil ;};func (_egb *PageInformationSegment )checkInput ()error {if _egb .PageBMHeight ==_a .MaxInt32 {if !_egb .IsStripe {_age .Log .Debug ("P\u0061\u0067\u0065\u0049\u006e\u0066\u006f\u0072\u006da\u0074\u0069\u006f\u006e\u0053\u0065\u0067me\u006e\u0074\u002e\u0049s\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0073\u0068ou\u006c\u0064 \u0062\u0065\u0020\u0074\u0072\u0075\u0065\u002e");
+};};return nil ;};type templater interface{form (_cccd ,_dcg ,_bdg ,_bca ,_fbe int16 )int16 ;setIndex (_gbcg *_cc .DecoderStats );};func (_ffcd *GenericRegion )overrideAtTemplate1 (_geg ,_cgfb ,_fce ,_bdba ,_dffc int )int {_geg &=0x1FF7;if _ffcd .GBAtY [0]==0&&_ffcd .GBAtX [0]>=-int8 (_dffc ){_geg |=(_bdba >>uint (7-(int8 (_dffc )+_ffcd .GBAtX [0]))&0x1)<<3;
+}else {_geg |=int (_ffcd .getPixel (_cgfb +int (_ffcd .GBAtX [0]),_fce +int (_ffcd .GBAtY [0])))<<3;};return _geg ;};func (_cegg *HalftoneRegion )computeX (_dgdc ,_ceff int )int {return _cegg .shiftAndFill (int (_cegg .HGridX )+_dgdc *int (_cegg .HRegionY )+_ceff *int (_cegg .HRegionX ));
+};func (_daac *RegionSegment )readCombinationOperator ()error {_ebfb ,_bbfb :=_daac ._fcaf .ReadBits (3);if _bbfb !=nil {return _bbfb ;};_daac .CombinaionOperator =_f .CombinationOperator (_ebfb &0xF);return nil ;};func (_fbgfc *SymbolDictionary )setAtPixels ()error {if _fbgfc .IsHuffmanEncoded {return nil ;
+};_bcbgd :=1;if _fbgfc .SdTemplate ==0{_bcbgd =4;};if _bddf :=_fbgfc .readAtPixels (_bcbgd );_bddf !=nil {return _bddf ;};return nil ;};func (_eggfd *TextRegion )String ()string {_ddbcf :=&_ab .Builder {};_ddbcf .WriteString ("\u000a[\u0054E\u0058\u0054\u0020\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u000a");
+_ddbcf .WriteString (_eggfd .RegionInfo .String ()+"\u000a");_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053br\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u003a\u0020\u0025\u0076\u000a",_eggfd .SbrTemplate ));_ddbcf .WriteString (_gb .Sprintf ("\u0009-\u0020S\u0062\u0044\u0073\u004f\u0066f\u0073\u0065t\u003a\u0020\u0025\u0076\u000a",_eggfd .SbDsOffset ));
+_ddbcf .WriteString (_gb .Sprintf ("\t\u002d \u0044\u0065\u0066\u0061\u0075\u006c\u0074\u0050i\u0078\u0065\u006c\u003a %\u0076\u000a",_eggfd .DefaultPixel ));_ddbcf .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0043\u006f\u006d\u0062i\u006e\u0061\u0074\u0069\u006f\u006e\u004f\u0070\u0065r\u0061\u0074\u006fr\u003a \u0025\u0076\u000a",_eggfd .CombinationOperator ));
+_ddbcf .WriteString (_gb .Sprintf ("\t\u002d \u0049\u0073\u0054\u0072\u0061\u006e\u0073\u0070o\u0073\u0065\u0064\u003a %\u0076\u000a",_eggfd .IsTransposed ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020Re\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0043\u006f\u0072\u006e\u0065\u0072\u003a\u0020\u0025\u0076\u000a",_eggfd .ReferenceCorner ));
+_ddbcf .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0055\u0073eR\u0065f\u0069\u006e\u0065\u006d\u0065n\u0074\u003a\u0020\u0025\u0076\u000a",_eggfd .UseRefinement ));_ddbcf .WriteString (_gb .Sprintf ("\u0009-\u0020\u0049\u0073\u0048\u0075\u0066\u0066\u006d\u0061\u006e\u0045n\u0063\u006f\u0064\u0065\u0064\u003a\u0020\u0025\u0076\u000a",_eggfd .IsHuffmanEncoded ));
+if _eggfd .IsHuffmanEncoded {_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053bH\u0075\u0066\u0066\u0052\u0053\u0069\u007a\u0065\u003a\u0020\u0025\u0076\u000a",_eggfd .SbHuffRSize ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0062\u0048\u0075\u0066\u0066\u0052\u0044\u0059:\u0020\u0025\u0076\u000a",_eggfd .SbHuffRDY ));
+_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0062\u0048\u0075\u0066\u0066\u0052\u0044\u0058:\u0020\u0025\u0076\u000a",_eggfd .SbHuffRDX ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053bH\u0075\u0066\u0066\u0052\u0044\u0048\u0065\u0069\u0067\u0068\u0074\u003a\u0020\u0025v\u000a",_eggfd .SbHuffRDHeight ));
+_ddbcf .WriteString (_gb .Sprintf ("\t\u002d\u0020\u0053\u0062Hu\u0066f\u0052\u0044\u0057\u0069\u0064t\u0068\u003a\u0020\u0025\u0076\u000a",_eggfd .SbHuffRDWidth ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d \u0053\u0062\u0048u\u0066\u0066\u0044\u0054\u003a\u0020\u0025\u0076\u000a",_eggfd .SbHuffDT ));
+_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d \u0053\u0062\u0048u\u0066\u0066\u0044\u0053\u003a\u0020\u0025\u0076\u000a",_eggfd .SbHuffDS ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d \u0053\u0062\u0048u\u0066\u0066\u0046\u0053\u003a\u0020\u0025\u0076\u000a",_eggfd .SbHuffFS ));
+};_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0062\u0072\u0041\u0054\u0058:\u0020\u0025\u0076\u000a",_eggfd .SbrATX ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0062\u0072\u0041\u0054\u0059:\u0020\u0025\u0076\u000a",_eggfd .SbrATY ));
+_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020N\u0075\u006d\u0062\u0065r\u004f\u0066\u0053\u0079\u006d\u0062\u006fl\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0073\u003a\u0020\u0025\u0076\u000a",_eggfd .NumberOfSymbolInstances ));_ddbcf .WriteString (_gb .Sprintf ("\u0009\u002d\u0020\u0053\u0062\u0072\u0041\u0054\u0058:\u0020\u0025\u0076\u000a",_eggfd .SbrATX ));
+return _ddbcf .String ();};func (_fcb *GenericRegion )Encode (w _c .BinaryWriter )(_afb int ,_dag error ){const _acf ="G\u0065n\u0065\u0072\u0069\u0063\u0052\u0065\u0067\u0069o\u006e\u002e\u0045\u006eco\u0064\u0065";if _fcb .Bitmap ==nil {return 0,_dg .Error (_acf ,"\u0070\u0072\u006f\u0076id\u0065\u0064\u0020\u006e\u0069\u006c\u0020\u0062\u0069\u0074\u006d\u0061\u0070");
+};_fcc ,_dag :=_fcb .RegionSegment .Encode (w );if _dag !=nil {return 0,_dg .Wrap (_dag ,_acf ,"\u0052\u0065\u0067\u0069\u006f\u006e\u0053\u0065\u0067\u006d\u0065\u006e\u0074");};_afb +=_fcc ;if _dag =w .SkipBits (4);_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"\u0073k\u0069p\u0020\u0072\u0065\u0073\u0065r\u0076\u0065d\u0020\u0062\u0069\u0074\u0073");
+};var _ddag int ;if _fcb .IsTPGDon {_ddag =1;};if _dag =w .WriteBit (_ddag );_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"\u0074\u0070\u0067\u0064\u006f\u006e");};_ddag =0;if _dag =w .WriteBit (int (_fcb .GBTemplate >>1)&0x01);_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"f\u0069r\u0073\u0074\u0020\u0067\u0062\u0074\u0065\u006dp\u006c\u0061\u0074\u0065 b\u0069\u0074");
+};if _dag =w .WriteBit (int (_fcb .GBTemplate )&0x01);_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"s\u0065\u0063\u006f\u006ed \u0067b\u0074\u0065\u006d\u0070\u006ca\u0074\u0065\u0020\u0062\u0069\u0074");};if _fcb .UseMMR {_ddag =1;};if _dag =w .WriteBit (_ddag );
+_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"u\u0073\u0065\u0020\u004d\u004d\u0052\u0020\u0062\u0069\u0074");};_afb ++;if _fcc ,_dag =_fcb .writeGBAtPixels (w );_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"");};_afb +=_fcc ;_cfd :=_bdc .New ();
+if _dag =_cfd .EncodeBitmap (_fcb .Bitmap ,_fcb .IsTPGDon );_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"");};_cfd .Final ();var _dgf int64 ;if _dgf ,_dag =_cfd .WriteTo (w );_dag !=nil {return _afb ,_dg .Wrap (_dag ,_acf ,"");};_afb +=int (_dgf );
+return _afb ,nil ;};func (_ecc *SymbolDictionary )Encode (w _c .BinaryWriter )(_ffdgc int ,_bdbg error ){const _cggb ="\u0053\u0079\u006dbo\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u002e\u0045\u006e\u0063\u006f\u0064\u0065";if _ecc ==nil {return 0,_dg .Error (_cggb ,"\u0073\u0079m\u0062\u006f\u006c\u0020\u0064\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066in\u0065\u0064");
+};if _ffdgc ,_bdbg =_ecc .encodeFlags (w );_bdbg !=nil {return _ffdgc ,_dg .Wrap (_bdbg ,_cggb ,"");};_gdef ,_bdbg :=_ecc .encodeATFlags (w );if _bdbg !=nil {return _ffdgc ,_dg .Wrap (_bdbg ,_cggb ,"");};_ffdgc +=_gdef ;if _gdef ,_bdbg =_ecc .encodeRefinementATFlags (w );
+_bdbg !=nil {return _ffdgc ,_dg .Wrap (_bdbg ,_cggb ,"");};_ffdgc +=_gdef ;if _gdef ,_bdbg =_ecc .encodeNumSyms (w );_bdbg !=nil {return _ffdgc ,_dg .Wrap (_bdbg ,_cggb ,"");};_ffdgc +=_gdef ;if _gdef ,_bdbg =_ecc .encodeSymbols (w );_bdbg !=nil {return _ffdgc ,_dg .Wrap (_bdbg ,_cggb ,"");
+};_ffdgc +=_gdef ;return _ffdgc ,nil ;};func (_gcdg *TableSegment )HtHigh ()int32 {return _gcdg ._ggdc };func (_ebgg *GenericRegion )decodeLine (_faa ,_dfa ,_cgcb int )error {const _ffg ="\u0064\u0065\u0063\u006f\u0064\u0065\u004c\u0069\u006e\u0065";_ged :=_ebgg .Bitmap .GetByteIndex (0,_faa );
+_bdca :=_ged -_ebgg .Bitmap .RowStride ;switch _ebgg .GBTemplate {case 0:if !_ebgg .UseExtTemplates {return _ebgg .decodeTemplate0a (_faa ,_dfa ,_cgcb ,_ged ,_bdca );};return _ebgg .decodeTemplate0b (_faa ,_dfa ,_cgcb ,_ged ,_bdca );case 1:return _ebgg .decodeTemplate1 (_faa ,_dfa ,_cgcb ,_ged ,_bdca );
+case 2:return _ebgg .decodeTemplate2 (_faa ,_dfa ,_cgcb ,_ged ,_bdca );case 3:return _ebgg .decodeTemplate3 (_faa ,_dfa ,_cgcb ,_ged ,_bdca );};return _dg .Errorf (_ffg ,"\u0069\u006e\u0076a\u006c\u0069\u0064\u0020G\u0042\u0054\u0065\u006d\u0070\u006c\u0061t\u0065\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064\u003a\u0020\u0025\u0064",_ebgg .GBTemplate );
+};func (_ddbf *TextRegion )blit (_dbce *_f .Bitmap ,_bcbb int64 )error {if _ddbf .IsTransposed ==0&&(_ddbf .ReferenceCorner ==2||_ddbf .ReferenceCorner ==3){_ddbf ._defb +=int64 (_dbce .Width -1);}else if _ddbf .IsTransposed ==1&&(_ddbf .ReferenceCorner ==0||_ddbf .ReferenceCorner ==2){_ddbf ._defb +=int64 (_dbce .Height -1);
+};_ebbb :=_ddbf ._defb ;if _ddbf .IsTransposed ==1{_ebbb ,_bcbb =_bcbb ,_ebbb ;};switch _ddbf .ReferenceCorner {case 0:_bcbb -=int64 (_dbce .Height -1);case 2:_bcbb -=int64 (_dbce .Height -1);_ebbb -=int64 (_dbce .Width -1);case 3:_ebbb -=int64 (_dbce .Width -1);
+};_gdefc :=_f .Blit (_dbce ,_ddbf .RegionBitmap ,int (_ebbb ),int (_bcbb ),_ddbf .CombinationOperator );if _gdefc !=nil {return _gdefc ;};if _ddbf .IsTransposed ==0&&(_ddbf .ReferenceCorner ==0||_ddbf .ReferenceCorner ==1){_ddbf ._defb +=int64 (_dbce .Width -1);
+};if _ddbf .IsTransposed ==1&&(_ddbf .ReferenceCorner ==1||_ddbf .ReferenceCorner ==3){_ddbf ._defb +=int64 (_dbce .Height -1);};return nil ;};func (_fdag *GenericRegion )overrideAtTemplate0b (_gde ,_fccg ,_faab ,_cgfe ,_aeg ,_cead int )int {if _fdag .GBAtOverride [0]{_gde &=0xFFFD;
+if _fdag .GBAtY [0]==0&&_fdag .GBAtX [0]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [0]&0x1))<<1;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [0]),_faab +int (_fdag .GBAtY [0])))<<1;};};if _fdag .GBAtOverride [1]{_gde &=0xDFFF;
+if _fdag .GBAtY [1]==0&&_fdag .GBAtX [1]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [1]&0x1))<<13;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [1]),_faab +int (_fdag .GBAtY [1])))<<13;};};if _fdag .GBAtOverride [2]{_gde &=0xFDFF;
+if _fdag .GBAtY [2]==0&&_fdag .GBAtX [2]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [2]&0x1))<<9;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [2]),_faab +int (_fdag .GBAtY [2])))<<9;};};if _fdag .GBAtOverride [3]{_gde &=0xBFFF;
+if _fdag .GBAtY [3]==0&&_fdag .GBAtX [3]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [3]&0x1))<<14;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [3]),_faab +int (_fdag .GBAtY [3])))<<14;};};if _fdag .GBAtOverride [4]{_gde &=0xEFFF;
+if _fdag .GBAtY [4]==0&&_fdag .GBAtX [4]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [4]&0x1))<<12;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [4]),_faab +int (_fdag .GBAtY [4])))<<12;};};if _fdag .GBAtOverride [5]{_gde &=0xFFDF;
+if _fdag .GBAtY [5]==0&&_fdag .GBAtX [5]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [5]&0x1))<<5;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [5]),_faab +int (_fdag .GBAtY [5])))<<5;};};if _fdag .GBAtOverride [6]{_gde &=0xFFFB;
+if _fdag .GBAtY [6]==0&&_fdag .GBAtX [6]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [6]&0x1))<<2;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [6]),_faab +int (_fdag .GBAtY [6])))<<2;};};if _fdag .GBAtOverride [7]{_gde &=0xFFF7;
+if _fdag .GBAtY [7]==0&&_fdag .GBAtX [7]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [7]&0x1))<<3;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [7]),_faab +int (_fdag .GBAtY [7])))<<3;};};if _fdag .GBAtOverride [8]{_gde &=0xF7FF;
+if _fdag .GBAtY [8]==0&&_fdag .GBAtX [8]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [8]&0x1))<<11;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [8]),_faab +int (_fdag .GBAtY [8])))<<11;};};if _fdag .GBAtOverride [9]{_gde &=0xFFEF;
+if _fdag .GBAtY [9]==0&&_fdag .GBAtX [9]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [9]&0x1))<<4;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [9]),_faab +int (_fdag .GBAtY [9])))<<4;};};if _fdag .GBAtOverride [10]{_gde &=0x7FFF;
+if _fdag .GBAtY [10]==0&&_fdag .GBAtX [10]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [10]&0x1))<<15;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [10]),_faab +int (_fdag .GBAtY [10])))<<15;};};if _fdag .GBAtOverride [11]{_gde &=0xFDFF;
+if _fdag .GBAtY [11]==0&&_fdag .GBAtX [11]>=-int8 (_aeg ){_gde |=(_cgfe >>uint (int8 (_cead )-_fdag .GBAtX [11]&0x1))<<10;}else {_gde |=int (_fdag .getPixel (_fccg +int (_fdag .GBAtX [11]),_faab +int (_fdag .GBAtY [11])))<<10;};};return _gde ;};func (_bbc *GenericRefinementRegion )updateOverride ()error {if _bbc .GrAtX ==nil ||_bbc .GrAtY ==nil {return _ec .New ("\u0041\u0054\u0020\u0070\u0069\u0078\u0065\u006c\u0073\u0020\u006e\u006ft\u0020\u0073\u0065\u0074");
+};if len (_bbc .GrAtX )!=len (_bbc .GrAtY ){return _ec .New ("A\u0054\u0020\u0070\u0069xe\u006c \u0069\u006e\u0063\u006f\u006es\u0069\u0073\u0074\u0065\u006e\u0074");};_bbc ._eecb =make ([]bool ,len (_bbc .GrAtX ));switch _bbc .TemplateID {case 0:if _bbc .GrAtX [0]!=-1&&_bbc .GrAtY [0]!=-1{_bbc ._eecb [0]=true ;
+_bbc ._eec =true ;};if _bbc .GrAtX [1]!=-1&&_bbc .GrAtY [1]!=-1{_bbc ._eecb [1]=true ;_bbc ._eec =true ;};case 1:_bbc ._eec =false ;};return nil ;};func (_ecb *GenericRefinementRegion )decodeTypicalPredictedLineTemplate0 (_eg ,_ebb ,_cbd ,_agf ,_gfa ,_fb ,_ffa ,_gca ,_ccg int )error {var (_cea ,_gdg ,_ccc ,_feg ,_aee ,_ccga int ;
+_bfb byte ;_bcf error ;);if _eg > 0{_bfb ,_bcf =_ecb .RegionBitmap .GetByte (_ffa -_cbd );if _bcf !=nil {return _bcf ;};_ccc =int (_bfb );};if _gca > 0&&_gca <=_ecb .ReferenceBitmap .Height {_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg -_agf +_fb );
+if _bcf !=nil {return _bcf ;};_feg =int (_bfb )<<4;};if _gca >=0&&_gca < _ecb .ReferenceBitmap .Height {_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg +_fb );if _bcf !=nil {return _bcf ;};_aee =int (_bfb )<<1;};if _gca > -2&&_gca < _ecb .ReferenceBitmap .Height -1{_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg +_agf +_fb );
+if _bcf !=nil {return _bcf ;};_ccga =int (_bfb );};_cea =((_ccc >>5)&0x6)|((_ccga >>2)&0x30)|(_aee &0x180)|(_feg &0xc00);var _fc int ;for _dcf :=0;_dcf < _gfa ;_dcf =_fc {var _gga int ;_fc =_dcf +8;var _dad int ;if _dad =_ebb -_dcf ;_dad > 8{_dad =8;};
+_fgc :=_fc < _ebb ;_cceb :=_fc < _ecb .ReferenceBitmap .Width ;_aff :=_fb +1;if _eg > 0{_bfb =0;if _fgc {_bfb ,_bcf =_ecb .RegionBitmap .GetByte (_ffa -_cbd +1);if _bcf !=nil {return _bcf ;};};_ccc =(_ccc <<8)|int (_bfb );};if _gca > 0&&_gca <=_ecb .ReferenceBitmap .Height {var _fbb int ;
+if _cceb {_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg -_agf +_aff );if _bcf !=nil {return _bcf ;};_fbb =int (_bfb )<<4;};_feg =(_feg <<8)|_fbb ;};if _gca >=0&&_gca < _ecb .ReferenceBitmap .Height {var _gbc int ;if _cceb {_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg +_aff );
+if _bcf !=nil {return _bcf ;};_gbc =int (_bfb )<<1;};_aee =(_aee <<8)|_gbc ;};if _gca > -2&&_gca < (_ecb .ReferenceBitmap .Height -1){_bfb =0;if _cceb {_bfb ,_bcf =_ecb .ReferenceBitmap .GetByte (_ccg +_agf +_aff );if _bcf !=nil {return _bcf ;};};_ccga =(_ccga <<8)|int (_bfb );
+};for _affc :=0;_affc < _dad ;_affc ++{var _agd int ;_dd :=false ;_ef :=(_cea >>4)&0x1ff;if _ef ==0x1ff{_dd =true ;_agd =1;}else if _ef ==0x00{_dd =true ;};if !_dd {if _ecb ._eec {_gdg =_ecb .overrideAtTemplate0 (_cea ,_dcf +_affc ,_eg ,_gga ,_affc );_ecb ._cd .SetIndex (int32 (_gdg ));
+}else {_ecb ._cd .SetIndex (int32 (_cea ));};_agd ,_bcf =_ecb ._gaf .DecodeBit (_ecb ._cd );if _bcf !=nil {return _bcf ;};};_eca :=uint (7-_affc );_gga |=_agd <<_eca ;_cea =((_cea &0xdb6)<<1)|_agd |(_ccc >>_eca +5)&0x002|((_ccga >>_eca +2)&0x010)|((_aee >>_eca )&0x080)|((_feg >>_eca )&0x400);
+};_bcf =_ecb .RegionBitmap .SetByte (_ffa ,byte (_gga ));if _bcf !=nil {return _bcf ;};_ffa ++;_ccg ++;};return nil ;};func (_ffdd *SymbolDictionary )encodeRefinementATFlags (_ebce _c .BinaryWriter )(_ade int ,_bagb error ){const _egfb ="\u0065\u006e\u0063od\u0065\u0052\u0065\u0066\u0069\u006e\u0065\u006d\u0065\u006e\u0074\u0041\u0054\u0046\u006c\u0061\u0067\u0073";
+if !_ffdd .UseRefinementAggregation ||_ffdd .SdrTemplate !=0{return 0,nil ;};for _aec :=0;_aec < 2;_aec ++{if _bagb =_ebce .WriteByte (byte (_ffdd .SdrATX [_aec ]));_bagb !=nil {return _ade ,_dg .Wrapf (_bagb ,_egfb ,"\u0053\u0064\u0072\u0041\u0054\u0058\u005b\u0025\u0064\u005d",_aec );
+};_ade ++;if _bagb =_ebce .WriteByte (byte (_ffdd .SdrATY [_aec ]));_bagb !=nil {return _ade ,_dg .Wrapf (_bagb ,_egfb ,"\u0053\u0064\u0072\u0041\u0054\u0059\u005b\u0025\u0064\u005d",_aec );};_ade ++;};return _ade ,nil ;};func (_gaa *GenericRegion )GetRegionInfo ()*RegionSegment {return _gaa .RegionSegment };
+func (_agea *GenericRegion )Size ()int {return _agea .RegionSegment .Size ()+1+2*len (_agea .GBAtX )};func (_egcf *HalftoneRegion )computeY (_ffgd ,_becf int )int {return _egcf .shiftAndFill (int (_egcf .HGridY )+_ffgd *int (_egcf .HRegionX )-_becf *int (_egcf .HRegionY ));
+};func (_ce *GenericRefinementRegion )decodeSLTP ()(int ,error ){_ce .Template .setIndex (_ce ._cd );return _ce ._gaf .DecodeBit (_ce ._cd );};func (_fdg *GenericRegion )overrideAtTemplate2 (_fad ,_ccad ,_ccgab ,_ecag ,_gad int )int {_fad &=0x3FB;if _fdg .GBAtY [0]==0&&_fdg .GBAtX [0]>=-int8 (_gad ){_fad |=(_ecag >>uint (7-(int8 (_gad )+_fdg .GBAtX [0]))&0x1)<<2;
+}else {_fad |=int (_fdg .getPixel (_ccad +int (_fdg .GBAtX [0]),_ccgab +int (_fdg .GBAtY [0])))<<2;};return _fad ;};func (_ffddg *TextRegion )decodeIb (_ggdce ,_gdcc int64 )(*_f .Bitmap ,error ){const _cagc ="\u0064\u0065\u0063\u006f\u0064\u0065\u0049\u0062";
+var (_aeaa error ;_gbacc *_f .Bitmap ;);if _ggdce ==0{if int (_gdcc )> len (_ffddg .Symbols )-1{return nil ,_dg .Error (_cagc ,"\u0064\u0065\u0063\u006f\u0064\u0069\u006e\u0067\u0020\u0049\u0042\u0020\u0062\u0069\u0074\u006d\u0061\u0070\u002e\u0020\u0069\u006e\u0064\u0065x\u0020\u006f\u0075\u0074\u0020o\u0066\u0020r\u0061\u006e\u0067\u0065");
+};return _ffddg .Symbols [int (_gdcc )],nil ;};var _bbaed ,_agec ,_agaf ,_dgfgg int64 ;_bbaed ,_aeaa =_ffddg .decodeRdw ();if _aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"");};_agec ,_aeaa =_ffddg .decodeRdh ();if _aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"");
+};_agaf ,_aeaa =_ffddg .decodeRdx ();if _aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"");};_dgfgg ,_aeaa =_ffddg .decodeRdy ();if _aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"");};if _ffddg .IsHuffmanEncoded {if _ ,_aeaa =_ffddg .decodeSymInRefSize ();
+_aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"");};_ffddg ._bgge .Align ();};_gfccc :=_ffddg .Symbols [_gdcc ];_dbcf :=uint32 (_gfccc .Width );_edeg :=uint32 (_gfccc .Height );_bgef :=int32 (uint32 (_bbaed )>>1)+int32 (_agaf );_ggf :=int32 (uint32 (_agec )>>1)+int32 (_dgfgg );
+if _ffddg ._gagbe ==nil {_ffddg ._gagbe =_bcbf (_ffddg ._bgge ,nil );};_ffddg ._gagbe .setParameters (_ffddg ._bdfb ,_ffddg ._cefb ,_ffddg .SbrTemplate ,_dbcf +uint32 (_bbaed ),_edeg +uint32 (_agec ),_gfccc ,_bgef ,_ggf ,false ,_ffddg .SbrATX ,_ffddg .SbrATY );
+_gbacc ,_aeaa =_ffddg ._gagbe .GetRegionBitmap ();if _aeaa !=nil {return nil ,_dg .Wrap (_aeaa ,_cagc ,"\u0067\u0072\u0066");};if _ffddg .IsHuffmanEncoded {_ffddg ._bgge .Align ();};return _gbacc ,nil ;};func (_ecd *GenericRegion )setOverrideFlag (_bbcd int ){_ecd .GBAtOverride [_bbcd ]=true ;
+_ecd ._aeed =true ;};func (_gadab *SymbolDictionary )GetDictionary ()([]*_f .Bitmap ,error ){_age .Log .Trace ("\u005b\u0053\u0059\u004d\u0042\u004f\u004c-\u0044\u0049\u0043T\u0049\u004f\u004e\u0041R\u0059\u005d\u0020\u0047\u0065\u0074\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e");
+defer func (){_age .Log .Trace ("\u005b\u0053\u0059M\u0042\u004f\u004c\u002d\u0044\u0049\u0043\u0054\u0049\u004f\u004e\u0041\u0052\u0059\u005d\u0020\u0047\u0065\u0074\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079 \u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064");
+_age .Log .Trace ("\u005b\u0053Y\u004d\u0042\u004f\u004c\u002dD\u0049\u0043\u0054\u0049\u004fN\u0041\u0052\u0059\u005d\u0020\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079\u002e\u0020\u000a\u0045\u0078\u003a\u0020\u0027\u0025\u0073\u0027\u002c\u0020\u000a\u006e\u0065\u0077\u003a\u0027\u0025\u0073\u0027",_gadab ._ffdg ,_gadab ._ddae );
+}();if _gadab ._ffdg ==nil {var _agbbe error ;if _gadab .UseRefinementAggregation {_gadab ._gdfg =_gadab .getSbSymCodeLen ();};if !_gadab .IsHuffmanEncoded {if _agbbe =_gadab .setCodingStatistics ();_agbbe !=nil {return nil ,_agbbe ;};};_gadab ._ddae =make ([]*_f .Bitmap ,_gadab .NumberOfNewSymbols );
+var _ecgbc []int ;if _gadab .IsHuffmanEncoded &&!_gadab .UseRefinementAggregation {_ecgbc =make ([]int ,_gadab .NumberOfNewSymbols );};if _agbbe =_gadab .setSymbolsArray ();_agbbe !=nil {return nil ,_agbbe ;};var _dagcf ,_bcbg int64 ;_gadab ._cec =0;for _gadab ._cec < _gadab .NumberOfNewSymbols {_bcbg ,_agbbe =_gadab .decodeHeightClassDeltaHeight ();
+if _agbbe !=nil {return nil ,_agbbe ;};_dagcf +=_bcbg ;var _ffdef ,_ddcc uint32 ;_daegb :=int64 (_gadab ._cec );for {var _cccb int64 ;_cccb ,_agbbe =_gadab .decodeDifferenceWidth ();if _ec .Is (_agbbe ,_d .ErrOOB ){break ;};if _agbbe !=nil {return nil ,_agbbe ;
+};if _gadab ._cec >=_gadab .NumberOfNewSymbols {break ;};_ffdef +=uint32 (_cccb );_ddcc +=_ffdef ;if !_gadab .IsHuffmanEncoded ||_gadab .UseRefinementAggregation {if !_gadab .UseRefinementAggregation {_agbbe =_gadab .decodeDirectlyThroughGenericRegion (_ffdef ,uint32 (_dagcf ));
+if _agbbe !=nil {return nil ,_agbbe ;};}else {_agbbe =_gadab .decodeAggregate (_ffdef ,uint32 (_dagcf ));if _agbbe !=nil {return nil ,_agbbe ;};};}else if _gadab .IsHuffmanEncoded &&!_gadab .UseRefinementAggregation {_ecgbc [_gadab ._cec ]=int (_ffdef );
+};_gadab ._cec ++;};if _gadab .IsHuffmanEncoded &&!_gadab .UseRefinementAggregation {var _ffe int64 ;if _gadab .SdHuffBMSizeSelection ==0{var _eeafg _ece .Tabler ;_eeafg ,_agbbe =_ece .GetStandardTable (1);if _agbbe !=nil {return nil ,_agbbe ;};_ffe ,_agbbe =_eeafg .Decode (_gadab ._dabd );
+if _agbbe !=nil {return nil ,_agbbe ;};}else {_ffe ,_agbbe =_gadab .huffDecodeBmSize ();if _agbbe !=nil {return nil ,_agbbe ;};};_gadab ._dabd .Align ();var _ffgb *_f .Bitmap ;_ffgb ,_agbbe =_gadab .decodeHeightClassCollectiveBitmap (_ffe ,uint32 (_dagcf ),_ddcc );
+if _agbbe !=nil {return nil ,_agbbe ;};_agbbe =_gadab .decodeHeightClassBitmap (_ffgb ,_daegb ,int (_dagcf ),_ecgbc );if _agbbe !=nil {return nil ,_agbbe ;};};};_babd ,_agbbe :=_gadab .getToExportFlags ();if _agbbe !=nil {return nil ,_agbbe ;};_gadab .setExportedSymbols (_babd );
+};return _gadab ._ffdg ,nil ;};func (_dcgb *TextRegion )parseHeader ()error {var _ecfb error ;_age .Log .Trace ("\u005b\u0054E\u0058\u0054\u0020\u0052E\u0047\u0049O\u004e\u005d\u005b\u0050\u0041\u0052\u0053\u0045-\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u0020\u0062\u0065\u0067\u0069n\u0073\u002e\u002e\u002e");
+defer func (){if _ecfb !=nil {_age .Log .Trace ("\u005b\u0054\u0045\u0058\u0054\u0020\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u005b\u0050\u0041\u0052\u0053\u0045\u002d\u0048\u0045\u0041\u0044E\u0052\u005d\u0020\u0066\u0061i\u006c\u0065d\u002e\u0020\u0025\u0076",_ecfb );
+}else {_age .Log .Trace ("\u005b\u0054E\u0058\u0054\u0020\u0052E\u0047\u0049O\u004e\u005d\u005b\u0050\u0041\u0052\u0053\u0045-\u0048\u0045\u0041\u0044\u0045\u0052\u005d\u0020\u0066\u0069\u006e\u0069s\u0068\u0065\u0064\u002e");};}();if _ecfb =_dcgb .RegionInfo .parseHeader ();
+_ecfb !=nil {return _ecfb ;};if _ecfb =_dcgb .readRegionFlags ();_ecfb !=nil {return _ecfb ;};if _dcgb .IsHuffmanEncoded {if _ecfb =_dcgb .readHuffmanFlags ();_ecfb !=nil {return _ecfb ;};};if _ecfb =_dcgb .readUseRefinement ();_ecfb !=nil {return _ecfb ;
+};if _ecfb =_dcgb .readAmountOfSymbolInstances ();_ecfb !=nil {return _ecfb ;};if _ecfb =_dcgb .getSymbols ();_ecfb !=nil {return _ecfb ;};if _ecfb =_dcgb .computeSymbolCodeLength ();_ecfb !=nil {return _ecfb ;};if _ecfb =_dcgb .checkInput ();_ecfb !=nil {return _ecfb ;
+};_age .Log .Trace ("\u0025\u0073",_dcgb .String ());return nil ;};func (_adcc *PageInformationSegment )readResolution ()error {_cgee ,_bcege :=_adcc ._eade .ReadBits (32);if _bcege !=nil {return _bcege ;};_adcc .ResolutionX =int (_cgee &_a .MaxInt32 );
+_cgee ,_bcege =_adcc ._eade .ReadBits (32);if _bcege !=nil {return _bcege ;};_adcc .ResolutionY =int (_cgee &_a .MaxInt32 );return nil ;};func (_gdac *SymbolDictionary )encodeATFlags (_gfab _c .BinaryWriter )(_gabe int ,_adfc error ){const _bdgge ="\u0065\u006e\u0063\u006f\u0064\u0065\u0041\u0054\u0046\u006c\u0061\u0067\u0073";
+if _gdac .IsHuffmanEncoded ||_gdac .SdTemplate !=0{return 0,nil ;};_bede :=4;if _gdac .SdTemplate !=0{_bede =1;};for _cgfg :=0;_cgfg < _bede ;_cgfg ++{if _adfc =_gfab .WriteByte (byte (_gdac .SdATX [_cgfg ]));_adfc !=nil {return _gabe ,_dg .Wrapf (_adfc ,_bdgge ,"\u0053d\u0041\u0054\u0058\u005b\u0025\u0064]",_cgfg );
+};_gabe ++;if _adfc =_gfab .WriteByte (byte (_gdac .SdATY [_cgfg ]));_adfc !=nil {return _gabe ,_dg .Wrapf (_adfc ,_bdgge ,"\u0053d\u0041\u0054\u0059\u005b\u0025\u0064]",_cgfg );};_gabe ++;};return _gabe ,nil ;};func (_cdead *TextRegion )checkInput ()error {const _gbcf ="\u0063\u0068\u0065\u0063\u006b\u0049\u006e\u0070\u0075\u0074";
+if !_cdead .UseRefinement {if _cdead .SbrTemplate !=0{_age .Log .Debug ("\u0053\u0062\u0072Te\u006d\u0070\u006c\u0061\u0074\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0030");_cdead .SbrTemplate =0;};};if _cdead .SbHuffFS ==2||_cdead .SbHuffRDWidth ==2||_cdead .SbHuffRDHeight ==2||_cdead .SbHuffRDX ==2||_cdead .SbHuffRDY ==2{return _dg .Error (_gbcf ,"h\u0075\u0066\u0066\u006d\u0061\u006e \u0066\u006c\u0061\u0067\u0020\u0076a\u006c\u0075\u0065\u0020\u0069\u0073\u0020n\u006f\u0074\u0020\u0070\u0065\u0072\u006d\u0069\u0074\u0074e\u0064");
+};if !_cdead .UseRefinement {if _cdead .SbHuffRSize !=0{_age .Log .Debug ("\u0053\u0062\u0048uf\u0066\u0052\u0053\u0069\u007a\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0030");_cdead .SbHuffRSize =0;};if _cdead .SbHuffRDY !=0{_age .Log .Debug ("S\u0062\u0048\u0075\u0066fR\u0044Y\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020\u0030");
+_cdead .SbHuffRDY =0;};if _cdead .SbHuffRDX !=0{_age .Log .Debug ("S\u0062\u0048\u0075\u0066fR\u0044X\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020\u0030");_cdead .SbHuffRDX =0;};if _cdead .SbHuffRDWidth !=0{_age .Log .Debug ("\u0053b\u0048\u0075\u0066\u0066R\u0044\u0057\u0069\u0064\u0074h\u0020s\u0068o\u0075\u006c\u0064\u0020\u0062\u0065\u00200");
+_cdead .SbHuffRDWidth =0;};if _cdead .SbHuffRDHeight !=0{_age .Log .Debug ("\u0053\u0062\u0048\u0075\u0066\u0066\u0052\u0044\u0048\u0065\u0069g\u0068\u0074\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020b\u0065\u0020\u0030");_cdead .SbHuffRDHeight =0;};
+};return nil ;};func (_ccae *TextRegion )Encode (w _c .BinaryWriter )(_ebgac int ,_gec error ){const _ebacb ="\u0054\u0065\u0078\u0074\u0052\u0065\u0067\u0069\u006f\u006e\u002e\u0045n\u0063\u006f\u0064\u0065";if _ebgac ,_gec =_ccae .RegionInfo .Encode (w );
+_gec !=nil {return _ebgac ,_dg .Wrap (_gec ,_ebacb ,"");};var _cfgdg int ;if _cfgdg ,_gec =_ccae .encodeFlags (w );_gec !=nil {return _ebgac ,_dg .Wrap (_gec ,_ebacb ,"");};_ebgac +=_cfgdg ;if _cfgdg ,_gec =_ccae .encodeSymbols (w );_gec !=nil {return _ebgac ,_dg .Wrap (_gec ,_ebacb ,"");
+};_ebgac +=_cfgdg ;return _ebgac ,nil ;};func (_ecgd *TextRegion )decodeSymInRefSize ()(int64 ,error ){const _fcfd ="\u0064e\u0063o\u0064\u0065\u0053\u0079\u006dI\u006e\u0052e\u0066\u0053\u0069\u007a\u0065";if _ecgd .SbHuffRSize ==0{_edaeg ,_caace :=_ece .GetStandardTable (1);
+if _caace !=nil {return 0,_dg .Wrap (_caace ,_fcfd ,"");};return _edaeg .Decode (_ecgd ._bgge );};if _ecgd ._dccdc ==nil {var (_bgec int ;_daca error ;);if _ecgd .SbHuffFS ==3{_bgec ++;};if _ecgd .SbHuffDS ==3{_bgec ++;};if _ecgd .SbHuffDT ==3{_bgec ++;
+};if _ecgd .SbHuffRDWidth ==3{_bgec ++;};if _ecgd .SbHuffRDHeight ==3{_bgec ++;};if _ecgd .SbHuffRDX ==3{_bgec ++;};if _ecgd .SbHuffRDY ==3{_bgec ++;};_ecgd ._dccdc ,_daca =_ecgd .getUserTable (_bgec );if _daca !=nil {return 0,_dg .Wrap (_daca ,_fcfd ,"");
+};};_cade ,_cdcg :=_ecgd ._dccdc .Decode (_ecgd ._bgge );if _cdcg !=nil {return 0,_dg .Wrap (_cdcg ,_fcfd ,"");};return _cade ,nil ;};func (_ceec *SymbolDictionary )decodeThroughTextRegion (_fcae ,_ffaf ,_acdff uint32 )error {if _ceec ._fagf ==nil {_ceec ._fagf =_dabc (_ceec ._dabd ,nil );
+_ceec ._fagf .setContexts (_ceec ._cfba ,_cc .NewStats (512,1),_cc .NewStats (512,1),_cc .NewStats (512,1),_cc .NewStats (512,1),_ceec ._fbac ,_cc .NewStats (512,1),_cc .NewStats (512,1),_cc .NewStats (512,1),_cc .NewStats (512,1));};if _dca :=_ceec .setSymbolsArray ();
+_dca !=nil {return _dca ;};_ceec ._fagf .setParameters (_ceec ._ded ,_ceec .IsHuffmanEncoded ,true ,_fcae ,_ffaf ,_acdff ,1,_ceec ._acg +_ceec ._cec ,0,0,0,1,0,0,0,0,0,0,0,0,0,_ceec .SdrTemplate ,_ceec .SdrATX ,_ceec .SdrATY ,_ceec ._ecac ,_ceec ._gdfg );
+return _ceec .addSymbol (_ceec ._fagf );};func (_bdfc *Header )writeFlags (_fegbb _c .BinaryWriter )(_cdge error ){const _edfd ="\u0048\u0065\u0061\u0064\u0065\u0072\u002e\u0077\u0072\u0069\u0074\u0065F\u006c\u0061\u0067\u0073";_gdca :=byte (_bdfc .Type );
+if _cdge =_fegbb .WriteByte (_gdca );_cdge !=nil {return _dg .Wrap (_cdge ,_edfd ,"\u0077\u0072\u0069ti\u006e\u0067\u0020\u0073\u0065\u0067\u006d\u0065\u006et\u0020t\u0079p\u0065 \u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0066\u0061\u0069\u006c\u0065\u0064");
+};if !_bdfc .RetainFlag &&!_bdfc .PageAssociationFieldSize {return nil ;};if _cdge =_fegbb .SkipBits (-8);_cdge !=nil {return _dg .Wrap (_cdge ,_edfd ,"\u0073\u006bi\u0070\u0070\u0069\u006e\u0067\u0020\u0062\u0061\u0063\u006b\u0020\u0074\u0068\u0065\u0020\u0062\u0069\u0074\u0073\u0020\u0066\u0061il\u0065\u0064");
+};var _fbef int ;if _bdfc .RetainFlag {_fbef =1;};if _cdge =_fegbb .WriteBit (_fbef );_cdge !=nil {return _dg .Wrap (_cdge ,_edfd ,"\u0072\u0065\u0074\u0061in\u0020\u0072\u0065\u0074\u0061\u0069\u006e\u0020\u0066\u006c\u0061\u0067\u0073");};_fbef =0;if _bdfc .PageAssociationFieldSize {_fbef =1;
+};if _cdge =_fegbb .WriteBit (_fbef );_cdge !=nil {return _dg .Wrap (_cdge ,_edfd ,"p\u0061\u0067\u0065\u0020as\u0073o\u0063\u0069\u0061\u0074\u0069o\u006e\u0020\u0066\u006c\u0061\u0067");};_fegbb .FinishByte ();return nil ;};type GenericRegion struct{_faca *_c .Reader ;
+DataHeaderOffset int64 ;DataHeaderLength int64 ;DataOffset int64 ;DataLength int64 ;RegionSegment *RegionSegment ;UseExtTemplates bool ;IsTPGDon bool ;GBTemplate byte ;IsMMREncoded bool ;UseMMR bool ;GBAtX []int8 ;GBAtY []int8 ;GBAtOverride []bool ;_aeed bool ;
+Bitmap *_f .Bitmap ;_fba *_cc .Decoder ;_fgce *_cc .DecoderStats ;_gag *_ee .Decoder ;};func (_bgecc *TextRegion )readRegionFlags ()error {var (_gfabb int ;_dfbf uint64 ;_cebc error ;);_gfabb ,_cebc =_bgecc ._bgge .ReadBit ();if _cebc !=nil {return _cebc ;
+};_bgecc .SbrTemplate =int8 (_gfabb );_dfbf ,_cebc =_bgecc ._bgge .ReadBits (5);if _cebc !=nil {return _cebc ;};_bgecc .SbDsOffset =int8 (_dfbf );if _bgecc .SbDsOffset > 0x0f{_bgecc .SbDsOffset -=0x20;};_gfabb ,_cebc =_bgecc ._bgge .ReadBit ();if _cebc !=nil {return _cebc ;
+};_bgecc .DefaultPixel =int8 (_gfabb );_dfbf ,_cebc =_bgecc ._bgge .ReadBits (2);if _cebc !=nil {return _cebc ;};_bgecc .CombinationOperator =_f .CombinationOperator (int (_dfbf )&0x3);_gfabb ,_cebc =_bgecc ._bgge .ReadBit ();if _cebc !=nil {return _cebc ;
+};_bgecc .IsTransposed =int8 (_gfabb );_dfbf ,_cebc =_bgecc ._bgge .ReadBits (2);if _cebc !=nil {return _cebc ;};_bgecc .ReferenceCorner =int16 (_dfbf )&0x3;_dfbf ,_cebc =_bgecc ._bgge .ReadBits (2);if _cebc !=nil {return _cebc ;};_bgecc .LogSBStrips =int16 (_dfbf )&0x3;
+_bgecc .SbStrips =1<<uint (_bgecc .LogSBStrips );_gfabb ,_cebc =_bgecc ._bgge .ReadBit ();if _cebc !=nil {return _cebc ;};if _gfabb ==1{_bgecc .UseRefinement =true ;};_gfabb ,_cebc =_bgecc ._bgge .ReadBit ();if _cebc !=nil {return _cebc ;};if _gfabb ==1{_bgecc .IsHuffmanEncoded =true ;
+};return nil ;};func (_gbd *GenericRefinementRegion )GetRegionInfo ()*RegionSegment {return _gbd .RegionInfo };func (_dgd *HalftoneRegion )checkInput ()error {if _dgd .IsMMREncoded {if _dgd .HTemplate !=0{_age .Log .Debug ("\u0048\u0054\u0065\u006d\u0070l\u0061\u0074\u0065\u0020\u003d\u0020\u0025\u0064\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0030",_dgd .HTemplate );
+};if _dgd .HSkipEnabled {_age .Log .Debug ("\u0048\u0053\u006b\u0069\u0070\u0045\u006e\u0061\u0062\u006c\u0065\u0064\u0020\u0030\u0020\u0025\u0076\u0020(\u0073\u0068\u006f\u0075\u006c\u0064\u0020c\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0074\u0068\u0065\u0020v\u0061\u006c\u0075\u0065\u0020\u0066\u0061\u006c\u0073\u0065\u0029",_dgd .HSkipEnabled );
+};};return nil ;};func (_bab *HalftoneRegion )GetRegionBitmap ()(*_f .Bitmap ,error ){if _bab .HalftoneRegionBitmap !=nil {return _bab .HalftoneRegionBitmap ,nil ;};var _cag error ;_bab .HalftoneRegionBitmap =_f .New (int (_bab .RegionSegment .BitmapWidth ),int (_bab .RegionSegment .BitmapHeight ));
+if _bab .Patterns ==nil ||(_bab .Patterns !=nil &&len (_bab .Patterns )==0){_bab .Patterns ,_cag =_bab .GetPatterns ();if _cag !=nil {return nil ,_cag ;};};if _bab .HDefaultPixel ==1{_bab .HalftoneRegionBitmap .SetDefaultPixel ();};_fae :=_a .Ceil (_a .Log (float64 (len (_bab .Patterns )))/_a .Log (2));
+_fbge :=int (_fae );var _fdba [][]int ;_fdba ,_cag =_bab .grayScaleDecoding (_fbge );if _cag !=nil {return nil ,_cag ;};if _cag =_bab .renderPattern (_fdba );_cag !=nil {return nil ,_cag ;};return _bab .HalftoneRegionBitmap ,nil ;};func (_def *HalftoneRegion )shiftAndFill (_fdbcb int )int {_fdbcb >>=8;
+if _fdbcb < 0{_dga :=int (_a .Log (float64 (_deb (_fdbcb )))/_a .Log (2));_egda :=31-_dga ;for _caac :=1;_caac < _egda ;_caac ++{_fdbcb |=1<<uint (31-_caac );};};return _fdbcb ;};var _ _ece .BasicTabler =&TableSegment {};func (_begg Type )String ()string {switch _begg {case TSymbolDictionary :return "\u0053\u0079\u006d\u0062\u006f\u006c\u0020\u0044\u0069\u0063\u0074\u0069o\u006e\u0061\u0072\u0079";
+case TIntermediateTextRegion :return "\u0049n\u0074\u0065\u0072\u006d\u0065\u0064\u0069\u0061\u0074\u0065\u0020T\u0065\u0078\u0074\u0020\u0052\u0065\u0067\u0069\u006f\u006e";case TImmediateTextRegion :return "I\u006d\u006d\u0065\u0064ia\u0074e\u0020\u0054\u0065\u0078\u0074 \u0052\u0065\u0067\u0069\u006f\u006e";
+case TImmediateLosslessTextRegion :return "\u0049\u006d\u006d\u0065\u0064\u0069\u0061\u0074\u0065\u0020L\u006f\u0073\u0073\u006c\u0065\u0073\u0073 \u0054\u0065\u0078\u0074\u0020\u0052\u0065\u0067\u0069\u006f\u006e";case TPatternDictionary :return "\u0050a\u0074t\u0065\u0072\u006e\u0020\u0044i\u0063\u0074i\u006f\u006e\u0061\u0072\u0079";
+case TIntermediateHalftoneRegion :return "\u0049\u006e\u0074\u0065r\u006d\u0065\u0064\u0069\u0061\u0074\u0065\u0020\u0048\u0061l\u0066t\u006f\u006e\u0065\u0020\u0052\u0065\u0067i\u006f\u006e";case TImmediateHalftoneRegion :return "\u0049m\u006d\u0065\u0064\u0069a\u0074\u0065\u0020\u0048\u0061l\u0066t\u006fn\u0065\u0020\u0052\u0065\u0067\u0069\u006fn";
+case TImmediateLosslessHalftoneRegion :return "\u0049\u006d\u006ded\u0069\u0061\u0074\u0065\u0020\u004c\u006f\u0073\u0073l\u0065s\u0073 \u0048a\u006c\u0066\u0074\u006f\u006e\u0065\u0020\u0052\u0065\u0067\u0069\u006f\u006e";case TIntermediateGenericRegion :return "I\u006e\u0074\u0065\u0072\u006d\u0065d\u0069\u0061\u0074\u0065\u0020\u0047\u0065\u006e\u0065r\u0069\u0063\u0020R\u0065g\u0069\u006f\u006e";
+case TImmediateGenericRegion :return "\u0049m\u006d\u0065\u0064\u0069\u0061\u0074\u0065\u0020\u0047\u0065\u006ee\u0072\u0069\u0063\u0020\u0052\u0065\u0067\u0069\u006f\u006e";case TImmediateLosslessGenericRegion :return "\u0049\u006d\u006d\u0065\u0064\u0069a\u0074\u0065\u0020\u004c\u006f\u0073\u0073\u006c\u0065\u0073\u0073\u0020\u0047e\u006e\u0065\u0072\u0069\u0063\u0020\u0052e\u0067\u0069\u006f\u006e";
+case TIntermediateGenericRefinementRegion :return "\u0049\u006e\u0074\u0065\u0072\u006d\u0065\u0064\u0069\u0061\u0074\u0065\u0020\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0020\u0052\u0065\u0066i\u006e\u0065\u006d\u0065\u006et\u0020\u0052e\u0067\u0069\u006f\u006e";
+case TImmediateGenericRefinementRegion :return "I\u006d\u006d\u0065\u0064\u0069\u0061t\u0065\u0020\u0047\u0065\u006e\u0065r\u0069\u0063\u0020\u0052\u0065\u0066\u0069n\u0065\u006d\u0065\u006e\u0074\u0020\u0052\u0065\u0067\u0069o\u006e";case TImmediateLosslessGenericRefinementRegion :return "\u0049m\u006d\u0065d\u0069\u0061\u0074\u0065 \u004c\u006f\u0073s\u006c\u0065\u0073\u0073\u0020\u0047\u0065\u006e\u0065ri\u0063\u0020\u0052e\u0066\u0069n\u0065\u006d\u0065\u006e\u0074\u0020R\u0065\u0067i\u006f\u006e";
+case TPageInformation :return "\u0050\u0061g\u0065\u0020\u0049n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e";case TEndOfPage :return "E\u006e\u0064\u0020\u004f\u0066\u0020\u0050\u0061\u0067\u0065";case TEndOfStrip :return "\u0045\u006e\u0064 \u004f\u0066\u0020\u0053\u0074\u0072\u0069\u0070";
+case TEndOfFile :return "E\u006e\u0064\u0020\u004f\u0066\u0020\u0046\u0069\u006c\u0065";case TProfiles :return "\u0050\u0072\u006f\u0066\u0069\u006c\u0065\u0073";case TTables :return "\u0054\u0061\u0062\u006c\u0065\u0073";case TExtension :return "\u0045x\u0074\u0065\u006e\u0073\u0069\u006fn";
+case TBitmap :return "\u0042\u0069\u0074\u006d\u0061\u0070";};return "I\u006ev\u0061\u006c\u0069\u0064\u0020\u0053\u0065\u0067m\u0065\u006e\u0074\u0020Ki\u006e\u0064";};func (_afcce *SymbolDictionary )setRetainedCodingContexts (_efagc *SymbolDictionary ){_afcce ._ded =_efagc ._ded ;
+_afcce .IsHuffmanEncoded =_efagc .IsHuffmanEncoded ;_afcce .UseRefinementAggregation =_efagc .UseRefinementAggregation ;_afcce .SdTemplate =_efagc .SdTemplate ;_afcce .SdrTemplate =_efagc .SdrTemplate ;_afcce .SdATX =_efagc .SdATX ;_afcce .SdATY =_efagc .SdATY ;
+_afcce .SdrATX =_efagc .SdrATX ;_afcce .SdrATY =_efagc .SdrATY ;_afcce ._cfba =_efagc ._cfba ;};func (_dfcf *SymbolDictionary )getUserTable (_aggcd int )(_ece .Tabler ,error ){var _fgdg int ;for _ ,_dgb :=range _dfcf .Header .RTSegments {if _dgb .Type ==53{if _fgdg ==_aggcd {_gea ,_cbgc :=_dgb .GetSegmentData ();
+if _cbgc !=nil {return nil ,_cbgc ;};_dcfb :=_gea .(_ece .BasicTabler );return _ece .NewEncodedTable (_dcfb );};_fgdg ++;};};return nil ,nil ;};func (_dfad *GenericRegion )overrideAtTemplate3 (_cge ,_fbadd ,_dbff ,_gfdg ,_bec int )int {_cge &=0x3EF;if _dfad .GBAtY [0]==0&&_dfad .GBAtX [0]>=-int8 (_bec ){_cge |=(_gfdg >>uint (7-(int8 (_bec )+_dfad .GBAtX [0]))&0x1)<<4;
+}else {_cge |=int (_dfad .getPixel (_fbadd +int (_dfad .GBAtX [0]),_dbff +int (_dfad .GBAtY [0])))<<4;};return _cge ;};func (_ffge *PageInformationSegment )readCombinationOperatorOverrideAllowed ()error {_egee ,_gage :=_ffge ._eade .ReadBit ();if _gage !=nil {return _gage ;
+};if _egee ==1{_ffge ._cbfcb =true ;};return nil ;};func (_dbbf *PageInformationSegment )CombinationOperator ()_f .CombinationOperator {return _dbbf ._dafc };func (_bedac *PatternDictionary )setGbAtPixels (){if _bedac .HDTemplate ==0{_bedac .GBAtX =make ([]int8 ,4);
+_bedac .GBAtY =make ([]int8 ,4);_bedac .GBAtX [0]=-int8 (_bedac .HdpWidth );_bedac .GBAtY [0]=0;_bedac .GBAtX [1]=-3;_bedac .GBAtY [1]=-1;_bedac .GBAtX [2]=2;_bedac .GBAtY [2]=-2;_bedac .GBAtX [3]=-2;_bedac .GBAtY [3]=-2;}else {_bedac .GBAtX =[]int8 {-int8 (_bedac .HdpWidth )};
+_bedac .GBAtY =[]int8 {0};};};func (_cbeee *SymbolDictionary )decodeDifferenceWidth ()(int64 ,error ){if _cbeee .IsHuffmanEncoded {switch _cbeee .SdHuffDecodeWidthSelection {case 0:_efde ,_gadb :=_ece .GetStandardTable (2);if _gadb !=nil {return 0,_gadb ;
+};return _efde .Decode (_cbeee ._dabd );case 1:_cegada ,_dccd :=_ece .GetStandardTable (3);if _dccd !=nil {return 0,_dccd ;};return _cegada .Decode (_cbeee ._dabd );case 3:if _cbeee ._gagc ==nil {var _adeb int ;if _cbeee .SdHuffDecodeHeightSelection ==3{_adeb ++;
+};_dgc ,_ffef :=_cbeee .getUserTable (_adeb );if _ffef !=nil {return 0,_ffef ;};_cbeee ._gagc =_dgc ;};return _cbeee ._gagc .Decode (_cbeee ._dabd );};}else {_bgcb ,_abfg :=_cbeee ._ded .DecodeInt (_cbeee ._ggcfb );if _abfg !=nil {return 0,_abfg ;};return int64 (_bgcb ),nil ;
+};return 0,nil ;};func (_bgg *PageInformationSegment )parseHeader ()(_bdfe error ){_age .Log .Trace ("\u005b\u0050\u0061\u0067\u0065I\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0053\u0065\u0067m\u0065\u006e\u0074\u005d\u0020\u0050\u0061\u0072\u0073\u0069\u006e\u0067\u0048\u0065\u0061\u0064\u0065\u0072\u002e\u002e\u002e");
+defer func (){var _efdb ="[\u0050\u0061\u0067\u0065\u0049\u006e\u0066\u006f\u0072m\u0061\u0074\u0069\u006f\u006e\u0053\u0065gm\u0065\u006e\u0074\u005d \u0050\u0061\u0072\u0073\u0069\u006e\u0067\u0048\u0065ad\u0065\u0072 \u0046\u0069\u006e\u0069\u0073\u0068\u0065\u0064";
+if _bdfe !=nil {_efdb +="\u0020\u0077\u0069t\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u0020"+_bdfe .Error ();}else {_efdb +="\u0020\u0073\u0075\u0063\u0063\u0065\u0073\u0073\u0066\u0075\u006c\u006c\u0079";};_age .Log .Trace (_efdb );}();if _bdfe =_bgg .readWidthAndHeight ();
+_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readResolution ();_bdfe !=nil {return _bdfe ;};_ ,_bdfe =_bgg ._eade .ReadBit ();if _bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readCombinationOperatorOverrideAllowed ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readRequiresAuxiliaryBuffer ();
+_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readCombinationOperator ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readDefaultPixelValue ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readContainsRefinement ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readIsLossless ();
+_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readIsStriped ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .readMaxStripeSize ();_bdfe !=nil {return _bdfe ;};if _bdfe =_bgg .checkInput ();_bdfe !=nil {return _bdfe ;};_age .Log .Trace ("\u0025\u0073",_bgg );
+return nil ;};func (_eee *PageInformationSegment )Size ()int {return 19};func (_cdc *GenericRefinementRegion )decodeOptimized (_ffc ,_bgc ,_eeg ,_faf ,_bed ,_dcc ,_dbf int )error {var (_eb error ;_edf int ;_daa int ;);_eegf :=_ffc -int (_cdc .ReferenceDY );
+if _df :=int (-_cdc .ReferenceDX );_df > 0{_edf =_df ;};_dae :=_cdc .ReferenceBitmap .GetByteIndex (_edf ,_eegf );if _cdc .ReferenceDX > 0{_daa =int (_cdc .ReferenceDX );};_ace :=_cdc .RegionBitmap .GetByteIndex (_daa ,_ffc );switch _cdc .TemplateID {case 0:_eb =_cdc .decodeTemplate (_ffc ,_bgc ,_eeg ,_faf ,_bed ,_dcc ,_dbf ,_ace ,_eegf ,_dae ,_cdc ._dc );
+case 1:_eb =_cdc .decodeTemplate (_ffc ,_bgc ,_eeg ,_faf ,_bed ,_dcc ,_dbf ,_ace ,_eegf ,_dae ,_cdc ._af );};return _eb ;};type SegmentEncoder interface{Encode (_affg _c .BinaryWriter )(_gbbc int ,_egef error );};func (_edcb *TextRegion )encodeFlags (_bece _c .BinaryWriter )(_acee int ,_affbf error ){const _fecdb ="e\u006e\u0063\u006f\u0064\u0065\u0046\u006c\u0061\u0067\u0073";
+if _affbf =_bece .WriteBit (int (_edcb .SbrTemplate ));_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"s\u0062\u0072\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065");};if _ ,_affbf =_bece .WriteBits (uint64 (_edcb .SbDsOffset ),5);_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0073\u0062\u0044\u0073\u004f\u0066\u0066\u0073\u0065\u0074");
+};if _affbf =_bece .WriteBit (int (_edcb .DefaultPixel ));_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0044\u0065\u0066a\u0075\u006c\u0074\u0050\u0069\u0078\u0065\u006c");};if _ ,_affbf =_bece .WriteBits (uint64 (_edcb .CombinationOperator ),2);
+_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0043\u006f\u006d\u0062in\u0061\u0074\u0069\u006f\u006e\u004f\u0070\u0065\u0072\u0061\u0074\u006f\u0072");};if _affbf =_bece .WriteBit (int (_edcb .IsTransposed ));_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0069\u0073\u0020\u0074\u0072\u0061\u006e\u0073\u0070\u006f\u0073\u0065\u0064");
+};if _ ,_affbf =_bece .WriteBits (uint64 (_edcb .ReferenceCorner ),2);_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0072\u0065f\u0065\u0072\u0065n\u0063\u0065\u0020\u0063\u006f\u0072\u006e\u0065\u0072");};if _ ,_affbf =_bece .WriteBits (uint64 (_edcb .LogSBStrips ),2);
+_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"L\u006f\u0067\u0053\u0042\u0053\u0074\u0072\u0069\u0070\u0073");};var _eddad int ;if _edcb .UseRefinement {_eddad =1;};if _affbf =_bece .WriteBit (_eddad );_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"\u0075\u0073\u0065\u0020\u0072\u0065\u0066\u0069\u006ee\u006d\u0065\u006e\u0074");
+};_eddad =0;if _edcb .IsHuffmanEncoded {_eddad =1;};if _affbf =_bece .WriteBit (_eddad );_affbf !=nil {return _acee ,_dg .Wrap (_affbf ,_fecdb ,"u\u0073\u0065\u0020\u0068\u0075\u0066\u0066\u006d\u0061\u006e");};_acee =2;return _acee ,nil ;};func (_gcd *PageInformationSegment )readIsStriped ()error {_gbac ,_adbg :=_gcd ._eade .ReadBit ();
+if _adbg !=nil {return _adbg ;};if _gbac ==1{_gcd .IsStripe =true ;};return nil ;};func (_aggc *RegionSegment )parseHeader ()error {const _bbbfb ="p\u0061\u0072\u0073\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_age .Log .Trace ("\u005b\u0052\u0045\u0047I\u004f\u004e\u005d\u005b\u0050\u0041\u0052\u0053\u0045\u002dH\u0045A\u0044\u0045\u0052\u005d\u0020\u0042\u0065g\u0069\u006e");
+defer func (){_age .Log .Trace ("\u005b\u0052\u0045G\u0049\u004f\u004e\u005d[\u0050\u0041\u0052\u0053\u0045\u002d\u0048E\u0041\u0044\u0045\u0052\u005d\u0020\u0046\u0069\u006e\u0069\u0073\u0068\u0065\u0064");}();_fefd ,_bbfa :=_aggc ._fcaf .ReadBits (32);
+if _bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"\u0077\u0069\u0064t\u0068");};_aggc .BitmapWidth =uint32 (_fefd &_a .MaxUint32 );_fefd ,_bbfa =_aggc ._fcaf .ReadBits (32);if _bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"\u0068\u0065\u0069\u0067\u0068\u0074");
+};_aggc .BitmapHeight =uint32 (_fefd &_a .MaxUint32 );_fefd ,_bbfa =_aggc ._fcaf .ReadBits (32);if _bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"\u0078\u0020\u006c\u006f\u0063\u0061\u0074\u0069\u006f\u006e");};_aggc .XLocation =uint32 (_fefd &_a .MaxUint32 );
+_fefd ,_bbfa =_aggc ._fcaf .ReadBits (32);if _bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"\u0079\u0020\u006c\u006f\u0063\u0061\u0074\u0069\u006f\u006e");};_aggc .YLocation =uint32 (_fefd &_a .MaxUint32 );if _ ,_bbfa =_aggc ._fcaf .ReadBits (5);_bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"\u0064i\u0072\u0079\u0020\u0072\u0065\u0061d");
+};if _bbfa =_aggc .readCombinationOperator ();_bbfa !=nil {return _dg .Wrap (_bbfa ,_bbbfb ,"c\u006fm\u0062\u0069\u006e\u0061\u0074\u0069\u006f\u006e \u006f\u0070\u0065\u0072at\u006f\u0072");};return nil ;};func (_adbd *PageInformationSegment )readWidthAndHeight ()error {_fbd ,_bgccc :=_adbd ._eade .ReadBits (32);
+if _bgccc !=nil {return _bgccc ;};_adbd .PageBMWidth =int (_fbd &_a .MaxInt32 );_fbd ,_bgccc =_adbd ._eade .ReadBits (32);if _bgccc !=nil {return _bgccc ;};_adbd .PageBMHeight =int (_fbd &_a .MaxInt32 );return nil ;};func (_dfgg *PageInformationSegment )encodeFlags (_ccggg _c .BinaryWriter )(_adbb error ){const _egcd ="e\u006e\u0063\u006f\u0064\u0065\u0046\u006c\u0061\u0067\u0073";
+if _adbb =_ccggg .SkipBits (1);_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0072\u0065\u0073e\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074");};var _gdcb int ;if _dfgg .CombinationOperatorOverrideAllowed (){_gdcb =1;};if _adbb =_ccggg .WriteBit (_gdcb );
+_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0063\u006f\u006db\u0069\u006e\u0061\u0074i\u006f\u006e\u0020\u006f\u0070\u0065\u0072a\u0074\u006f\u0072\u0020\u006f\u0076\u0065\u0072\u0072\u0069\u0064\u0064\u0065\u006e");};_gdcb =0;if _dfgg ._bdag {_gdcb =1;
+};if _adbb =_ccggg .WriteBit (_gdcb );_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0061\u0075\u0078i\u006ci\u0061r\u0079\u0020\u0062\u0075\u0066\u0066\u0065r");};if _adbb =_ccggg .WriteBit ((int (_dfgg ._dafc )>>1)&0x01);
+_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0063\u006f\u006d\u0062\u0069\u006e\u0061\u0074\u0069\u006fn\u0020\u006f\u0070\u0065\u0072\u0061\u0074o\u0072\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0062\u0069\u0074");};if _adbb =_ccggg .WriteBit (int (_dfgg ._dafc )&0x01);
+_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0063\u006f\u006db\u0069\u006e\u0061\u0074i\u006f\u006e\u0020\u006f\u0070\u0065\u0072a\u0074\u006f\u0072\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0062\u0069\u0074");};_gdcb =int (_dfgg .DefaultPixelValue );
+if _adbb =_ccggg .WriteBit (_gdcb );_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0064e\u0066\u0061\u0075\u006c\u0074\u0020\u0070\u0061\u0067\u0065\u0020p\u0069\u0078\u0065\u006c\u0020\u0076\u0061\u006c\u0075\u0065");};_gdcb =0;if _dfgg ._fabe {_gdcb =1;
+};if _adbb =_ccggg .WriteBit (_gdcb );_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"\u0063\u006f\u006e\u0074ai\u006e\u0073\u0020\u0072\u0065\u0066\u0069\u006e\u0065\u006d\u0065\u006e\u0074");};_gdcb =0;if _dfgg .IsLossless {_gdcb =1;};if _adbb =_ccggg .WriteBit (_gdcb );
+_adbb !=nil {return _dg .Wrap (_adbb ,_egcd ,"p\u0061\u0067\u0065\u0020\u0069\u0073 \u0065\u0076\u0065\u006e\u0074\u0075\u0061\u006c\u006cy\u0020\u006c\u006fs\u0073l\u0065\u0073\u0073");};return nil ;};type RegionSegment struct{_fcaf *_c .Reader ;BitmapWidth uint32 ;
+BitmapHeight uint32 ;XLocation uint32 ;YLocation uint32 ;CombinaionOperator _f .CombinationOperator ;};func (_fdeb *GenericRegion )updateOverrideFlags ()error {const _bga ="\u0075\u0070\u0064\u0061te\u004f\u0076\u0065\u0072\u0072\u0069\u0064\u0065\u0046\u006c\u0061\u0067\u0073";
+if _fdeb .GBAtX ==nil ||_fdeb .GBAtY ==nil {return nil ;};if len (_fdeb .GBAtX )!=len (_fdeb .GBAtY ){return _dg .Errorf (_bga ,"i\u006eco\u0073i\u0073t\u0065\u006e\u0074\u0020\u0041T\u0020\u0070\u0069x\u0065\u006c\u002e\u0020\u0041m\u006f\u0075\u006et\u0020\u006f\u0066\u0020\u0027\u0078\u0027\u0020\u0070\u0069\u0078e\u006c\u0073\u003a %d\u002c\u0020\u0041\u006d\u006f\u0075n\u0074\u0020\u006f\u0066\u0020\u0027\u0079\u0027\u0020\u0070\u0069\u0078e\u006cs\u003a\u0020\u0025\u0064",len (_fdeb .GBAtX ),len (_fdeb .GBAtY ));
+};_fdeb .GBAtOverride =make ([]bool ,len (_fdeb .GBAtX ));switch _fdeb .GBTemplate {case 0:if !_fdeb .UseExtTemplates {if _fdeb .GBAtX [0]!=3||_fdeb .GBAtY [0]!=-1{_fdeb .setOverrideFlag (0);};if _fdeb .GBAtX [1]!=-3||_fdeb .GBAtY [1]!=-1{_fdeb .setOverrideFlag (1);
+};if _fdeb .GBAtX [2]!=2||_fdeb .GBAtY [2]!=-2{_fdeb .setOverrideFlag (2);};if _fdeb .GBAtX [3]!=-2||_fdeb .GBAtY [3]!=-2{_fdeb .setOverrideFlag (3);};}else {if _fdeb .GBAtX [0]!=-2||_fdeb .GBAtY [0]!=0{_fdeb .setOverrideFlag (0);};if _fdeb .GBAtX [1]!=0||_fdeb .GBAtY [1]!=-2{_fdeb .setOverrideFlag (1);
+};if _fdeb .GBAtX [2]!=-2||_fdeb .GBAtY [2]!=-1{_fdeb .setOverrideFlag (2);};if _fdeb .GBAtX [3]!=-1||_fdeb .GBAtY [3]!=-2{_fdeb .setOverrideFlag (3);};if _fdeb .GBAtX [4]!=1||_fdeb .GBAtY [4]!=-2{_fdeb .setOverrideFlag (4);};if _fdeb .GBAtX [5]!=2||_fdeb .GBAtY [5]!=-1{_fdeb .setOverrideFlag (5);
+};if _fdeb .GBAtX [6]!=-3||_fdeb .GBAtY [6]!=0{_fdeb .setOverrideFlag (6);};if _fdeb .GBAtX [7]!=-4||_fdeb .GBAtY [7]!=0{_fdeb .setOverrideFlag (7);};if _fdeb .GBAtX [8]!=2||_fdeb .GBAtY [8]!=-2{_fdeb .setOverrideFlag (8);};if _fdeb .GBAtX [9]!=3||_fdeb .GBAtY [9]!=-1{_fdeb .setOverrideFlag (9);
+};if _fdeb .GBAtX [10]!=-2||_fdeb .GBAtY [10]!=-2{_fdeb .setOverrideFlag (10);};if _fdeb .GBAtX [11]!=-3||_fdeb .GBAtY [11]!=-1{_fdeb .setOverrideFlag (11);};};case 1:if _fdeb .GBAtX [0]!=3||_fdeb .GBAtY [0]!=-1{_fdeb .setOverrideFlag (0);};case 2:if _fdeb .GBAtX [0]!=2||_fdeb .GBAtY [0]!=-1{_fdeb .setOverrideFlag (0);
+};case 3:if _fdeb .GBAtX [0]!=2||_fdeb .GBAtY [0]!=-1{_fdeb .setOverrideFlag (0);};};return nil ;};func (_ffbf *TextRegion )decodeDfs ()(int64 ,error ){if _ffbf .IsHuffmanEncoded {if _ffbf .SbHuffFS ==3{if _ffbf ._fdabc ==nil {var _dfcd error ;_ffbf ._fdabc ,_dfcd =_ffbf .getUserTable (0);
+if _dfcd !=nil {return 0,_dfcd ;};};return _ffbf ._fdabc .Decode (_ffbf ._bgge );};_bdbb ,_baedc :=_ece .GetStandardTable (6+int (_ffbf .SbHuffFS ));if _baedc !=nil {return 0,_baedc ;};return _bdbb .Decode (_ffbf ._bgge );};_daef ,_fccc :=_ffbf ._cefb .DecodeInt (_ffbf ._dfca );
+if _fccc !=nil {return 0,_fccc ;};return int64 (_daef ),nil ;};func (_dbba *Header )parse (_abb Documenter ,_ecdc *_c .Reader ,_fdbed int64 ,_ggbg OrganizationType )(_dgdd error ){const _bbfe ="\u0070\u0061\u0072s\u0065";_age .Log .Trace ("\u005b\u0053\u0045\u0047\u004d\u0045\u004e\u0054\u002d\u0048E\u0041\u0044\u0045\u0052\u005d\u005b\u0050A\u0052\u0053\u0045\u005d\u0020\u0042\u0065\u0067\u0069\u006e\u0073");
+defer func (){if _dgdd !=nil {_age .Log .Trace ("\u005b\u0053\u0045GM\u0045\u004e\u0054\u002d\u0048\u0045\u0041\u0044\u0045R\u005d[\u0050A\u0052S\u0045\u005d\u0020\u0046\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_dgdd );}else {_age .Log .Trace ("\u005b\u0053\u0045\u0047\u004d\u0045\u004e\u0054\u002d\u0048\u0045\u0041\u0044\u0045\u0052]\u005bP\u0041\u0052\u0053\u0045\u005d\u0020\u0046\u0069\u006e\u0069\u0073\u0068\u0065\u0064");
+};}();_ ,_dgdd =_ecdc .Seek (_fdbed ,_ed .SeekStart );if _dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"\u0073\u0065\u0065\u006b\u0020\u0073\u0074\u0061\u0072\u0074");};if _dgdd =_dbba .readSegmentNumber (_ecdc );_dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");
+};if _dgdd =_dbba .readHeaderFlags ();_dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");};var _bgaa uint64 ;_bgaa ,_dgdd =_dbba .readNumberOfReferredToSegments (_ecdc );if _dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");};_dbba .RTSNumbers ,_dgdd =_dbba .readReferredToSegmentNumbers (_ecdc ,int (_bgaa ));
+if _dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");};_dgdd =_dbba .readSegmentPageAssociation (_abb ,_ecdc ,_bgaa ,_dbba .RTSNumbers ...);if _dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");};if _dbba .Type !=TEndOfFile {if _dgdd =_dbba .readSegmentDataLength (_ecdc );
+_dgdd !=nil {return _dg .Wrap (_dgdd ,_bbfe ,"");};};_dbba .readDataStartOffset (_ecdc ,_ggbg );_dbba .readHeaderLength (_ecdc ,_fdbed );_age .Log .Trace ("\u0025\u0073",_dbba );return nil ;};func (_adeg *TableSegment )HtLow ()int32 {return _adeg ._gdb };
+var (_gfbe Segmenter ;_ddab =map[Type ]func ()Segmenter {TSymbolDictionary :func ()Segmenter {return &SymbolDictionary {}},TIntermediateTextRegion :func ()Segmenter {return &TextRegion {}},TImmediateTextRegion :func ()Segmenter {return &TextRegion {}},TImmediateLosslessTextRegion :func ()Segmenter {return &TextRegion {}},TPatternDictionary :func ()Segmenter {return &PatternDictionary {}},TIntermediateHalftoneRegion :func ()Segmenter {return &HalftoneRegion {}},TImmediateHalftoneRegion :func ()Segmenter {return &HalftoneRegion {}},TImmediateLosslessHalftoneRegion :func ()Segmenter {return &HalftoneRegion {}},TIntermediateGenericRegion :func ()Segmenter {return &GenericRegion {}},TImmediateGenericRegion :func ()Segmenter {return &GenericRegion {}},TImmediateLosslessGenericRegion :func ()Segmenter {return &GenericRegion {}},TIntermediateGenericRefinementRegion :func ()Segmenter {return &GenericRefinementRegion {}},TImmediateGenericRefinementRegion :func ()Segmenter {return &GenericRefinementRegion {}},TImmediateLosslessGenericRefinementRegion :func ()Segmenter {return &GenericRefinementRegion {}},TPageInformation :func ()Segmenter {return &PageInformationSegment {}},TEndOfPage :func ()Segmenter {return _gfbe },TEndOfStrip :func ()Segmenter {return &EndOfStripe {}},TEndOfFile :func ()Segmenter {return _gfbe },TProfiles :func ()Segmenter {return _gfbe },TTables :func ()Segmenter {return &TableSegment {}},TExtension :func ()Segmenter {return _gfbe },TBitmap :func ()Segmenter {return _gfbe }};
+);func (_dgec *TableSegment )StreamReader ()*_c .Reader {return _dgec ._adbf };func (_aefg *TextRegion )decodeRI ()(int64 ,error ){if !_aefg .UseRefinement {return 0,nil ;};if _aefg .IsHuffmanEncoded {_eded ,_fdce :=_aefg ._bgge .ReadBit ();return int64 (_eded ),_fdce ;
+};_afbe ,_ecdg :=_aefg ._cefb .DecodeInt (_aefg ._adbfe );return int64 (_afbe ),_ecdg ;};func (_bfge *GenericRegion )writeGBAtPixels (_gcbf _c .BinaryWriter )(_daead int ,_fbgf error ){const _bgcc ="\u0077r\u0069t\u0065\u0047\u0042\u0041\u0074\u0050\u0069\u0078\u0065\u006c\u0073";
+if _bfge .UseMMR {return 0,nil ;};_bfd :=1;if _bfge .GBTemplate ==0{_bfd =4;}else if _bfge .UseExtTemplates {_bfd =12;};if len (_bfge .GBAtX )!=_bfd {return 0,_dg .Errorf (_bgcc ,"\u0067\u0062\u0020\u0061\u0074\u0020\u0070\u0061\u0069\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020d\u006f\u0065\u0073\u006e\u0027\u0074\u0020m\u0061\u0074\u0063\u0068\u0020\u0074\u006f\u0020\u0047\u0042\u0041t\u0058\u0020\u0073\u006c\u0069\u0063\u0065\u0020\u006c\u0065\u006e");
+};if len (_bfge .GBAtY )!=_bfd {return 0,_dg .Errorf (_bgcc ,"\u0067\u0062\u0020\u0061\u0074\u0020\u0070\u0061\u0069\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020d\u006f\u0065\u0073\u006e\u0027\u0074\u0020m\u0061\u0074\u0063\u0068\u0020\u0074\u006f\u0020\u0047\u0042\u0041t\u0059\u0020\u0073\u006c\u0069\u0063\u0065\u0020\u006c\u0065\u006e");
+};for _bgbg :=0;_bgbg < _bfd ;_bgbg ++{if _fbgf =_gcbf .WriteByte (byte (_bfge .GBAtX [_bgbg ]));_fbgf !=nil {return _daead ,_dg .Wrap (_fbgf ,_bgcc ,"w\u0072\u0069\u0074\u0065\u0020\u0047\u0042\u0041\u0074\u0058");};_daead ++;if _fbgf =_gcbf .WriteByte (byte (_bfge .GBAtY [_bgbg ]));
+_fbgf !=nil {return _daead ,_dg .Wrap (_fbgf ,_bgcc ,"w\u0072\u0069\u0074\u0065\u0020\u0047\u0042\u0041\u0074\u0059");};_daead ++;};return _daead ,nil ;};func (_fdbg *GenericRegion )getPixel (_ebga ,_beddc int )int8 {if _ebga < 0||_ebga >=_fdbg .Bitmap .Width {return 0;
+};if _beddc < 0||_beddc >=_fdbg .Bitmap .Height {return 0;};if _fdbg .Bitmap .GetPixel (_ebga ,_beddc ){return 1;};return 0;};func (_fegf *Header )readSegmentDataLength (_gddb *_c .Reader )(_dbeaa error ){_fegf .SegmentDataLength ,_dbeaa =_gddb .ReadBits (32);
+if _dbeaa !=nil {return _dbeaa ;};_fegf .SegmentDataLength &=_a .MaxInt32 ;return nil ;};func (_acdf *GenericRefinementRegion )parseHeader ()(_gfe error ){_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u0020\u0070\u0061\u0072s\u0069\u006e\u0067\u0020\u0048e\u0061\u0064e\u0072\u002e\u002e\u002e");
+_aga :=_bd .Now ();defer func (){if _gfe ==nil {_age .Log .Trace ("\u005b\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052\u0045G\u0049\u004f\u004e\u005d\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020h\u0065\u0061\u0064\u0065\u0072\u0020\u0066\u0069\u006e\u0069\u0073\u0068id\u0020\u0069\u006e\u003a\u0020\u0025\u0064\u0020\u006e\u0073",_bd .Since (_aga ).Nanoseconds ());
+}else {_age .Log .Trace ("\u005b\u0047E\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0068\u0065\u0061\u0064\u0065\u0072\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0073",_gfe );
+};}();if _gfe =_acdf .RegionInfo .parseHeader ();_gfe !=nil {return _gfe ;};_ ,_gfe =_acdf ._bf .ReadBits (6);if _gfe !=nil {return _gfe ;};_acdf .IsTPGROn ,_gfe =_acdf ._bf .ReadBool ();if _gfe !=nil {return _gfe ;};var _egc int ;_egc ,_gfe =_acdf ._bf .ReadBit ();
+if _gfe !=nil {return _gfe ;};_acdf .TemplateID =int8 (_egc );switch _acdf .TemplateID {case 0:_acdf .Template =_acdf ._dc ;if _gfe =_acdf .readAtPixels ();_gfe !=nil {return _gfe ;};case 1:_acdf .Template =_acdf ._af ;};return nil ;};func (_gbga *TextRegion )InitEncode (globalSymbolsMap ,localSymbolsMap map[int ]int ,comps []int ,inLL *_f .Points ,symbols *_f .Bitmaps ,classIDs *_ag .IntSlice ,boxes *_f .Boxes ,width ,height ,symBits int ){_gbga .RegionInfo =&RegionSegment {BitmapWidth :uint32 (width ),BitmapHeight :uint32 (height )};
+_gbga ._eafd =globalSymbolsMap ;_gbga ._fgf =localSymbolsMap ;_gbga ._ebab =comps ;_gbga ._efcg =inLL ;_gbga ._afcg =symbols ;_gbga ._eebf =classIDs ;_gbga ._dddb =boxes ;_gbga ._abccf =symBits ;};func (_ecae *GenericRegion )decodeTemplate0b (_dagf ,_gdgba ,_aag int ,_cgcf ,_edb int )(_facb error ){const _agbb ="\u0064\u0065c\u006f\u0064\u0065T\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0030\u0062";
+var (_fdf ,_gdc int ;_fef ,_bdcf int ;_cbg byte ;_ffbb int ;);if _dagf >=1{_cbg ,_facb =_ecae .Bitmap .GetByte (_edb );if _facb !=nil {return _dg .Wrap (_facb ,_agbb ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00201");};_fef =int (_cbg );};if _dagf >=2{_cbg ,_facb =_ecae .Bitmap .GetByte (_edb -_ecae .Bitmap .RowStride );
+if _facb !=nil {return _dg .Wrap (_facb ,_agbb ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00202");};_bdcf =int (_cbg )<<6;};_fdf =(_fef &0xf0)|(_bdcf &0x3800);for _dab :=0;_dab < _aag ;_dab =_ffbb {var (_cgfa byte ;_fbad int ;);_ffbb =_dab +8;if _ede :=_gdgba -_dab ;
+_ede > 8{_fbad =8;}else {_fbad =_ede ;};if _dagf > 0{_fef <<=8;if _ffbb < _gdgba {_cbg ,_facb =_ecae .Bitmap .GetByte (_edb +1);if _facb !=nil {return _dg .Wrap (_facb ,_agbb ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0030");};_fef |=int (_cbg );};};
+if _dagf > 1{_bdcf <<=8;if _ffbb < _gdgba {_cbg ,_facb =_ecae .Bitmap .GetByte (_edb -_ecae .Bitmap .RowStride +1);if _facb !=nil {return _dg .Wrap (_facb ,_agbb ,"\u006c\u0069\u006e\u0065\u0020\u003e\u0020\u0031");};_bdcf |=int (_cbg )<<6;};};for _abcc :=0;
+_abcc < _fbad ;_abcc ++{_bdgd :=uint (7-_abcc );if _ecae ._aeed {_gdc =_ecae .overrideAtTemplate0b (_fdf ,_dab +_abcc ,_dagf ,int (_cgfa ),_abcc ,int (_bdgd ));_ecae ._fgce .SetIndex (int32 (_gdc ));}else {_ecae ._fgce .SetIndex (int32 (_fdf ));};var _cfdc int ;
+_cfdc ,_facb =_ecae ._fba .DecodeBit (_ecae ._fgce );if _facb !=nil {return _dg .Wrap (_facb ,_agbb ,"");};_cgfa |=byte (_cfdc <<_bdgd );_fdf =((_fdf &0x7bf7)<<1)|_cfdc |((_fef >>_bdgd )&0x10)|((_bdcf >>_bdgd )&0x800);};if _cee :=_ecae .Bitmap .SetByte (_cgcf ,_cgfa );
+_cee !=nil {return _dg .Wrap (_cee ,_agbb ,"");};_cgcf ++;_edb ++;};return nil ;};func (_caa *GenericRegion )GetRegionBitmap ()(_fda *_f .Bitmap ,_cdd error ){if _caa .Bitmap !=nil {return _caa .Bitmap ,nil ;};if _caa .IsMMREncoded {if _caa ._gag ==nil {_caa ._gag ,_cdd =_ee .New (_caa ._faca ,int (_caa .RegionSegment .BitmapWidth ),int (_caa .RegionSegment .BitmapHeight ),_caa .DataOffset ,_caa .DataLength );
+if _cdd !=nil {return nil ,_cdd ;};};_caa .Bitmap ,_cdd =_caa ._gag .UncompressMMR ();return _caa .Bitmap ,_cdd ;};if _cdd =_caa .updateOverrideFlags ();_cdd !=nil {return nil ,_cdd ;};var _fecd int ;if _caa ._fba ==nil {_caa ._fba ,_cdd =_cc .New (_caa ._faca );
+if _cdd !=nil {return nil ,_cdd ;};};if _caa ._fgce ==nil {_caa ._fgce =_cc .NewStats (65536,1);};_caa .Bitmap =_f .New (int (_caa .RegionSegment .BitmapWidth ),int (_caa .RegionSegment .BitmapHeight ));_adc :=int (uint32 (_caa .Bitmap .Width +7)&(^uint32 (7)));
+for _gafa :=0;_gafa < _caa .Bitmap .Height ;_gafa ++{if _caa .IsTPGDon {var _acde int ;_acde ,_cdd =_caa .decodeSLTP ();if _cdd !=nil {return nil ,_cdd ;};_fecd ^=_acde ;};if _fecd ==1{if _gafa > 0{if _cdd =_caa .copyLineAbove (_gafa );_cdd !=nil {return nil ,_cdd ;
+};};}else {if _cdd =_caa .decodeLine (_gafa ,_caa .Bitmap .Width ,_adc );_cdd !=nil {return nil ,_cdd ;};};};return _caa .Bitmap ,nil ;};func (_ggcfa *TextRegion )getSymbols ()error {if _ggcfa .Header .RTSegments !=nil {return _ggcfa .initSymbols ();};
+return nil ;};func (_dagaa *SymbolDictionary )setRefinementAtPixels ()error {if !_dagaa .UseRefinementAggregation ||_dagaa .SdrTemplate !=0{return nil ;};if _dbed :=_dagaa .readRefinementAtPixels (2);_dbed !=nil {return _dbed ;};return nil ;};func (_cdff *SymbolDictionary )setInSyms ()error {if _cdff .Header .RTSegments !=nil {return _cdff .retrieveImportSymbols ();
+};_cdff ._dfbg =make ([]*_f .Bitmap ,0);return nil ;};func (_abeb *TextRegion )encodeSymbols (_feed _c .BinaryWriter )(_ccgf int ,_baedg error ){const _fagdf ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";_aegd :=make ([]byte ,4);
+_b .BigEndian .PutUint32 (_aegd ,_abeb .NumberOfSymbols );if _ccgf ,_baedg =_feed .Write (_aegd );_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"\u004e\u0075\u006dbe\u0072\u004f\u0066\u0053\u0079\u006d\u0062\u006f\u006c\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0073");
+};_afccb ,_baedg :=_f .NewClassedPoints (_abeb ._efcg ,_abeb ._ebab );if _baedg !=nil {return 0,_dg .Wrap (_baedg ,_fagdf ,"");};var _cfcb ,_fcdf int ;_aegc :=_bdc .New ();_aegc .Init ();if _baedg =_aegc .EncodeInteger (_bdc .IADT ,0);_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"\u0069\u006e\u0069\u0074\u0069\u0061\u006c\u0020\u0044\u0054");
+};_dcaa ,_baedg :=_afccb .GroupByY ();if _baedg !=nil {return 0,_dg .Wrap (_baedg ,_fagdf ,"");};for _ ,_fcdag :=range _dcaa {_dacc :=int (_fcdag .YAtIndex (0));_cbae :=_dacc -_cfcb ;if _baedg =_aegc .EncodeInteger (_bdc .IADT ,_cbae );_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"");
+};var _abeeg int ;for _gdae ,_dggde :=range _fcdag .IntSlice {switch _gdae {case 0:_efda :=int (_fcdag .XAtIndex (_gdae ))-_fcdf ;if _baedg =_aegc .EncodeInteger (_bdc .IAFS ,_efda );_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"");};_fcdf +=_efda ;
+_abeeg =_fcdf ;default:_fdaga :=int (_fcdag .XAtIndex (_gdae ))-_abeeg ;if _baedg =_aegc .EncodeInteger (_bdc .IADS ,_fdaga );_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"");};_abeeg +=_fdaga ;};_gabee ,_ccfd :=_abeb ._eebf .Get (_dggde );if _ccfd !=nil {return _ccgf ,_dg .Wrap (_ccfd ,_fagdf ,"");
+};_aeeg ,_dgbd :=_abeb ._eafd [_gabee ];if !_dgbd {_aeeg ,_dgbd =_abeb ._fgf [_gabee ];if !_dgbd {return _ccgf ,_dg .Errorf (_fagdf ,"\u0053\u0079\u006d\u0062\u006f\u006c:\u0020\u0027\u0025d\u0027\u0020\u0069s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064 \u0069\u006e\u0020\u0067\u006cob\u0061\u006c\u0020\u0061\u006e\u0064\u0020\u006c\u006f\u0063\u0061\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020\u006d\u0061\u0070",_gabee );
+};};if _ccfd =_aegc .EncodeIAID (_abeb ._abccf ,_aeeg );_ccfd !=nil {return _ccgf ,_dg .Wrap (_ccfd ,_fagdf ,"");};};if _baedg =_aegc .EncodeOOB (_bdc .IADS );_baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"");};};_aegc .Final ();_bfa ,_baedg :=_aegc .WriteTo (_feed );
+if _baedg !=nil {return _ccgf ,_dg .Wrap (_baedg ,_fagdf ,"");};_ccgf +=int (_bfa );return _ccgf ,nil ;};func (_caef *TextRegion )GetRegionInfo ()*RegionSegment {return _caef .RegionInfo };type Segmenter interface{Init (_ceaa *Header ,_gabaf *_c .Reader )error ;
+};func (_bgd *GenericRefinementRegion )decodeTypicalPredictedLineTemplate1 (_dff ,_dce ,_ggg ,_ddb ,_ffb ,_feb ,_cef ,_ba ,_gba int )(_aed error ){var (_agg ,_ecf int ;_fgg ,_aeb int ;_bbb ,_ecg int ;_gdd byte ;);if _dff > 0{_gdd ,_aed =_bgd .RegionBitmap .GetByte (_cef -_ggg );
+if _aed !=nil {return _aed ;};_fgg =int (_gdd );};if _ba > 0&&_ba <=_bgd .ReferenceBitmap .Height {_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba -_ddb +_feb );if _aed !=nil {return _aed ;};_aeb =int (_gdd )<<2;};if _ba >=0&&_ba < _bgd .ReferenceBitmap .Height {_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba +_feb );
+if _aed !=nil {return _aed ;};_bbb =int (_gdd );};if _ba > -2&&_ba < _bgd .ReferenceBitmap .Height -1{_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba +_ddb +_feb );if _aed !=nil {return _aed ;};_ecg =int (_gdd );};_agg =((_fgg >>5)&0x6)|((_ecg >>2)&0x30)|(_bbb &0xc0)|(_aeb &0x200);
+_ecf =((_ecg >>2)&0x70)|(_bbb &0xc0)|(_aeb &0x700);var _de int ;for _fcd :=0;_fcd < _ffb ;_fcd =_de {var (_dbg int ;_acda int ;);_de =_fcd +8;if _dbg =_dce -_fcd ;_dbg > 8{_dbg =8;};_ddc :=_de < _dce ;_fed :=_de < _bgd .ReferenceBitmap .Width ;_cfg :=_feb +1;
+if _dff > 0{_gdd =0;if _ddc {_gdd ,_aed =_bgd .RegionBitmap .GetByte (_cef -_ggg +1);if _aed !=nil {return _aed ;};};_fgg =(_fgg <<8)|int (_gdd );};if _ba > 0&&_ba <=_bgd .ReferenceBitmap .Height {var _bda int ;if _fed {_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba -_ddb +_cfg );
+if _aed !=nil {return _aed ;};_bda =int (_gdd )<<2;};_aeb =(_aeb <<8)|_bda ;};if _ba >=0&&_ba < _bgd .ReferenceBitmap .Height {_gdd =0;if _fed {_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba +_cfg );if _aed !=nil {return _aed ;};};_bbb =(_bbb <<8)|int (_gdd );
+};if _ba > -2&&_ba < (_bgd .ReferenceBitmap .Height -1){_gdd =0;if _fed {_gdd ,_aed =_bgd .ReferenceBitmap .GetByte (_gba +_ddb +_cfg );if _aed !=nil {return _aed ;};};_ecg =(_ecg <<8)|int (_gdd );};for _ca :=0;_ca < _dbg ;_ca ++{var _bge int ;_gfg :=(_ecf >>4)&0x1ff;
+switch _gfg {case 0x1ff:_bge =1;case 0x00:_bge =0;default:_bgd ._cd .SetIndex (int32 (_agg ));_bge ,_aed =_bgd ._gaf .DecodeBit (_bgd ._cd );if _aed !=nil {return _aed ;};};_ccgb :=uint (7-_ca );_acda |=_bge <<_ccgb ;_agg =((_agg &0x0d6)<<1)|_bge |(_fgg >>_ccgb +5)&0x002|((_ecg >>_ccgb +2)&0x010)|((_bbb >>_ccgb )&0x040)|((_aeb >>_ccgb )&0x200);
+_ecf =((_ecf &0xdb)<<1)|((_ecg >>_ccgb +2)&0x010)|((_bbb >>_ccgb )&0x080)|((_aeb >>_ccgb )&0x400);};_aed =_bgd .RegionBitmap .SetByte (_cef ,byte (_acda ));if _aed !=nil {return _aed ;};_cef ++;_gba ++;};return nil ;};func (_dbca *SymbolDictionary )readRegionFlags ()error {var (_dadd uint64 ;
+_gdgde int ;);_ ,_efa :=_dbca ._dabd .ReadBits (3);if _efa !=nil {return _efa ;};_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};_dbca .SdrTemplate =int8 (_gdgde );_dadd ,_efa =_dbca ._dabd .ReadBits (2);if _efa !=nil {return _efa ;
+};_dbca .SdTemplate =int8 (_dadd &0xf);_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};if _gdgde ==1{_dbca ._eegc =true ;};_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};if _gdgde ==1{_dbca ._eaf =true ;};_gdgde ,_efa =_dbca ._dabd .ReadBit ();
+if _efa !=nil {return _efa ;};if _gdgde ==1{_dbca .SdHuffAggInstanceSelection =true ;};_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};_dbca .SdHuffBMSizeSelection =int8 (_gdgde );_dadd ,_efa =_dbca ._dabd .ReadBits (2);if _efa !=nil {return _efa ;
+};_dbca .SdHuffDecodeWidthSelection =int8 (_dadd &0xf);_dadd ,_efa =_dbca ._dabd .ReadBits (2);if _efa !=nil {return _efa ;};_dbca .SdHuffDecodeHeightSelection =int8 (_dadd &0xf);_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};if _gdgde ==1{_dbca .UseRefinementAggregation =true ;
+};_gdgde ,_efa =_dbca ._dabd .ReadBit ();if _efa !=nil {return _efa ;};if _gdgde ==1{_dbca .IsHuffmanEncoded =true ;};return nil ;};func (_ccee *TextRegion )readHuffmanFlags ()error {var (_gcac int ;_gbgd uint64 ;_gfce error ;);_ ,_gfce =_ccee ._bgge .ReadBit ();
+if _gfce !=nil {return _gfce ;};_gcac ,_gfce =_ccee ._bgge .ReadBit ();if _gfce !=nil {return _gfce ;};_ccee .SbHuffRSize =int8 (_gcac );_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;};_ccee .SbHuffRDY =int8 (_gbgd )&0xf;_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);
+if _gfce !=nil {return _gfce ;};_ccee .SbHuffRDX =int8 (_gbgd )&0xf;_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;};_ccee .SbHuffRDHeight =int8 (_gbgd )&0xf;_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;
+};_ccee .SbHuffRDWidth =int8 (_gbgd )&0xf;_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;};_ccee .SbHuffDT =int8 (_gbgd )&0xf;_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;};_ccee .SbHuffDS =int8 (_gbgd )&0xf;
+_gbgd ,_gfce =_ccee ._bgge .ReadBits (2);if _gfce !=nil {return _gfce ;};_ccee .SbHuffFS =int8 (_gbgd )&0xf;return nil ;};func (_ebfbb *TextRegion )readAmountOfSymbolInstances ()error {_aafd ,_aade :=_ebfbb ._bgge .ReadBits (32);if _aade !=nil {return _aade ;
+};_ebfbb .NumberOfSymbolInstances =uint32 (_aafd &_a .MaxUint32 );_gdcd :=_ebfbb .RegionInfo .BitmapWidth *_ebfbb .RegionInfo .BitmapHeight ;if _gdcd < _ebfbb .NumberOfSymbolInstances {_age .Log .Debug ("\u004c\u0069\u006d\u0069t\u0069\u006e\u0067\u0020t\u0068\u0065\u0020n\u0075\u006d\u0062\u0065\u0072\u0020o\u0066\u0020d\u0065\u0063\u006f\u0064e\u0064\u0020\u0073\u0079m\u0062\u006f\u006c\u0020\u0069n\u0073\u0074\u0061\u006e\u0063\u0065\u0073 \u0074\u006f\u0020\u006f\u006ee\u0020\u0070\u0065\u0072\u0020\u0070\u0069\u0078\u0065l\u0020\u0028\u0020\u0025\u0064\u0020\u0069\u006e\u0073\u0074\u0065\u0061\u0064\u0020\u006f\u0066\u0020\u0025\u0064\u0029",_gdcd ,_ebfbb .NumberOfSymbolInstances );
+_ebfbb .NumberOfSymbolInstances =_gdcd ;};return nil ;};func (_cabc *SymbolDictionary )decodeHeightClassCollectiveBitmap (_gcff int64 ,_baccb ,_febc uint32 )(*_f .Bitmap ,error ){if _gcff ==0{_fgee :=_f .New (int (_febc ),int (_baccb ));var (_dgaa byte ;
+_cgb error ;);for _ecbb :=0;_ecbb < len (_fgee .Data );_ecbb ++{_dgaa ,_cgb =_cabc ._dabd .ReadByte ();if _cgb !=nil {return nil ,_cgb ;};if _cgb =_fgee .SetByte (_ecbb ,_dgaa );_cgb !=nil {return nil ,_cgb ;};};return _fgee ,nil ;};if _cabc ._cddgf ==nil {_cabc ._cddgf =NewGenericRegion (_cabc ._dabd );
+};_cabc ._cddgf .setParameters (true ,_cabc ._dabd .AbsolutePosition (),_gcff ,_baccb ,_febc );_abab ,_cagb :=_cabc ._cddgf .GetRegionBitmap ();if _cagb !=nil {return nil ,_cagb ;};return _abab ,nil ;};func (_afcd *GenericRegion )readGBAtPixels (_aedg int )error {const _gedg ="\u0072\u0065\u0061\u0064\u0047\u0042\u0041\u0074\u0050i\u0078\u0065\u006c\u0073";
+_afcd .GBAtX =make ([]int8 ,_aedg );_afcd .GBAtY =make ([]int8 ,_aedg );for _ccbf :=0;_ccbf < _aedg ;_ccbf ++{_aggd ,_efd :=_afcd ._faca .ReadByte ();if _efd !=nil {return _dg .Wrapf (_efd ,_gedg ,"\u0058\u0020\u0061t\u0020\u0069\u003a\u0020\u0027\u0025\u0064\u0027",_ccbf );
+};_afcd .GBAtX [_ccbf ]=int8 (_aggd );_aggd ,_efd =_afcd ._faca .ReadByte ();if _efd !=nil {return _dg .Wrapf (_efd ,_gedg ,"\u0059\u0020\u0061t\u0020\u0069\u003a\u0020\u0027\u0025\u0064\u0027",_ccbf );};_afcd .GBAtY [_ccbf ]=int8 (_aggd );};return nil ;
+};func (_gfcc *Header )referenceSize ()uint {switch {case _gfcc .SegmentNumber <=255:return 1;case _gfcc .SegmentNumber <=65535:return 2;default:return 4;};};func (_eff *GenericRegion )decodeTemplate3 (_bgde ,_eeab ,_dbaa int ,_dea ,_dcd int )(_gggg error ){const _fdab ="\u0064e\u0063o\u0064\u0065\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0033";
+var (_cbfg ,_dfgd int ;_ffbg int ;_dgfg byte ;_gbadb ,_gef int ;);if _bgde >=1{_dgfg ,_gggg =_eff .Bitmap .GetByte (_dcd );if _gggg !=nil {return _dg .Wrap (_gggg ,_fdab ,"\u006ci\u006e\u0065\u0020\u003e\u003d\u00201");};_ffbg =int (_dgfg );};_cbfg =(_ffbg >>1)&0x70;
+for _baf :=0;_baf < _dbaa ;_baf =_gbadb {var (_ceacd byte ;_fdbc int ;);_gbadb =_baf +8;if _afbc :=_eeab -_baf ;_afbc > 8{_fdbc =8;}else {_fdbc =_afbc ;};if _bgde >=1{_ffbg <<=8;if _gbadb < _eeab {_dgfg ,_gggg =_eff .Bitmap .GetByte (_dcd +1);if _gggg !=nil {return _dg .Wrap (_gggg ,_fdab ,"\u0069\u006e\u006e\u0065\u0072\u0020\u002d\u0020\u006c\u0069\u006e\u0065 \u003e\u003d\u0020\u0031");
+};_ffbg |=int (_dgfg );};};for _gede :=0;_gede < _fdbc ;_gede ++{if _eff ._aeed {_dfgd =_eff .overrideAtTemplate3 (_cbfg ,_baf +_gede ,_bgde ,int (_ceacd ),_gede );_eff ._fgce .SetIndex (int32 (_dfgd ));}else {_eff ._fgce .SetIndex (int32 (_cbfg ));};_gef ,_gggg =_eff ._fba .DecodeBit (_eff ._fgce );
+if _gggg !=nil {return _dg .Wrap (_gggg ,_fdab ,"");};_ceacd |=byte (_gef )<<byte (7-_gede );_cbfg =((_cbfg &0x1f7)<<1)|_gef |((_ffbg >>uint (8-_gede ))&0x010);};if _fffd :=_eff .Bitmap .SetByte (_dea ,_ceacd );_fffd !=nil {return _dg .Wrap (_fffd ,_fdab ,"");
+};_dea ++;_dcd ++;};return nil ;};func (_ffbc *PatternDictionary )GetDictionary ()([]*_f .Bitmap ,error ){if _ffbc .Patterns !=nil {return _ffbc .Patterns ,nil ;};if !_ffbc .IsMMREncoded {_ffbc .setGbAtPixels ();};_agad :=NewGenericRegion (_ffbc ._ebcg );
+_agad .setParametersMMR (_ffbc .IsMMREncoded ,_ffbc .DataOffset ,_ffbc .DataLength ,uint32 (_ffbc .HdpHeight ),(_ffbc .GrayMax +1)*uint32 (_ffbc .HdpWidth ),_ffbc .HDTemplate ,false ,false ,_ffbc .GBAtX ,_ffbc .GBAtY );_efdg ,_acb :=_agad .GetRegionBitmap ();
+if _acb !=nil {return nil ,_acb ;};if _acb =_ffbc .extractPatterns (_efdg );_acb !=nil {return nil ,_acb ;};return _ffbc .Patterns ,nil ;};func (_cf *EndOfStripe )LineNumber ()int {return _cf ._cce };func NewRegionSegment (r *_c .Reader )*RegionSegment {return &RegionSegment {_fcaf :r }};
+type EndOfStripe struct{_ff *_c .Reader ;_cce int ;};type PageInformationSegment struct{_eade *_c .Reader ;PageBMHeight int ;PageBMWidth int ;ResolutionX int ;ResolutionY int ;_cbfcb bool ;_dafc _f .CombinationOperator ;_bdag bool ;DefaultPixelValue uint8 ;
+_fabe bool ;IsLossless bool ;IsStripe bool ;MaxStripeSize uint16 ;};func (_fgec *TextRegion )decodeIds ()(int64 ,error ){const _dbfdf ="\u0064e\u0063\u006f\u0064\u0065\u0049\u0064s";if _fgec .IsHuffmanEncoded {if _fgec .SbHuffDS ==3{if _fgec ._cbge ==nil {_cbgf :=0;
+if _fgec .SbHuffFS ==3{_cbgf ++;};var _abbd error ;_fgec ._cbge ,_abbd =_fgec .getUserTable (_cbgf );if _abbd !=nil {return 0,_dg .Wrap (_abbd ,_dbfdf ,"");};};return _fgec ._cbge .Decode (_fgec ._bgge );};_ddedd ,_ffgae :=_ece .GetStandardTable (8+int (_fgec .SbHuffDS ));
+if _ffgae !=nil {return 0,_dg .Wrap (_ffgae ,_dbfdf ,"");};return _ddedd .Decode (_fgec ._bgge );};_cggd ,_fgfa :=_fgec ._cefb .DecodeInt (_fgec ._cgbe );if _fgfa !=nil {return 0,_dg .Wrap (_fgfa ,_dbfdf ,"\u0063\u0078\u0049\u0041\u0044\u0053");};return int64 (_cggd ),nil ;
+};func (_fdbad *Header )readSegmentPageAssociation (_dec Documenter ,_edbg *_c .Reader ,_fbae uint64 ,_ada ...int )(_efe error ){const _bdad ="\u0072\u0065\u0061\u0064\u0053\u0065\u0067\u006d\u0065\u006e\u0074P\u0061\u0067\u0065\u0041\u0073\u0073\u006f\u0063\u0069\u0061t\u0069\u006f\u006e";
+if !_fdbad .PageAssociationFieldSize {_dacd ,_afbcd :=_edbg .ReadBits (8);if _afbcd !=nil {return _dg .Wrap (_afbcd ,_bdad ,"\u0073\u0068\u006fr\u0074\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};_fdbad .PageAssociation =int (_dacd &0xFF);}else {_ddee ,_gefg :=_edbg .ReadBits (32);
+if _gefg !=nil {return _dg .Wrap (_gefg ,_bdad ,"l\u006f\u006e\u0067\u0020\u0066\u006f\u0072\u006d\u0061\u0074");};_fdbad .PageAssociation =int (_ddee &_a .MaxInt32 );};if _fbae ==0{return nil ;};if _fdbad .PageAssociation !=0{_dafg ,_ead :=_dec .GetPage (_fdbad .PageAssociation );
+if _ead !=nil {return _dg .Wrap (_ead ,_bdad ,"\u0061s\u0073\u006f\u0063\u0069a\u0074\u0065\u0064\u0020\u0070a\u0067e\u0020n\u006f\u0074\u0020\u0066\u006f\u0075\u006ed");};var _cbfc int ;for _cff :=uint64 (0);_cff < _fbae ;_cff ++{_cbfc =_ada [_cff ];_fdbad .RTSegments [_cff ],_ead =_dafg .GetSegment (_cbfc );
+if _ead !=nil {var _fbgee error ;_fdbad .RTSegments [_cff ],_fbgee =_dec .GetGlobalSegment (_cbfc );if _fbgee !=nil {return _dg .Wrapf (_ead ,_bdad ,"\u0072\u0065\u0066\u0065\u0072\u0065n\u0063\u0065\u0020s\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064\u0020\u0061\u0074\u0020pa\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0072\u0020\u0069\u006e\u0020\u0067\u006c\u006f\u0062\u0061\u006c\u0073",_fdbad .PageAssociation );
+};};};return nil ;};for _daeag :=uint64 (0);_daeag < _fbae ;_daeag ++{_fdbad .RTSegments [_daeag ],_efe =_dec .GetGlobalSegment (_ada [_daeag ]);if _efe !=nil {return _dg .Wrapf (_efe ,_bdad ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u003a\u0020\u0027\u0025d\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_ada [_daeag ]);
+};};return nil ;};func (_bc *GenericRefinementRegion )decodeTypicalPredictedLine (_gbg ,_dbe ,_gc ,_cdcb ,_fec ,_fd int )error {_cb :=_gbg -int (_bc .ReferenceDY );_ggc :=_bc .ReferenceBitmap .GetByteIndex (0,_cb );_ceg :=_bc .RegionBitmap .GetByteIndex (0,_gbg );
+var _adf error ;switch _bc .TemplateID {case 0:_adf =_bc .decodeTypicalPredictedLineTemplate0 (_gbg ,_dbe ,_gc ,_cdcb ,_fec ,_fd ,_ceg ,_cb ,_ggc );case 1:_adf =_bc .decodeTypicalPredictedLineTemplate1 (_gbg ,_dbe ,_gc ,_cdcb ,_fec ,_fd ,_ceg ,_cb ,_ggc );
+};return _adf ;};func (_eedf *TextRegion )decodeSymbolInstances ()error {_fcba ,_gece :=_eedf .decodeStripT ();if _gece !=nil {return _gece ;};var (_cgbc int64 ;_cacae uint32 ;);for _cacae < _eedf .NumberOfSymbolInstances {_cgfc ,_babb :=_eedf .decodeDT ();
+if _babb !=nil {return _babb ;};_fcba +=_cgfc ;var _ggdca int64 ;_ebfd :=true ;_eedf ._defb =0;for {if _ebfd {_ggdca ,_babb =_eedf .decodeDfs ();if _babb !=nil {return _babb ;};_cgbc +=_ggdca ;_eedf ._defb =_cgbc ;_ebfd =false ;}else {_fbf ,_fegd :=_eedf .decodeIds ();
+if _ec .Is (_fegd ,_d .ErrOOB ){break ;};if _fegd !=nil {return _fegd ;};if _cacae >=_eedf .NumberOfSymbolInstances {break ;};_eedf ._defb +=_fbf +int64 (_eedf .SbDsOffset );};_cecg ,_cdeac :=_eedf .decodeCurrentT ();if _cdeac !=nil {return _cdeac ;};_befg :=_fcba +_cecg ;
+_cdbdc ,_cdeac :=_eedf .decodeID ();if _cdeac !=nil {return _cdeac ;};_eag ,_cdeac :=_eedf .decodeRI ();if _cdeac !=nil {return _cdeac ;};_gddg ,_cdeac :=_eedf .decodeIb (_eag ,_cdbdc );if _cdeac !=nil {return _cdeac ;};if _cdeac =_eedf .blit (_gddg ,_befg );
+_cdeac !=nil {return _cdeac ;};_cacae ++;};};return nil ;};func (_acea *SymbolDictionary )huffDecodeRefAggNInst ()(int64 ,error ){if !_acea .SdHuffAggInstanceSelection {_deaa ,_feba :=_ece .GetStandardTable (1);if _feba !=nil {return 0,_feba ;};return _deaa .Decode (_acea ._dabd );
+};if _acea ._afec ==nil {var (_fegbbd int ;_bbdb error ;);if _acea .SdHuffDecodeHeightSelection ==3{_fegbbd ++;};if _acea .SdHuffDecodeWidthSelection ==3{_fegbbd ++;};if _acea .SdHuffBMSizeSelection ==3{_fegbbd ++;};_acea ._afec ,_bbdb =_acea .getUserTable (_fegbbd );
+if _bbdb !=nil {return 0,_bbdb ;};};return _acea ._afec .Decode (_acea ._dabd );};func (_gbbd *PatternDictionary )checkInput ()error {if _gbbd .HdpHeight < 1||_gbbd .HdpWidth < 1{return _ec .New ("in\u0076\u0061l\u0069\u0064\u0020\u0048\u0065\u0061\u0064\u0065\u0072 \u0056\u0061\u006c\u0075\u0065\u003a\u0020\u0057\u0069\u0064\u0074\u0068\u002f\u0048\u0065\u0069\u0067\u0068\u0074\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020g\u0072e\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061n\u0020z\u0065\u0072o");
+};if _gbbd .IsMMREncoded {if _gbbd .HDTemplate !=0{_age .Log .Debug ("\u0076\u0061\u0072\u0069\u0061\u0062\u006c\u0065\u0020\u0048\u0044\u0054\u0065\u006d\u0070\u006c\u0061\u0074e\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u006e\u006f\u0074\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e \u0074\u0068\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0030");
+};};return nil ;};func (_fcag *TextRegion )initSymbols ()error {const _badaf ="i\u006e\u0069\u0074\u0053\u0079\u006d\u0062\u006f\u006c\u0073";for _ ,_dadeb :=range _fcag .Header .RTSegments {if _dadeb ==nil {return _dg .Error (_badaf ,"\u006e\u0069\u006c\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020pr\u006f\u0076\u0069\u0064\u0065\u0064 \u0066\u006f\u0072\u0020\u0074\u0068\u0065\u0020\u0074\u0065\u0078\u0074\u0020\u0072\u0065g\u0069\u006f\u006e\u0020\u0053\u0079\u006d\u0062o\u006c\u0073");
+};if _dadeb .Type ==0{_ffcdf ,_ecab :=_dadeb .GetSegmentData ();if _ecab !=nil {return _dg .Wrap (_ecab ,_badaf ,"");};_gcgg ,_bdgc :=_ffcdf .(*SymbolDictionary );if !_bdgc {return _dg .Error (_badaf ,"\u0072e\u0066\u0065r\u0072\u0065\u0064 \u0054\u006f\u0020\u0053\u0065\u0067\u006de\u006e\u0074\u0020\u0069\u0073\u0020n\u006f\u0074\u0020\u0061\u0020\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079");
+};_gcgg ._fbac =_fcag ._eadb ;_dcbf ,_ecab :=_gcgg .GetDictionary ();if _ecab !=nil {return _dg .Wrap (_ecab ,_badaf ,"");};_fcag .Symbols =append (_fcag .Symbols ,_dcbf ...);};};_fcag .NumberOfSymbols =uint32 (len (_fcag .Symbols ));return nil ;};type OrganizationType uint8 ;
+func (_aef *HalftoneRegion )GetRegionInfo ()*RegionSegment {return _aef .RegionSegment };func (_aagc *TextRegion )decodeRdx ()(int64 ,error ){const _bgefg ="\u0064e\u0063\u006f\u0064\u0065\u0052\u0064x";if _aagc .IsHuffmanEncoded {if _aagc .SbHuffRDX ==3{if _aagc ._acgf ==nil {var (_fdbeb int ;
+_agcf error ;);if _aagc .SbHuffFS ==3{_fdbeb ++;};if _aagc .SbHuffDS ==3{_fdbeb ++;};if _aagc .SbHuffDT ==3{_fdbeb ++;};if _aagc .SbHuffRDWidth ==3{_fdbeb ++;};if _aagc .SbHuffRDHeight ==3{_fdbeb ++;};_aagc ._acgf ,_agcf =_aagc .getUserTable (_fdbeb );
+if _agcf !=nil {return 0,_dg .Wrap (_agcf ,_bgefg ,"");};};return _aagc ._acgf .Decode (_aagc ._bgge );};_cadg ,_daad :=_ece .GetStandardTable (14+int (_aagc .SbHuffRDX ));if _daad !=nil {return 0,_dg .Wrap (_daad ,_bgefg ,"");};return _cadg .Decode (_aagc ._bgge );
+};_bdda ,_fega :=_aagc ._cefb .DecodeInt (_aagc ._aaba );if _fega !=nil {return 0,_dg .Wrap (_fega ,_bgefg ,"");};return int64 (_bdda ),nil ;};type TableSegment struct{_adbf *_c .Reader ;_egcdd int32 ;_beea int32 ;_baed int32 ;_gdb int32 ;_ggdc int32 ;
+};func (_fccd *PatternDictionary )readGrayMax ()error {_adcce ,_gbbg :=_fccd ._ebcg .ReadBits (32);if _gbbg !=nil {return _gbbg ;};_fccd .GrayMax =uint32 (_adcce &_a .MaxUint32 );return nil ;};func (_dcad *TableSegment )Init (h *Header ,r *_c .Reader )error {_dcad ._adbf =r ;
+return _dcad .parseHeader ();};func (_dcbg *SymbolDictionary )readRefinementAtPixels (_faeg int )error {_dcbg .SdrATX =make ([]int8 ,_faeg );_dcbg .SdrATY =make ([]int8 ,_faeg );var (_agde byte ;_fada error ;);for _eegfac :=0;_eegfac < _faeg ;_eegfac ++{_agde ,_fada =_dcbg ._dabd .ReadByte ();
+if _fada !=nil {return _fada ;};_dcbg .SdrATX [_eegfac ]=int8 (_agde );_agde ,_fada =_dcbg ._dabd .ReadByte ();if _fada !=nil {return _fada ;};_dcbg .SdrATY [_eegfac ]=int8 (_agde );};return nil ;};type Header struct{SegmentNumber uint32 ;Type Type ;RetainFlag bool ;
+PageAssociation int ;PageAssociationFieldSize bool ;RTSegments []*Header ;HeaderLength int64 ;SegmentDataLength uint64 ;SegmentDataStartOffset uint64 ;Reader *_c .Reader ;SegmentData Segmenter ;RTSNumbers []int ;RetainBits []uint8 ;};func (_ggee *PageInformationSegment )readIsLossless ()error {_cceg ,_dcba :=_ggee ._eade .ReadBit ();
+if _dcba !=nil {return _dcba ;};if _cceg ==1{_ggee .IsLossless =true ;};return nil ;};func (_eea *GenericRefinementRegion )GetRegionBitmap ()(*_f .Bitmap ,error ){var _fg error ;_age .Log .Trace ("\u005b\u0047E\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u0020\u0047\u0065\u0074\u0052\u0065\u0067\u0069\u006f\u006e\u0042\u0069\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e");
+defer func (){if _fg !=nil {_age .Log .Trace ("[\u0047\u0045\u004e\u0045\u0052\u0049\u0043\u002d\u0052E\u0046\u002d\u0052\u0045\u0047\u0049\u004fN]\u0020\u0047\u0065\u0074R\u0065\u0067\u0069\u006f\u006e\u0042\u0069\u0074\u006dap\u0020\u0066a\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_fg );
+}else {_age .Log .Trace ("\u005b\u0047E\u004e\u0045\u0052\u0049\u0043\u002d\u0052\u0045\u0046\u002d\u0052\u0045\u0047\u0049\u004f\u004e\u005d\u0020\u0047\u0065\u0074\u0052\u0065\u0067\u0069\u006f\u006e\u0042\u0069\u0074\u006d\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064\u002e");
+};}();if _eea .RegionBitmap !=nil {return _eea .RegionBitmap ,nil ;};_fa :=0;if _eea .ReferenceBitmap ==nil {_eea .ReferenceBitmap ,_fg =_eea .getGrReference ();if _fg !=nil {return nil ,_fg ;};};if _eea ._gaf ==nil {_eea ._gaf ,_fg =_cc .New (_eea ._bf );
+if _fg !=nil {return nil ,_fg ;};};if _eea ._cd ==nil {_eea ._cd =_cc .NewStats (8192,1);};_eea .RegionBitmap =_f .New (int (_eea .RegionInfo .BitmapWidth ),int (_eea .RegionInfo .BitmapHeight ));if _eea .TemplateID ==0{if _fg =_eea .updateOverride ();
+_fg !=nil {return nil ,_fg ;};};_da :=(_eea .RegionBitmap .Width +7)&-8;var _fe int ;if _eea .IsTPGROn {_fe =int (-_eea .ReferenceDY )*_eea .ReferenceBitmap .RowStride ;};_bg :=_fe +1;for _bb :=0;_bb < _eea .RegionBitmap .Height ;_bb ++{if _eea .IsTPGROn {_bdce ,_ac :=_eea .decodeSLTP ();
+if _ac !=nil {return nil ,_ac ;};_fa ^=_bdce ;};if _fa ==0{_fg =_eea .decodeOptimized (_bb ,_eea .RegionBitmap .Width ,_eea .RegionBitmap .RowStride ,_eea .ReferenceBitmap .RowStride ,_da ,_fe ,_bg );if _fg !=nil {return nil ,_fg ;};}else {_fg =_eea .decodeTypicalPredictedLine (_bb ,_eea .RegionBitmap .Width ,_eea .RegionBitmap .RowStride ,_eea .ReferenceBitmap .RowStride ,_da ,_fe );
+if _fg !=nil {return nil ,_fg ;};};};return _eea .RegionBitmap ,nil ;};func (_cgae *Header )GetSegmentData ()(Segmenter ,error ){var _cgg Segmenter ;if _cgae .SegmentData !=nil {_cgg =_cgae .SegmentData ;};if _cgg ==nil {_cae ,_ccfg :=_ddab [_cgae .Type ];
+if !_ccfg {return nil ,_gb .Errorf ("\u0074\u0079\u0070\u0065\u003a\u0020\u0025\u0073\u002f\u0020\u0025\u0064\u0020\u0063\u0072e\u0061t\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u002e\u0020",_cgae .Type ,_cgae .Type );};_cgg =_cae ();
+_age .Log .Trace ("\u005b\u0053E\u0047\u004d\u0045\u004e\u0054-\u0048\u0045\u0041\u0044\u0045R\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u0044\u0061\u0074\u0061\u0020\u0061\u0074\u0020\u004f\u0066\u0066\u0073\u0065\u0074\u003a\u0020\u0025\u0030\u0034\u0058",_cgae .SegmentNumber ,_cgae .SegmentDataStartOffset );
+_fab ,_cbad :=_cgae .subInputReader ();if _cbad !=nil {return nil ,_cbad ;};if _faeb :=_cgg .Init (_cgae ,_fab );_faeb !=nil {_age .Log .Debug ("\u0049\u006e\u0069\u0074 \u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076 \u0066o\u0072\u0020\u0074\u0079\u0070\u0065\u003a \u0025\u0054",_faeb ,_cgg );
+return nil ,_faeb ;};_cgae .SegmentData =_cgg ;};return _cgg ,nil ;};func (_cccdd *Header )writeSegmentNumber (_bbgb _c .BinaryWriter )(_bacg int ,_affd error ){_abdg :=make ([]byte ,4);_b .BigEndian .PutUint32 (_abdg ,_cccdd .SegmentNumber );if _bacg ,_affd =_bbgb .Write (_abdg );
+_affd !=nil {return 0,_dg .Wrap (_affd ,"\u0048e\u0061\u0064\u0065\u0072.\u0077\u0072\u0069\u0074\u0065S\u0065g\u006de\u006e\u0074\u004e\u0075\u006d\u0062\u0065r","");};return _bacg ,nil ;};func (_eaaf *TextRegion )decodeDT ()(_dccc int64 ,_ddfb error ){if _eaaf .IsHuffmanEncoded {if _eaaf .SbHuffDT ==3{_dccc ,_ddfb =_eaaf ._bddg .Decode (_eaaf ._bgge );
+if _ddfb !=nil {return 0,_ddfb ;};}else {var _ddfff _ece .Tabler ;_ddfff ,_ddfb =_ece .GetStandardTable (11+int (_eaaf .SbHuffDT ));if _ddfb !=nil {return 0,_ddfb ;};_dccc ,_ddfb =_ddfff .Decode (_eaaf ._bgge );if _ddfb !=nil {return 0,_ddfb ;};};}else {var _gcbaf int32 ;
+_gcbaf ,_ddfb =_eaaf ._cefb .DecodeInt (_eaaf ._fecfa );if _ddfb !=nil {return 0,_ddfb ;};_dccc =int64 (_gcbaf );};_dccc *=int64 (_eaaf .SbStrips );return _dccc ,nil ;};func (_aaaa *PageInformationSegment )CombinationOperatorOverrideAllowed ()bool {return _aaaa ._cbfcb };
+func (_gaba *Header )pageSize ()uint {if _gaba .PageAssociation <=255{return 1;};return 4;};func (_abgad *SymbolDictionary )decodeHeightClassDeltaHeight ()(int64 ,error ){if _abgad .IsHuffmanEncoded {return _abgad .decodeHeightClassDeltaHeightWithHuffman ();
+};_fdfa ,_fdca :=_abgad ._ded .DecodeInt (_abgad ._adbgg );if _fdca !=nil {return 0,_fdca ;};return int64 (_fdfa ),nil ;};func (_dcgc *Header )subInputReader ()(*_c .Reader ,error ){_fedd :=int (_dcgc .SegmentDataLength );if _dcgc .SegmentDataLength ==_a .MaxInt32 {_fedd =-1;
+};return _dcgc .Reader .NewPartialReader (int (_dcgc .SegmentDataStartOffset ),_fedd ,false );};var _ templater =&template1 {};func (_febe *SymbolDictionary )addSymbol (_dfefc Regioner )error {_adfcb ,_ebac :=_dfefc .GetRegionBitmap ();if _ebac !=nil {return _ebac ;
+};_febe ._ddae [_febe ._cec ]=_adfcb ;_febe ._ecac =append (_febe ._ecac ,_adfcb );_age .Log .Trace ("\u005b\u0053YM\u0042\u004f\u004c \u0044\u0049\u0043\u0054ION\u0041RY\u005d\u0020\u0041\u0064\u0064\u0065\u0064 s\u0079\u006d\u0062\u006f\u006c\u003a\u0020%\u0073",_adfcb );
+return nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/encoder/arithmetic/arithmetic.go b/unipdf/internal/jbig2/encoder/arithmetic/arithmetic.go
new file mode 100644
index 0000000..df8b105
--- /dev/null
+++ b/unipdf/internal/jbig2/encoder/arithmetic/arithmetic.go
@@ -0,0 +1,59 @@
+//
+// 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 arithmetic ;import (_e "bytes";_c "github.com/unidoc/unipdf/v4/common";_ad "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_ec "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_a "io";);func (_ge *Encoder )DataSize ()int {return _ge .dataSize ()};
+func (_acg *Encoder )Reset (){_acg ._eb =0x8000;_acg ._bfd =0;_acg ._eba =12;_acg ._bcg =-1;_acg ._da =0;_acg ._ag =nil ;_acg ._fb =_be (_fbd );};func (_gdd *Encoder )renormalize (){for {_gdd ._eb <<=1;_gdd ._bfd <<=1;_gdd ._eba --;if _gdd ._eba ==0{_gdd .byteOut ();
+};if (_gdd ._eb &0x8000)!=0{break ;};};};type Encoder struct{_bfd uint32 ;_eb uint16 ;_eba ,_da uint8 ;_bcg int ;_db int ;_ac [][]byte ;_bcd []byte ;_ebd int ;_fb *codingContext ;_dg [13]*codingContext ;_ag *codingContext ;};const (IAAI Class =iota ;IADH ;
+IADS ;IADT ;IADW ;IAEX ;IAFS ;IAIT ;IARDH ;IARDW ;IARDX ;IARDY ;IARI ;);func (_ece *Encoder )rBlock (){if _ece ._bcg >=0{_ece .emit ();};_ece ._bcg ++;_ece ._da =uint8 (_ece ._bfd >>20);_ece ._bfd &=0xfffff;_ece ._eba =7;};func (_cc *codingContext )mps (_ffg uint32 )int {return int (_cc ._bc [_ffg ])};
+func (_ddcf *Encoder )flush (){_ddcf .setBits ();_ddcf ._bfd <<=_ddcf ._eba ;_ddcf .byteOut ();_ddcf ._bfd <<=_ddcf ._eba ;_ddcf .byteOut ();_ddcf .emit ();if _ddcf ._da !=0xff{_ddcf ._bcg ++;_ddcf ._da =0xff;_ddcf .emit ();};_ddcf ._bcg ++;_ddcf ._da =0xac;
+_ddcf ._bcg ++;_ddcf .emit ();};func (_cab *Encoder )EncodeIAID (symbolCodeLength ,value int )(_ea error ){_c .Log .Trace ("\u0045\u006e\u0063\u006f\u0064\u0065\u0020\u0049A\u0049\u0044\u002e S\u0079\u006d\u0062\u006f\u006c\u0043o\u0064\u0065\u004c\u0065\u006e\u0067\u0074\u0068\u003a\u0020\u0027\u0025\u0064\u0027\u002c \u0056\u0061\u006c\u0075\u0065\u003a\u0020\u0027%\u0064\u0027",symbolCodeLength ,value );
+if _ea =_cab .encodeIAID (symbolCodeLength ,value );_ea !=nil {return _ec .Wrap (_ea ,"\u0045\u006e\u0063\u006f\u0064\u0065\u0049\u0041\u0049\u0044","");};return nil ;};type Class int ;type codingContext struct{_ff []byte ;_bc []byte ;};type state struct{_cdc uint16 ;
+_dabe ,_fgdg uint8 ;_cecb uint8 ;};func (_ed Class )String ()string {switch _ed {case IAAI :return "\u0049\u0041\u0041\u0049";case IADH :return "\u0049\u0041\u0044\u0048";case IADS :return "\u0049\u0041\u0044\u0053";case IADT :return "\u0049\u0041\u0044\u0054";
+case IADW :return "\u0049\u0041\u0044\u0057";case IAEX :return "\u0049\u0041\u0045\u0058";case IAFS :return "\u0049\u0041\u0046\u0053";case IAIT :return "\u0049\u0041\u0049\u0054";case IARDH :return "\u0049\u0041\u0052D\u0048";case IARDW :return "\u0049\u0041\u0052D\u0057";
+case IARDX :return "\u0049\u0041\u0052D\u0058";case IARDY :return "\u0049\u0041\u0052D\u0059";case IARI :return "\u0049\u0041\u0052\u0049";default:return "\u0055N\u004b\u004e\u004f\u0057\u004e";};};func (_gag *Encoder )lBlock (){if _gag ._bcg >=0{_gag .emit ();
+};_gag ._bcg ++;_gag ._da =uint8 (_gag ._bfd >>19);_gag ._bfd &=0x7ffff;_gag ._eba =8;};func (_bfdb *Encoder )EncodeOOB (proc Class )(_fc error ){_c .Log .Trace ("E\u006e\u0063\u006f\u0064\u0065\u0020O\u004f\u0042\u0020\u0077\u0069\u0074\u0068\u0020\u0043l\u0061\u0073\u0073:\u0020'\u0025\u0073\u0027",proc );
+if _fc =_bfdb .encodeOOB (proc );_fc !=nil {return _ec .Wrap (_fc ,"\u0045n\u0063\u006f\u0064\u0065\u004f\u004fB","");};return nil ;};func (_ca *Encoder )Init (){_ca ._fb =_be (_fbd );_ca ._eb =0x8000;_ca ._bfd =0;_ca ._eba =12;_ca ._bcg =-1;_ca ._da =0;
+_ca ._ebd =0;_ca ._bcd =make ([]byte ,_fff );for _bd :=0;_bd < len (_ca ._dg );_bd ++{_ca ._dg [_bd ]=_be (512);};_ca ._ag =nil ;};func (_dbc *Encoder )Refine (iTemp ,iTarget *_ad .Bitmap ,ox ,oy int )error {for _gc :=0;_gc < iTarget .Height ;_gc ++{var _cd int ;
+_ffb :=_gc +oy ;var (_gba ,_ab ,_dd ,_ffef ,_gbae uint16 ;_cca ,_abc ,_bdd ,_daba ,_bed byte ;);if _ffb >=1&&(_ffb -1)< iTemp .Height {_cca =iTemp .Data [(_ffb -1)*iTemp .RowStride ];};if _ffb >=0&&_ffb < iTemp .Height {_abc =iTemp .Data [_ffb *iTemp .RowStride ];
+};if _ffb >=-1&&_ffb +1< iTemp .Height {_bdd =iTemp .Data [(_ffb +1)*iTemp .RowStride ];};if _gc >=1{_daba =iTarget .Data [(_gc -1)*iTarget .RowStride ];};_bed =iTarget .Data [_gc *iTarget .RowStride ];_aa :=uint (6+ox );_gba =uint16 (_cca >>_aa );_ab =uint16 (_abc >>_aa );
+_dd =uint16 (_bdd >>_aa );_ffef =uint16 (_daba >>6);_gg :=uint (2-ox );_cca <<=_gg ;_abc <<=_gg ;_bdd <<=_gg ;_daba <<=2;for _cd =0;_cd < iTarget .Width ;_cd ++{_ada :=(_gba <<10)|(_ab <<7)|(_dd <<4)|(_ffef <<1)|_gbae ;_fe :=_bed >>7;_ee :=_dbc .encodeBit (_dbc ._fb ,uint32 (_ada ),_fe );
+if _ee !=nil {return _ee ;};_gba <<=1;_ab <<=1;_dd <<=1;_ffef <<=1;_gba |=uint16 (_cca >>7);_ab |=uint16 (_abc >>7);_dd |=uint16 (_bdd >>7);_ffef |=uint16 (_daba >>7);_gbae =uint16 (_fe );_cf :=_cd %8;_gf :=_cd /8+1;if _cf ==5+ox {_cca ,_abc ,_bdd =0,0,0;
+if _gf < iTemp .RowStride &&_ffb >=1&&(_ffb -1)< iTemp .Height {_cca =iTemp .Data [(_ffb -1)*iTemp .RowStride +_gf ];};if _gf < iTemp .RowStride &&_ffb >=0&&_ffb < iTemp .Height {_abc =iTemp .Data [_ffb *iTemp .RowStride +_gf ];};if _gf < iTemp .RowStride &&_ffb >=-1&&(_ffb +1)< iTemp .Height {_bdd =iTemp .Data [(_ffb +1)*iTemp .RowStride +_gf ];
+};}else {_cca <<=1;_abc <<=1;_bdd <<=1;};if _cf ==5&&_gc >=1{_daba =0;if _gf < iTarget .RowStride {_daba =iTarget .Data [(_gc -1)*iTarget .RowStride +_gf ];};}else {_daba <<=1;};if _cf ==7{_bed =0;if _gf < iTarget .RowStride {_bed =iTarget .Data [_gc *iTarget .RowStride +_gf ];
+};}else {_bed <<=1;};_gba &=7;_ab &=7;_dd &=7;_ffef &=7;};};return nil ;};func (_bcf *Encoder )dataSize ()int {return _fff *len (_bcf ._ac )+_bcf ._ebd };var _d =[]intEncRangeS {{0,3,0,2,0,2},{-1,-1,9,4,0,0},{-3,-2,5,3,2,1},{4,19,2,3,4,4},{-19,-4,3,3,4,4},{20,83,6,4,20,6},{-83,-20,7,4,20,6},{84,339,14,5,84,8},{-339,-84,15,5,84,8},{340,4435,30,6,340,12},{-4435,-340,31,6,340,12},{4436,2000000000,62,6,4436,32},{-2000000000,-4436,63,6,4436,32}};
+func (_edae *Encoder )codeLPS (_bad *codingContext ,_gda uint32 ,_ecd uint16 ,_gdg byte ){_edae ._eb -=_ecd ;if _edae ._eb < _ecd {_edae ._bfd +=uint32 (_ecd );}else {_edae ._eb =_ecd ;};if _aeb [_gdg ]._cecb ==1{_bad .flipMps (_gda );};_bad ._ff [_gda ]=_aeb [_gdg ]._fgdg ;
+_edae .renormalize ();};func (_gaf *Encoder )encodeIAID (_afg ,_eab int )error {if _gaf ._ag ==nil {_gaf ._ag =_be (1<<uint (_afg ));};_eca :=uint32 (1<<uint32 (_afg +1))-1;_eab <<=uint (32-_afg );_cdg :=uint32 (1);for _agb :=0;_agb < _afg ;_agb ++{_ggbg :=_cdg &_eca ;
+_baf :=uint8 ((uint32 (_eab )&0x80000000)>>31);if _bdf :=_gaf .encodeBit (_gaf ._ag ,_ggbg ,_baf );_bdf !=nil {return _bdf ;};_cdg =(_cdg <<1)|uint32 (_baf );_eab <<=1;};return nil ;};func (_ffe *Encoder )EncodeBitmap (bm *_ad .Bitmap ,duplicateLineRemoval bool )error {_c .Log .Trace ("\u0045n\u0063\u006f\u0064\u0065 \u0042\u0069\u0074\u006d\u0061p\u0020[\u0025d\u0078\u0025\u0064\u005d\u002c\u0020\u0025s",bm .Width ,bm .Height ,bm );
+var (_cgf ,_bae uint8 ;_agg ,_fbb ,_ce uint16 ;_daa ,_bef ,_bge byte ;_ccb ,_cb ,_gea int ;_afe ,_dc []byte ;);for _cag :=0;_cag < bm .Height ;_cag ++{_daa ,_bef =0,0;if _cag >=2{_daa =bm .Data [(_cag -2)*bm .RowStride ];};if _cag >=1{_bef =bm .Data [(_cag -1)*bm .RowStride ];
+if duplicateLineRemoval {_cb =_cag *bm .RowStride ;_afe =bm .Data [_cb :_cb +bm .RowStride ];_gea =(_cag -1)*bm .RowStride ;_dc =bm .Data [_gea :_gea +bm .RowStride ];if _e .Equal (_afe ,_dc ){_bae =_cgf ^1;_cgf =1;}else {_bae =_cgf ;_cgf =0;};};};if duplicateLineRemoval {if _ae :=_ffe .encodeBit (_ffe ._fb ,_bb ,_bae );
+_ae !=nil {return _ae ;};if _cgf !=0{continue ;};};_bge =bm .Data [_cag *bm .RowStride ];_agg =uint16 (_daa >>5);_fbb =uint16 (_bef >>4);_daa <<=3;_bef <<=4;_ce =0;for _ccb =0;_ccb < bm .Width ;_ccb ++{_bga :=uint32 (_agg <<11|_fbb <<4|_ce );_ga :=(_bge &0x80)>>7;
+_baa :=_ffe .encodeBit (_ffe ._fb ,_bga ,_ga );if _baa !=nil {return _baa ;};_agg <<=1;_fbb <<=1;_ce <<=1;_agg |=uint16 ((_daa &0x80)>>7);_fbb |=uint16 ((_bef &0x80)>>7);_ce |=uint16 (_ga );_bee :=_ccb %8;_agc :=_ccb /8+1;if _bee ==4&&_cag >=2{_daa =0;
+if _agc < bm .RowStride {_daa =bm .Data [(_cag -2)*bm .RowStride +_agc ];};}else {_daa <<=1;};if _bee ==3&&_cag >=1{_bef =0;if _agc < bm .RowStride {_bef =bm .Data [(_cag -1)*bm .RowStride +_agc ];};}else {_bef <<=1;};if _bee ==7{_bge =0;if _agc < bm .RowStride {_bge =bm .Data [_cag *bm .RowStride +_agc ];
+};}else {_bge <<=1;};_agg &=31;_fbb &=127;_ce &=15;};};return nil ;};const _bb =0x9b25;func (_gbf *Encoder )code0 (_fcc *codingContext ,_eed uint32 ,_ggb uint16 ,_bfc byte ){if _fcc .mps (_eed )==0{_gbf .codeMPS (_fcc ,_eed ,_ggb ,_bfc );}else {_gbf .codeLPS (_fcc ,_eed ,_ggb ,_bfc );
+};};func (_fgd *Encoder )encodeBit (_ggc *codingContext ,_gdgg uint32 ,_gdad uint8 )error {const _ddc ="\u0045\u006e\u0063\u006f\u0064\u0065\u0072\u002e\u0065\u006e\u0063\u006fd\u0065\u0042\u0069\u0074";_fgd ._db ++;if _gdgg >=uint32 (len (_ggc ._ff )){return _ec .Errorf (_ddc ,"\u0061r\u0069\u0074h\u006d\u0065\u0074i\u0063\u0020\u0065\u006e\u0063\u006f\u0064e\u0072\u0020\u002d\u0020\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u0063\u0074\u0078\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0027\u0025\u0064\u0027",_gdgg );
+};_gbg :=_ggc ._ff [_gdgg ];_fgda :=_ggc .mps (_gdgg );_eg :=_aeb [_gbg ]._cdc ;_c .Log .Trace ("\u0045\u0043\u003a\u0020\u0025d\u0009\u0020D\u003a\u0020\u0025d\u0009\u0020\u0049\u003a\u0020\u0025d\u0009\u0020\u004dPS\u003a \u0025\u0064\u0009\u0020\u0051\u0045\u003a \u0025\u0030\u0034\u0058\u0009\u0020\u0020\u0041\u003a\u0020\u0025\u0030\u0034\u0058\u0009\u0020\u0043\u003a %\u0030\u0038\u0058\u0009\u0020\u0043\u0054\u003a\u0020\u0025\u0064\u0009\u0020\u0042\u003a\u0020\u0025\u0030\u0032\u0058\u0009\u0020\u0042\u0050\u003a\u0020\u0025\u0064",_fgd ._db ,_gdad ,_gbg ,_fgda ,_eg ,_fgd ._eb ,_fgd ._bfd ,_fgd ._eba ,_fgd ._da ,_fgd ._bcg );
+if _gdad ==0{_fgd .code0 (_ggc ,_gdgg ,_eg ,_gbg );}else {_fgd .code1 (_ggc ,_gdgg ,_eg ,_gbg );};return nil ;};func (_eda *Encoder )code1 (_aab *codingContext ,_bedc uint32 ,_bgb uint16 ,_eaf byte ){if _aab .mps (_bedc )==1{_eda .codeMPS (_aab ,_bedc ,_bgb ,_eaf );
+}else {_eda .codeLPS (_aab ,_bedc ,_bgb ,_eaf );};};func (_cabb *Encoder )encodeInteger (_age Class ,_gbab int )error {const _bcc ="E\u006e\u0063\u006f\u0064er\u002ee\u006e\u0063\u006f\u0064\u0065I\u006e\u0074\u0065\u0067\u0065\u0072";if _gbab > 2000000000||_gbab < -2000000000{return _ec .Errorf (_bcc ,"\u0061\u0072\u0069\u0074\u0068\u006d\u0065\u0074i\u0063\u0020\u0065nc\u006f\u0064\u0065\u0072\u0020\u002d \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072 \u0076\u0061\u006c\u0075\u0065\u003a\u0020\u0027%\u0064\u0027",_gbab );
+};_dce :=_cabb ._dg [_age ];_bfcb :=uint32 (1);var _cbe int ;for ;;_cbe ++{if _d [_cbe ]._cg <=_gbab &&_d [_cbe ]._gb >=_gbab {break ;};};if _gbab < 0{_gbab =-_gbab ;};_gbab -=int (_d [_cbe ]._ba );_gga :=_d [_cbe ]._b ;for _aacc :=uint8 (0);_aacc < _d [_cbe ]._bf ;
+_aacc ++{_bfe :=_gga &1;if _ggcb :=_cabb .encodeBit (_dce ,_bfcb ,_bfe );_ggcb !=nil {return _ec .Wrap (_ggcb ,_bcc ,"");};_gga >>=1;if _bfcb &0x100> 0{_bfcb =(((_bfcb <<1)|uint32 (_bfe ))&0x1ff)|0x100;}else {_bfcb =(_bfcb <<1)|uint32 (_bfe );};};_gbab <<=32-_d [_cbe ]._f ;
+for _fcb :=uint8 (0);_fcb < _d [_cbe ]._f ;_fcb ++{_dcg :=uint8 ((uint32 (_gbab )&0x80000000)>>31);if _fed :=_cabb .encodeBit (_dce ,_bfcb ,_dcg );_fed !=nil {return _ec .Wrap (_fed ,_bcc ,"\u006d\u006f\u0076\u0065 \u0064\u0061\u0074\u0061\u0020\u0074\u006f\u0020\u0074\u0068e\u0020t\u006f\u0070\u0020\u006f\u0066\u0020\u0077o\u0072\u0064");
+};_gbab <<=1;if _bfcb &0x100!=0{_bfcb =(((_bfcb <<1)|uint32 (_dcg ))&0x1ff)|0x100;}else {_bfcb =(_bfcb <<1)|uint32 (_dcg );};};return nil ;};func (_dab *Encoder )Flush (){_dab ._ebd =0;_dab ._ac =nil ;_dab ._bcg =-1};var _aeb =[]state {{0x5601,1,1,1},{0x3401,2,6,0},{0x1801,3,9,0},{0x0AC1,4,12,0},{0x0521,5,29,0},{0x0221,38,33,0},{0x5601,7,6,1},{0x5401,8,14,0},{0x4801,9,14,0},{0x3801,10,14,0},{0x3001,11,17,0},{0x2401,12,18,0},{0x1C01,13,20,0},{0x1601,29,21,0},{0x5601,15,14,1},{0x5401,16,14,0},{0x5101,17,15,0},{0x4801,18,16,0},{0x3801,19,17,0},{0x3401,20,18,0},{0x3001,21,19,0},{0x2801,22,19,0},{0x2401,23,20,0},{0x2201,24,21,0},{0x1C01,25,22,0},{0x1801,26,23,0},{0x1601,27,24,0},{0x1401,28,25,0},{0x1201,29,26,0},{0x1101,30,27,0},{0x0AC1,31,28,0},{0x09C1,32,29,0},{0x08A1,33,30,0},{0x0521,34,31,0},{0x0441,35,32,0},{0x02A1,36,33,0},{0x0221,37,34,0},{0x0141,38,35,0},{0x0111,39,36,0},{0x0085,40,37,0},{0x0049,41,38,0},{0x0025,42,39,0},{0x0015,43,40,0},{0x0009,44,41,0},{0x0005,45,42,0},{0x0001,45,43,0},{0x5601,46,46,0}};
+var _ _a .WriterTo =&Encoder {};type intEncRangeS struct{_cg ,_gb int ;_b ,_bf uint8 ;_ba uint16 ;_f uint8 ;};func _be (_bgc int )*codingContext {return &codingContext {_ff :make ([]byte ,_bgc ),_bc :make ([]byte ,_bgc )};};func New ()*Encoder {_cce :=&Encoder {};
+_cce .Init ();return _cce };func (_af *codingContext )flipMps (_bg uint32 ){_af ._bc [_bg ]=1-_af ._bc [_bg ]};const (_fbd =65536;_fff =20*1024;);func (_fbe *Encoder )codeMPS (_dge *codingContext ,_aac uint32 ,_dabd uint16 ,_cec byte ){_fbe ._eb -=_dabd ;
+if _fbe ._eb &0x8000!=0{_fbe ._bfd +=uint32 (_dabd );return ;};if _fbe ._eb < _dabd {_fbe ._eb =_dabd ;}else {_fbe ._bfd +=uint32 (_dabd );};_dge ._ff [_aac ]=_aeb [_cec ]._dabe ;_fbe .renormalize ();};func (_eceg *Encoder )setBits (){_bea :=_eceg ._bfd +uint32 (_eceg ._eb );
+_eceg ._bfd |=0xffff;if _eceg ._bfd >=_bea {_eceg ._bfd -=0x8000;};};func (_fg *Encoder )EncodeInteger (proc Class ,value int )(_ede error ){_c .Log .Trace ("\u0045\u006eco\u0064\u0065\u0020I\u006e\u0074\u0065\u0067er:\u0027%d\u0027\u0020\u0077\u0069\u0074\u0068\u0020Cl\u0061\u0073\u0073\u003a\u0020\u0027\u0025s\u0027",value ,proc );
+if _ede =_fg .encodeInteger (proc ,value );_ede !=nil {return _ec .Wrap (_ede ,"\u0045\u006e\u0063\u006f\u0064\u0065\u0049\u006e\u0074\u0065\u0067\u0065\u0072","");};return nil ;};func (_edd *Encoder )Final (){_edd .flush ()};func (_bgg *Encoder )emit (){if _bgg ._ebd ==_fff {_bgg ._ac =append (_bgg ._ac ,_bgg ._bcd );
+_bgg ._bcd =make ([]byte ,_fff );_bgg ._ebd =0;};_bgg ._bcd [_bgg ._ebd ]=_bgg ._da ;_bgg ._ebd ++;};func (_afef *Encoder )byteOut (){if _afef ._da ==0xff{_afef .rBlock ();return ;};if _afef ._bfd < 0x8000000{_afef .lBlock ();return ;};_afef ._da ++;if _afef ._da !=0xff{_afef .lBlock ();
+return ;};_afef ._bfd &=0x7ffffff;_afef .rBlock ();};func (_cge *Encoder )WriteTo (w _a .Writer )(int64 ,error ){const _bbb ="\u0045n\u0063o\u0064\u0065\u0072\u002e\u0057\u0072\u0069\u0074\u0065\u0054\u006f";var _afc int64 ;for _ggg ,_ccg :=range _cge ._ac {_fa ,_edf :=w .Write (_ccg );
+if _edf !=nil {return 0,_ec .Wrapf (_edf ,_bbb ,"\u0066\u0061\u0069\u006c\u0065\u0064\u0020\u0061\u0074\u0020\u0069'\u0074\u0068\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0063h\u0075\u006e\u006b",_ggg );};_afc +=int64 (_fa );};_cge ._bcd =_cge ._bcd [:_cge ._ebd ];
+_gcd ,_gce :=w .Write (_cge ._bcd );if _gce !=nil {return 0,_ec .Wrap (_gce ,_bbb ,"\u0062u\u0066f\u0065\u0072\u0065\u0064\u0020\u0063\u0068\u0075\u006e\u006b\u0073");};_afc +=int64 (_gcd );return _afc ,nil ;};func (_gec *Encoder )encodeOOB (_egd Class )error {_eae :=_gec ._dg [_egd ];
+_bgf :=_gec .encodeBit (_eae ,1,1);if _bgf !=nil {return _bgf ;};_bgf =_gec .encodeBit (_eae ,3,0);if _bgf !=nil {return _bgf ;};_bgf =_gec .encodeBit (_eae ,6,0);if _bgf !=nil {return _bgf ;};_bgf =_gec .encodeBit (_eae ,12,0);if _bgf !=nil {return _bgf ;
+};return nil ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/encoder/classer/classer.go b/unipdf/internal/jbig2/encoder/classer/classer.go
new file mode 100644
index 0000000..a0b48db
--- /dev/null
+++ b/unipdf/internal/jbig2/encoder/classer/classer.go
@@ -0,0 +1,110 @@
+//
+// 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 classer ;import (_gf "github.com/unidoc/unipdf/v4/common";_e "github.com/unidoc/unipdf/v4/internal/jbig2/basic";_gd "github.com/unidoc/unipdf/v4/internal/jbig2/bitmap";_c "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_a "image";_g "math";
+);const (MaxConnCompWidth =350;MaxCharCompWidth =350;MaxWordCompWidth =1000;MaxCompHeight =120;);func (_cca *Classer )classifyRankHouseOne (_fef *_gd .Boxes ,_deeg ,_abe ,_ceeg *_gd .Bitmaps ,_abc *_gd .Points ,_fgg int )(_dcd error ){const _edb ="\u0043\u006c\u0061\u0073s\u0065\u0072\u002e\u0063\u006c\u0061\u0073\u0073\u0069\u0066y\u0052a\u006e\u006b\u0048\u006f\u0075\u0073\u0065O\u006e\u0065";
+var (_cde ,_gdg ,_bee ,_fefa float32 ;_cf int ;_daf ,_fdg ,_aacc ,_ffc ,_eef *_gd .Bitmap ;_cdg ,_acad bool ;);for _baed :=0;_baed < len (_deeg .Values );_baed ++{_fdg =_abe .Values [_baed ];_aacc =_ceeg .Values [_baed ];_cde ,_gdg ,_dcd =_abc .GetGeometry (_baed );
+if _dcd !=nil {return _c .Wrapf (_dcd ,_edb ,"\u0066\u0069\u0072\u0073\u0074\u0020\u0067\u0065\u006fm\u0065\u0074\u0072\u0079");};_gaae :=len (_cca .UndilatedTemplates .Values );_cdg =false ;_def :=_acd (_cca ,_fdg );for _cf =_def .Next ();_cf > -1;{_ffc ,_dcd =_cca .UndilatedTemplates .GetBitmap (_cf );
+if _dcd !=nil {return _c .Wrap (_dcd ,_edb ,"\u0062\u006d\u0033");};_eef ,_dcd =_cca .DilatedTemplates .GetBitmap (_cf );if _dcd !=nil {return _c .Wrap (_dcd ,_edb ,"\u0062\u006d\u0034");};_bee ,_fefa ,_dcd =_cca .CentroidPointsTemplates .GetGeometry (_cf );
+if _dcd !=nil {return _c .Wrap (_dcd ,_edb ,"\u0043\u0065\u006e\u0074\u0072\u006f\u0069\u0064\u0054\u0065\u006d\u0070l\u0061\u0074\u0065\u0073");};_acad ,_dcd =_gd .HausTest (_fdg ,_aacc ,_ffc ,_eef ,_cde -_bee ,_gdg -_fefa ,MaxDiffWidth ,MaxDiffHeight );
+if _dcd !=nil {return _c .Wrap (_dcd ,_edb ,"");};if _acad {_cdg =true ;if _dcd =_cca .ClassIDs .Add (_cf );_dcd !=nil {return _c .Wrap (_dcd ,_edb ,"");};if _dcd =_cca .ComponentPageNumbers .Add (_fgg );_dcd !=nil {return _c .Wrap (_dcd ,_edb ,"");};if _cca .Settings .KeepClassInstances {_gbf ,_fea :=_cca .ClassInstances .GetBitmaps (_cf );
+if _fea !=nil {return _c .Wrap (_fea ,_edb ,"\u004be\u0065\u0070\u0050\u0069\u0078\u0061a");};_daf ,_fea =_deeg .GetBitmap (_baed );if _fea !=nil {return _c .Wrap (_fea ,_edb ,"\u004be\u0065\u0070\u0050\u0069\u0078\u0061a");};_gbf .AddBitmap (_daf );_dcf ,_fea :=_fef .Get (_baed );
+if _fea !=nil {return _c .Wrap (_fea ,_edb ,"\u004be\u0065\u0070\u0050\u0069\u0078\u0061a");};_gbf .AddBox (_dcf );};break ;};};if !_cdg {if _dcd =_cca .ClassIDs .Add (_gaae );_dcd !=nil {return _c .Wrap (_dcd ,_edb ,"");};if _dcd =_cca .ComponentPageNumbers .Add (_fgg );
+_dcd !=nil {return _c .Wrap (_dcd ,_edb ,"");};_bdea :=&_gd .Bitmaps {};_daf ,_dcd =_deeg .GetBitmap (_baed );if _dcd !=nil {return _c .Wrap (_dcd ,_edb ,"\u0021\u0066\u006f\u0075\u006e\u0064");};_bdea .Values =append (_bdea .Values ,_daf );_fbe ,_fcgg :=_daf .Width ,_daf .Height ;
+_cca .TemplatesSize .Add (uint64 (_fcgg )*uint64 (_fbe ),_gaae );_eca ,_eeb :=_fef .Get (_baed );if _eeb !=nil {return _c .Wrap (_eeb ,_edb ,"\u0021\u0066\u006f\u0075\u006e\u0064");};_bdea .AddBox (_eca );_cca .ClassInstances .AddBitmaps (_bdea );_cca .CentroidPointsTemplates .AddPoint (_cde ,_gdg );
+_cca .UndilatedTemplates .AddBitmap (_fdg );_cca .DilatedTemplates .AddBitmap (_aacc );};};return nil ;};func (_fced *Classer )addPageComponents (_df *_gd .Bitmap ,_gcb *_gd .Boxes ,_fg *_gd .Bitmaps ,_ce int ,_cee Method )error {const _bca ="\u0043l\u0061\u0073\u0073\u0065r\u002e\u0041\u0064\u0064\u0050a\u0067e\u0043o\u006d\u0070\u006f\u006e\u0065\u006e\u0074s";
+if _df ==nil {return _c .Error (_bca ,"\u006e\u0069\u006c\u0020\u0069\u006e\u0070\u0075\u0074 \u0070\u0061\u0067\u0065");};if _gcb ==nil ||_fg ==nil ||len (*_gcb )==0{_gf .Log .Trace ("\u0041\u0064\u0064P\u0061\u0067\u0065\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u003a\u0020\u0025\u0073\u002e\u0020\u004e\u006f\u0020\u0063\u006f\u006d\u0070\u006f\u006e\u0065n\u0074\u0073\u0020\u0066\u006f\u0075\u006e\u0064",_df );
+return nil ;};var _ad error ;switch _cee {case RankHaus :_ad =_fced .classifyRankHaus (_gcb ,_fg ,_ce );case Correlation :_ad =_fced .classifyCorrelation (_gcb ,_fg ,_ce );default:_gf .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077\u006e\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0079\u0020\u006d\u0065\u0074\u0068\u006f\u0064\u003a\u0020'%\u0076\u0027",_cee );
+return _c .Error (_bca ,"\u0075\u006e\u006bno\u0077\u006e\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0079\u0020\u006d\u0065\u0074\u0068\u006f\u0064");};if _ad !=nil {return _c .Wrap (_ad ,_bca ,"");};if _ad =_fced .getULCorners (_df ,_gcb );_ad !=nil {return _c .Wrap (_ad ,_bca ,"");
+};_gae :=len (*_gcb );_fced .BaseIndex +=_gae ;if _ad =_fced .ComponentsNumber .Add (_gae );_ad !=nil {return _c .Wrap (_ad ,_bca ,"");};return nil ;};type Method int ;var _aee bool ;func (_bf *Classer )verifyMethod (_gaa Method )error {if _gaa !=RankHaus &&_gaa !=Correlation {return _c .Error ("\u0076\u0065\u0072i\u0066\u0079\u004d\u0065\u0074\u0068\u006f\u0064","\u0069\u006e\u0076\u0061li\u0064\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072\u0020\u006d\u0065\u0074\u0068o\u0064");
+};return nil ;};const (RankHaus Method =iota ;Correlation ;);func _fe (_aad *_gd .Bitmap ,_fdb ,_ggg ,_bag ,_dg int ,_gfe *_gd .Bitmap )(_fa _a .Point ,_bfd error ){const _ebe ="\u0066i\u006e\u0061\u006c\u0041l\u0069\u0067\u006e\u006d\u0065n\u0074P\u006fs\u0069\u0074\u0069\u006f\u006e\u0069\u006eg";
+if _aad ==nil {return _fa ,_c .Error (_ebe ,"\u0073\u006f\u0075\u0072ce\u0020\u006e\u006f\u0074\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064");};if _gfe ==nil {return _fa ,_c .Error (_ebe ,"t\u0065\u006d\u0070\u006cat\u0065 \u006e\u006f\u0074\u0020\u0070r\u006f\u0076\u0069\u0064\u0065\u0064");
+};_dbe ,_ebd :=_gfe .Width ,_gfe .Height ;_efa ,_bga :=_fdb -_bag -JbAddedPixels ,_ggg -_dg -JbAddedPixels ;_gf .Log .Trace ("\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0079\u003a\u0020\u0027\u0025\u0064'\u002c\u0020\u0077\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0068\u003a \u0027\u0025\u0064\u0027\u002c\u0020\u0062\u0078\u003a\u0020\u0027\u0025d'\u002c\u0020\u0062\u0079\u003a\u0020\u0027\u0025\u0064\u0027",_fdb ,_ggg ,_dbe ,_ebd ,_efa ,_bga );
+_ffe ,_bfd :=_gd .Rect (_efa ,_bga ,_dbe ,_ebd );if _bfd !=nil {return _fa ,_c .Wrap (_bfd ,_ebe ,"");};_bgaf ,_ ,_bfd :=_aad .ClipRectangle (_ffe );if _bfd !=nil {_gf .Log .Error ("\u0043a\u006e\u0027\u0074\u0020\u0063\u006c\u0069\u0070\u0020\u0072\u0065c\u0074\u0061\u006e\u0067\u006c\u0065\u003a\u0020\u0025\u0076",_ffe );
+return _fa ,_c .Wrap (_bfd ,_ebe ,"");};_dbf :=_gd .New (_bgaf .Width ,_bgaf .Height );_bfg :=_g .MaxInt32 ;var _ed ,_ac ,_ae ,_bagf ,_be int ;for _ed =-1;_ed <=1;_ed ++{for _ac =-1;_ac <=1;_ac ++{if _ ,_bfd =_gd .Copy (_dbf ,_bgaf );_bfd !=nil {return _fa ,_c .Wrap (_bfd ,_ebe ,"");
+};if _bfd =_dbf .RasterOperation (_ac ,_ed ,_dbe ,_ebd ,_gd .PixSrcXorDst ,_gfe ,0,0);_bfd !=nil {return _fa ,_c .Wrap (_bfd ,_ebe ,"");};_ae =_dbf .CountPixels ();if _ae < _bfg {_bagf =_ac ;_be =_ed ;_bfg =_ae ;};};};_fa .X =_bagf ;_fa .Y =_be ;return _fa ,nil ;
+};func (_bbb *similarTemplatesFinder )Next ()int {var (_bgac ,_ccb ,_efda ,_cdag int ;_dccb bool ;_edf *_gd .Bitmap ;_gaf error ;);for {if _bbb .Index >=25{return -1;};_ccb =_bbb .Width +TwoByTwoWalk [2*_bbb .Index ];_bgac =_bbb .Height +TwoByTwoWalk [2*_bbb .Index +1];
+if _bgac < 1||_ccb < 1{_bbb .Index ++;continue ;};if len (_bbb .CurrentNumbers )==0{_bbb .CurrentNumbers ,_dccb =_bbb .Classer .TemplatesSize .GetSlice (uint64 (_ccb )*uint64 (_bgac ));if !_dccb {_bbb .Index ++;continue ;};_bbb .N =0;};_efda =len (_bbb .CurrentNumbers );
+for ;_bbb .N < _efda ;_bbb .N ++{_cdag =_bbb .CurrentNumbers [_bbb .N ];_edf ,_gaf =_bbb .Classer .DilatedTemplates .GetBitmap (_cdag );if _gaf !=nil {_gf .Log .Debug ("\u0046\u0069\u006e\u0064\u004e\u0065\u0078\u0074\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u003a\u0020\u0074\u0065\u006d\u0070\u006c\u0061t\u0065\u0020\u006e\u006f\u0074 \u0066\u006fu\u006e\u0064\u003a\u0020");
+return 0;};if _edf .Width -2*JbAddedPixels ==_ccb &&_edf .Height -2*JbAddedPixels ==_bgac {return _cdag ;};};_bbb .Index ++;_bbb .CurrentNumbers =nil ;};};func DefaultSettings ()Settings {_bcd :=&Settings {};_bcd .SetDefault ();return *_bcd };const (MaxDiffWidth =2;
+MaxDiffHeight =2;);type Settings struct{MaxCompWidth int ;MaxCompHeight int ;SizeHaus int ;RankHaus float64 ;Thresh float64 ;WeightFactor float64 ;KeepClassInstances bool ;Components _gd .Component ;Method Method ;};type Classer struct{BaseIndex int ;Settings Settings ;
+ComponentsNumber *_e .IntSlice ;TemplateAreas *_e .IntSlice ;Widths map[int ]int ;Heights map[int ]int ;NumberOfClasses int ;ClassInstances *_gd .BitmapsArray ;UndilatedTemplates *_gd .Bitmaps ;DilatedTemplates *_gd .Bitmaps ;TemplatesSize _e .IntsMap ;
+FgTemplates *_e .NumSlice ;CentroidPoints *_gd .Points ;CentroidPointsTemplates *_gd .Points ;ClassIDs *_e .IntSlice ;ComponentPageNumbers *_e .IntSlice ;PtaUL *_gd .Points ;PtaLL *_gd .Points ;};func (_aab *Classer )classifyCorrelation (_bgd *_gd .Boxes ,_efd *_gd .Bitmaps ,_gb int )error {const _ceea ="\u0063\u006c\u0061\u0073si\u0066\u0079\u0043\u006f\u0072\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e";
+if _bgd ==nil {return _c .Error (_ceea ,"\u006e\u0065\u0077\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074\u0073\u0020\u0062\u006f\u0075\u006e\u0064\u0069\u006e\u0067\u0020\u0062o\u0078\u0065\u0073\u0020\u006eo\u0074\u0020f\u006f\u0075\u006e\u0064");
+};if _efd ==nil {return _c .Error (_ceea ,"\u006e\u0065wC\u006f\u006d\u0070o\u006e\u0065\u006e\u0074s b\u0069tm\u0061\u0070\u0020\u0061\u0072\u0072\u0061y \u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064");};_de :=len (_efd .Values );if _de ==0{_gf .Log .Debug ("\u0063l\u0061\u0073s\u0069\u0066\u0079C\u006f\u0072\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0020\u002d\u0020\u0070r\u006f\u0076\u0069\u0064\u0065\u0064\u0020\u0070\u0069\u0078\u0061s\u0020\u0069\u0073\u0020\u0065\u006d\u0070\u0074\u0079");
+return nil ;};var (_eae ,_cg *_gd .Bitmap ;_fcg error ;);_cda :=&_gd .Bitmaps {Values :make ([]*_gd .Bitmap ,_de )};for _egg ,_cgc :=range _efd .Values {_cg ,_fcg =_cgc .AddBorderGeneral (JbAddedPixels ,JbAddedPixels ,JbAddedPixels ,JbAddedPixels ,0);if _fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"");
+};_cda .Values [_egg ]=_cg ;};_fae :=_aab .FgTemplates ;_dcc :=_gd .MakePixelSumTab8 ();_dd :=_gd .MakePixelCentroidTab8 ();_ead :=make ([]int ,_de );_fb :=make ([][]int ,_de );_afb :=_gd .Points (make ([]_gd .Point ,_de ));_eabc :=&_afb ;var (_bbc ,_dee int ;
+_aaa ,_afbc ,_bae int ;_edd ,_ddg int ;_adg byte ;);for _adf ,_cc :=range _cda .Values {_fb [_adf ]=make ([]int ,_cc .Height );_bbc =0;_dee =0;_afbc =(_cc .Height -1)*_cc .RowStride ;_aaa =0;for _ddg =_cc .Height -1;_ddg >=0;_ddg ,_afbc =_ddg -1,_afbc -_cc .RowStride {_fb [_adf ][_ddg ]=_aaa ;
+_bae =0;for _edd =0;_edd < _cc .RowStride ;_edd ++{_adg =_cc .Data [_afbc +_edd ];_bae +=_dcc [_adg ];_bbc +=_dd [_adg ]+_edd *8*_dcc [_adg ];};_aaa +=_bae ;_dee +=_bae *_ddg ;};_ead [_adf ]=_aaa ;if _aaa > 0{(*_eabc )[_adf ]=_gd .Point {X :float32 (_bbc )/float32 (_aaa ),Y :float32 (_dee )/float32 (_aaa )};
+}else {(*_eabc )[_adf ]=_gd .Point {X :float32 (_cc .Width )/float32 (2),Y :float32 (_cc .Height )/float32 (2)};};};if _fcg =_aab .CentroidPoints .Add (_eabc );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0063\u0065\u006et\u0072\u006f\u0069\u0064\u0020\u0061\u0064\u0064");
+};var (_agf ,_afg ,_aag int ;_dad float64 ;_acc ,_ecb ,_ddd ,_gbd float32 ;_dff ,_dgd _gd .Point ;_ceg bool ;_dae *similarTemplatesFinder ;_add int ;_ega *_gd .Bitmap ;_eggc *_a .Rectangle ;_bd *_gd .Bitmaps ;);for _add ,_cg =range _cda .Values {_afg =_ead [_add ];
+if _acc ,_ecb ,_fcg =_eabc .GetGeometry (_add );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0070t\u0061\u0020\u002d\u0020\u0069");};_ceg =false ;_bde :=len (_aab .UndilatedTemplates .Values );_dae =_acd (_aab ,_cg );for _fff :=_dae .Next ();_fff > -1;
+{if _ega ,_fcg =_aab .UndilatedTemplates .GetBitmap (_fff );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0075\u006e\u0069dl\u0061\u0074\u0065\u0064\u005b\u0069\u0063\u006c\u0061\u0073\u0073\u005d\u0020\u003d\u0020\u0062\u006d\u0032");};if _aag ,_fcg =_fae .GetInt (_fff );
+_fcg !=nil {_gf .Log .Trace ("\u0046\u0047\u0020T\u0065\u006d\u0070\u006ca\u0074\u0065\u0020\u005b\u0069\u0063\u006ca\u0073\u0073\u005d\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_fcg );};if _ddd ,_gbd ,_fcg =_aab .CentroidPointsTemplates .GetGeometry (_fff );
+_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0043\u0065\u006e\u0074\u0072\u006f\u0069\u0064\u0050\u006f\u0069\u006e\u0074T\u0065\u006d\u0070\u006c\u0061\u0074e\u0073\u005b\u0069\u0063\u006c\u0061\u0073\u0073\u005d\u0020\u003d\u0020\u00782\u002c\u0079\u0032\u0020");
+};if _aab .Settings .WeightFactor > 0.0{if _agf ,_fcg =_aab .TemplateAreas .Get (_fff );_fcg !=nil {_gf .Log .Trace ("\u0054\u0065\u006dp\u006c\u0061\u0074\u0065A\u0072\u0065\u0061\u0073\u005b\u0069\u0063l\u0061\u0073\u0073\u005d\u0020\u003d\u0020\u0061\u0072\u0065\u0061\u0020\u0025\u0076",_fcg );
+};_dad =_aab .Settings .Thresh +(1.0-_aab .Settings .Thresh )*_aab .Settings .WeightFactor *float64 (_aag )/float64 (_agf );}else {_dad =_aab .Settings .Thresh ;};_ffa ,_dec :=_gd .CorrelationScoreThresholded (_cg ,_ega ,_afg ,_aag ,_dff .X -_dgd .X ,_dff .Y -_dgd .Y ,MaxDiffWidth ,MaxDiffHeight ,_dcc ,_fb [_add ],float32 (_dad ));
+if _dec !=nil {return _c .Wrap (_dec ,_ceea ,"");};if _aee {var (_cgg ,_ab float64 ;_afgf ,_fgb int ;);_cgg ,_dec =_gd .CorrelationScore (_cg ,_ega ,_afg ,_aag ,_acc -_ddd ,_ecb -_gbd ,MaxDiffWidth ,MaxDiffHeight ,_dcc );if _dec !=nil {return _c .Wrap (_dec ,_ceea ,"d\u0065\u0062\u0075\u0067Co\u0072r\u0065\u006c\u0061\u0074\u0069o\u006e\u0053\u0063\u006f\u0072\u0065");
+};_ab ,_dec =_gd .CorrelationScoreSimple (_cg ,_ega ,_afg ,_aag ,_acc -_ddd ,_ecb -_gbd ,MaxDiffWidth ,MaxDiffHeight ,_dcc );if _dec !=nil {return _c .Wrap (_dec ,_ceea ,"d\u0065\u0062\u0075\u0067Co\u0072r\u0065\u006c\u0061\u0074\u0069o\u006e\u0053\u0063\u006f\u0072\u0065");
+};_afgf =int (_g .Sqrt (_cgg *float64 (_afg )*float64 (_aag )));_fgb =int (_g .Sqrt (_ab *float64 (_afg )*float64 (_aag )));if (_cgg >=_dad )!=(_ab >=_dad ){return _c .Errorf (_ceea ,"\u0064\u0065\u0062\u0075\u0067\u0020\u0043\u006f\u0072r\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0063\u006f\u0072\u0065\u0020\u006d\u0069\u0073\u006d\u0061\u0074\u0063\u0068\u0020-\u0020\u0025d\u0028\u00250\u002e\u0034\u0066\u002c\u0020\u0025\u0076\u0029\u0020\u0076\u0073\u0020\u0025d(\u0025\u0030\u002e\u0034\u0066\u002c\u0020\u0025\u0076)\u0020\u0025\u0030\u002e\u0034\u0066",_afgf ,_cgg ,_cgg >=_dad ,_fgb ,_ab ,_ab >=_dad ,_cgg -_ab );
+};if _cgg >=_dad !=_ffa {return _c .Errorf (_ceea ,"\u0064\u0065\u0062\u0075\u0067\u0020\u0043o\u0072\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e \u0073\u0063\u006f\u0072\u0065 \u004d\u0069\u0073\u006d\u0061t\u0063\u0068 \u0062\u0065\u0074w\u0065\u0065\u006e\u0020\u0063\u006frr\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0020/\u0020\u0074\u0068\u0072\u0065s\u0068\u006f\u006c\u0064\u002e\u0020\u0043\u006f\u006dpa\u0072\u0069\u0073\u006f\u006e:\u0020\u0025\u0030\u002e\u0034\u0066\u0028\u0025\u0030\u002e\u0034\u0066\u002c\u0020\u0025\u0064\u0029\u0020\u003e\u003d\u0020\u00250\u002e\u0034\u0066\u0028\u0025\u0030\u002e\u0034\u0066\u0029\u0020\u0076\u0073\u0020\u0025\u0076",_cgg ,_cgg *float64 (_afg )*float64 (_aag ),_afgf ,_dad ,float32 (_dad )*float32 (_afg )*float32 (_aag ),_ffa );
+};};if _ffa {_ceg =true ;if _dec =_aab .ClassIDs .Add (_fff );_dec !=nil {return _c .Wrap (_dec ,_ceea ,"\u006f\u0076\u0065\u0072\u0054\u0068\u0072\u0065\u0073\u0068\u006f\u006c\u0064");};if _dec =_aab .ComponentPageNumbers .Add (_gb );_dec !=nil {return _c .Wrap (_dec ,_ceea ,"\u006f\u0076\u0065\u0072\u0054\u0068\u0072\u0065\u0073\u0068\u006f\u006c\u0064");
+};if _aab .Settings .KeepClassInstances {if _eae ,_dec =_efd .GetBitmap (_add );_dec !=nil {return _c .Wrap (_dec ,_ceea ,"\u004b\u0065\u0065\u0070Cl\u0061\u0073\u0073\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u002d \u0069");};if _bd ,_dec =_aab .ClassInstances .GetBitmaps (_fff );
+_dec !=nil {return _c .Wrap (_dec ,_ceea ,"K\u0065\u0065\u0070\u0043\u006c\u0061s\u0073\u0049\u006e\u0073\u0074\u0061\u006e\u0063\u0065s\u0020\u002d\u0020i\u0043l\u0061\u0073\u0073");};_bd .AddBitmap (_eae );if _eggc ,_dec =_bgd .Get (_add );_dec !=nil {return _c .Wrap (_dec ,_ceea ,"\u004be\u0065p\u0043\u006c\u0061\u0073\u0073I\u006e\u0073t\u0061\u006e\u0063\u0065\u0073");
+};_bd .AddBox (_eggc );};break ;};};if !_ceg {if _fcg =_aab .ClassIDs .Add (_bde );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0021\u0066\u006f\u0075\u006e\u0064");};if _fcg =_aab .ComponentPageNumbers .Add (_gb );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0021\u0066\u006f\u0075\u006e\u0064");
+};_bd =&_gd .Bitmaps {};if _eae ,_fcg =_efd .GetBitmap (_add );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0021\u0066\u006f\u0075\u006e\u0064");};_bd .AddBitmap (_eae );_ggd ,_egd :=_eae .Width ,_eae .Height ;_ca :=uint64 (_egd )*uint64 (_ggd );_aab .TemplatesSize .Add (_ca ,_bde );
+if _eggc ,_fcg =_bgd .Get (_add );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0021\u0066\u006f\u0075\u006e\u0064");};_bd .AddBox (_eggc );_aab .ClassInstances .AddBitmaps (_bd );_aab .CentroidPointsTemplates .AddPoint (_acc ,_ecb );_aab .FgTemplates .AddInt (_afg );
+_aab .UndilatedTemplates .AddBitmap (_eae );_agf =(_cg .Width -2*JbAddedPixels )*(_cg .Height -2*JbAddedPixels );if _fcg =_aab .TemplateAreas .Add (_agf );_fcg !=nil {return _c .Wrap (_fcg ,_ceea ,"\u0021\u0066\u006f\u0075\u006e\u0064");};};};_aab .NumberOfClasses =len (_aab .UndilatedTemplates .Values );
+return nil ;};func (_dac Settings )Validate ()error {const _fab ="\u0053\u0065\u0074\u0074\u0069\u006e\u0067\u0073\u002e\u0056\u0061\u006ci\u0064\u0061\u0074\u0065";if _dac .Thresh < 0.4||_dac .Thresh > 0.98{return _c .Error (_fab ,"\u006a\u0062i\u0067\u0032\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0074\u0068\u0072\u0065\u0073\u0068\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u005b\u0030\u002e\u0034\u0020\u002d\u0020\u0030\u002e\u0039\u0038\u005d");
+};if _dac .WeightFactor < 0.0||_dac .WeightFactor > 1.0{return _c .Error (_fab ,"\u006a\u0062i\u0067\u0032\u0020\u0065\u006ec\u006f\u0064\u0065\u0072\u0020w\u0065\u0069\u0067\u0068\u0074\u0020\u0066\u0061\u0063\u0074\u006f\u0072\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u005b\u0030\u002e\u0030\u0020\u002d\u0020\u0031\u002e\u0030\u005d");
+};if _dac .RankHaus < 0.5||_dac .RankHaus > 1.0{return _c .Error (_fab ,"\u006a\u0062\u0069\u0067\u0032\u0020\u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0072a\u006e\u006b\u0020\u0068\u0061\u0075\u0073\u0020\u0076\u0061\u006c\u0075\u0065 \u006e\u006f\u0074\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065 [\u0030\u002e\u0035\u0020\u002d\u0020\u0031\u002e\u0030\u005d");
+};if _dac .SizeHaus < 1||_dac .SizeHaus > 10{return _c .Error (_fab ,"\u006a\u0062\u0069\u0067\u0032 \u0065\u006e\u0063\u006f\u0064\u0065\u0072\u0020\u0073\u0069\u007a\u0065\u0020h\u0061\u0075\u0073\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006e\u006f\u0074\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u005b\u0031\u0020\u002d\u0020\u0031\u0030]");
+};switch _dac .Components {case _gd .ComponentConn ,_gd .ComponentCharacters ,_gd .ComponentWords :default:return _c .Error (_fab ,"\u0069n\u0076\u0061\u006c\u0069d\u0020\u0063\u006c\u0061\u0073s\u0065r\u0020c\u006f\u006d\u0070\u006f\u006e\u0065\u006et");
+};return nil ;};func Init (settings Settings )(*Classer ,error ){const _b ="\u0063\u006c\u0061s\u0073\u0065\u0072\u002e\u0049\u006e\u0069\u0074";_ef :=&Classer {Settings :settings ,Widths :map[int ]int {},Heights :map[int ]int {},TemplatesSize :_e .IntsMap {},TemplateAreas :&_e .IntSlice {},ComponentPageNumbers :&_e .IntSlice {},ClassIDs :&_e .IntSlice {},ComponentsNumber :&_e .IntSlice {},CentroidPoints :&_gd .Points {},CentroidPointsTemplates :&_gd .Points {},UndilatedTemplates :&_gd .Bitmaps {},DilatedTemplates :&_gd .Bitmaps {},ClassInstances :&_gd .BitmapsArray {},FgTemplates :&_e .NumSlice {}};
+if _efg :=_ef .Settings .Validate ();_efg !=nil {return nil ,_c .Wrap (_efg ,_b ,"");};return _ef ,nil ;};func (_ga *Classer )AddPage (inputPage *_gd .Bitmap ,pageNumber int ,method Method )(_cb error ){const _fc ="\u0043l\u0061s\u0073\u0065\u0072\u002e\u0041\u0064\u0064\u0050\u0061\u0067\u0065";
+_ga .Widths [pageNumber ]=inputPage .Width ;_ga .Heights [pageNumber ]=inputPage .Height ;if _cb =_ga .verifyMethod (method );_cb !=nil {return _c .Wrap (_cb ,_fc ,"");};_eg ,_ea ,_cb :=inputPage .GetComponents (_ga .Settings .Components ,_ga .Settings .MaxCompWidth ,_ga .Settings .MaxCompHeight );
+if _cb !=nil {return _c .Wrap (_cb ,_fc ,"");};_gf .Log .Debug ("\u0043\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074s\u003a\u0020\u0025\u0076",_eg );if _cb =_ga .addPageComponents (inputPage ,_ea ,_eg ,pageNumber ,method );_cb !=nil {return _c .Wrap (_cb ,_fc ,"");
+};return nil ;};var TwoByTwoWalk =[]int {0,0,0,1,-1,0,0,-1,1,0,-1,1,1,1,-1,-1,1,-1,0,-2,2,0,0,2,-2,0,-1,-2,1,-2,2,-1,2,1,1,2,-1,2,-2,1,-2,-1,-2,-2,2,-2,2,2,-2,2};func _acd (_ddb *Classer ,_bbd *_gd .Bitmap )*similarTemplatesFinder {return &similarTemplatesFinder {Width :_bbd .Width ,Height :_bbd .Height ,Classer :_ddb };
+};func (_gdf *Classer )classifyRankHaus (_abb *_gd .Boxes ,_gcbe *_gd .Bitmaps ,_bgafc int )error {const _gfeb ="\u0063\u006ca\u0073\u0073\u0069f\u0079\u0052\u0061\u006e\u006b\u0048\u0061\u0075\u0073";if _abb ==nil {return _c .Error (_gfeb ,"\u0062\u006fx\u0061\u0020\u006eo\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
+};if _gcbe ==nil {return _c .Error (_gfeb ,"\u0070\u0069x\u0061\u0020\u006eo\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};_fec :=len (_gcbe .Values );if _fec ==0{return _c .Error (_gfeb ,"e\u006dp\u0074\u0079\u0020\u006e\u0065\u0077\u0020\u0063o\u006d\u0070\u006f\u006een\u0074\u0073");
+};_gbg :=_gcbe .CountPixels ();_ebdb :=_gdf .Settings .SizeHaus ;_gfb :=_gd .SelCreateBrick (_ebdb ,_ebdb ,_ebdb /2,_ebdb /2,_gd .SelHit );_aca :=&_gd .Bitmaps {Values :make ([]*_gd .Bitmap ,_fec )};_dcca :=&_gd .Bitmaps {Values :make ([]*_gd .Bitmap ,_fec )};
+var (_bge ,_bcb ,_bda *_gd .Bitmap ;_ffb error ;);for _afbg :=0;_afbg < _fec ;_afbg ++{_bge ,_ffb =_gcbe .GetBitmap (_afbg );if _ffb !=nil {return _c .Wrap (_ffb ,_gfeb ,"");};_bcb ,_ffb =_bge .AddBorderGeneral (JbAddedPixels ,JbAddedPixels ,JbAddedPixels ,JbAddedPixels ,0);
+if _ffb !=nil {return _c .Wrap (_ffb ,_gfeb ,"");};_bda ,_ffb =_gd .Dilate (nil ,_bcb ,_gfb );if _ffb !=nil {return _c .Wrap (_ffb ,_gfeb ,"");};_aca .Values [_fec ]=_bcb ;_dcca .Values [_fec ]=_bda ;};_efac ,_ffb :=_gd .Centroids (_aca .Values );if _ffb !=nil {return _c .Wrap (_ffb ,_gfeb ,"");
+};if _ffb =_efac .Add (_gdf .CentroidPoints );_ffb !=nil {_gf .Log .Trace ("\u004e\u006f\u0020\u0063en\u0074\u0072\u006f\u0069\u0064\u0073\u0020\u0074\u006f\u0020\u0061\u0064\u0064");};if _gdf .Settings .RankHaus ==1.0{_ffb =_gdf .classifyRankHouseOne (_abb ,_gcbe ,_aca ,_dcca ,_efac ,_bgafc );
+}else {_ffb =_gdf .classifyRankHouseNonOne (_abb ,_gcbe ,_aca ,_dcca ,_efac ,_gbg ,_bgafc );};if _ffb !=nil {return _c .Wrap (_ffb ,_gfeb ,"");};return nil ;};func (_ced *Classer )classifyRankHouseNonOne (_baa *_gd .Boxes ,_afgb ,_cbe ,_bgdd *_gd .Bitmaps ,_caa *_gd .Points ,_bdc *_e .NumSlice ,_bec int )(_gfg error ){const _ded ="\u0043\u006c\u0061\u0073s\u0065\u0072\u002e\u0063\u006c\u0061\u0073\u0073\u0069\u0066y\u0052a\u006e\u006b\u0048\u006f\u0075\u0073\u0065O\u006e\u0065";
+var (_acb ,_eff ,_gaaf ,_fggc float32 ;_dda ,_daff ,_efc int ;_cbb ,_efb ,_ecf ,_cea ,_cge *_gd .Bitmap ;_cff ,_ebab bool ;);_addb :=_gd .MakePixelSumTab8 ();for _fda :=0;_fda < len (_afgb .Values );_fda ++{if _efb ,_gfg =_cbe .GetBitmap (_fda );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"b\u006d\u0073\u0031\u002e\u0047\u0065\u0074\u0028\u0069\u0029");
+};if _dda ,_gfg =_bdc .GetInt (_fda );_gfg !=nil {_gf .Log .Trace ("\u0047\u0065t\u0074\u0069\u006e\u0067 \u0046\u0047T\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0073 \u0061\u0074\u003a\u0020\u0025\u0064\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_fda ,_gfg );
+};if _ecf ,_gfg =_bgdd .GetBitmap (_fda );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"b\u006d\u0073\u0032\u002e\u0047\u0065\u0074\u0028\u0069\u0029");};if _acb ,_eff ,_gfg =_caa .GetGeometry (_fda );_gfg !=nil {return _c .Wrapf (_gfg ,_ded ,"\u0070t\u0061[\u0069\u005d\u002e\u0047\u0065\u006f\u006d\u0065\u0074\u0072\u0079");
+};_efcb :=len (_ced .UndilatedTemplates .Values );_cff =false ;_gbge :=_acd (_ced ,_efb );for _efc =_gbge .Next ();_efc > -1;{if _cea ,_gfg =_ced .UndilatedTemplates .GetBitmap (_efc );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"\u0070\u0069\u0078\u0061\u0074\u002e\u005b\u0069\u0043l\u0061\u0073\u0073\u005d");
+};if _daff ,_gfg =_ced .FgTemplates .GetInt (_efc );_gfg !=nil {_gf .Log .Trace ("\u0047\u0065\u0074\u0074\u0069\u006eg\u0020\u0046\u0047\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u005b\u0025d\u005d\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_efc ,_gfg );
+};if _cge ,_gfg =_ced .DilatedTemplates .GetBitmap (_efc );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"\u0070\u0069\u0078\u0061\u0074\u0064\u005b\u0069\u0043l\u0061\u0073\u0073\u005d");};if _gaaf ,_fggc ,_gfg =_ced .CentroidPointsTemplates .GetGeometry (_efc );
+_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"\u0043\u0065\u006et\u0072\u006f\u0069\u0064P\u006f\u0069\u006e\u0074\u0073\u0054\u0065m\u0070\u006c\u0061\u0074\u0065\u0073\u005b\u0069\u0043\u006c\u0061\u0073\u0073\u005d");};_ebab ,_gfg =_gd .RankHausTest (_efb ,_ecf ,_cea ,_cge ,_acb -_gaaf ,_eff -_fggc ,MaxDiffWidth ,MaxDiffHeight ,_dda ,_daff ,float32 (_ced .Settings .RankHaus ),_addb );
+if _gfg !=nil {return _c .Wrap (_gfg ,_ded ,"");};if _ebab {_cff =true ;if _gfg =_ced .ClassIDs .Add (_efc );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"");};if _gfg =_ced .ComponentPageNumbers .Add (_bec );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"");};
+if _ced .Settings .KeepClassInstances {_cag ,_ace :=_ced .ClassInstances .GetBitmaps (_efc );if _ace !=nil {return _c .Wrap (_ace ,_ded ,"\u0063\u002e\u0050\u0069\u0078\u0061\u0061\u002e\u0047\u0065\u0074B\u0069\u0074\u006d\u0061\u0070\u0073\u0028\u0069\u0043\u006ca\u0073\u0073\u0029");
+};if _cbb ,_ace =_afgb .GetBitmap (_fda );_ace !=nil {return _c .Wrap (_ace ,_ded ,"\u0070i\u0078\u0061\u005b\u0069\u005d");};_cag .Values =append (_cag .Values ,_cbb );_dfb ,_ace :=_baa .Get (_fda );if _ace !=nil {return _c .Wrap (_ace ,_ded ,"b\u006f\u0078\u0061\u002e\u0047\u0065\u0074\u0028\u0069\u0029");
+};_cag .Boxes =append (_cag .Boxes ,_dfb );};break ;};};if !_cff {if _gfg =_ced .ClassIDs .Add (_efcb );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"\u0021\u0066\u006f\u0075\u006e\u0064");};if _gfg =_ced .ComponentPageNumbers .Add (_bec );_gfg !=nil {return _c .Wrap (_gfg ,_ded ,"\u0021\u0066\u006f\u0075\u006e\u0064");
+};_cae :=&_gd .Bitmaps {};_cbb =_afgb .Values [_fda ];_cae .AddBitmap (_cbb );_ggf ,_eaeb :=_cbb .Width ,_cbb .Height ;_ced .TemplatesSize .Add (uint64 (_ggf )*uint64 (_eaeb ),_efcb );_ade ,_ddde :=_baa .Get (_fda );if _ddde !=nil {return _c .Wrap (_ddde ,_ded ,"\u0021\u0066\u006f\u0075\u006e\u0064");
+};_cae .AddBox (_ade );_ced .ClassInstances .AddBitmaps (_cae );_ced .CentroidPointsTemplates .AddPoint (_acb ,_eff );_ced .UndilatedTemplates .AddBitmap (_efb );_ced .DilatedTemplates .AddBitmap (_ecf );_ced .FgTemplates .AddInt (_dda );};};_ced .NumberOfClasses =len (_ced .UndilatedTemplates .Values );
+return nil ;};const JbAddedPixels =6;func (_ebb *Settings )SetDefault (){if _ebb .MaxCompWidth ==0{switch _ebb .Components {case _gd .ComponentConn :_ebb .MaxCompWidth =MaxConnCompWidth ;case _gd .ComponentCharacters :_ebb .MaxCompWidth =MaxCharCompWidth ;
+case _gd .ComponentWords :_ebb .MaxCompWidth =MaxWordCompWidth ;};};if _ebb .MaxCompHeight ==0{_ebb .MaxCompHeight =MaxCompHeight ;};if _ebb .Thresh ==0.0{_ebb .Thresh =0.9;};if _ebb .WeightFactor ==0.0{_ebb .WeightFactor =0.75;};if _ebb .RankHaus ==0.0{_ebb .RankHaus =0.97;
+};if _ebb .SizeHaus ==0{_ebb .SizeHaus =2;};};func (_bc *Classer )ComputeLLCorners ()(_cd error ){const _egb ="\u0043l\u0061\u0073\u0073\u0065\u0072\u002e\u0043\u006f\u006d\u0070\u0075t\u0065\u004c\u004c\u0043\u006f\u0072\u006e\u0065\u0072\u0073";if _bc .PtaUL ==nil {return _c .Error (_egb ,"\u0055\u004c\u0020\u0043or\u006e\u0065\u0072\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006ee\u0064");
+};_egf :=len (*_bc .PtaUL );_bc .PtaLL =&_gd .Points {};var (_gc ,_cdd float32 ;_gac ,_fce int ;_d *_gd .Bitmap ;);for _db :=0;_db < _egf ;_db ++{_gc ,_cdd ,_cd =_bc .PtaUL .GetGeometry (_db );if _cd !=nil {_gf .Log .Debug ("\u0047e\u0074\u0074\u0069\u006e\u0067\u0020\u0050\u0074\u0061\u0055\u004c \u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_cd );
+return _c .Wrap (_cd ,_egb ,"\u0050\u0074\u0061\u0055\u004c\u0020\u0047\u0065\u006fm\u0065\u0074\u0072\u0079");};_gac ,_cd =_bc .ClassIDs .Get (_db );if _cd !=nil {_gf .Log .Debug ("\u0047\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0043\u006c\u0061s\u0073\u0049\u0044\u0020\u0066\u0061\u0069\u006c\u0065\u0064:\u0020\u0025\u0076",_cd );
+return _c .Wrap (_cd ,_egb ,"\u0043l\u0061\u0073\u0073\u0049\u0044");};_d ,_cd =_bc .UndilatedTemplates .GetBitmap (_gac );if _cd !=nil {_gf .Log .Debug ("\u0047\u0065t\u0074\u0069\u006e\u0067 \u0055\u006ed\u0069\u006c\u0061\u0074\u0065\u0064\u0054\u0065m\u0070\u006c\u0061\u0074\u0065\u0073\u0020\u0066\u0061\u0069\u006c\u0065d\u003a\u0020\u0025\u0076",_cd );
+return _c .Wrap (_cd ,_egb ,"\u0055\u006e\u0064\u0069la\u0074\u0065\u0064\u0020\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0073");};_fce =_d .Height ;_bc .PtaLL .AddPoint (_gc ,_cdd +float32 (_fce ));};return nil ;};func (_gacb *Classer )getULCorners (_eab *_gd .Bitmap ,_ff *_gd .Boxes )error {const _af ="\u0067\u0065\u0074U\u004c\u0043\u006f\u0072\u006e\u0065\u0072\u0073";
+if _eab ==nil {return _c .Error (_af ,"\u006e\u0069l\u0020\u0069\u006da\u0067\u0065\u0020\u0062\u0069\u0074\u006d\u0061\u0070");};if _ff ==nil {return _c .Error (_af ,"\u006e\u0069\u006c\u0020\u0062\u006f\u0075\u006e\u0064\u0073");};if _gacb .PtaUL ==nil {_gacb .PtaUL =&_gd .Points {};
+};_ada :=len (*_ff );var (_ba ,_eb ,_gg ,_dc int ;_bg ,_gab ,_gcc ,_fd float32 ;_cdb error ;_aa *_a .Rectangle ;_bb *_gd .Bitmap ;_eba _a .Point ;);for _aac :=0;_aac < _ada ;_aac ++{_ba =_gacb .BaseIndex +_aac ;if _bg ,_gab ,_cdb =_gacb .CentroidPoints .GetGeometry (_ba );
+_cdb !=nil {return _c .Wrap (_cdb ,_af ,"\u0043\u0065\u006e\u0074\u0072\u006f\u0069\u0064\u0050o\u0069\u006e\u0074\u0073");};if _eb ,_cdb =_gacb .ClassIDs .Get (_ba );_cdb !=nil {return _c .Wrap (_cdb ,_af ,"\u0043\u006c\u0061s\u0073\u0049\u0044\u0073\u002e\u0047\u0065\u0074");
+};if _gcc ,_fd ,_cdb =_gacb .CentroidPointsTemplates .GetGeometry (_eb );_cdb !=nil {return _c .Wrap (_cdb ,_af ,"\u0043\u0065\u006etr\u006f\u0069\u0064\u0050\u006f\u0069\u006e\u0074\u0073\u0054\u0065\u006d\u0070\u006c\u0061\u0074\u0065\u0073");};_ee :=_gcc -_bg ;
+_ec :=_fd -_gab ;if _ee >=0{_gg =int (_ee +0.5);}else {_gg =int (_ee -0.5);};if _ec >=0{_dc =int (_ec +0.5);}else {_dc =int (_ec -0.5);};if _aa ,_cdb =_ff .Get (_aac );_cdb !=nil {return _c .Wrap (_cdb ,_af ,"");};_dfc ,_eac :=_aa .Min .X ,_aa .Min .Y ;
+_bb ,_cdb =_gacb .UndilatedTemplates .GetBitmap (_eb );if _cdb !=nil {return _c .Wrap (_cdb ,_af ,"\u0055\u006e\u0064\u0069\u006c\u0061\u0074\u0065\u0064\u0054e\u006d\u0070\u006c\u0061\u0074\u0065\u0073.\u0047\u0065\u0074\u0028\u0069\u0043\u006c\u0061\u0073\u0073\u0029");
+};_eba ,_cdb =_fe (_eab ,_dfc ,_eac ,_gg ,_dc ,_bb );if _cdb !=nil {return _c .Wrap (_cdb ,_af ,"");};_gacb .PtaUL .AddPoint (float32 (_dfc -_gg +_eba .X ),float32 (_eac -_dc +_eba .Y ));};return nil ;};type similarTemplatesFinder struct{Classer *Classer ;
+Width int ;Height int ;Index int ;CurrentNumbers []int ;N int ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/errors/errors.go b/unipdf/internal/jbig2/errors/errors.go
new file mode 100644
index 0000000..5b4b265
--- /dev/null
+++ b/unipdf/internal/jbig2/errors/errors.go
@@ -0,0 +1,16 @@
+//
+// 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 errors ;import (_d "fmt";_da "golang.org/x/xerrors";);func (_de *processError )Error ()string {var _dfg string ;if _de ._e !=""{_dfg =_de ._e ;};_dfg +="\u0050r\u006f\u0063\u0065\u0073\u0073\u003a "+_de ._dc ;if _de ._eb !=""{_dfg +="\u0020\u004d\u0065\u0073\u0073\u0061\u0067\u0065\u003a\u0020"+_de ._eb ;
+};if _de ._g !=nil {_dfg +="\u002e\u0020"+_de ._g .Error ();};return _dfg ;};func (_df *processError )Unwrap ()error {return _df ._g };var _ _da .Wrapper =(*processError )(nil );func Error (processName ,message string )error {return _b (message ,processName )};
+func Errorf (processName ,message string ,arguments ...interface{})error {return _b (_d .Sprintf (message ,arguments ...),processName );};func _b (_gf ,_ag string )*processError {return &processError {_e :"\u005b\u0055\u006e\u0069\u0050\u0044\u0046\u005d",_eb :_gf ,_dc :_ag };
+};type processError struct{_e string ;_dc string ;_eb string ;_g error ;};func Wrap (err error ,processName ,message string )error {if _ec ,_f :=err .(*processError );_f {_ec ._e ="";};_c :=_b (message ,processName );_c ._g =err ;return _c ;};func Wrapf (err error ,processName ,message string ,arguments ...interface{})error {if _fd ,_ga :=err .(*processError );
+_ga {_fd ._e ="";};_ad :=_b (_d .Sprintf (message ,arguments ...),processName );_ad ._g =err ;return _ad ;}; \ No newline at end of file
diff --git a/unipdf/internal/jbig2/internal/internal.go b/unipdf/internal/jbig2/internal/internal.go
new file mode 100644
index 0000000..ef62243
--- /dev/null
+++ b/unipdf/internal/jbig2/internal/internal.go
@@ -0,0 +1,12 @@
+//
+// 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 internal ;import _a "errors";var ErrOOB =_a .New ("o\u0075\u0074\u0020\u006f\u0066\u0020\u0062\u0061\u006e\u0064"); \ No newline at end of file
diff --git a/unipdf/internal/jbig2/jbig2.go b/unipdf/internal/jbig2/jbig2.go
new file mode 100644
index 0000000..9114a49
--- /dev/null
+++ b/unipdf/internal/jbig2/jbig2.go
@@ -0,0 +1,17 @@
+//
+// 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 jbig2 ;import (_d "github.com/unidoc/unipdf/v4/internal/bitwise";_gd "github.com/unidoc/unipdf/v4/internal/jbig2/decoder";_ee "github.com/unidoc/unipdf/v4/internal/jbig2/document";_af "github.com/unidoc/unipdf/v4/internal/jbig2/document/segments";
+_e "github.com/unidoc/unipdf/v4/internal/jbig2/errors";_a "sort";);func DecodeBytes (encoded []byte ,parameters _gd .Parameters ,globals ...Globals )([]byte ,error ){var _gf Globals ;if len (globals )> 0{_gf =globals [0];};_c ,_f :=_gd .Decode (encoded ,parameters ,_gf .ToDocumentGlobals ());
+if _f !=nil {return nil ,_f ;};return _c .DecodeNextPage ();};func DecodeGlobals (encoded []byte )(Globals ,error ){const _fd ="\u0044\u0065\u0063\u006f\u0064\u0065\u0047\u006c\u006f\u0062\u0061\u006c\u0073";_ga :=_d .NewReader (encoded );_gdg ,_ea :=_ee .DecodeDocument (_ga ,nil );
+if _ea !=nil {return nil ,_e .Wrap (_ea ,_fd ,"");};if _gdg .GlobalSegments ==nil ||(_gdg .GlobalSegments .Segments ==nil ){return nil ,_e .Error (_fd ,"\u006eo\u0020\u0067\u006c\u006f\u0062\u0061\u006c\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0073\u0020\u0066\u006f\u0075\u006e\u0064");
+};_cg :=Globals {};for _ ,_cd :=range _gdg .GlobalSegments .Segments {_cg [int (_cd .SegmentNumber )]=_cd ;};return _cg ,nil ;};type Globals map[int ]*_af .Header ;func (_de Globals )ToDocumentGlobals ()*_ee .Globals {if _de ==nil {return nil ;};_b :=[]*_af .Header {};
+for _ ,_gb :=range _de {_b =append (_b ,_gb );};_a .Slice (_b ,func (_ad ,_ed int )bool {return _b [_ad ].SegmentNumber < _b [_ed ].SegmentNumber });return &_ee .Globals {Segments :_b };}; \ No newline at end of file