You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: cmap.go
    path of file: ./repos/unipdf/internal/cmap
    
    the code of the file until where you have to start completion: //
// 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 cmap ;import (_e "bufio";_bb "bytes";_d "encoding/hex";_cb "errors";_be "fmt";_da "github.com/unidoc/unipdf/v3/common";_bce "github.com/unidoc/unipdf/v3/core";_g "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_c "io";_bc "sort";_ba "strconv";
_eg "strings";_bg "unicode/utf16";);func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_fc :=_abe (name );if _fc !=nil {return nil ,_fc ;};if cmap ._f ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_bed ,_fc :=_abe (cmap ._f );if _fc !=nil {return nil ,_fc ;
};for _fdd ,_ab :=range _bed ._ff {if _ ,_ecg :=cmap ._ff [_fdd ];!_ecg {cmap ._ff [_fdd ]=_ab ;};};cmap ._ec =append (cmap ._ec ,_bed ._ec ...);cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMa
    
func (cmap *CMap )parseBfrange ()error {for {var _gfgb CharCode ;_cbfb ,_ced :=cmap .parseObject ();if _ced !=nil {if _ced ==_c .EOF {break ;};return _ced ;};switch _ffe :=_cbfb .(type ){case cmapOperand :if _ffe .Operand ==_afb {return nil ;};return _cb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_gfgb =_ebb (_ffe );default:return _cb .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _daa CharCode ;_cbfb ,_ced =cmap .parseObject ();if _ced !=nil {if _ced ==_c .EOF {break ;};return _ced ;
};switch _fbef :=_cbfb .(type ){case cmapOperand :_da .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 :_daa =_ebb (_fbef );if _daa > 0xffff{_daa =0xffff;};default:_da .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_cbfb );return ErrBadCMap ;
};_cbfb ,_ced =cmap .parseObject ();if _ced !=nil {if _ced ==_c .EOF {break ;};return _ced ;};switch _dbc :=_cbfb .(type ){case cmapArray :if len (_dbc .Array )!=int (_daa -_gfgb )+1{_da .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 _bge :=_gfgb ;_bge <=_daa ;_bge ++{_febc :=_dbc .Array [_bge -_gfgb ];_befd ,_ada :=_febc .(cmapHexString );if !_ada {return _cb .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_gcaa :=_acc (_befd );cmap ._ce [_bge ]=string (_gcaa );};case cmapHexString :_gbg :=_acc (_dbc );_eddc :=len (_gbg );for _ecd :=_gfgb ;_ecd <=_daa ;_ecd ++{cmap ._ce [_ecd ]=string (_gbg );if _eddc > 0{_gbg [_eddc -1]++;}else {_da .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",_ecd );
};if _ecd ==1<<32-1{break ;};};default:_da .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_cbfb );return ErrBadCMap ;};};return nil ;};type cmapInt struct{_abbg int64 };