unipdf/internal/bitwise/bitwise.go
2020-08-31 21:12:07 +00:00

12 lines
21 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package bitwise ;import (_cf "encoding/binary";_ad "errors";_ac "github.com/unidoc/unipdf/v3/common";_e "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_c "io";);func NewWriterMSB (data []byte )*Writer {return &Writer {_cgf :data ,_cfac :true }};func (_ab *BufferedWriter )WriteByte (bt byte )error {if _ab ._eb > len (_ab ._cff )-1||(_ab ._eb ==len (_ab ._cff )-1&&_ab ._cfb !=0){_ab .expandIfNeeded (1);};_ab .writeByte (bt );return nil ;};func (_gfgc *Writer )WriteBit (bit int )error {switch bit {case 0,1:return _gfgc .writeBit (uint8 (bit ));};return _e .Error ("\u0057\u0072\u0069\u0074\u0065\u0042\u0069\u0074","\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0062\u0069\u0074\u0020v\u0061\u006c\u0075\u0065");};func (_fec *SubstreamReader )StreamPosition ()int64 {return int64 (_fec ._cec )};func (_cba *Writer )WriteBits (bits uint64 ,number int )(_cfaf int ,_efa error ){const _gfe ="\u0057\u0072\u0069\u0074\u0065\u0072\u002e\u0057\u0072\u0069\u0074\u0065r\u0042\u0069\u0074\u0073";if number < 0||number > 64{return 0,_e .Errorf (_gfe ,"\u0062i\u0074\u0073 \u006e\u0075\u006db\u0065\u0072\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0069\u006e\u0020r\u0061\u006e\u0067\u0065\u0020\u003c\u0030\u002c\u0036\u0034\u003e,\u0020\u0069\u0073\u003a\u0020\u0027\u0025\u0064\u0027",number );};if number ==0{return 0,nil ;};_db :=number /8;if _db > 0{_bcae :=number -_db *8;for _bbbf :=_db -1;_bbbf >=0;_bbbf --{_edf :=byte ((bits >>uint (_bbbf *8+_bcae ))&0xff);if _efa =_cba .WriteByte (_edf );_efa !=nil {return _cfaf ,_e .Wrapf (_efa ,_gfe ,"\u0062\u0079\u0074\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_db -_bbbf +1);};};number -=_db *8;if number ==0{return _db ,nil ;};};var _egbb int ;for _bbdd :=0;_bbdd < number ;_bbdd ++{if _cba ._cfac {_egbb =int ((bits >>uint (number -1-_bbdd ))&0x1);}else {_egbb =int (bits &0x1);bits >>=1;};if _efa =_cba .WriteBit (_egbb );_efa !=nil {return _cfaf ,_e .Wrapf (_efa ,_gfe ,"\u0062i\u0074\u003a\u0020\u0025\u0064",_bbdd );};};return _db ,nil ;};func (_fbb *SubstreamReader )readUnalignedByte ()(_fdg byte ,_egf error ){_de :=_fbb ._fede ;_fdg =_fbb ._fdb <<(8-_de );_fbb ._fdb ,_egf =_fbb .readBufferByte ();if _egf !=nil {return 0,_egf ;};_fdg |=_fbb ._fdb >>_de ;_fbb ._fdb &=1<<_de -1;return _fdg ,nil ;};func (_fa *BufferedWriter )fullOffset ()int {_abb :=_fa ._eb ;if _fa ._cfb !=0{_abb ++;};return _abb ;};func (_aac *SubstreamReader )readBool ()(_acc bool ,_ffc error ){if _aac ._fede ==0{_aac ._fdb ,_ffc =_aac .readBufferByte ();if _ffc !=nil {return false ,_ffc ;};_acc =(_aac ._fdb &0x80)!=0;_aac ._fdb ,_aac ._fede =_aac ._fdb &0x7f,7;return _acc ,nil ;};_aac ._fede --;_acc =(_aac ._fdb &(1<<_aac ._fede ))!=0;_aac ._fdb &=1<<_aac ._fede -1;return _acc ,nil ;};func (_geb *BufferedWriter )writeFullBytes (_cgd []byte )int {_ege :=copy (_geb ._cff [_geb .fullOffset ():],_cgd );_geb ._eb +=_ege ;return _ege ;};type SubstreamReader struct{_cec uint64 ;_fedb StreamReader ;_dfa uint64 ;_gea uint64 ;_bbe []byte ;_bee uint64 ;_fad uint64 ;_fdb byte ;_fede byte ;_ccg uint64 ;_ggb byte ;};func (_ce *Reader )Mark (){_ce ._fba =_ce ._cbg ;_ce ._bbf =_ce ._fag };func (_ead *BufferedWriter )writeShiftedBytes (_aggd []byte )int {for _ ,_fab :=range _aggd {_ead .writeByte (_fab );};return len (_aggd );};func _aea (_gbf ,_fgeb uint64 )uint64 {if _gbf < _fgeb {return _gbf ;};return _fgeb ;};func (_faa *BufferedWriter )tryGrowByReslice (_cbf int )bool {if _be :=len (_faa ._cff );_cbf <=cap (_faa ._cff )-_be {_faa ._cff =_faa ._cff [:_be +_cbf ];return true ;};return false ;};func (_eeb *Reader )Seek (offset int64 ,whence int )(int64 ,error ){_eeb ._eef =-1;var _gcc int64 ;switch whence {case _c .SeekStart :_gcc =offset ;case _c .SeekCurrent :_gcc =_eeb ._cbg +offset ;case _c .SeekEnd :_gcc =int64 (len (_eeb ._ddce ))+offset ;default:return 0,_ad .New ("\u0072\u0065\u0061de\u0072\u002e\u0052\u0065\u0061\u0064\u0065\u0072\u002eS\u0065e\u006b:\u0020i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0077\u0068\u0065\u006e\u0063\u0065");};if _gcc < 0{return 0,_ad .New ("\u0072\u0065a\u0064\u0065\u0072\u002eR\u0065\u0061d\u0065\u0072\u002e\u0053\u0065\u0065\u006b\u003a \u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065\u0020\u0070\u006f\u0073i\u0074\u0069\u006f\u006e");};_eeb ._cbg =_gcc ;_eeb ._fag =0;return _gcc ,nil ;};func (_gbb *Writer )writeByte (_fade byte )error {if _gbb ._affa > len (_gbb ._cgf )-1{return _c .EOF ;};if _gbb ._affa ==len (_gbb ._cgf )-1&&_gbb ._aace !=0{return _c .EOF ;};if _gbb ._aace ==0{_gbb ._cgf [_gbb ._affa ]=_fade ;_gbb ._affa ++;return nil ;};if _gbb ._cfac {_gbb ._cgf [_gbb ._affa ]|=_fade >>_gbb ._aace ;_gbb ._affa ++;_gbb ._cgf [_gbb ._affa ]=byte (uint16 (_fade )<<(8-_gbb ._aace )&0xff);}else {_gbb ._cgf [_gbb ._affa ]|=byte (uint16 (_fade )<<_gbb ._aace &0xff);_gbb ._affa ++;_gbb ._cgf [_gbb ._affa ]=_fade >>(8-_gbb ._aace );};return nil ;};func (_ebe *BufferedWriter )grow (_bb int ){if _ebe ._cff ==nil &&_bb < _d {_ebe ._cff =make ([]byte ,_bb ,_d );return ;};_aae :=len (_ebe ._cff );if _ebe ._cfb !=0{_aae ++;};_ae :=cap (_ebe ._cff );switch {case _bb <=_ae /2-_aae :_ac .Log .Trace ("\u005b\u0042\u0075\u0066\u0066\u0065r\u0065\u0064\u0057\u0072\u0069t\u0065\u0072\u005d\u0020\u0067\u0072o\u0077\u0020\u002d\u0020\u0072e\u0073\u006c\u0069\u0063\u0065\u0020\u006f\u006e\u006c\u0079\u002e\u0020L\u0065\u006e\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0043\u0061\u0070\u003a\u0020'\u0025\u0064\u0027\u002c\u0020\u006e\u003a\u0020'\u0025\u0064\u0027",len (_ebe ._cff ),cap (_ebe ._cff ),_bb );_ac .Log .Trace ("\u0020\u006e\u0020\u003c\u003d\u0020\u0063\u0020\u002f\u0020\u0032\u0020\u002d\u006d\u002e \u0043:\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u006d\u003a\u0020\u0027\u0025\u0064\u0027",_ae ,_aae );copy (_ebe ._cff ,_ebe ._cff [_ebe .fullOffset ():]);case _ae > _g -_ae -_bb :_ac .Log .Error ("\u0042\u0055F\u0046\u0045\u0052 \u0074\u006f\u006f\u0020\u006c\u0061\u0072\u0067\u0065");return ;default:_gae :=make ([]byte ,2*_ae +_bb );copy (_gae ,_ebe ._cff );_ebe ._cff =_gae ;};_ebe ._cff =_ebe ._cff [:_aae +_bb ];};var _ _c .ByteWriter =&BufferedWriter {};func (_dgf *SubstreamReader )Seek (offset int64 ,whence int )(int64 ,error ){switch whence {case _c .SeekStart :_dgf ._cec =uint64 (offset );case _c .SeekCurrent :_dgf ._cec +=uint64 (offset );case _c .SeekEnd :_dgf ._cec =_dgf ._gea +uint64 (offset );default:return 0,_ad .New ("\u0072\u0065\u0061d\u0065\u0072\u002e\u0053\u0075\u0062\u0073\u0074\u0072\u0065\u0061\u006d\u0052\u0065\u0061\u0064\u0065\u0072\u002e\u0053\u0065\u0065\u006b\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0077\u0068\u0065\u006e\u0063\u0065");};_dgf ._fede =0;return int64 (_dgf ._cec ),nil ;};func (_bbb *BufferedWriter )writeByte (_egb byte ){switch {case _bbb ._cfb ==0:_bbb ._cff [_bbb ._eb ]=_egb ;_bbb ._eb ++;case _bbb ._bg :_bbb ._cff [_bbb ._eb ]|=_egb >>_bbb ._cfb ;_bbb ._eb ++;_bbb ._cff [_bbb ._eb ]=byte (uint16 (_egb )<<(8-_bbb ._cfb )&0xff);default:_bbb ._cff [_bbb ._eb ]|=byte (uint16 (_egb )<<_bbb ._cfb &0xff);_bbb ._eb ++;_bbb ._cff [_bbb ._eb ]=_egb >>(8-_bbb ._cfb );};};func (_bbc *Reader )BitPosition ()int {return int (_bbc ._fag )};func BufferedMSB ()*BufferedWriter {return &BufferedWriter {_bg :true }};func (_bcg *SubstreamReader )ReadBool ()(bool ,error ){return _bcg .readBool ()};func (_f *BufferedWriter )Reset (){_f ._cff =_f ._cff [:0];_f ._eb =0;_f ._cfb =0};func (_fdf *Reader )readBufferByte ()(byte ,error ){if _fdf ._cbg >=int64 (len (_fdf ._ddce )){return 0,_c .EOF ;};_fdf ._eef =-1;_egg :=_fdf ._ddce [_fdf ._cbg ];_fdf ._cbg ++;_fdf ._ccf =int (_egg );return _egg ,nil ;};func NewSubstreamReader (r StreamReader ,offset ,length uint64 )(*SubstreamReader ,error ){if r ==nil {return nil ,_ad .New ("\u0072o\u006ft\u0020\u0072\u0065\u0061\u0064e\u0072\u0020i\u0073\u0020\u006e\u0069\u006c");};_ac .Log .Trace ("\u004e\u0065\u0077\u0053\u0075\u0062\u0073\u0074r\u0065\u0061\u006dRe\u0061\u0064\u0065\u0072\u0020\u0061t\u0020\u006f\u0066\u0066\u0073\u0065\u0074\u003a\u0020\u0025\u0064\u0020\u0077\u0069\u0074h\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003a \u0025\u0064",offset ,length );return &SubstreamReader {_fedb :r ,_dfa :offset ,_gea :length ,_bbe :make ([]byte ,length )},nil ;};func (_fgc *SubstreamReader )ReadUint32 ()(uint32 ,error ){_fcc :=make ([]byte ,4);_ ,_cac :=_fgc .Read (_fcc );if _cac !=nil {return 0,_cac ;};return _cf .BigEndian .Uint32 (_fcc ),nil ;};func (_gfgg *Writer )ResetBit (){_gfgg ._aace =0};func (_aeg *SubstreamReader )Mark (){_aeg ._ccg =_aeg ._cec ;_aeg ._ggb =_aeg ._fede };var _ _c .Writer =&BufferedWriter {};func (_fff *Reader )ReadUint32 ()(uint32 ,error ){_cag :=make ([]byte ,4);_ ,_agf :=_fff .Read (_cag );if _agf !=nil {return 0,_agf ;};return _cf .BigEndian .Uint32 (_cag ),nil ;};func (_gfa *BufferedWriter )byteCapacity ()int {_cbb :=len (_gfa ._cff )-_gfa ._eb ;if _gfa ._cfb !=0{_cbb --;};return _cbb ;};const (_d =64;_g =int (^uint (0)>>1););func (_gdbd *SubstreamReader )ReadBits (n byte )(_bdg uint64 ,_fc error ){if n < _gdbd ._fede {_bbed :=_gdbd ._fede -n ;_bdg =uint64 (_gdbd ._fdb >>_bbed );_gdbd ._fdb &=1<<_bbed -1;_gdbd ._fede =_bbed ;return _bdg ,nil ;};if n > _gdbd ._fede {if _gdbd ._fede > 0{_bdg =uint64 (_gdbd ._fdb );n -=_gdbd ._fede ;};var _dg byte ;for n >=8{_dg ,_fc =_gdbd .readBufferByte ();if _fc !=nil {return 0,_fc ;};_bdg =_bdg <<8+uint64 (_dg );n -=8;};if n > 0{if _gdbd ._fdb ,_fc =_gdbd .readBufferByte ();_fc !=nil {return 0,_fc ;};_gdef :=8-n ;_bdg =_bdg <<n +uint64 (_gdbd ._fdb >>_gdef );_gdbd ._fdb &=1<<_gdef -1;_gdbd ._fede =_gdef ;}else {_gdbd ._fede =0;};return _bdg ,nil ;};_gdbd ._fede =0;return uint64 (_gdbd ._fdb ),nil ;};func (_ag *BufferedWriter )FinishByte (){if _ag ._cfb ==0{return ;};_ag ._cfb =0;_ag ._eb ++;};func (_gfg *SubstreamReader )ReadByte ()(byte ,error ){if _gfg ._fede ==0{return _gfg .readBufferByte ();};return _gfg .readUnalignedByte ();};func NewWriter (data []byte )*Writer {return &Writer {_cgf :data }};func (_cdac *Writer )FinishByte (){if _cdac ._aace ==0{return ;};_cdac ._aace =0;_cdac ._affa ++;};func (_beg *Reader )Length ()uint64 {return uint64 (len (_beg ._ddce ))};func (_ec *BufferedWriter )Data ()[]byte {return _ec ._cff };func (_adc *SubstreamReader )fillBuffer ()error {if uint64 (_adc ._fedb .StreamPosition ())!=_adc ._cec +_adc ._dfa {_ ,_gfd :=_adc ._fedb .Seek (int64 (_adc ._cec +_adc ._dfa ),_c .SeekStart );if _gfd !=nil {return _gfd ;};};_adc ._bee =uint64 (_adc ._cec );_afa :=_aea (uint64 (len (_adc ._bbe )),_adc ._gea -_adc ._cec );_cae :=make ([]byte ,_afa );_ecd ,_gcb :=_adc ._fedb .Read (_cae );if _gcb !=nil {return _gcb ;};for _gdbbe :=uint64 (0);_gdbbe < _afa ;_gdbbe ++{_adc ._bbe [_gdbbe ]=_cae [_gdbbe ];};_adc ._fad =_adc ._bee +uint64 (_ecd );return nil ;};var _ BinaryWriter =&Writer {};func (_fge *Reader )ReadBits (n byte )(_cgda uint64 ,_afb error ){if n < _fge ._fag {_cgdg :=_fge ._fag -n ;_cgda =uint64 (_fge ._gdb >>_cgdg );_fge ._gdb &=1<<_cgdg -1;_fge ._fag =_cgdg ;return _cgda ,nil ;};if n > _fge ._fag {if _fge ._fag > 0{_cgda =uint64 (_fge ._gdb );n -=_fge ._fag ;};for n >=8{_ba ,_dfd :=_fge .readBufferByte ();if _dfd !=nil {return 0,_dfd ;};_cgda =_cgda <<8+uint64 (_ba );n -=8;};if n > 0{if _fge ._gdb ,_afb =_fge .readBufferByte ();_afb !=nil {return 0,_afb ;};_bca :=8-n ;_cgda =_cgda <<n +uint64 (_fge ._gdb >>_bca );_fge ._gdb &=1<<_bca -1;_fge ._fag =_bca ;}else {_fge ._fag =0;};return _cgda ,nil ;};_fge ._fag =0;return uint64 (_fge ._gdb ),nil ;};func (_febg *Reader )readBool ()(_gb bool ,_bfe error ){if _febg ._fag ==0{_febg ._gdb ,_bfe =_febg .readBufferByte ();if _bfe !=nil {return false ,_bfe ;};_gb =(_febg ._gdb &0x80)!=0;_febg ._gdb ,_febg ._fag =_febg ._gdb &0x7f,7;return _gb ,nil ;};_febg ._fag --;_gb =(_febg ._gdb &(1<<_febg ._fag ))!=0;_febg ._gdb &=1<<_febg ._fag -1;return _gb ,nil ;};func (_bec *Reader )readUnalignedByte ()(_ebee byte ,_agfb error ){_cda :=_bec ._fag ;_ebee =_bec ._gdb <<(8-_cda );_bec ._gdb ,_agfb =_bec .readBufferByte ();if _agfb !=nil {return 0,_agfb ;};_ebee |=_bec ._gdb >>_cda ;_bec ._gdb &=1<<_cda -1;return _ebee ,nil ;};func (_fedc *SubstreamReader )Length ()uint64 {return _fedc ._gea };func (_ebd *BufferedWriter )SkipBits (skip int )error {if skip ==0{return nil ;};_cb :=int (_ebd ._cfb )+skip ;if _cb >=0&&_cb < 8{_ebd ._cfb =uint8 (_cb );return nil ;};_cb =int (_ebd ._cfb )+_ebd ._eb *8+skip ;if _cb < 0{return _e .Errorf ("\u0057r\u0069t\u0065\u0072\u002e\u0053\u006b\u0069\u0070\u0042\u0069\u0074\u0073","\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};_cc :=_cb /8;_eac :=_cb %8;_ebd ._cfb =uint8 (_eac );if _fd :=_cc -_ebd ._eb ;_fd > 0&&len (_ebd ._cff )-1< _cc {if _ebd ._cfb !=0{_fd ++;};_ebd .expandIfNeeded (_fd );};_ebd ._eb =_cc ;return nil ;};func (_ddf *Writer )writeBit (_adca uint8 )error {if len (_ddf ._cgf )-1< _ddf ._affa {return _c .EOF ;};_ecgd :=_ddf ._aace ;if _ddf ._cfac {_ecgd =7-_ddf ._aace ;};_ddf ._cgf [_ddf ._affa ]|=byte (uint16 (_adca <<_ecgd )&0xff);_ddf ._aace ++;if _ddf ._aace ==8{_ddf ._affa ++;_ddf ._aace =0;};return nil ;};func (_afe *SubstreamReader )ReadBit ()(_bba int ,_aff error ){_cef ,_aff :=_afe .readBool ();if _aff !=nil {return 0,_aff ;};if _cef {_bba =1;};return _bba ,nil ;};func (_cd *Reader )ReadBit ()(_eba int ,_acb error ){_gdbb ,_acb :=_cd .readBool ();if _acb !=nil {return 0,_acb ;};if _gdbb {_eba =1;};return _eba ,nil ;};func (_aec *SubstreamReader )readBufferByte ()(byte ,error ){if _aec ._cec >=_aec ._gea {return 0,_c .EOF ;};if _aec ._cec >=_aec ._fad ||_aec ._cec < _aec ._bee {if _faag :=_aec .fillBuffer ();_faag !=nil {return 0,_faag ;};};_ece :=_aec ._bbe [_aec ._cec -_aec ._bee ];_aec ._cec ++;return _ece ,nil ;};func (_ea *BufferedWriter )ResetBitIndex (){_ea ._cfb =0};func (_cdf *Writer )SkipBits (skip int )error {const _fdbg ="\u0057r\u0069t\u0065\u0072\u002e\u0053\u006b\u0069\u0070\u0042\u0069\u0074\u0073";if skip ==0{return nil ;};_cdab :=int (_cdf ._aace )+skip ;if _cdab >=0&&_cdab < 8{_cdf ._aace =uint8 (_cdab );return nil ;};_cdab =int (_cdf ._aace )+_cdf ._affa *8+skip ;if _cdab < 0{return _e .Errorf (_fdbg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};_cea :=_cdab /8;_bbac :=_cdab %8;_ac .Log .Trace ("\u0053\u006b\u0069\u0070\u0042\u0069\u0074\u0073");_ac .Log .Trace ("\u0042\u0069\u0074\u0049\u006e\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0042\u0079\u0074\u0065\u0049n\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027\u002c\u0020\u0046\u0075\u006c\u006c\u0042\u0069\u0074\u0073\u003a\u0020'\u0025\u0064\u0027\u002c\u0020\u004c\u0065\u006e\u003a\u0020\u0027\u0025\u0064\u0027,\u0020\u0043\u0061p\u003a\u0020\u0027\u0025\u0064\u0027",_cdf ._aace ,_cdf ._affa ,int (_cdf ._aace )+(_cdf ._affa )*8,len (_cdf ._cgf ),cap (_cdf ._cgf ));_ac .Log .Trace ("S\u006b\u0069\u0070\u003a\u0020\u0027%\u0064\u0027\u002c\u0020\u0064\u003a \u0027\u0025\u0064\u0027\u002c\u0020\u0062i\u0074\u0049\u006e\u0064\u0065\u0078\u003a\u0020\u0027\u0025d\u0027",skip ,_cdab ,_bbac );_cdf ._aace =uint8 (_bbac );if _fccg :=_cea -_cdf ._affa ;_fccg > 0&&len (_cdf ._cgf )-1< _cea {_ac .Log .Trace ("\u0042\u0079\u0074e\u0044\u0069\u0066\u0066\u003a\u0020\u0025\u0064",_fccg );return _e .Errorf (_fdbg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};_cdf ._affa =_cea ;_ac .Log .Trace ("\u0042\u0069\u0074I\u006e\u0064\u0065\u0078:\u0020\u0027\u0025\u0064\u0027\u002c\u0020B\u0079\u0074\u0065\u0049\u006e\u0064\u0065\u0078\u003a\u0020\u0027\u0025\u0064\u0027",_cdf ._aace ,_cdf ._affa );return nil ;};func (_fb *BufferedWriter )WriteBits (bits uint64 ,number int )(_ca int ,_agg error ){const _acf ="\u0042u\u0066\u0066\u0065\u0072e\u0064\u0057\u0072\u0069\u0074e\u0072.\u0057r\u0069\u0074\u0065\u0072\u0042\u0069\u0074s";if number < 0||number > 64{return 0,_e .Errorf (_acf ,"\u0062i\u0074\u0073 \u006e\u0075\u006db\u0065\u0072\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0069\u006e\u0020r\u0061\u006e\u0067\u0065\u0020\u003c\u0030\u002c\u0036\u0034\u003e,\u0020\u0069\u0073\u003a\u0020\u0027\u0025\u0064\u0027",number );};_aa :=number /8;if _aa > 0{_add :=number -_aa *8;for _dc :=_aa -1;_dc >=0;_dc --{_gd :=byte ((bits >>uint (_dc *8+_add ))&0xff);if _agg =_fb .WriteByte (_gd );_agg !=nil {return _ca ,_e .Wrapf (_agg ,_acf ,"\u0062\u0079\u0074\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_aa -_dc +1);};};number -=_aa *8;if number ==0{return _aa ,nil ;};};var _ge int ;for _eg :=0;_eg < number ;_eg ++{if _fb ._bg {_ge =int ((bits >>uint (number -1-_eg ))&0x1);}else {_ge =int (bits &0x1);bits >>=1;};if _agg =_fb .WriteBit (_ge );_agg !=nil {return _ca ,_e .Wrapf (_agg ,_acf ,"\u0062i\u0074\u003a\u0020\u0025\u0064",_eg );};};return _aa ,nil ;};func (_bcc *Reader )Read (p []byte )(_bd int ,_fde error ){if _bcc ._fag ==0{return _bcc .read (p );};for ;_bd < len (p );_bd ++{if p [_bd ],_fde =_bcc .readUnalignedByte ();_fde !=nil {return 0,_fde ;};};return _bd ,nil ;};func (_gf *BufferedWriter )Write (d []byte )(int ,error ){_gf .expandIfNeeded (len (d ));if _gf ._cfb ==0{return _gf .writeFullBytes (d ),nil ;};return _gf .writeShiftedBytes (d ),nil ;};var _ BinaryWriter =&BufferedWriter {};func (_ee *BufferedWriter )Len ()int {return _ee .byteCapacity ()};func (_aag *Reader )Align ()(_fed byte ){_fed =_aag ._fag ;_aag ._fag =0;return _fed };type StreamReader interface{_c .Reader ;_c .ByteReader ;_c .Seeker ;Align ()byte ;BitPosition ()int ;Mark ();Length ()uint64 ;ReadBit ()(int ,error );ReadBits (_ecg byte )(uint64 ,error );ReadBool ()(bool ,error );ReadUint32 ()(uint32 ,error );Reset ();StreamPosition ()int64 ;};func (_ade *Reader )ReadBool ()(bool ,error ){return _ade .readBool ()};func (_egc *Reader )StreamPosition ()int64 {return _egc ._cbg };func (_agc *SubstreamReader )Reset (){_agc ._cec =_agc ._ccg ;_agc ._fede =_agc ._ggb };func (_fffb *Writer )Write (p []byte )(int ,error ){if len (p )> _fffb .byteCapacity (){return 0,_c .EOF ;};for _ ,_bbd :=range p {if _abg :=_fffb .writeByte (_bbd );_abg !=nil {return 0,_abg ;};};return len (p ),nil ;};func (_cg *BufferedWriter )expandIfNeeded (_ed int ){if !_cg .tryGrowByReslice (_ed ){_cg .grow (_ed );};};func (_bgb *Reader )ConsumeRemainingBits (){if _bgb ._fag !=0{_ ,_bc :=_bgb .ReadBits (_bgb ._fag );if _bc !=nil {_ac .Log .Debug ("\u0043\u006f\u006e\u0073\u0075\u006d\u0065\u0052\u0065\u006da\u0069\u006e\u0069\u0067\u0042\u0069\u0074s\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_bc );};};};var (_ _c .Reader =&Reader {};_ _c .ByteReader =&Reader {};_ _c .Seeker =&Reader {};_ StreamReader =&Reader {};);type BufferedWriter struct{_cff []byte ;_cfb uint8 ;_eb int ;_bg bool ;};func (_gbe *SubstreamReader )Read (b []byte )(_bag int ,_ef error ){if _gbe ._cec >=_gbe ._gea {_ac .Log .Trace ("\u0053\u0074\u0072e\u0061\u006d\u0050\u006fs\u003a\u0020\u0027\u0025\u0064\u0027\u0020>\u003d\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u003a\u0020\u0027\u0025\u0064\u0027",_gbe ._cec ,_gbe ._gea );return 0,_c .EOF ;};for ;_bag < len (b );_bag ++{if b [_bag ],_ef =_gbe .readUnalignedByte ();_ef !=nil {if _ef ==_c .EOF {return _bag ,nil ;};return 0,_ef ;};};return _bag ,nil ;};func (_gcg *BufferedWriter )WriteBit (bit int )error {if bit !=1&&bit !=0{return _e .Errorf ("\u0042\u0075\u0066fe\u0072\u0065\u0064\u0057\u0072\u0069\u0074\u0065\u0072\u002e\u0057\u0072\u0069\u0074\u0065\u0042\u0069\u0074","\u0062\u0069\u0074\u0020\u0076\u0061\u006cu\u0065\u0020\u006du\u0073\u0074\u0020\u0062e\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u007b\u0030\u002c\u0031\u007d\u0020\u0062\u0075\u0074\u0020\u0069\u0073\u003a\u0020\u0025\u0064",bit );};if len (_gcg ._cff )-1< _gcg ._eb {_gcg .expandIfNeeded (1);};_dd :=_gcg ._cfb ;if _gcg ._bg {_dd =7-_gcg ._cfb ;};_gcg ._cff [_gcg ._eb ]|=byte (uint16 (bit <<_dd )&0xff);_gcg ._cfb ++;if _gcg ._cfb ==8{_gcg ._eb ++;_gcg ._cfb =0;};return nil ;};func (_ffg *SubstreamReader )Align ()(_cbfa byte ){_cbfa =_ffg ._fede ;_ffg ._fede =0;return _cbfa };func (_dcf *Reader )read (_fgb []byte )(int ,error ){if _dcf ._cbg >=int64 (len (_dcf ._ddce )){return 0,_c .EOF ;};_dcf ._eef =-1;_gg :=copy (_fgb ,_dcf ._ddce [_dcf ._cbg :]);_dcf ._cbg +=int64 (_gg );return _gg ,nil ;};func (_edg *Writer )Data ()[]byte {return _edg ._cgf };func NewReader (data []byte )*Reader {return &Reader {_ddce :data }};type BitWriter interface{WriteBit (_bf int )error ;WriteBits (_ddc uint64 ,_fg int )(_fe int ,_ddbc error );FinishByte ();SkipBits (_df int )error ;};type BinaryWriter interface{BitWriter ;_c .Writer ;_c .ByteWriter ;Data ()[]byte ;};func (_cgdab *SubstreamReader )BitPosition ()int {return int (_cgdab ._fede )};func (_cfa *Reader )ReadByte ()(byte ,error ){if _cfa ._fag ==0{return _cfa .readBufferByte ();};return _cfa .readUnalignedByte ();};func (_beca *Writer )byteCapacity ()int {_eed :=len (_beca ._cgf )-_beca ._affa ;if _beca ._aace !=0{_eed --;};return _eed ;};func (_aaeb *SubstreamReader )Offset ()uint64 {return _aaeb ._dfa };func (_cbge *Writer )WriteByte (c byte )error {return _cbge .writeByte (c )};type Writer struct{_cgf []byte ;_aace uint8 ;_affa int ;_cfac bool ;};func (_feb *Reader )Reset (){_feb ._cbg =_feb ._fba ;_feb ._fag =_feb ._bbf };func (_egfg *Writer )UseMSB ()bool {return _egfg ._cfac };type Reader struct{_ddce []byte ;_gdb byte ;_fag byte ;_cbg int64 ;_ccf int ;_eef int ;_fba int64 ;_bbf byte ;};