unipdf/internal/cmap/cmap.go

140 lines
41 KiB
Go
Raw Normal View History

//
2020-08-27 21:45:09 +00:00
// 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/
2024-11-22 00:42:43 +00:00
package cmap ;import (_fd "bufio";_fe "bytes";_f "encoding/hex";_de "errors";_b "fmt";_cf "github.com/unidoc/unipdf/v3/common";_be "github.com/unidoc/unipdf/v3/core";_dc "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_aa "io";_ag "sort";_d "strconv";
_ac "strings";_c "unicode/utf16";);func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func NewCIDSystemInfo (obj _be .PdfObject )(_ff CIDSystemInfo ,_e error ){_gb ,_eb :=_be .GetDict (obj );if !_eb {return CIDSystemInfo {},_be .ErrTypeError ;
};_agb ,_eb :=_be .GetStringVal (_gb .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_eb {return CIDSystemInfo {},_be .ErrTypeError ;};_ec ,_eb :=_be .GetStringVal (_gb .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_eb {return CIDSystemInfo {},_be .ErrTypeError ;
};_ebb ,_eb :=_be .GetIntVal (_gb .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_eb {return CIDSystemInfo {},_be .ErrTypeError ;};return CIDSystemInfo {Registry :_agb ,Ordering :_ec ,Supplement :_ebb },nil ;};func (cmap *CMap )parseBfchar ()error {for {_bbc ,_aba :=cmap .parseObject ();
if _aba !=nil {if _aba ==_aa .EOF {break ;};return _aba ;};var _adcg CharCode ;switch _afc :=_bbc .(type ){case cmapOperand :if _afc .Operand ==_bgb {return nil ;};return _de .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_adcg =_dafe (_afc );default:return _de .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_bbc ,_aba =cmap .parseObject ();if _aba !=nil {if _aba ==_aa .EOF {break ;};return _aba ;};var _gdd []rune ;
switch _abe :=_bbc .(type ){case cmapOperand :if _abe .Operand ==_bgb {return nil ;};_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_abe );
return ErrBadCMap ;case cmapHexString :_gdd =_gecd (_abe );case cmapName :_cf .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_abe );_gdd =[]rune {MissingCodeRune };
default:_cf .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_bbc );return ErrBadCMap ;};cmap ._cg [_adcg ]=string (_gdd );};return nil ;};func _dgb (_fbgd cmapHexString )rune {_aec :=_gecd (_fbgd );
if _abf :=len (_aec );_abf ==0{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_fbgd );
return MissingCodeRune ;};if len (_aec )> 1{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_fbgd ,_aec );
};return _aec [0];};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_cf .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );
cmap :=_bb (isSimple );cmap .cMapParser =_fabg (data );_gd :=cmap .parse ();if _gd !=nil {return nil ,_gd ;};if len (cmap ._ef )==0{if cmap ._fdc !=""{return cmap ,nil ;};_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
};cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._eba ._dgad ,cmap ._eba ._cafc };func (cmap *CMap )NBits ()int {return cmap ._gf };func (cmap *CMap )Stream ()(*_be .PdfObjectStream ,error ){if cmap ._ebf !=nil {return cmap ._ebf ,nil ;
};_ffd ,_dga :=_be .MakeStream (cmap .Bytes (),_be .NewFlateEncoder ());if _dga !=nil {return nil ,_dga ;};cmap ._ebf =_ffd ;return cmap ._ebf ,nil ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cef ,_gbc :=cmap ._dea [code ];return _cef ,_gbc ;
};func _bb (_gg bool )*CMap {_baa :=16;if _gg {_baa =8;};return &CMap {_gf :_baa ,_dea :make (map[CharCode ]CharCode ),_ebd :make (map[CharCode ]CharCode ),_cg :make (map[CharCode ]string ),_ded :make (map[string ]CharCode )};};type Codespace struct{NumBytes int ;
Low CharCode ;High CharCode ;};type cmapInt struct{_cgac int64 };func (cmap *CMap )parseName ()error {_gfc :="";_ddb :=false ;for _gbg :=0;_gbg < 20&&!_ddb ;_gbg ++{_aaa ,_aad :=cmap .parseObject ();if _aad !=nil {return _aad ;};switch _dcc :=_aaa .(type ){case cmapOperand :switch _dcc .Operand {case "\u0064\u0065\u0066":_ddb =true ;
default:_cf .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_aaa ,_gfc );
if _gfc !=""{_gfc =_b .Sprintf ("\u0025\u0073\u0020%\u0073",_gfc ,_dcc .Operand );};_cf .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_gfc );
};case cmapName :_gfc =_dcc .Name ;};};if !_ddb {_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._dcb =_gfc ;return nil ;};func (cmap *CMap )parseVersion ()error {_bgef :="";
_gag :=false ;for _eac :=0;_eac < 3&&!_gag ;_eac ++{_dbb ,_deff :=cmap .parseObject ();if _deff !=nil {return _deff ;};switch _fef :=_dbb .(type ){case cmapOperand :switch _fef .Operand {case "\u0064\u0065\u0066":_gag =true ;default:_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_dbb );
return ErrBadCMap ;};case cmapInt :_bgef =_b .Sprintf ("\u0025\u0064",_fef ._cgac );case cmapFloat :_bgef =_b .Sprintf ("\u0025\u0066",_fef ._defb );case cmapString :_bgef =_fef .String ;default:_cf .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_dbb );
};};cmap ._fc =_bgef ;return nil ;};const (_bdd =100;_df ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";
_cdf ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";
);func _degg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func _edf (_eee string )string {_beb :=[]rune (_eee );_deaa :=make ([]string ,len (_beb ));for _bagd ,_bga :=range _beb {_deaa [_bagd ]=_b .Sprintf ("\u0025\u0030\u0034\u0078",_bga );
};return _b .Sprintf ("\u003c\u0025\u0073\u003e",_ac .Join (_deaa ,""));};func _ced (_bc string )(*CMap ,error ){_acg ,_fdf :=_dc .Asset (_bc );if _fdf !=nil {return nil ,_fdf ;};return LoadCmapFromDataCID (_acg );};func (cmap *CMap )parseType ()error {_dbf :=0;
_cced :=false ;for _dgc :=0;_dgc < 3&&!_cced ;_dgc ++{_bcf ,_gaf :=cmap .parseObject ();if _gaf !=nil {return _gaf ;};switch _gef :=_bcf .(type ){case cmapOperand :switch _gef .Operand {case "\u0064\u0065\u0066":_cced =true ;default:_cf .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_bcf );
return ErrBadCMap ;};case cmapInt :_dbf =int (_gef ._cgac );};};cmap ._ea =_dbf ;return nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _ed []CharCode ;if cmap ._gf ==8{for _ ,_bdg :=range data {_ed =append (_ed ,CharCode (_bdg ));
};return _ed ,true ;};for _efd :=0;_efd < len (data );{_fg ,_fgg ,_fed :=cmap .matchCode (data [_efd :]);if !_fed {_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_efd ,data ,string (data ));
return _ed ,false ;};_ed =append (_ed ,_fg );_efd +=_fgg ;};return _ed ,true ;};const (_bf =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (_gfb *cMapParser )parseDict ()(cmapDict ,error ){_cf .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_aae :=_degg ();_dgg ,_ :=_gfb ._gccbf .ReadByte ();if _dgg !='<'{return _aae ,ErrBadCMapDict ;};_dgg ,_ =_gfb ._gccbf .ReadByte ();if _dgg !='<'{return _aae ,ErrBadCMapDict ;};for {_gfb .skipSpaces ();_dedd ,_fea :=_gfb ._gccbf .Peek (2);if _fea !=nil {return _aae ,_fea ;
};if (_dedd [0]=='>')&&(_dedd [1]=='>'){_gfb ._gccbf .ReadByte ();_gfb ._gccbf .ReadByte ();break ;};_ggg ,_fea :=_gfb .parseName ();_cf .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_ggg .Name );if _fea !=nil {_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_fea );
return _aae ,_fea ;};_gfb .skipSpaces ();_aee ,_fea :=_gfb .parseObject ();if _fea !=nil {return _aae ,_fea ;};_aae .Dict [_ggg .Name ]=_aee ;_gfb .skipSpaces ();_dedd ,_fea =_gfb ._gccbf .Peek (3);if _fea !=nil {return _aae ,_fea ;};if string (_dedd )=="\u0064\u0065\u0066"{_gfb ._gccbf .Discard (3);
};};return _aae ,nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (_ecc *cMapParser )parseComment ()(string ,error ){var _cab _fe .Buffer ;_ ,_acfa :=_ecc .skipSpaces ();if _acfa !=nil {return _cab .String (),_acfa ;
};_cacf :=true ;for {_bfba ,_gdde :=_ecc ._gccbf .Peek (1);if _gdde !=nil {_cf .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_gdde );return _cab .String (),_gdde ;};if _cacf &&_bfba [0]!='%'{return _cab .String (),ErrBadCMapComment ;
};_cacf =false ;if (_bfba [0]!='\r')&&(_bfba [0]!='\n'){_bab ,_ :=_ecc ._gccbf .ReadByte ();_cab .WriteByte (_bab );}else {break ;};};return _cab .String (),nil ;};type cmapOperand struct{Operand string ;};func (cmap *CMap )toBfData ()string {if len (cmap ._cg )==0{return "";
};_gbe :=make ([]CharCode ,0,len (cmap ._cg ));for _ddg :=range cmap ._cg {_gbe =append (_gbe ,_ddg );};_ag .Slice (_gbe ,func (_bgga ,_efde int )bool {return _gbe [_bgga ]< _gbe [_efde ]});var _ee []charRange ;_ebdg :=charRange {_gbe [0],_gbe [0]};_cca :=cmap ._cg [_gbe [0]];
for _ ,_aea :=range _gbe [1:]{_fdcf :=cmap ._cg [_aea ];if _aea ==_ebdg ._cfc +1&&_cd (_fdcf )==_cd (_cca )+1{_ebdg ._cfc =_aea ;}else {_ee =append (_ee ,_ebdg );_ebdg ._ce ,_ebdg ._cfc =_aea ,_aea ;};_cca =_fdcf ;};_ee =append (_ee ,_ebdg );var _gdf []CharCode ;
var _fbe []fbRange ;for _ ,_cff :=range _ee {if _cff ._ce ==_cff ._cfc {_gdf =append (_gdf ,_cff ._ce );}else {_fbe =append (_fbe ,fbRange {_cc :_cff ._ce ,_def :_cff ._cfc ,_g :cmap ._cg [_cff ._ce ]});};};_cf .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_ee ),len (_gdf ),len (_fbe ));
var _bde []string ;if len (_gdf )> 0{_fda :=(len (_gdf )+_bdd -1)/_bdd ;for _dcbf :=0;_dcbf < _fda ;_dcbf ++{_bag :=_cdg (len (_gdf )-_dcbf *_bdd ,_bdd );_bde =append (_bde ,_b .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_bag ));
for _db :=0;_db < _bag ;_db ++{_eca :=_gdf [_dcbf *_bdd +_db ];_fgd :=cmap ._cg [_eca ];_bde =append (_bde ,_b .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_eca ,_edf (_fgd )));};_bde =append (_bde ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");
};};if len (_fbe )> 0{_ab :=(len (_fbe )+_bdd -1)/_bdd ;for _fgbc :=0;_fgbc < _ab ;_fgbc ++{_adga :=_cdg (len (_fbe )-_fgbc *_bdd ,_bdd );_bde =append (_bde ,_b .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_adga ));
for _gdb :=0;_gdb < _adga ;_gdb ++{_cgb :=_fbe [_fgbc *_bdd +_gdb ];_bde =append (_bde ,_b .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_cgb ._cc ,_cgb ._def ,_edf (_cgb ._g )));};_bde =append (_bde ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");
};};return _ac .Join (_bde ,"\u000a");};func (_bce *cMapParser )parseObject ()(cmapObject ,error ){_bce .skipSpaces ();for {_dbfb ,_fbg :=_bce ._gccbf .Peek (2);if _fbg !=nil {return nil ,_fbg ;};if _dbfb [0]=='%'{_bce .parseComment ();_bce .skipSpaces ();
continue ;}else if _dbfb [0]=='/'{_dacb ,_gec :=_bce .parseName ();return _dacb ,_gec ;}else if _dbfb [0]=='('{_egbb ,_bdfg :=_bce .parseString ();return _egbb ,_bdfg ;}else if _dbfb [0]=='['{_fgdf ,_eff :=_bce .parseArray ();return _fgdf ,_eff ;}else if (_dbfb [0]=='<')&&(_dbfb [1]=='<'){_beg ,_gffb :=_bce .parseDict ();
return _beg ,_gffb ;}else if _dbfb [0]=='<'{_gbcb ,_aed :=_bce .parseHexString ();return _gbcb ,_aed ;}else if _be .IsDecimalDigit (_dbfb [0])||(_dbfb [0]=='-'&&_be .IsDecimalDigit (_dbfb [1])){_gccc ,_eadb :=_bce .parseNumber ();if _eadb !=nil {return nil ,_eadb ;
};return _gccc ,nil ;}else {_ccf ,_ddfe :=_bce .parseOperand ();if _ddfe !=nil {return nil ,_ddfe ;};return _ccf ,nil ;};};};type CMap struct{*cMapParser ;_dcb string ;_gf int ;_ea int ;_fc string ;_fdc string ;_fde CIDSystemInfo ;_ef []Codespace ;_dea map[CharCode ]CharCode ;
_ebd map[CharCode ]CharCode ;_cg map[CharCode ]string ;_ded map[string ]CharCode ;_ba []byte ;_ebf *_be .PdfObjectStream ;_eba integer ;};type cmapFloat struct{_defb float64 };func (_gfag *cMapParser )parseHexString ()(cmapHexString ,error ){_gfag ._gccbf .ReadByte ();
_ccac :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_abd :=_fe .Buffer {};for {_gfag .skipSpaces ();_fdga ,_feec :=_gfag ._gccbf .Peek (1);if _feec !=nil {return cmapHexString {},_feec ;
};if _fdga [0]=='>'{_gfag ._gccbf .ReadByte ();break ;};_eeee ,_ :=_gfag ._gccbf .ReadByte ();if _fe .IndexByte (_ccac ,_eeee )>=0{_abd .WriteByte (_eeee );};};if _abd .Len ()%2==1{_cf .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_abd .String ());
_abd .WriteByte ('0');};_ffb :=_abd .Len ()/2;_eef ,_ :=_f .DecodeString (_abd .String ());return cmapHexString {_acbe :_ffb ,_ece :_eef },nil ;};func (_afa *cMapParser )parseString ()(cmapString ,error ){_afa ._gccbf .ReadByte ();_dfaf :=_fe .Buffer {};
_dfb :=1;for {_cfg ,_dacf :=_afa ._gccbf .Peek (1);if _dacf !=nil {return cmapString {_dfaf .String ()},_dacf ;};if _cfg [0]=='\\'{_afa ._gccbf .ReadByte ();_ffg ,_baec :=_afa ._gccbf .ReadByte ();if _baec !=nil {return cmapString {_dfaf .String ()},_baec ;
};if _be .IsOctalDigit (_ffg ){_defd ,_ddd :=_afa ._gccbf .Peek (2);if _ddd !=nil {return cmapString {_dfaf .String ()},_ddd ;};var _gacb []byte ;_gacb =append (_gacb ,_ffg );for _ ,_befb :=range _defd {if _be .IsOctalDigit (_befb ){_gacb =append (_gacb ,_befb );
}else {break ;};};_afa ._gccbf .Discard (len (_gacb )-1);_cf .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gacb );_abab ,_ddd :=_d .ParseUint (string (_gacb ),8,32);if _ddd !=nil {return cmapString {_dfaf .String ()},_ddd ;
};_dfaf .WriteByte (byte (_abab ));continue ;};switch _ffg {case 'n':_dfaf .WriteByte ('\n');case 'r':_dfaf .WriteByte ('\r');case 't':_dfaf .WriteByte ('\t');case 'b':_dfaf .WriteByte ('\b');case 'f':_dfaf .WriteByte ('\f');case '(':_dfaf .WriteByte ('(');
case ')':_dfaf .WriteByte (')');case '\\':_dfaf .WriteByte ('\\');};continue ;}else if _cfg [0]=='('{_dfb ++;}else if _cfg [0]==')'{_dfb --;if _dfb ==0{_afa ._gccbf .ReadByte ();break ;};};_fega ,_ :=_afa ._gccbf .ReadByte ();_dfaf .WriteByte (_fega );
};return cmapString {_dfaf .String ()},nil ;};func _dafe (_ccad cmapHexString )CharCode {_aaef :=CharCode (0);for _ ,_bbd :=range _ccad ._ece {_aaef <<=8;_aaef |=CharCode (_bbd );};return _aaef ;};func (_gfbc *cMapParser )parseNumber ()(cmapObject ,error ){_cged ,_ecda :=_be .ParseNumber (_gfbc ._gccbf );
if _ecda !=nil {return nil ,_ecda ;};switch _bfcg :=_cged .(type ){case *_be .PdfObjectFloat :return cmapFloat {float64 (*_bfcg )},nil ;case *_be .PdfObjectInteger :return cmapInt {int64 (*_bfcg )},nil ;};return nil ,_b .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_cged );
};func (cmap *CMap )parseSystemInfo ()error {_dbc :=false ;_fac :=false ;_ead :="";_ebfc :=false ;_dgf :=CIDSystemInfo {};for _daf :=0;_daf < 50&&!_ebfc ;_daf ++{_facf ,_cac :=cmap .parseObject ();if _cac !=nil {return _cac ;};switch _fbb :=_facf .(type ){case cmapDict :_dag :=_fbb .Dict ;
_faf ,_ace :=_dag ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gce ,_ace :=_faf .(cmapString );
if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dgf .Registry =_gce .String ;_faf ,_ace =_dag ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];
if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gce ,_ace =_faf .(cmapString );if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_dgf .Ordering =_gce .String ;_bggb ,_ace :=_dag ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gbeg ,_ace :=_bggb .(cmapInt );if !_ace {_cf .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dgf .Supplement =int (_gbeg ._cgac );
_ebfc =true ;case cmapOperand :switch _fbb .Operand {case "\u0062\u0065\u0067i\u006e":_dbc =true ;case "\u0065\u006e\u0064":_ebfc =true ;case "\u0064\u0065\u0066":_fac =false ;};case cmapName :if _dbc {_ead =_fbb .Name ;_fac =true ;};case cmapString :if _fac {switch _ead {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_dgf .Registry =_fbb .String ;
case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_dgf .Ordering =_fbb .String ;};};case cmapInt :if _fac {switch _ead {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_dgf .Supplement =int (_fbb ._cgac );};};};};if !_ebfc {_cf .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");
return ErrBadCMap ;};cmap ._fde =_dgf ;return nil ;};func IsPredefinedCMap (name string )bool {return _dc .AssetExists (name )};type cMapParser struct{_gccbf *_fd .Reader };func (cmap *CMap )Name ()string {return cmap ._dcb };func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_fa :=make (map[CharCode ]string ,len (codeToRune ));
for _acf ,_ceb :=range codeToRune {_fa [_acf ]=string (_ceb );};cmap :=&CMap {_dcb :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ea :2,_gf :16,_fde :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_ef :[]Codespace {{Low :0,High :0xffff}},_cg :_fa ,_ded :make (map[string ]CharCode ,len (codeToRune )),_dea :make (map[CharCode ]CharCode ,len (codeToRune )),_ebd :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )parseBfrange ()error {for {var _bfde CharCode ;_agc ,_daa :=cmap .parseObject ();if _daa !=nil {if _daa ==_aa .EOF {break ;};return _daa ;};switch _face :=_agc .(type ){case cmapOperand :if _face .Operand ==_cag {return nil ;
};return _de .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_bfde =_dafe (_face );default:return _de .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _cga CharCode ;_agc ,_daa =cmap .parseObject ();if _daa !=nil {if _daa ==_aa .EOF {break ;};return _daa ;};switch _bacg :=_agc .(type ){case cmapOperand :_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");
return ErrBadCMap ;case cmapHexString :_cga =_dafe (_bacg );if _cga > 0xffff{_cga =0xffff;};default:_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_agc );return ErrBadCMap ;
};_agc ,_daa =cmap .parseObject ();if _daa !=nil {if _daa ==_aa .EOF {break ;};return _daa ;};switch _gge :=_agc .(type ){case cmapArray :if len (_gge .Array )!=int (_cga -_bfde )+1{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");
return ErrBadCMap ;};for _cdb :=_bfde ;_cdb <=_cga ;_cdb ++{_fab :=_gge .Array [_cdb -_bfde ];_deg ,_ecd :=_fab .(cmapHexString );if !_ecd {return _de .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_gebd :=_gecd (_deg );cmap ._cg [_cdb ]=string (_gebd );};case cmapHexString :_aeb :=_gecd (_gge );_cgc :=len (_aeb );for _eec :=_bfde ;_eec <=_cga ;_eec ++{cmap ._cg [_eec ]=string (_aeb );if _cgc > 0{_aeb [_cgc -1]++;}else {_cf .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_eec );
};if _eec ==1<<32-1{break ;};};default:_cf .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_agc );return ErrBadCMap ;};};return nil ;};type cmapObject interface{};type CharCode uint32 ;
func (cmap *CMap )String ()string {_bef :=cmap ._fde ;_gae :=[]string {_b .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._gf ),_b .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ea )};if cmap ._fc !=""{_gae =append (_gae ,_b .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._fc ));
};if cmap ._fdc !=""{_gae =append (_gae ,_b .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._fdc ));};_gae =append (_gae ,_b .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_bef .String ()));
if len (cmap ._ef )> 0{_gae =append (_gae ,_b .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._ef )));};if len (cmap ._cg )> 0{_gae =append (_gae ,_b .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._cg )));
};return _b .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._dcb ,_ac .Join (_gae ,"\u0020"));};func _gecd (_fdgb cmapHexString )[]rune {if len (_fdgb ._ece )==1{return []rune {rune (_fdgb ._ece [0])};};_bcdd :=_fdgb ._ece ;
if len (_bcdd )%2!=0{_bcdd =append (_bcdd ,0);_cf .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_fdgb ,_bcdd );
};_agba :=len (_bcdd )>>1;_dfaa :=make ([]uint16 ,_agba );for _cea :=0;_cea < _agba ;_cea ++{_dfaa [_cea ]=uint16 (_bcdd [_cea <<1])<<8+uint16 (_bcdd [_cea <<1+1]);};_gfd :=_c .Decode (_dfaa );return _gfd ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _ge ,_cce :=cmap ._cg [code ];
_cce {return _ge ,true ;};return MissingCodeString ,false ;};type cmapString struct{String string ;};func _cd (_ggb string )rune {_geb :=[]rune (_ggb );return _geb [len (_geb )-1]};var (ErrBadCMap =_de .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");
ErrBadCMapComment =_de .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");ErrBadCMapDict =_de .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074");
);type integer struct{_cafc bool ;_dgad int ;};func (_agfe *cMapParser )parseName ()(cmapName ,error ){_cae :="";_aeg :=false ;for {_bfef ,_cad :=_agfe ._gccbf .Peek (1);if _cad ==_aa .EOF {break ;};if _cad !=nil {return cmapName {_cae },_cad ;};if !_aeg {if _bfef [0]=='/'{_aeg =true ;
_agfe ._gccbf .ReadByte ();}else {_cf .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_bfef ,_bfef );return cmapName {_cae },_b .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_bfef [0]);
};}else {if _be .IsWhiteSpace (_bfef [0]){break ;}else if (_bfef [0]=='/')||(_bfef [0]=='[')||(_bfef [0]=='(')||(_bfef [0]==']')||(_bfef [0]=='<')||(_bfef [0]=='>'){break ;}else if _bfef [0]=='#'{_dda ,_bdefd :=_agfe ._gccbf .Peek (3);if _bdefd !=nil {return cmapName {_cae },_bdefd ;
};_agfe ._gccbf .Discard (3);_acca ,_bdefd :=_f .DecodeString (string (_dda [1:3]));if _bdefd !=nil {return cmapName {_cae },_bdefd ;};_cae +=string (_acca );}else {_acb ,_ :=_agfe ._gccbf .ReadByte ();_cae +=string (_acb );};};};return cmapName {_cae },nil ;
};func (cmap *CMap )computeInverseMappings (){for _age ,_ca :=range cmap ._dea {if _aga ,_bfd :=cmap ._ebd [_ca ];!_bfd ||(_bfd &&_aga > _age ){cmap ._ebd [_ca ]=_age ;};};for _bcc ,_dde :=range cmap ._cg {if _bd ,_adg :=cmap ._ded [_dde ];!_adg ||(_adg &&_bd > _bcc ){cmap ._ded [_dde ]=_bcc ;
};};_ag .Slice (cmap ._ef ,func (_gc ,_ebg int )bool {return cmap ._ef [_gc ].Low < cmap ._ef [_ebg ].Low });};func (cmap *CMap )Type ()int {return cmap ._ea };func (_bdec *cMapParser )parseArray ()(cmapArray ,error ){_eda :=cmapArray {};_eda .Array =[]cmapObject {};
_bdec ._gccbf .ReadByte ();for {_bdec .skipSpaces ();_eab ,_ccg :=_bdec ._gccbf .Peek (1);if _ccg !=nil {return _eda ,_ccg ;};if _eab [0]==']'{_bdec ._gccbf .ReadByte ();break ;};_cdag ,_ccg :=_bdec .parseObject ();if _ccg !=nil {return _eda ,_ccg ;};_eda .Array =append (_eda .Array ,_cdag );
};return _eda ,nil ;};func (cmap *CMap )parse ()error {var _egd cmapObject ;for {_fba ,_bgd :=cmap .parseObject ();if _bgd !=nil {if _bgd ==_aa .EOF {break ;};_cf .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_bgd );
return _bgd ;};switch _ggad :=_fba .(type ){case cmapOperand :_ddge :=_ggad ;switch _ddge .Operand {case _cda :_bfdc :=cmap .parseCodespaceRange ();if _bfdc !=nil {return _bfdc ;};case _gefc :_cde :=cmap .parseCIDRange ();if _cde !=nil {return _cde ;};
case _fbc :_eea :=cmap .parseBfchar ();if _eea !=nil {return _eea ;};case _bae :_cb :=cmap .parseBfrange ();if _cb !=nil {return _cb ;};case _bdeb :if _egd ==nil {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");
return ErrBadCMap ;};_ceda ,_edg :=_egd .(cmapName );if !_edg {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_egd );
return ErrBadCMap ;};cmap ._fdc =_ceda .Name ;case _dgce :_gfa :=cmap .parseSystemInfo ();if _gfa !=nil {return _gfa ;};};case cmapName :_gebf :=_ggad ;switch _gebf .Name {case _dgce :_ddgg :=cmap .parseSystemInfo ();if _ddgg !=nil {return _ddgg ;};case _dgd :_ffc :=cmap .parseName ();
if _ffc !=nil {return _ffc ;};case _ebae :_feeb :=cmap .parseType ();if _feeb !=nil {return _feeb ;};case _dbg :_bge :=cmap .parseVersion ();if _bge !=nil {return _bge ;};case _gdc :if _bgd =cmap .parseWMode ();_bgd !=nil {return _bgd ;};};};_egd =_fba ;
};return nil ;};type cmapName struct{Name string ;};type cmapArray struct{Array []cmapObject ;};func _fabg (_ebdc []byte )*cMapParser {_dec :=cMapParser {};_ebe :=_fe .NewBuffer (_ebdc );_dec ._gccbf =_fd .NewReader (_ebe );return &_dec ;};func (cmap *CMap )parseCIDRange ()error {for {_ggag ,_cge :=cmap .parseObject ();
if _cge !=nil {if _cge ==_aa .EOF {break ;};return _cge ;};_deda ,_ccab :=_ggag .(cmapHexString );if !_ccab {if _fbbf ,_deag :=_ggag .(cmapOperand );_deag {if _fbbf .Operand ==_bdef {return nil ;};return _de .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
};};_ddf :=_dafe (_deda );_ggag ,_cge =cmap .parseObject ();if _cge !=nil {if _cge ==_aa .EOF {break ;};return _cge ;};_fdg ,_ccab :=_ggag .(cmapHexString );if !_ccab {return _de .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
};if len (_deda ._ece )!=len (_fdg ._ece ){return _de .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_ede :=_dafe (_fdg );
if _ddf > _ede {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_ddf ,_ede );
return ErrBadCMap ;};_ggag ,_cge =cmap .parseObject ();if _cge !=nil {if _cge ==_aa .EOF {break ;};return _cge ;};_cbf ,_ccab :=_ggag .(cmapInt );if !_ccab {return _de .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};if _cbf ._cgac < 0{return _de .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_agf :=_cbf ._cgac ;for _cbg :=_ddf ;_cbg <=_ede ;_cbg ++{cmap ._dea [_cbg ]=CharCode (_agf );
_agf ++;};_cf .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_ddf ,_ede ,_cbf ._cgac );};return nil ;};func (cmap *CMap )parseWMode ()error {var _add int ;
_bcd :=false ;for _egb :=0;_egb < 3&&!_bcd ;_egb ++{_gba ,_cdc :=cmap .parseObject ();if _cdc !=nil {return _cdc ;};switch _cebe :=_gba .(type ){case cmapOperand :switch _cebe .Operand {case "\u0064\u0065\u0066":_bcd =true ;default:_cf .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_gba );
return ErrBadCMap ;};case cmapInt :_add =int (_cebe ._cgac );};};cmap ._eba =integer {_cafc :true ,_dgad :_add };return nil ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_aca :=_ced (name );if _aca !=nil {return nil ,_aca ;};if cmap ._fdc ==""{cmap .computeInverseMappings ();
return cmap ,nil ;};_fb ,_aca :=_ced (cmap ._fdc );if _aca !=nil {return nil ,_aca ;};for _bfc ,_eg :=range _fb ._dea {if _ ,_ega :=cmap ._dea [_bfc ];!_ega {cmap ._dea [_bfc ]=_eg ;};};cmap ._ef =append (cmap ._ef ,_fb ._ef ...);cmap .computeInverseMappings ();
return cmap ,nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_dg ,_da :=cmap ._ded [s ];return _dg ,_da };const (_dgce ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_aef ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_ceg ="\u0065n\u0064\u0063\u006d\u0061\u0070";_cda ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_fefg ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_fbc ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_bgb ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_bae ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_cag ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_gefc ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bdef ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bdeb ="\u0075s\u0065\u0063\u006d\u0061\u0070";_gdc ="\u0057\u004d\u006fd\u0065";_dgd ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_ebae ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_dbg ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type charRange struct{_ce CharCode ;_cfc CharCode ;};func (_ga *CIDSystemInfo )String ()string {return _b .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ga .Registry ,_ga .Ordering ,_ga .Supplement );
};type cmapHexString struct{_acbe int ;_ece []byte ;};func (cmap *CMap )parseCodespaceRange ()error {for {_fcb ,_fefa :=cmap .parseObject ();if _fefa !=nil {if _fefa ==_aa .EOF {break ;};return _fefa ;};_cec ,_ddba :=_fcb .(cmapHexString );if !_ddba {if _bfe ,_acc :=_fcb .(cmapOperand );
_acc {if _bfe .Operand ==_fefg {return nil ;};return _de .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_fcb ,_fefa =cmap .parseObject ();if _fefa !=nil {if _fefa ==_aa .EOF {break ;};return _fefa ;
};_fge ,_ddba :=_fcb .(cmapHexString );if !_ddba {return _de .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_cec ._ece )!=len (_fge ._ece ){return _de .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");
};_bac :=_dafe (_cec );_feb :=_dafe (_fge );if _feb < _bac {_cf .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_bac ,_feb );
return ErrBadCMap ;};_edb :=_fge ._acbe ;_bbb :=Codespace {NumBytes :_edb ,Low :_bac ,High :_feb };cmap ._ef =append (cmap ._ef ,_bbb );_cf .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_bac ,_feb );
};if len (cmap ._ef )==0{_cf .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};func (cmap *CMap )Bytes ()[]byte {_cf .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());
if len (cmap ._ba )> 0{return cmap ._ba ;};cmap ._ba =[]byte (_ac .Join ([]string {_df ,cmap .toBfData (),_cdf },"\u000a"));return cmap ._ba ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_gcc ,_bfb :=cmap ._ebd [cid ];return _gcc ,_bfb ;
};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_dedg ,_fdeg :=cmap .BytesToCharcodes (data );if !_fdeg {_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );
return "",0;};_af :=make ([]string ,len (_dedg ));var _caf []CharCode ;for _bg ,_adc :=range _dedg {_ggd ,_eaf :=cmap ._cg [_adc ];if !_eaf {_caf =append (_caf ,_adc );_ggd =MissingCodeString ;};_af [_bg ]=_ggd ;};_gga :=_ac .Join (_af ,"");if len (_caf )> 0{_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_dedg ,len (_caf ),_caf ,_gga ,cmap );
};return _gga ,len (_caf );};func (_bgbe *cMapParser )parseOperand ()(cmapOperand ,error ){_bdfd :=cmapOperand {};_cfe :=_fe .Buffer {};for {_agd ,_gecc :=_bgbe ._gccbf .Peek (1);if _gecc !=nil {if _gecc ==_aa .EOF {break ;};return _bdfd ,_gecc ;};if _be .IsDelimiter (_agd [0]){break ;
};if _be .IsWhiteSpace (_agd [0]){break ;};_ddfd ,_ :=_bgbe ._gccbf .ReadByte ();_cfe .WriteByte (_ddfd );};if _cfe .Len ()==0{return _bdfd ,_b .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_bdfd .Operand =_cfe .String ();return _bdfd ,nil ;};type fbRange struct{_cc CharCode ;_def CharCode ;_g string ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (cmap *CMap )inCodespace (_edc CharCode ,_bgg int )bool {for _ ,_feg :=range cmap ._ef {if _feg .Low <=_edc &&_edc <=_feg .High &&_bgg ==_feg .NumBytes {return true ;
};};return false ;};func (_cece *cMapParser )skipSpaces ()(int ,error ){_ddc :=0;for {_dfa ,_ggbf :=_cece ._gccbf .Peek (1);if _ggbf !=nil {return 0,_ggbf ;};if _be .IsWhiteSpace (_dfa [0]){_cece ._gccbf .ReadByte ();_ddc ++;}else {break ;};};return _ddc ,nil ;
};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._fde };func _cdg (_beeb ,_bfbf int )int {if _beeb < _bfbf {return _beeb ;};return _bfbf ;};func (cmap *CMap )matchCode (_aaf []byte )(_fgb CharCode ,_fdce int ,_cfce bool ){for _dcg :=0;_dcg < _bf ;
_dcg ++{if _dcg < len (_aaf ){_fgb =_fgb <<8|CharCode (_aaf [_dcg ]);_fdce ++;};_cfce =cmap .inCodespace (_fgb ,_dcg +1);if _cfce {return _fgb ,_fdce ,true ;};};_cf .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_aaf ,string (_aaf ),cmap );
return 0,0,false ;};