2022-01-15 21:17:38 +00:00

1203 lines
469 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 formula provides formula parsing and evaluation. The lexer is
// implemented with a ragel grammar while the the parser is implemented with
// goyacc. The entire formula grammar is not implemented and not all functions
// are supported yet. For compatibility sake, upon failure to parse or execute a
// formula, unioffice leaves cached formula results blank allowing Excel to compute
// formulas upon load. This is similar to what most other Excel libraries do
// which leave all cached results blank instead of attempting to execute
// formulas.
//
// The unit tests for this package are unique in that we can take advantage of
// "cached" formula results that Excel/LibreOffice write to the sheet. These
// are the computed results of a formula in string form. By comparing these
// values to the value computed by the unioffice evaluation of the formula, adding
// a new test means just adding a new formula to one of the reference sheets
// with Excel. During the unit test, we evaluate the formula and compare it to
// the value that Excel computed. If they're the same, the test passes.
package formula ;import (_db "bytes";_d "errors";_b "fmt";_ea "github.com/unidoc/unioffice/common/logger";_af "github.com/unidoc/unioffice/internal/mergesort";_be "github.com/unidoc/unioffice/internal/wildcard";_fg "github.com/unidoc/unioffice/spreadsheet/format";_ac "github.com/unidoc/unioffice/spreadsheet/reference";_fc "github.com/unidoc/unioffice/spreadsheet/update";_e "io";_ggd "math";_c "math/big";_ef "math/rand";_gg "regexp";_bg "sort";_dc "strconv";_g "strings";_fd "sync";_dd "time";_a "unicode";);
// Oddlprice implements the Excel ODDLPRICE function.
func Oddlprice (args []Result )Result {if len (args )!=8&&len (args )!=9{return MakeErrorResult ("\u004f\u0044\u0044L\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0065\u0069\u0067\u0068\u0074\u0020\u006f\u0072\u0020\u006e\u0069\u006e\u0065\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_agaf ,_faef ,_gddbd :=_gbce (args [0],args [1],"\u004fD\u0044\u004c\u0050\u0052\u0049\u0043E");if _gddbd .Type ==ResultTypeError {return _gddbd ;};_gbdeb ,_gddbd :=_eeg (args [2],"\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065","\u004fD\u0044\u004c\u0050\u0052\u0049\u0043E");if _gddbd .Type ==ResultTypeError {return _gddbd ;};if _gbdeb >=_agaf {return MakeErrorResultType (ErrorTypeNum ,"\u004c\u0061\u0073\u0074\u0020i\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0064\u0061\u0074\u0065\u0020s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0062\u0065\u0066\u006f\u0072\u0065\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074e");};_gecd :=args [3];if _gecd .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020o\u0066\u0020\u0074\u0079\u0070e\u0020\u006eu\u006d\u0062\u0065\u0072");};_cgfgg :=_gecd .ValueNumber ;if _cgfgg < 0{return MakeErrorResultType (ErrorTypeNum ,"R\u0061\u0074\u0065\u0020\u0073\u0068o\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u006e\u006fn\u0020\u006e\u0065g\u0061t\u0069\u0076\u0065");};_agff :=args [4];if _agff .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0079i\u0065\u006c\u0064\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_cdce :=_agff .ValueNumber ;if _cdce < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0069\u0065\u006cd\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065 \u006eo\u006e\u0020\u006e\u0065\u0067\u0061\u0074i\u0076\u0065");};_dffe :=args [5];if _dffe .Type !=ResultTypeNumber {return MakeErrorResult ("\u004fD\u0044\u004cP\u0052\u0049\u0043\u0045 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065mp\u0074\u0069\u006fn\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020n\u0075\u006db\u0065\u0072");};_dbdd :=_dffe .ValueNumber ;if _dbdd < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0069\u0065\u006cd\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065 \u006eo\u006e\u0020\u006e\u0065\u0067\u0061\u0074i\u0076\u0065");};_gbbe :=args [6];if _gbbe .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0050\u0052\u0049C\u0045\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0066\u0072\u0065\u0071\u0075\u0065\u006e\u0063\u0079\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bebea :=float64 (int (_gbbe .ValueNumber ));if !_dccgg (_bebea ){return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0066\u0072e\u0071u\u0065n\u0063\u0065\u0020\u0076\u0061\u006c\u0075e");};_abba :=0;if len (args )==8&&args [7].Type !=ResultTypeEmpty {_ccd :=args [7];if _ccd .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0062a\u0073\u0069\u0073\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_abba =int (_ccd .ValueNumber );if !_bbf (_abba ){return MakeErrorResultType (ErrorTypeNum ,"I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0062\u0061\u0073\u0069s\u0020\u0076\u0061\u006c\u0075\u0065\u0020f\u006f\u0072\u0020\u004f\u0044\u0044\u004c\u0050\u0052\u0049C\u0045");};};_edbc ,_gddbd :=_cebg (_gbdeb ,_faef ,_abba );if _gddbd .Type ==ResultTypeError {return _gddbd ;};_edbc *=_bebea ;_gdgd ,_gddbd :=_cebg (_agaf ,_faef ,_abba );if _gddbd .Type ==ResultTypeError {return _gddbd ;};_gdgd *=_bebea ;_feeg ,_gddbd :=_cebg (_gbdeb ,_agaf ,_abba );if _gddbd .Type ==ResultTypeError {return _gddbd ;};_feeg *=_bebea ;_dbafd :=_dbdd +_edbc *100*_cgfgg /_bebea ;_dbafd /=_gdgd *_cdce /_bebea +1;_dbafd -=_feeg *100*_cgfgg /_bebea ;return MakeNumberResult (_dbafd );};func _aefb (_affc ,_bbee []float64 ,_bgdce float64 )Result {_dddd :=false ;_adcd :=false ;for _cebdg :=0;_cebdg < len (_affc );_cebdg ++{if _affc [_cebdg ]> 0{_dddd =true ;};if _affc [_cebdg ]< 0{_adcd =true ;};};if !_dddd ||!_adcd {return MakeErrorResultType (ErrorTypeNum ,"");};_bcaeb :=_bgdce ;_acda :=1e-10;_bgac :=0;_gcb :=50;_fbgg :=false ;for {_eaba :=_geac (_affc ,_bbee ,_bcaeb );_eeda :=_bcaeb -_eaba /_abaa (_affc ,_bbee ,_bcaeb );_gged :=_ggd .Abs (_eeda -_bcaeb );_bcaeb =_eeda ;_bgac ++;if _gged <=_acda ||_ggd .Abs (_eaba )<=_acda {break ;};if _bgac > _gcb {_fbgg =true ;break ;};};if _fbgg ||_ggd .IsNaN (_bcaeb )||_ggd .IsInf (_bcaeb ,0){return MakeErrorResultType (ErrorTypeNum ,"");};return MakeNumberResult (_bcaeb );};
// Eval evaluates and returns a number.
func (_ggaaf Number )Eval (ctx Context ,ev Evaluator )Result {return MakeNumberResult (_ggaaf ._bdcc )};func _cea (_gbde ,_gcfc ,_ecd int )bool {if _gcfc < 1||_gcfc > 12{return false ;};if _ecd < 1{return false ;};return _ecd <=_gabg (_gbde ,_gcfc );};
// Eval evaluates and returns the result of a function call.
func (_cbde FunctionCall )Eval (ctx Context ,ev Evaluator )Result {_gacac :=LookupFunction (_cbde ._beab );if _gacac !=nil {_fcbcf :=make ([]Result ,len (_cbde ._febcbff ));for _cafa ,_dbcf :=range _cbde ._febcbff {_fcbcf [_cafa ]=_dbcf .Eval (ctx ,ev );_fcbcf [_cafa ].Ref =_dbcf .Reference (ctx ,ev );};if _ ,_dbabg :=_afdcc [_cbde ._beab ];!_dbabg {if _bfecd ,_gacb :=_eebgb (_fcbcf );_bfecd {return _gacb ;};};return _gacac (_fcbcf );};_bgca :=LookupFunctionComplex (_cbde ._beab );if _bgca !=nil {_cbae :=make ([]Result ,len (_cbde ._febcbff ));for _bffg ,_gdecac :=range _cbde ._febcbff {_cbae [_bffg ]=_gdecac .Eval (ctx ,ev );_cbae [_bffg ].Ref =_gdecac .Reference (ctx ,ev );};if _ ,_gccff :=_afdcc [_cbde ._beab ];!_gccff {if _ddfde ,_gced :=_eebgb (_cbae );_ddfde {return _gced ;};};return _bgca (ctx ,ev ,_cbae );};return MakeErrorResult ("\u0075\u006e\u006b\u006e\u006f\u0077\u006e\u0020\u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0020"+_cbde ._beab );};
// Day is an implementation of the Excel DAY() function.
func Day (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0044A\u0059\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065 \u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_daab :=args [0];switch _daab .Type {case ResultTypeEmpty :return MakeNumberResult (0);case ResultTypeNumber :_dbf :=_gfae (_daab .ValueNumber );return MakeNumberResult (float64 (_dbf .Day ()));case ResultTypeString :_bgd :=_g .ToLower (_daab .ValueString );if !_cdg (_bgd ){_ ,_ ,_ ,_ ,_fgcd ,_ffg :=_cca (_bgd );if _ffg .Type ==ResultTypeError {_ffg .ErrorMessage ="I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073\u0020\u0066o\u0072 \u0044\u0041\u0059";return _ffg ;};if _fgcd {return MakeNumberResult (0);};};_ ,_ ,_aae ,_ ,_gbf :=_eggd (_bgd );if _gbf .Type ==ResultTypeError {return _gbf ;};return MakeNumberResult (float64 (_aae ));default:return MakeErrorResult ("\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072 \u0044\u0041\u0059");};};
// Pricedisc implements the Excel PRICEDISC function.
func Pricedisc (args []Result )Result {_gaaf :=len (args );if _gaaf !=4&&_gaaf !=5{return MakeErrorResult ("\u0050\u0052\u0049\u0043\u0045D\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020f\u006f\u0075\u0072\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_gfgb ,_bfdd ,_eegf :=_gbce (args [0],args [1],"\u0050R\u0049\u0043\u0045\u0044\u0049\u0053C");if _eegf .Type ==ResultTypeError {return _eegf ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052\u0049C\u0045\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0064\u0069\u0073\u0063\u006f\u0075\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079p\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_febg :=args [2].ValueNumber ;if _febg <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049C\u0045\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0064\u0069\u0073\u0063\u006f\u0075\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065 \u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050R\u0049\u0043E\u0044\u0049\u0053\u0043 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065mp\u0074\u0069\u006fn\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020n\u0075\u006db\u0065\u0072");};_baab :=args [3].ValueNumber ;if _baab <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050R\u0049\u0043E\u0044\u0049\u0053\u0043 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065mp\u0074\u0069\u006fn\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006fs\u0069\u0074i\u0076\u0065");};_fgec :=0;if _gaaf ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052I\u0043\u0045\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fgec =int (args [4].ValueNumber );if !_bbf (_fgec ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0050R\u0049\u0043E\u0044\u0049\u0053\u0043");};};_dcafg ,_eegf :=_cebg (_gfgb ,_bfdd ,_fgec );if _eegf .Type ==ResultTypeError {return _eegf ;};return MakeNumberResult (_baab *(1-_febg *_dcafg ));};var _gebd =[...]uint8 {0,20,37,60,78,96};
// Ifs is an implementation of the Excel IFS() function.
func Ifs (args []Result )Result {if len (args )< 2{return MakeErrorResult ("I\u0046\u0053\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061t\u0020\u006c\u0065\u0061\u0073\u0074\u0020t\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};for _bccg :=0;_bccg < len (args )-1;_bccg +=2{if args [_bccg ].ValueNumber ==1{return args [_bccg +1];};};return MakeErrorResultType (ErrorTypeNA ,"");};const _fcca =57374;
// Pi is an implementation of the Excel Pi() function that just returns the Pi
// constant.
func Pi (args []Result )Result {if len (args )!=0{return MakeErrorResult ("\u0050I\u0028\u0029\u0020\u0061c\u0063\u0065\u0070\u0074\u0073 \u006eo\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074s");};return MakeNumberResult (_ggd .Pi );};type durationArgs struct{_bdfe float64 ;_gcfgf float64 ;_debg float64 ;_bgga float64 ;_ddcb float64 ;_bfcb int ;};
// FunctionCall is a function call expression.
type FunctionCall struct{_beab string ;_febcbff []Expression ;};const _fcbgb =57361;func _aecc (_bcdc []Result ,_adeaf bool )Result {var _egad string ;if _adeaf {_egad ="\u004c\u0041\u0052G\u0045";}else {_egad ="\u0053\u004d\u0041L\u004c";};if len (_bcdc )!=2{return MakeErrorResult (_egad +"\u0020\u0072\u0065qu\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_fbfc :=_bcdc [0];var _gbae [][]Result ;switch _fbfc .Type {case ResultTypeArray :_gbae =_fbfc .ValueArray ;case ResultTypeList :_gbae =[][]Result {_fbfc .ValueList };default:return MakeErrorResult (_egad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u006f\u0066\u0020\u0074\u0079p\u0065\u0020a\u0072\u0072\u0061\u0079");};if len (_gbae )==0{return MakeErrorResult (_egad +"\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0074\u006f\u0020c\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u0031\u0020\u0072\u006f\u0077");};if _bcdc [1].Type !=ResultTypeNumber {return MakeErrorResult (_egad +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074yp\u0065\u0020\u006eu\u006db\u0065\u0072");};_edea :=_bcdc [1].ValueNumber ;if _edea < 1{return MakeErrorResultType (ErrorTypeNum ,_egad +"\u0020\u0072e\u0071\u0075\u0069\u0072\u0065s\u0020\u0073\u0065\u0063\u006fn\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u0030");};_fceeg :=int (_edea );if float64 (_fceeg )!=_edea {return MakeErrorResultType (ErrorTypeNum ,_egad +"\u0020\u0072e\u0071\u0075\u0069\u0072\u0065s\u0020\u0073\u0065\u0063\u006fn\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u0030");};_bfdb :=[]float64 {};for _ ,_eacg :=range _gbae {for _ ,_afbe :=range _eacg {if _afbe .Type ==ResultTypeNumber {_bfdb =append (_bfdb ,_afbe .ValueNumber );};};};if _fceeg > len (_bfdb ){return MakeErrorResultType (ErrorTypeNum ,_egad +" \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u006c\u0065s\u0073\u0020\u006f\u0072\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u0068\u0061\u006e\u0020t\u0068\u0065\u0020\u006e\u0075m\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u006e\u0075\u006d\u0062\u0065\u0072s\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_edaf :=_af .MergeSort (_bfdb );if _adeaf {return MakeNumberResult (_edaf [len (_edaf )-_fceeg ]);}else {return MakeNumberResult (_edaf [_fceeg -1]);};};func _ffebc (_ebbe string ,_dfebce _dd .Time )(_dd .Time ,error ){_cgcf ,_ ,_ebdg :=_c .ParseFloat (_ebbe ,10,128,_c .ToNearestEven );if _ebdg !=nil {return _dd .Time {},_ebdg ;};_aaaa :=new (_c .Float );_aaaa .SetUint64 (uint64 (24*_dd .Hour ));_cgcf .Mul (_cgcf ,_aaaa );_gcd ,_ :=_cgcf .Uint64 ();_fbag :=_dfebce .Add (_dd .Duration (_gcd ));return _faefc (_fbag ),nil ;};const _bbbd =57353;
// Eval evaluates the binary expression using the context given.
func (_eab BinaryExpr )String ()string {_acg :="";switch _eab ._ceb {case BinOpTypePlus :_acg ="\u002b";case BinOpTypeMinus :_acg ="\u002d";case BinOpTypeMult :_acg ="\u002a";case BinOpTypeDiv :_acg ="\u002f";case BinOpTypeExp :_acg ="\u005e";case BinOpTypeLT :_acg ="\u003c";case BinOpTypeGT :_acg ="\u003e";case BinOpTypeEQ :_acg ="\u003d";case BinOpTypeLEQ :_acg ="\u003c\u003d";case BinOpTypeGEQ :_acg ="\u003e\u003d";case BinOpTypeNE :_acg ="\u003c\u003e";case BinOpTypeConcat :_acg ="\u0026";};return _eab ._bb .String ()+_acg +_eab ._ce .String ();};func _fae (_gga ,_ccae int64 )float64 {return float64 (int (0.5+float64 ((_ccae -_gga )/86400)))};
// RandBetween is an implementation of the Excel RANDBETWEEN() function that returns a random
// integer in the range specified.
func RandBetween (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0052A\u004e\u0044B\u0045\u0054\u0057\u0045E\u004e\u0028\u0029 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020tw\u006f\u0020\u006eu\u006d\u0065r\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};_ddgeb :=args [0].AsNumber ();_dbfce :=args [1].AsNumber ();if _ddgeb .Type !=ResultTypeNumber ||_dbfce .Type !=ResultTypeNumber {return MakeErrorResult ("\u0052A\u004e\u0044B\u0045\u0054\u0057\u0045E\u004e\u0028\u0029 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020tw\u006f\u0020\u006eu\u006d\u0065r\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};if _dbfce .ValueNumber < _ddgeb .ValueNumber {return MakeErrorResult ("\u0052\u0041\u004e\u0044\u0042E\u0054\u0057\u0045\u0045\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006c\u0061\u0072\u0067\u0065r");};_cfcd :=int64 (_ddgeb .ValueNumber );_ecfg :=int64 (_dbfce .ValueNumber );return MakeNumberResult (float64 (_cfgac .Int63n (_ecfg -_cfcd +1)+_cfcd ));};func _cbga (_cdbeb Result ,_aaee ,_ccee int )[][]Result {_eggg :=[][]Result {};switch _cdbeb .Type {case ResultTypeArray :for _faaf ,_bebfd :=range _cdbeb .ValueArray {if _faaf < _aaee {_eggg =append (_eggg ,_dfcd (MakeListResult (_bebfd ),_ccee ));}else {_eggg =append (_eggg ,_dfcd (MakeErrorResultType (ErrorTypeNA ,""),_ccee ));};};case ResultTypeList :_gcfd :=_dfcd (_cdbeb ,_ccee );for _agfb :=0;_agfb < _aaee ;_agfb ++{_eggg =append (_eggg ,_gcfd );};case ResultTypeNumber ,ResultTypeString ,ResultTypeError ,ResultTypeEmpty :for _fcab :=0;_fcab < _aaee ;_fcab ++{_aceg :=_dfcd (_cdbeb ,_ccee );_eggg =append (_eggg ,_aceg );};};return _eggg ;};func Sign (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0053\u0049\u0047\u004e(\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_bfgf :=args [0].AsNumber ();if _bfgf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0049\u0047N(\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020a\u0020n\u0075m\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if _bfgf .ValueNumber < 0{return MakeNumberResult (-1);}else if _bfgf .ValueNumber > 0{return MakeNumberResult (1);};return MakeNumberResult (0);};
// Reference returns an invalid reference for EmptyExpr.
func (_ddd EmptyExpr )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };var _afdcc =map[string ]bool {"\u0049F\u0045\u0052\u0052\u004f\u0052":true ,"\u0049\u0046\u004e\u0041":true ,"\u005f\u0078\u006c\u0066\u006e\u002e\u0049\u0046\u004e\u0041":true ,"\u0049\u0053\u0045R\u0052":true ,"\u0049S\u0045\u0052\u0052\u004f\u0052":true ,"\u0049\u0053\u004e\u0041":true ,"\u0049\u0053\u0052E\u0046":true };
// String returns an empty string for Error.
func (_eabe Error )String ()string {return ""};
// LastColumn returns empty string for the invalid reference context.
func (_efff *ivr )LastColumn (rowFrom ,rowTo int )string {return ""};
// FloorMath implements _xlfn.FLOOR.MATH which rounds numbers down to the
// nearest multiple of the second argument, toward or away from zero as
// specified by the third argument.
func FloorMath (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0046\u004c\u004f\u004f\u0052\u002e\u004dA\u0054\u0048\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if len (args )> 3{return MakeErrorResult ("\u0046\u004c\u004f\u004f\u0052\u002e\u004dA\u0054\u0048\u0028)\u0020\u0061\u006c\u006co\u0077\u0073\u0020\u0061\u0074\u0020\u006d\u006f\u0073\u0074\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_dcfd :=args [0].AsNumber ();if _dcfd .Type !=ResultTypeNumber {return MakeErrorResult ("f\u0069\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020FL\u004f\u004f\u0052\u002eM\u0041\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073t \u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bged :=float64 (1);if _dcfd .ValueNumber < 0{_bged =-1;};if len (args )> 1{_gecb :=args [1].AsNumber ();if _gecb .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061r\u0067\u0075\u006den\u0074\u0020\u0074\u006f\u0020\u0046L\u004f\u004f\u0052\u002e\u004d\u0041\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006db\u0065\u0072");};_bged =_gecb .ValueNumber ;};_ebcc :=float64 (1);if len (args )> 2{_ffcd :=args [2].AsNumber ();if _ffcd .Type !=ResultTypeNumber {return MakeErrorResult ("t\u0068\u0069\u0072\u0064\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020FL\u004f\u004f\u0052\u002eM\u0041\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073t \u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_ebcc =_ffcd .ValueNumber ;};if len (args )==1{return MakeNumberResult (_ggd .Floor (_dcfd .ValueNumber ));};_decaf :=_dcfd .ValueNumber ;_decaf ,_gacab :=_ggd .Modf (_decaf /_bged );if _gacab !=0&&_dcfd .ValueNumber < 0&&_ebcc > 0{_decaf ++;};return MakeNumberResult (_decaf *_bged );};
// If is an implementation of the Excel IF() function. It takes one, two or
// three arguments.
func If (args []Result )Result {if len (args )< 2{return MakeErrorResult ("\u0049\u0046\u0020re\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074 \u006ce\u0061s\u0074 \u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if len (args )> 3{return MakeErrorResult ("\u0049\u0046\u0020ac\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0074\u0020m\u006fs\u0074 \u0074h\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_ddef :=args [0];switch _ddef .Type {case ResultTypeError :return _ddef ;case ResultTypeNumber :if len (args )==1{return MakeBoolResult (_ddef .ValueNumber !=0);};if _ddef .ValueNumber !=0{return args [1];};if len (args )==3{return args [2];}else {return MakeBoolResult (false );};case ResultTypeList :return _fddb (args );case ResultTypeArray :return _dbcg (args );default:return MakeErrorResult ("\u0049F\u0020\u0069n\u0069\u0074\u0069\u0061l\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u006d\u0075\u0073t \u0062\u0065\u0020n\u0075\u006de\u0072\u0069\u0063\u0020\u006f\u0072 \u0061\u0072r\u0061\u0079");};};const _eebd =57367;
// CountIf implements the COUNTIF function.
func CountIf (args []Result )Result {if len (args )< 2{return MakeErrorResult ("\u0043\u004f\u0055N\u0054\u0049\u0046\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0073");};_befc :=args [0];if _befc .Type !=ResultTypeArray &&_befc .Type !=ResultTypeList {return MakeErrorResult ("\u0043O\u0055\u004eT\u0049\u0046\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0066\u0069\u0072\u0073\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020t\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_bcfg :=_bgaf (args [1]);_cgdg :=0;for _ ,_fbgcf :=range _ggecf (_befc ){for _ ,_dgdgf :=range _fbgcf {if _edbdd (_dgdgf ,_bcfg ){_cgdg ++;};};};return MakeNumberResult (float64 (_cgdg ));};func _eed (_gace ,_cbg _dd .Time ,_cbdc int )_dd .Time {_cfgbg :=_dd .Date (_gace .Year (),_cbg .Month (),_cbg .Day (),0,0,0,0,_dd .UTC );if _cfgbg .After (_gace ){_cfgbg =_cfgbg .AddDate (-1,0,0);};for !_cfgbg .After (_gace ){_cfgbg =_cfgbg .AddDate (0,12/_cbdc ,0);};return _cfgbg ;};
// Dollarfr implements the Excel DOLLARFR function.
func Dollarfr (args []Result )Result {_badca ,_bdeb ,_gbcb :=_fcag (args ,"\u0044\u004f\u004c\u004c\u0041\u0052\u0046\u0052");if _gbcb .Type ==ResultTypeError {return _gbcb ;};if _bdeb ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0044\u004f\u004c\u004c\u0041R\u0046\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066r\u0061\u0063\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if _badca ==0{return MakeNumberResult (0);};_dff :=_badca < 0;if _dff {_badca =-_badca ;};_babb :=float64 (int (_badca ));_ccea :=args [0].Value ();_dfeg :=_g .Split (_ccea ,"\u002e");_cbbf :=0.0;if len (_dfeg )> 1{var _ecfe error ;_dfd :=_dfeg [1];_cbbf ,_ecfe =_dc .ParseFloat (_dfd ,64);if _ecfe !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0066\u0072\u0061\u0063\u0074\u0069\u006f\u006e\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0066\u006fr \u0044\u004f\u004cL\u0041R\u0046\u0052");};_egba :=float64 (len (_dfd ));_cbbf /=_ggd .Pow (10,_egba );};_abda :=_cbbf *_bdeb /_ggd .Pow (10,float64 (int (_ggd .Log10 (_bdeb )))+1)+_babb ;if _dff {_abda =-_abda ;};return MakeNumberResult (_abda );};
// SupportedFunctions returns a list of supported functions.
func SupportedFunctions ()[]string {_gdfa :=[]string {};for _cbec :=range _gafdf {_gdfa =append (_gdfa ,_cbec );};for _fgbea :=range _gecfd {_gdfa =append (_gdfa ,_fgbea );};_bg .Strings (_gdfa );return _gdfa ;};
// Fact is an implementation of the excel FACT function which returns the
// factorial of a positive numeric input.
func Fact (args []Result )Result {if len (args )!=1{return MakeErrorResult ("F\u0041\u0043\u0054\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067u\u006de\u006e\u0074");};_feeee :=args [0].AsNumber ();if _feeee .Type !=ResultTypeNumber {return MakeErrorResult ("F\u0041\u0043\u0054\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067u\u006de\u006e\u0074");};if _feeee .ValueNumber < 0{return MakeErrorResult ("\u0046\u0041\u0043\u0054\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u006f\u006e\u006c\u0079\u0020\u0070\u006f\u0073\u0069t\u0069\u0076\u0065\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};return MakeNumberResult (_gdbed (_feeee .ValueNumber ));};
// Coupnum implements the Excel COUPNUM function.
func Coupnum (args []Result )Result {_bgfdg ,_bafc :=_abfb (args ,"\u0043O\u0055\u0050\u004e\u0055\u004d");if _bafc .Type ==ResultTypeError {return _bafc ;};_cdda :=_bgfdg ._edba ;_aeg :=_bgfdg ._bbed ;_aaab ,_bafc :=_dccd (_bgfdg ._dddg ,_bgfdg ._edg ,_cdda ,_aeg );if _bafc .Type ==ResultTypeError {return _bafc ;};return MakeNumberResult (_aaab );};func _eeg (_degg Result ,_feff ,_aeea string )(float64 ,Result ){var _gdcda float64 ;switch _degg .Type {case ResultTypeNumber :_gdcda =float64 (int (_degg .ValueNumber ));case ResultTypeString :_cfc :=DateValue ([]Result {_degg });if _cfc .Type ==ResultTypeError {return 0,MakeErrorResult ("\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020"+_feff +"\u0020\u0064\u0061\u0074\u0065\u0020\u0066\u006f\u0072\u0020"+_aeea );};_gdcda =_cfc .ValueNumber ;default:return 0,MakeErrorResult ("\u0049\u006e\u0063or\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020"+_aeea );};if _gdcda < 0{return 0,MakeErrorResultType (ErrorTypeNum ,_feff +"\u0020\u0073\u0068ou\u006c\u0064\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};return _gdcda ,_dabe ;};
// Intrate implements the Excel INTRATE function.
func Intrate (args []Result )Result {_cgde :=len (args );if _cgde !=4&&_cgde !=5{return MakeErrorResult ("\u0049\u004e\u0054\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0066\u006f\u0075r\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_fbda ,_dcaf ,_aabf :=_gbce (args [0],args [1],"\u0049N\u0054\u0052\u0041\u0054\u0045");if _aabf .Type ==ResultTypeError {return _aabf ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u004e\u0054\u0052\u0041\u0054E\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0069\u006e\u0076\u0065\u0073\u0074\u006d\u0065\u006e\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_bfgg :=args [2].ValueNumber ;if _bfgg <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u004e\u0054\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0069\u006e\u0076e\u0073\u0074\u006d\u0065\u006e\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u0061r\u0067\u0075\u006de\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u004e\u0054\u0052\u0041\u0054E\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065\u006d\u0070\u0074\u0069\u006f\u006e \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_gdef :=args [3].ValueNumber ;if _gdef <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u004e\u0054\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064e\u006d\u0070\u0074\u0069\u006f\u006e\u0020\u0074\u006f \u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u0061r\u0067\u0075\u006de\u006e\u0074");};_acd :=0;if _cgde ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049N\u0054\u0052A\u0054\u0045\u0020\u0072e\u0071\u0075\u0069r\u0065\u0073\u0020\u0062\u0061\u0073\u0069\u0073\u0020to\u0020\u0062\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_acd =int (args [4].ValueNumber );if !_bbf (_acd ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006eco\u0072\u0072\u0065c\u0074\u0020\u0062\u0061sis\u0020ar\u0067\u0075\u006d\u0065\u006e\u0074\u0020fo\u0072\u0020\u0049\u004e\u0054\u0052\u0041T\u0045");};};_fegc ,_aabf :=_cebg (_fbda ,_dcaf ,_acd );if _aabf .Type ==ResultTypeError {return _aabf ;};return MakeNumberResult ((_gdef -_bfgg )/_bfgg /_fegc );};type noCache struct{};
// Eval evaluates a range returning a list of results or an error.
func (_gcef Range )Eval (ctx Context ,ev Evaluator )Result {_fcef :=_gcef ._bbag .Reference (ctx ,ev );_aefbe :=_gcef ._cgbeb .Reference (ctx ,ev );_eabgg :=_fffc (_fcef ,_aefbe );if _fcef .Type ==ReferenceTypeCell &&_aefbe .Type ==ReferenceTypeCell {if _aacc ,_ffede :=ev .GetFromCache (_eabgg );_ffede {return _aacc ;}else {_eaaf :=_dfad (ctx ,ev ,_fcef .Value ,_aefbe .Value );ev .SetCache (_eabgg ,_eaaf );return _eaaf ;};};return MakeErrorResult ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072a\u006e\u0067\u0065\u0020"+_eabgg );};func _abaa (_efg ,_dfgd []float64 ,_ecgb float64 )float64 {_adcf :=_ecgb +1;_agadb :=0.0;_bfeg :=len (_efg );_dfbc :=_dfgd [0];for _ffgf :=1;_ffgf < _bfeg ;_ffgf ++{_bcdg :=(_dfgd [_ffgf ]-_dfbc )/365;_agadb -=_bcdg *_efg [_ffgf ]/_ggd .Pow (_adcf ,_bcdg +1);};return _agadb ;};func _cebg (_fad ,_aea float64 ,_feef int )(float64 ,Result ){_fced ,_gebc :=_gfae (_fad ),_gfae (_aea );_cgba :=_fced .Unix ();_bda :=_gebc .Unix ();if _cgba ==_bda {return 0,_dabe ;};_bfbe ,_adbb ,_deb :=_fced .Date ();_dfe ,_bdee ,_aaga :=_gebc .Date ();_cge ,_daaf :=int (_adbb ),int (_bdee );var _cfg ,_babd float64 ;switch _feef {case 0:if _deb ==31{_deb --;};if _deb ==30&&_aaga ==31{_aaga --;}else if _fef :=_bef (_bfbe );_cge ==2&&((_fef &&_deb ==29)||(!_fef &&_deb ==28)){_deb =30;if _badcf :=_bef (_dfe );_daaf ==2&&((_badcf &&_aaga ==29)||(!_badcf &&_aaga ==28)){_aaga =30;};};_cfg =float64 ((_dfe -_bfbe )*360+(_daaf -_cge )*30+(_aaga -_deb ));_babd =360;case 1:_cfg =_aea -_fad ;_cbc :=_bfbe !=_dfe ;if _cbc &&(_dfe !=_bfbe +1||_cge < _daaf ||(_cge ==_daaf &&_deb < _aaga )){_dcf :=0;for _dgfa :=_bfbe ;_dgfa <=_dfe ;_dgfa ++{_dcf +=_edc (_dgfa ,1);};_babd =float64 (_dcf )/float64 (_dfe -_bfbe +1);}else {if !_cbc &&_bef (_bfbe ){_babd =366;}else {if _cbc &&((_bef (_bfbe )&&(_cge < 2||(_cge ==2&&_deb <=29)))||(_bef (_dfe )&&(_daaf > 2||(_daaf ==2&&_aaga ==29)))){_babd =366;}else {_babd =365;};};};case 2:_cfg =_aea -_fad ;_babd =360;case 3:_cfg =_aea -_fad ;_babd =365;case 4:if _deb ==31{_deb --;};if _aaga ==31{_aaga --;};_cfg =float64 ((_dfe -_bfbe )*360+(_daaf -_cge )*30+(_aaga -_deb ));_babd =360;default:return 0,MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073 \u0066o\u0072\u0020\u0059\u0065\u0061\u0072\u0046r\u0061\u0063");};return _cfg /_babd ,_dabe ;};
// Ceiling is an implementation of the CEILING function which
// returns the ceiling of a number.
func Ceiling (args []Result )Result {if len (args )==0{return MakeErrorResult ("C\u0045\u0049\u004c\u0049\u004e\u0047\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020a\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006ee \u0061\u0072\u0067u\u006de\u006e\u0074");};if len (args )> 2{return MakeErrorResult ("\u0043\u0045\u0049\u004c\u0049\u004e\u0047\u0028\u0029\u0020\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0074\u0020\u006d\u006f\u0073\u0074 \u0074\u0077\u006f\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};_dfcg :=args [0].AsNumber ();if _dfcg .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066i\u0072\u0073t\u0020\u0061\u0072\u0067u\u006d\u0065\u006et\u0020\u0074\u006f\u0020\u0043\u0045\u0049\u004c\u0049NG\u0028\u0029\u0020m\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u0020n\u0075\u006db\u0065\u0072");};_deegg :=float64 (1);if _dfcg .ValueNumber < 0{_deegg =-1;};if len (args )> 1{_fbeg :=args [1].AsNumber ();if _fbeg .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073e\u0063\u006fn\u0064\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020t\u006f\u0020\u0043\u0045\u0049\u004cI\u004e\u0047\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062e\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_deegg =_fbeg .ValueNumber ;};if _deegg < 0&&_dfcg .ValueNumber > 0{return MakeErrorResultType (ErrorTypeNum ,"\u006e\u0065\u0067\u0061\u0074\u0069v\u0065\u0020\u0073\u0069\u0067\u0020\u0074\u006f\u0020\u0043\u0045\u0049\u004cI\u004e\u0047\u0028\u0029\u0020\u0069\u006ev\u0061\u006c\u0069\u0064");};if len (args )==1{return MakeNumberResult (_ggd .Ceil (_dfcg .ValueNumber ));};_egef :=_dfcg .ValueNumber ;_egef ,_cadd :=_ggd .Modf (_egef /_deegg );if _cadd > 0{_egef ++;};return MakeNumberResult (_egef *_deegg );};
// Coupdays implements the Excel COUPDAYS function.
func Coupdays (args []Result )Result {_afd ,_edcb :=_abfb (args ,"\u0043\u004f\u0055\u0050\u0044\u0041\u0059\u0053");if _edcb .Type ==ResultTypeError {return _edcb ;};return MakeNumberResult (_eabc (_afd ._dddg ,_afd ._edg ,_afd ._edba ,_afd ._bbed ));};
// Combin is an implementation of the Excel COMBINA function whic returns the
// number of combinations.
func Combin (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0043\u004f\u004d\u0042\u0049\u004e\u0028\u0029\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020t\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cbcad :=args [0].AsNumber ();_eefcf :=args [1].AsNumber ();if _cbcad .Type !=ResultTypeNumber ||_eefcf .Type !=ResultTypeNumber {return MakeErrorResult ("C\u004f\u004d\u0042\u0049\u004e\u0028)\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006d\u0065r\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_faab :=_ggd .Trunc (_cbcad .ValueNumber );_bfac :=_ggd .Trunc (_eefcf .ValueNumber );if _bfac > _faab {return MakeErrorResult ("\u0043O\u004d\u0042\u0049\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006b\u0020\u003c\u003d\u0020\u006e");};if _bfac ==_faab ||_bfac ==0{return MakeNumberResult (1);};_ebbb :=float64 (1);for _eaeab :=float64 (1);_eaeab <=_bfac ;_eaeab ++{_ebbb *=(_faab +1-_eaeab )/_eaeab ;};return MakeNumberResult (_ebbb );};const _facf =57358;
// Round is an implementation of the Excel ROUND function that rounds a number
// to a specified number of digits.
func Round (args []Result )Result {return _dgbb (args ,_cace )};
// Reference returns a string reference value to a horizontal range.
func (_fefa HorizontalRange )Reference (ctx Context ,ev Evaluator )Reference {return Reference {Type :ReferenceTypeHorizontalRange ,Value :_fefa .horizontalRangeReference ()};};
// Evaluator is the interface for a formula evaluator. This is needed so we can
// pass it to the spreadsheet to let it evaluate formula cells before returning
// the results.
// NOTE: in order to implement Evaluator without cache embed noCache in it.
type Evaluator interface{Eval (_dbec Context ,formula string )Result ;SetCache (_fff string ,_fbdg Result );GetFromCache (_fffa string )(Result ,bool );LastEvalIsRef ()bool ;};
// Large implements the Excel LARGE function.
func Large (args []Result )Result {return _aecc (args ,true )};func _egdg (_ffaa string )*criteriaRegex {_geag :=&criteriaRegex {};if _ffaa ==""{return _geag ;};if _egcb :=_cafgf .FindStringSubmatch (_ffaa );len (_egcb )> 1{_geag ._faea =_ebfdg ;_geag ._ebde =_egcb [1];}else if _egga :=_fdga .FindStringSubmatch (_ffaa );len (_egga )> 1{_geag ._faea =_ebfdg ;_geag ._ebde =_egga [1];}else if _daabag :=_faff .FindStringSubmatch (_ffaa );len (_daabag )> 1{_geag ._faea =_cbgc ;_geag ._ebde =_daabag [1];}else if _adfa :=_cdgcda .FindStringSubmatch (_ffaa );len (_adfa )> 1{_geag ._faea =_eegbb ;_geag ._ebde =_adfa [1];}else if _fdee :=_eagd .FindStringSubmatch (_ffaa );len (_fdee )> 1{_geag ._faea =_gfcf ;_geag ._ebde =_fdee [1];}else if _fefd :=_dcaga .FindStringSubmatch (_ffaa );len (_fefd )> 1{_geag ._faea =_bbae ;_geag ._ebde =_fefd [1];};return _geag ;};type parsedReplaceObject struct{_dbeee string ;_cdbg int ;_bede int ;_dbef string ;};func _baabg (_dgbf ,_egaf []string )[]string {for _ ,_beecc :=range _egaf {_dgbf =append (_dgbf ,_beecc );};return _dgbf ;};
// Power is an implementation of the Excel POWER function that raises a number
// to a power. It requires two numeric arguments.
func Power (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0050\u004f\u0057\u0045\u0052\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};_eeab :=args [0].AsNumber ();if _eeab .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072s\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0050\u004f\u0057\u0045\u0052\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_babc :=args [1].AsNumber ();if _babc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020a\u0072\u0067\u0075m\u0065\u006e\u0074\u0020t\u006f\u0020\u0050\u004f\u0057\u0045\u0052\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};return MakeNumberResult (_ggd .Pow (_eeab .ValueNumber ,_babc .ValueNumber ));};
// Date is an implementation of the Excel DATE() function.
func Date (args []Result )Result {if len (args )!=3||args [0].Type !=ResultTypeNumber ||args [1].Type !=ResultTypeNumber ||args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0041TE\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s t\u0068re\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_dec :=int (args [0].ValueNumber );if _dec < 0||_dec >=10000{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074 \u0064\u0061\u0074\u0065");}else if _dec <=1899{_dec +=1900;};_fag :=_dd .Month (args [1].ValueNumber );_agad :=int (args [2].ValueNumber );_cfe :=_edb (_dec ,_fag ,_agad );_cgcb :=_fae (_adef ,_cfe )+1;if _cgcb < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074 \u0064\u0061\u0074\u0065");};return MakeNumberResult (_cgcb );};func _baaf (_gbgc []Result ,_ecba bool )Result {_bcba :="\u004d\u0041\u0058";if _ecba {_bcba ="\u004d\u0041\u0058\u0041";};if len (_gbgc )==0{return MakeErrorResult (_bcba +"\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s\u0020\u0061\u0074\u0020\u006c\u0065\u0061s\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ebbg :=-_ggd .MaxFloat64 ;for _ ,_gegc :=range _gbgc {switch _gegc .Type {case ResultTypeNumber :if (_ecba ||!_gegc .IsBoolean )&&_gegc .ValueNumber > _ebbg {_ebbg =_gegc .ValueNumber ;};case ResultTypeList ,ResultTypeArray :_eead :=_baaf (_gegc .ListValues (),_ecba );if _eead .ValueNumber > _ebbg {_ebbg =_eead .ValueNumber ;};case ResultTypeEmpty :case ResultTypeString :_dfga :=0.0;if _ecba {_dfga =_gegc .AsNumber ().ValueNumber ;};if _dfga > _ebbg {_ebbg =_dfga ;};default:_ea .Log .Debug ("\u0075\u006e\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020"+_bcba +"\u0028\u0029\u0020\u0061rg\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_gegc .Type );};};if _ebbg ==-_ggd .MaxFloat64 {_ebbg =0;};return MakeNumberResult (_ebbg );};func (_feed node )String ()string {return _b .Sprintf ("\u007b%\u0073\u0020\u0025\u0073\u007d",_feed ._bbce ,_cbeae (string (_feed ._gafa )));};
// Match implements the MATCH function.
func Match (args []Result )Result {_cbge :=len (args );if _cbge !=2&&_cbge !=3{return MakeErrorResult ("\u004d\u0041T\u0043\u0048\u0020\u0072e\u0071\u0075i\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020o\u0072\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_cggca :=1;if _cbge ==3&&args [2].Type !=ResultTypeEmpty {if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0041\u0054\u0043\u0048\u0020\u0072\u0065q\u0075\u0069\u0072es\u0020\u0074\u0068\u0065\u0020\u0074h\u0069\u0072\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006db\u0065\u0072");};_gbbg :=args [2].ValueNumber ;if _gbbg ==-1||_gbbg ==0{_cggca =int (_gbbg );};};_fbff :=args [1];var _dacgb []Result ;switch _fbff .Type {case ResultTypeList :_dacgb =_fbff .ValueList ;case ResultTypeArray :_abg :=_fbff .ValueArray ;for _ ,_gadeg :=range _abg {if len (_gadeg )!=1{return MakeErrorResult ("\u004d\u0041\u0054\u0043\u0048\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068e\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006f\u006e\u0065\u002dd\u0069\u006d\u0065\u006e\u0073\u0069o\u006e\u0061l\u0020\u0072a\u006eg\u0065");};_dacgb =append (_dacgb ,_gadeg [0]);};default:return MakeErrorResult ("\u004d\u0041\u0054\u0043\u0048\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068e\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006f\u006e\u0065\u002dd\u0069\u006d\u0065\u006e\u0073\u0069o\u006e\u0061l\u0020\u0072a\u006eg\u0065");};_gafc :=_bgaf (args [0]);switch _cggca {case 0:for _abeg ,_abdd :=range _dacgb {if _badf (_abdd ,_gafc ){return MakeNumberResult (float64 (_abeg +1));};};case -1:for _bfgga :=0;_bfgga < len (_dacgb );_bfgga ++{if _badf (_dacgb [_bfgga ],_gafc ){return MakeNumberResult (float64 (_bfgga +1));};if _gafc ._faaff &&(_dacgb [_bfgga ].ValueNumber < _gafc ._dfccd ){if _bfgga ==0{return MakeErrorResultType (ErrorTypeNA ,"");};return MakeNumberResult (float64 (_bfgga ));};};case 1:for _gfba :=0;_gfba < len (_dacgb );_gfba ++{if _badf (_dacgb [_gfba ],_gafc ){return MakeNumberResult (float64 (_gfba +1));};if _gafc ._faaff &&(_dacgb [_gfba ].ValueNumber > _gafc ._dfccd ){if _gfba ==0{return MakeErrorResultType (ErrorTypeNA ,"");};return MakeNumberResult (float64 (_gfba ));};};};return MakeErrorResultType (ErrorTypeNA ,"");};var _baefe =[...]struct{_gcdd int ;_edbbd int ;_egdc string ;}{};
// Pv implements the Excel PV function.
func Pv (args []Result )Result {_bcee :=len (args );if _bcee < 3||_bcee > 5{return MakeErrorResult ("\u0050\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0033\u0020\u0061\u006e\u0064\u00205");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_fbdb :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_bgdd :=args [1].ValueNumber ;if _bgdd !=float64 (int (_bgdd )){return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006ff\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065n\u0074");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0061\u0079\u006d\u0065\u006e\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_agcb :=args [2].ValueNumber ;_dcafb :=0.0;if _bcee >=4&&args [3].Type !=ResultTypeEmpty {if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0056 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0075\u0074\u0075\u0072\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dcafb =args [3].ValueNumber ;};_eece :=0.0;if _bcee ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_eece =args [4].ValueNumber ;if _eece !=0{_eece =1;};};if _fbdb ==0{return MakeNumberResult (-_agcb *_bgdd -_dcafb );}else {return MakeNumberResult ((((1-_ggd .Pow (1+_fbdb ,_bgdd ))/_fbdb )*_agcb *(1+_fbdb *_eece )-_dcafb )/_ggd .Pow (1+_fbdb ,_bgdd ));};};const (BinOpTypeUnknown BinOpType =iota ;BinOpTypePlus ;BinOpTypeMinus ;BinOpTypeMult ;BinOpTypeDiv ;BinOpTypeExp ;BinOpTypeLT ;BinOpTypeGT ;BinOpTypeEQ ;BinOpTypeLEQ ;BinOpTypeGEQ ;BinOpTypeNE ;BinOpTypeConcat ;);
// Eval evaluates and returns an expression with prefix.
func (_cgdc PrefixExpr )Eval (ctx Context ,ev Evaluator )Result {_beffb :=_cgdc ._ecfdc .Reference (ctx ,ev );switch _beffb .Type {case ReferenceTypeSheet :if _eabad (_beffb ,ctx ){return MakeErrorResultType (ErrorTypeName ,_b .Sprintf ("\u0053h\u0065e\u0074\u0020\u0025\u0073\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064",_beffb .Value ));};_fbebg :=ctx .Sheet (_beffb .Value );return _cgdc ._bgbg .Eval (_fbebg ,ev );default:return MakeErrorResult (_b .Sprintf ("\u006e\u006f\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0066\u006f\u0072\u0020r\u0065f\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_beffb .Type ));};};func _gf (_dbd ,_cb [][]Result )bool {if len (_dbd )!=len (_cb ){return false ;};for _ae :=range _dbd {if len (_dbd [_ae ])!=len (_cb [_ae ]){return false ;};};return true ;};func init (){_dgb ();RegisterFunction ("\u0044\u0041\u0054\u0045",Date );RegisterFunction ("\u0044A\u0054\u0045\u0044\u0049\u0046",DateDif );RegisterFunction ("\u0044A\u0054\u0045\u0056\u0041\u004c\u0055E",DateValue );RegisterFunction ("\u0044\u0041\u0059",Day );RegisterFunction ("\u0044\u0041\u0059\u0053",Days );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0044\u0041\u0059\u0053",Days );RegisterFunction ("\u0045\u0044\u0041T\u0045",Edate );RegisterFunction ("\u0045O\u004d\u004f\u004e\u0054\u0048",Eomonth );RegisterFunction ("\u004d\u0049\u004e\u0055\u0054\u0045",Minute );RegisterFunction ("\u004d\u004f\u004eT\u0048",Month );RegisterFunction ("\u004e\u004f\u0057",Now );RegisterFunction ("\u0054\u0049\u004d\u0045",Time );RegisterFunction ("\u0054I\u004d\u0045\u0056\u0041\u004c\u0055E",TimeValue );RegisterFunction ("\u0054\u004f\u0044A\u0059",Today );RegisterFunctionComplex ("\u0059\u0045\u0041\u0052",Year );RegisterFunction ("\u0059\u0045\u0041\u0052\u0046\u0052\u0041\u0043",YearFrac );};
// Tbillyield implements the Excel TBILLYIELD function.
func Tbillyield (args []Result )Result {if len (args )!=3{return MakeErrorResult ("T\u0042\u0049\u004c\u004c\u0059\u0049E\u004c\u0044\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0074\u0068r\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_fcga ,_bcca ,_cbgb :=_gbce (args [0],args [1],"\u0054\u0042\u0049\u004c\u004c\u0059\u0049\u0045\u004c\u0044");if _cbgb .Type ==ResultTypeError {return _cbgb ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0054\u0042\u0049\u004c\u004c\u0059\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0064\u0069\u0073\u0063\u006f\u0075n\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ccgcg :=_bcca -_fcga ;if _ccgcg > 365{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004cY\u0049\u0045\u004c\u0044\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020m\u0061\u0074\u0075r\u0069\u0074\u0079\u0020t\u006f\u0020\u0062\u0065\u0020\u006eo\u0074\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u006f\u006e\u0065\u0020\u0079e\u0061\u0072\u0020\u0061\u0066\u0074\u0065\u0072\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074");};_gccf :=args [2].ValueNumber ;if _gccf <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004c\u0059\u0049\u0045\u004c\u0044\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020p\u0072 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fcac :=(100-_gccf )/_gccf ;_dadf :=360/_ccgcg ;return MakeNumberResult (_fcac *_dadf );};func _afc (_fa BinOpType ,_dcg ,_aee [][]Result )Result {_ff :=[][]Result {};for _gd :=range _dcg {_ggdd :=_ga (_fa ,_dcg [_gd ],_aee [_gd ]);if _ggdd .Type ==ResultTypeError {return _ggdd ;};_ff =append (_ff ,_ggdd .ValueList );};return MakeArrayResult (_ff );};const (_cace rmode =iota ;_fgecc ;_ffcf ;);const _fgdd =57363;
// ListValues converts an array to a list or returns a lists values. This is used
// for functions that can accept an array, but don't care about ordering to
// reuse the list function logic.
func (_egff Result )ListValues ()[]Result {if _egff .Type ==ResultTypeArray {_gggbf :=[]Result {};for _ ,_bcfee :=range _egff .ValueArray {for _ ,_acdfb :=range _bcfee {_gggbf =append (_gggbf ,_acdfb );};};return _gggbf ;};if _egff .Type ==ResultTypeList {return _egff .ValueList ;};return nil ;};const _abfca =57365;func _bdbgb (_defac string ,_febgg []Result )(*parsedSearchObject ,Result ){_gbggd :=len (_febgg );if _gbggd !=2&&_gbggd !=3{return nil ,MakeErrorResult (_defac +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u006fr\u0020t\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_acde :=_febgg [0];if _acde .Type ==ResultTypeError {return nil ,_acde ;};if _acde .Type !=ResultTypeString &&_acde .Type !=ResultTypeNumber {return nil ,MakeErrorResult ("\u0054\u0068e\u0020\u0066\u0069\u0072s\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0061\u0020\u0073t\u0072\u0069\u006e\u0067");};_efec :=_febgg [1];if _efec .Type ==ResultTypeError {return nil ,_efec ;};if _efec .Type !=ResultTypeString &&_efec .Type !=ResultTypeNumber {return nil ,MakeErrorResult ("\u0054\u0068\u0065\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020a\u0020\u0073t\u0072\u0069\u006e\u0067");};_gbec :=_efec .Value ();_gfeg :=_acde .Value ();_gcda :=1;if _gbggd ==3&&_febgg [2].Type !=ResultTypeEmpty {_dcgcf :=_febgg [2];if _dcgcf .Type !=ResultTypeNumber {return nil ,MakeErrorResult ("P\u006f\u0073\u0069\u0074\u0069\u006fn\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062e\u0020\u0061\u0020n\u0075m\u0062\u0065\u0072");};_gcda =int (_dcgcf .ValueNumber );if _gcda < 1{return nil ,MakeErrorResultType (ErrorTypeValue ,"\u0050\u006f\u0073\u0069\u0074\u0069\u006f\u006e\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020\u0061 \u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006d\u006f\u0072\u0065\u0020\u0074h\u0061\u006e\u0020\u0030");};if _gcda > len (_gbec ){return nil ,MakeErrorResultType (ErrorTypeValue ,"\u0050\u006f\u0073\u0069\u0074\u0069\u006f\u006e\u0020\u0073\u0068\u006f\u0075l\u0064\u0020\u0062\u0065\u0020\u0061 \u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006d\u006f\u0072\u0065\u0020\u0074h\u0061\u006e\u0020\u0030");};};return &parsedSearchObject {_gfeg ,_gbec ,_gcda },_dabe ;};func (_dbebd *plex )Lex (lval *yySymType )int {_ggee =true ;_fdba :=<-_dbebd ._fagb ;if _fdba !=nil {lval ._fabb =_fdba ;return int (lval ._fabb ._bbce );};return 0;};
// ISBLANK is an implementation of the Excel ISBLANK() function.
func IsBlank (args []Result )Result {if len (args )!=1{return MakeErrorResult ("I\u0053\u0042\u004c\u0041\u004e\u004b(\u0029\u0020\u0061\u0063\u0063\u0065p\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeEmpty );};
// HasFormula returns FALSE for the invalid reference context.
func (_bfgd *ivr )HasFormula (cellRef string )bool {return false };func _fdgd (_dgdb ,_bca ,_gccc ,_bbgga int )int {if _bca > _gccc {return 0;};if _feecf (_bbgga ){return (_gccc -_bca +1)*30;};_cef :=0;for _ffgg :=_bca ;_ffgg <=_gccc ;_ffgg ++{_cef +=_gabg (_dgdb ,_ffgg );};return _cef ;};
// Value is an implementation of the Excel VALUE function.
func Value (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0056\u0041\u004c\u0055\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020a\u0020s\u0069\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cceeb :=args [0];if _cceeb .Type ==ResultTypeNumber {return _cceeb ;};if _cceeb .Type ==ResultTypeString {_gaeg ,_dgaag :=_dc .ParseFloat (_cceeb .Value (),64);if _dgaag ==nil {return MakeNumberResult (_gaeg );};};return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0056\u0041L\u0055\u0045");};const _ddgb =57354;
// Lower is an implementation of the Excel LOWER function that returns a lower
// case version of a string.
func Lower (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004c\u004f\u0057\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0061\u0020\u0073\u0069\u006eg\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cggag :=args [0];switch _cggag .Type {case ResultTypeError :return _cggag ;case ResultTypeNumber ,ResultTypeString :return _gdcc (args [0]);case ResultTypeList :_edcf :=_cggag .ValueList ;_bgea :=[]Result {};for _ ,_fdfg :=range _edcf {_daec :=_gdcc (_fdfg );if _daec .Type ==ResultTypeError {return _daec ;};_bgea =append (_bgea ,_daec );};return MakeListResult (_bgea );case ResultTypeArray :_cefa :=_cggag .ValueArray ;_bfde :=[][]Result {};for _ ,_cacbe :=range _cefa {_bdfce :=[]Result {};for _ ,_fgeg :=range _cacbe {_edce :=_gdcc (_fgeg );if _edce .Type ==ResultTypeError {return _edce ;};_bdfce =append (_bdfce ,_edce );};_bfde =append (_bfde ,_bdfce );};return MakeArrayResult (_bfde );default:return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u004c\u004fW\u0045\u0052");};};
// GetFilename returns an empty string for the invalid reference context.
func (_cgaec *ivr )GetFilename ()string {return ""};
// Accrintm implements the Excel ACCRINTM function.
func Accrintm (args []Result )Result {_gbfg :=len (args );if _gbfg !=4&&_gbfg !=5{return MakeErrorResult ("A\u0043\u0043\u0052\u0049\u004e\u0054\u004d\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066o\u0075\u0072\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065 a\u0072\u0067\u0075m\u0065n\u0074\u0073");};_dbag ,_dgec :=_eeg (args [0],"\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065","\u0041\u0043\u0043\u0052\u0049\u004e\u0054\u004d");if _dgec .Type ==ResultTypeError {return _dgec ;};_cafb ,_dgec :=_eeg (args [1],"\u0073e\u0074t\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065","\u0041\u0043\u0043\u0052\u0049\u004e\u0054\u004d");if _dgec .Type ==ResultTypeError {return _dgec ;};if _dbag >=_cafb {return MakeErrorResultType (ErrorTypeNum ,"\u0049\u0073\u0073\u0075\u0065\u0020d\u0061\u0074\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0065\u0061\u0072\u006c\u0069\u0065r\u0020\u0074\u0068\u0061\u006e\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065n\u0074 \u0064\u0061\u0074\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0041C\u0043\u0052I\u004e\u0054\u004d\u0020r\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020to\u0020\u0062\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_baag :=args [2].ValueNumber ;if _baag <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0041\u0043\u0043\u0052\u0049\u004e\u0054\u004d\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061t\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0041\u0043\u0043\u0052\u0049\u004e\u0054M\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s\u0020\u0070\u0061\u0072\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_efbe :=args [3].ValueNumber ;if _efbe <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0041\u0043C\u0052\u0049\u004e\u0054\u004d \u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0070\u0061\u0072\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ddfe :=0;if _gbfg ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0041C\u0043\u0052I\u004e\u0054\u004d \u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0062\u0061\u0073\u0069\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ddfe =int (args [4].ValueNumber );if !_bbf (_ddfe ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065c\u0074\u0020b\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0041\u0043\u0043R\u0049\u004e\u0054\u004d");};};_dcag ,_dgec :=_cebg (_dbag ,_cafb ,_ddfe );if _dgec .Type ==ResultTypeError {return _dgec ;};return MakeNumberResult (_efbe *_baag *_dcag );};
// Search is an implementation of the Excel SEARCH().
func Search (args []Result )Result {_dagea ,_fcfeg :=_bdbgb ("\u0046\u0049\u004e\u0044",args );if _fcfeg .Type !=ResultTypeEmpty {return _fcfeg ;};_fefe :=_g .ToLower (_dagea ._fccb );if _fefe ==""{return MakeNumberResult (1.0);};_aeee :=_g .ToLower (_dagea ._ddadg );_ecbd :=_dagea ._ggbf ;_fadga :=1;for _dcbd :=range _aeee {if _fadga < _ecbd {_fadga ++;continue ;};_bddea :=_be .Index (_fefe ,_aeee [_dcbd :]);if _bddea ==0{return MakeNumberResult (float64 (_fadga ));};_fadga ++;};return MakeErrorResultType (ErrorTypeValue ,"\u004eo\u0074\u0020\u0066\u006f\u0075\u006ed");};
// EmptyExpr is an empty expression.
type EmptyExpr struct{};func _defa (_bcec string ,_dccaa func (_bfeb float64 )float64 )Function {return func (_gfbbcf []Result )Result {if len (_gfbbcf )!=1{return MakeErrorResult (_bcec +"\u0020\u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_ebae :=_gfbbcf [0].AsNumber ();switch _ebae .Type {case ResultTypeNumber :_bbabg :=_dccaa (_ebae .ValueNumber );if _ggd .IsNaN (_bbabg ){return MakeErrorResult (_bcec +"\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0065\u0064\u0020\u004e\u0061\u004e");};if _ggd .IsInf (_bbabg ,0){return MakeErrorResult (_bcec +"\u0020r\u0065t\u0075\u0072\u006e\u0065\u0064 \u0069\u006ef\u0069\u006e\u0069\u0074\u0079");};if _bbabg ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,_bcec +"\u0020d\u0069v\u0069\u0064\u0065\u0020\u0062\u0079\u0020\u007a\u0065\u0072\u006f");};return MakeNumberResult (1/_bbabg );case ResultTypeList ,ResultTypeString :return MakeErrorResult (_bcec +"\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u006e\u0075\u006de\u0072i\u0063\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");case ResultTypeError :return _ebae ;default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068a\u006e\u0064\u006c\u0065d\u0020\u0025\u0073\u0028\u0029\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_bcec ,_ebae .Type ));};};};var _gdcg =false ;
// Clean is an implementation of the Excel CLEAN function that removes
// unprintable characters.
func Clean (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0043\u004c\u0045\u0041\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0061\u0020\u0073\u0069\u006eg\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_eebf :=args [0].AsString ();if _eebf .Type !=ResultTypeString {return MakeErrorResult ("\u0043\u0048\u0041\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0073t\u0072\u0069\u006e\u0067\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_bcga :=_db .Buffer {};for _ ,_feefa :=range _eebf .ValueString {if _a .IsPrint (_feefa ){_bcga .WriteRune (_feefa );};};return MakeStringResult (_bcga .String ());};
// String returns a string representation of a vertical range with prefix.
func (_gafae PrefixVerticalRange )String ()string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0073\u003a\u0025\u0073",_gafae ._ecac .String (),_gafae ._eacgc ,_gafae ._faag );};
// Replace is an implementation of the Excel REPLACE().
func Replace (args []Result )Result {_aeaca ,_ggeb :=_ebbdb ("\u0052E\u0050\u004c\u0041\u0043\u0045",args );if _ggeb .Type !=ResultTypeEmpty {return _ggeb ;};_dfae :=_aeaca ._dbeee ;_deba :=_aeaca ._cdbg ;_gcbb :=_aeaca ._bede ;_dgfbb :=_aeaca ._dbef ;_fgbg :=len (_dfae );if _deba > _fgbg {_deba =_fgbg ;};_daeea :=_deba +_gcbb ;if _daeea > _fgbg {_daeea =_fgbg ;};_dace :=_dfae [0:_deba ]+_dgfbb +_dfae [_daeea :];return MakeStringResult (_dace );};
// MakeBoolResult constructs a boolean result (internally a number).
func MakeBoolResult (b bool )Result {if b {return Result {Type :ResultTypeNumber ,ValueNumber :1,IsBoolean :true };};return Result {Type :ResultTypeNumber ,ValueNumber :0,IsBoolean :true };};
// ISODD is an implementation of the Excel ISODD() function.
func IsOdd (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u004f\u0044\u0044\u0028)\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u004f\u0044\u0044\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061 \u006eu\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bcce :=int (args [0].ValueNumber );return MakeBoolResult (_bcce !=_bcce /2*2);};
// MinIfs implements the MINIFS function.
func MinIfs (args []Result )Result {_gggda :=_cfeae (args ,true ,"\u004d\u0049\u004e\u0049\u0046\u0053");if _gggda .Type !=ResultTypeEmpty {return _gggda ;};_fgfe :=_gdbac (args [1:]);_aeaggd :=_ggd .MaxFloat64 ;_febgb :=_ggecf (args [0]);for _ ,_ddegb :=range _fgfe {_agec :=_febgb [_ddegb ._dccb ][_ddegb ._bddb ].ValueNumber ;if _aeaggd > _agec {_aeaggd =_agec ;};};if _aeaggd ==_ggd .MaxFloat64 {_aeaggd =0;};return MakeNumberResult (float64 (_aeaggd ));};
// ISERR is an implementation of the Excel ISERR() function.
func IsErr (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u0045\u0052\u0052\u0028)\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeError &&args [0].ValueString !="\u0023\u004e\u002f\u0041");};
// Searchb is an implementation of the Excel SEARCHB().
func Searchb (ctx Context ,ev Evaluator ,args []Result )Result {if !ctx .IsDBCS (){return Search (args );};_dageb ,_eegbf :=_bdbgb ("\u0046\u0049\u004e\u0044",args );if _eegbf .Type !=ResultTypeEmpty {return _eegbf ;};_afbb :=_g .ToLower (_dageb ._fccb );_agaac :=_g .ToLower (_dageb ._ddadg );if _afbb ==""{return MakeNumberResult (1.0);};_decafg :=_dageb ._ggbf -1;_afgc :=1;_bgaa :=0;for _fgfca :=range _agaac {if _fgfca !=0{_fbab :=1;if _fgfca -_bgaa > 1{_fbab =2;};_afgc +=_fbab ;};if _afgc > _decafg {_gcdbg :=_be .Index (_afbb ,_agaac [_fgfca :]);if _gcdbg ==0{return MakeNumberResult (float64 (_afgc ));};};_bgaa =_fgfca ;};return MakeErrorResultType (ErrorTypeValue ,"\u004eo\u0074\u0020\u0066\u006f\u0075\u006ed");};var _gcbc =[]ri {{1000,"\u004d"},{999,"\u0049\u004d"},{995,"\u0056\u004d"},{990,"\u0058\u004d"},{950,"\u004c\u004d"},{900,"\u0043\u004d"},{500,"\u0044"},{499,"\u0049\u0044"},{495,"\u0056\u0044"},{490,"\u0058\u0044"},{450,"\u004c\u0044"},{400,"\u0043\u0044"},{100,"\u0043"},{99,"\u0049\u0043"},{90,"\u0058\u0043"},{50,"\u004c"},{45,"\u0056\u004c"},{40,"\u0058\u004c"},{10,"\u0058"},{9,"\u0049\u0058"},{5,"\u0056"},{4,"\u0049\u0056"},{1,"\u0049"}};
// Eval evaluates and returns a string.
func (_fged String )Eval (ctx Context ,ev Evaluator )Result {return MakeStringResult (_fged ._ccafe )};
// Time is an implementation of the Excel TIME() function.
func Time (args []Result )Result {if len (args )!=3||args [0].Type !=ResultTypeNumber ||args [1].Type !=ResultTypeNumber ||args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0054\u0049ME\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s t\u0068re\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_eabf :=args [0].ValueNumber ;_ddcg :=args [1].ValueNumber ;_fcec :=args [2].ValueNumber ;_bcd :=_gaff (_eabf ,_ddcg ,_fcec );if _bcd >=0{return MakeNumberResult (_bcd );}else {return MakeErrorResultType (ErrorTypeNum ,"");};};
// String returns a string representation of ConstArrayExpr.
func (_fgc ConstArrayExpr )String ()string {return ""};const _ccaa =57373;
// NA is an implementation of the Excel NA() function that just returns the #N/A! error.
func NA (args []Result )Result {if len (args )!=0{return MakeErrorResult ("\u004eA\u0028\u0029\u0020\u0061c\u0063\u0065\u0070\u0074\u0073 \u006eo\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074s");};return MakeErrorResultType (ErrorTypeNA ,"");};func _cgaf (_efbf Result ,_dcaa ,_bfec string )(float64 ,Result ){switch _efbf .Type {case ResultTypeEmpty :return 0,_dabe ;case ResultTypeNumber :return _efbf .ValueNumber ,_dabe ;case ResultTypeString :_gdfc ,_efea :=_dc .ParseFloat (_efbf .ValueString ,64);if _efea !=nil {return 0,MakeErrorResult (_bfec +"\u0020s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0061\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0066\u006f\u0072\u0020"+_dcaa );};return _gdfc ,_dabe ;default:return 0,MakeErrorResult (_dcaa +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020"+_bfec +"\u0020t\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0065\u006d\u0070\u0074\u0079");};};const _fcb =_dd .Second *1;var _dffa =[...]int {0};func _eggd (_cafcb string )(int ,int ,int ,bool ,Result ){_cec :="";_eeea :=[]string {};for _gbgf ,_edad :=range _bbg {_eeea =_edad .FindStringSubmatch (_cafcb );if len (_eeea )> 1{_cec =_gbgf ;break ;};};if _cec ==""{return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aed :=false ;var _aag ,_adea ,_gbeg int ;var _acf error ;switch _cec {case "\u006d\u006d\u002f\u0064\u0064\u002f\u0079\u0079":_adea ,_acf =_dc .Atoi (_eeea [1]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_gbeg ,_acf =_dc .Atoi (_eeea [3]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aag ,_acf =_dc .Atoi (_eeea [5]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};if _aag < 0||_aag > 9999||(_aag > 99&&_aag < 1900){return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aag =_agb (_aag );_aed =_eeea [8]=="";case "\u006dm\u0020\u0064\u0064\u002c\u0020\u0079y":_adea =_geb [_eeea [1]];_gbeg ,_acf =_dc .Atoi (_eeea [14]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aag ,_acf =_dc .Atoi (_eeea [16]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};if _aag < 0||_aag > 9999||(_aag > 99&&_aag < 1900){return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aag =_agb (_aag );_aed =_eeea [19]=="";case "\u0079\u0079\u002d\u006d\u006d\u002d\u0064\u0064":_fec ,_ddce :=_dc .Atoi (_eeea [1]);if _ddce !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_efd ,_ddce :=_dc .Atoi (_eeea [3]);if _ddce !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_bad ,_ddce :=_dc .Atoi (_eeea [5]);if _ddce !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};if _fec >=1900&&_fec < 10000{_aag =_fec ;_adea =_efd ;_gbeg =_bad ;}else if _fec > 0&&_fec < 13{_adea =_fec ;_gbeg =_efd ;_aag =_bad ;}else {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aed =_eeea [8]=="";case "y\u0079\u002d\u006d\u006d\u0053\u0074\u0072\u002d\u0064\u0064":_aag ,_acf =_dc .Atoi (_eeea [16]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_adea =_geb [_eeea [3]];_gbeg ,_acf =_dc .Atoi (_eeea [1]);if _acf !=nil {return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};_aed =_eeea [19]=="";};if !_cea (_aag ,_adea ,_gbeg ){return 0,0,0,false ,MakeErrorResultType (ErrorTypeValue ,_gdgb );};return _aag ,_adea ,_gbeg ,_aed ,_dabe ;};
// Bool is a boolean expression.
type Bool struct{_ba bool };
// Pricemat implements the Excel PRICEMAT function.
func Pricemat (args []Result )Result {_ceca :=len (args );if _ceca !=5&&_ceca !=6{return MakeErrorResult ("\u0050\u0052\u0049\u0043\u0045\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0066\u0069v\u0065\u0020\u006f\u0072\u0020\u0073\u0069\u0078\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_bdeg ,_cgdb ,_bdd :=_gbce (args [0],args [1],"\u0050\u0052\u0049\u0043\u0045\u004d\u0041\u0054");if _bdd .Type ==ResultTypeError {return _bdd ;};_bcgf ,_bdd :=_eeg (args [2],"\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065","\u0050\u0052\u0049\u0043\u0045\u004d\u0041\u0054");if _bdd .Type ==ResultTypeError {return _bdd ;};if _bcgf >=_bdeg {return MakeErrorResult ("\u0050\u0052\u0049\u0043E\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062e\u0020\u0062\u0065\u0066\u006fr\u0065\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052I\u0043\u0045\u004d\u0041T\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072a\u0074\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_bgbc :=args [3].ValueNumber ;if _bgbc < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049\u0043\u0045M\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072a\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052\u0049\u0043\u0045\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0079\u0069\u0065\u006c\u0064\u0020o\u0066\u0020\u0074\u0079\u0070e\u0020\u006eu\u006d\u0062\u0065\u0072");};_ggbg :=args [4].ValueNumber ;if _ggbg < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049C\u0045\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0079\u0069\u0065\u006c\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e \u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};_gdee :=0;if _ceca ==6&&args [5].Type !=ResultTypeEmpty {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050R\u0049\u0043E\u004d\u0041\u0054 \u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0062\u0061\u0073\u0069\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gdee =int (args [5].ValueNumber );if !_bbf (_gdee ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065c\u0074\u0020b\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0050\u0052\u0049C\u0045\u004d\u0041\u0054");};};_ebee ,_bdd :=_cebg (_bdeg ,_cgdb ,_gdee );if _bdd .Type ==ResultTypeError {return _bdd ;};_faeg ,_bdd :=_cebg (_bcgf ,_cgdb ,_gdee );if _bdd .Type ==ResultTypeError {return _bdd ;};_gbgfa ,_bdd :=_cebg (_bcgf ,_bdeg ,_gdee );if _bdd .Type ==ResultTypeError {return _bdd ;};_cfffc :=1+_faeg *_bgbc ;_aage :=1+_ebee *_ggbg ;return MakeNumberResult ((_cfffc /_aage -_gbgfa *_bgbc )*100);};func _dfdee (_bfebd [][]Result ,_afga int )[][]Result {_ggddf :=[][]Result {};for _ffegc :=range _bfebd {if _ffegc ==0{continue ;};_egcd :=[]Result {};for _gaffg :=range _bfebd {if _gaffg ==_afga {continue ;};_egcd =append (_egcd ,_bfebd [_ffegc ][_gaffg ]);};_ggddf =append (_ggddf ,_egcd );};return _ggddf ;};
// Pduration implements the Excel PDURATION function.
func Pduration (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u0050\u0044\u0055RA\u0054\u0049\u004f\u004e\u0020\u0072\u0065\u0071\u0075i\u0072e\u0073 \u0074h\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050D\u0055\u0052A\u0054\u0049\u004fN\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0072\u0061\u0074\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cadb :=args [0].ValueNumber ;if _cadb <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020t\u006f\u0020\u0062\u0065\u0020p\u006f\u0073i\u0074\u0069\u0076\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u0020\u0076\u0061l\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006dbe\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cbeg :=args [1].ValueNumber ;if _cbeg <=0{return MakeErrorResultType (ErrorTypeNum ,"P\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 c\u0075\u0072\u0072\u0065n\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0074o \u0062\u0065 \u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0044\u0055\u0052\u0041\u0054I\u004f\u004e\u0020r\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0073\u0070\u0065\u0063\u0069\u0066i\u0065\u0064\u0020\u0076\u0061lu\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fga :=args [2].ValueNumber ;if _fga <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0044\u0055\u0052\u0041\u0054I\u004f\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070o\u0073i\u0074\u0069\u0076\u0065");};return MakeNumberResult ((_ggd .Log10 (_fga )-_ggd .Log10 (_cbeg ))/_ggd .Log10 (1+_cadb ));};
// ISNUMBER is an implementation of the Excel ISNUMBER() function.
func IsNumber (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053NU\u004d\u0042\u0045R\u0028\u0029\u0020\u0061cce\u0070ts\u0020\u0061\u0020\u0073\u0069\u006e\u0067le\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeNumber );};
// RegisterFunction registers a standard function.
func RegisterFunction (name string ,fn Function ){_eccac .Lock ();defer _eccac .Unlock ();if _ ,_efbaf :=_gafdf [name ];_efbaf {_ea .Log .Debug ("\u0064\u0075p\u006c\u0069\u0063\u0061t\u0065\u0020r\u0065\u0067\u0069\u0073\u0074\u0072\u0061\u0074i\u006f\u006e\u0020\u006f\u0066\u0020\u0066\u0075\u006e\u0063\u0074\u0069o\u006e\u0020\u0025\u0073",name );};_gafdf [name ]=fn ;};
// Update returns the same object as updating sheet references does not affect Error.
func (_edd Error )Update (q *_fc .UpdateQuery )Expression {return _edd };type rmode byte ;
// Number is a nubmer expression.
type Number struct{_bdcc float64 };func _gfae (_decd float64 )_dd .Time {_aaf :=int64 ((_decd -_fbb )*_aabc );return _dd .Unix (0,_aaf ).UTC ();};func _gec (_gcf string ,_bgf *_fc .UpdateQuery )string {_fb ,_daf :=_ac .ParseCellReference (_gcf );if _daf !=nil {return "\u0023\u0052\u0045F\u0021";};if _bgf .UpdateType ==_fc .UpdateActionRemoveColumn {_ade :=_bgf .ColumnIdx ;_dbea :=_fb .ColumnIdx ;if _dbea < _ade {return _gcf ;}else if _dbea ==_ade {return "\u0023\u0052\u0045F\u0021";}else {return _fb .Update (_fc .UpdateActionRemoveColumn ).String ();};};return _gcf ;};
// NewCellRef constructs a new cell reference.
func NewCellRef (v string )Expression {return CellRef {_abc :v }};const _gdgb ="\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0044\u0041\u0054\u0045\u0056\u0041\u004c\u0055\u0045";
// Mid is an implementation of the Excel MID function that returns a copy
// of the string with each word capitalized.
func Mid (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u004d\u0049\u0044\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068r\u0065e\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073");};_cbdcfa :=args [0];if _cbdcfa .Type ==ResultTypeError {return _cbdcfa ;};if _cbdcfa .Type !=ResultTypeString &&_cbdcfa .Type !=ResultTypeNumber &&_cbdcfa .Type !=ResultTypeEmpty {return MakeErrorResult ("\u004d\u0049\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0065x\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u0073\u0074\u0072\u0069\u006e\u0067");};_baae :=args [0].Value ();if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0049D\u0020\u0072\u0065\u0071u\u0069\u0072e\u0073\u0020\u0073\u0074\u0061\u0072\u0074\u005fn\u0075\u006d\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006eu\u006d\u0062\u0065\u0072");};_dfee :=int (args [1].ValueNumber );if _dfee < 1{return MakeErrorResult ("M\u0049\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0074\u0061\u0072\u0074\u005fn\u0075\u006d\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006dor\u0065\u0020\u0074h\u0061n\u0020\u0030");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0049D\u0020\u0072\u0065\u0071u\u0069\u0072e\u0073\u0020\u006e\u0075\u006d\u005f\u0063\u0068a\u0072\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006eu\u006d\u0062\u0065\u0072");};_dfgge :=int (args [2].ValueNumber );if _dfgge < 0{return MakeErrorResult ("\u004d\u0049\u0044\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u005f\u0063\u0068a\u0072\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};_eagcf :=len (_baae );if _dfee > _eagcf {return MakeStringResult ("");};_dfee --;_ageef :=_dfee +_dfgge ;if _ageef > _eagcf {return MakeStringResult (_baae [_dfee :]);}else {return MakeStringResult (_baae [_dfee :_ageef ]);};};
// Counta implements the COUNTA function.
func Counta (args []Result )Result {return MakeNumberResult (_bddf (args ,_fedgb ))};
// Eval evaluates and returns the result of the NamedRangeRef reference.
func (_gadg NamedRangeRef )Eval (ctx Context ,ev Evaluator )Result {_debaf :=ctx .NamedRange (_gadg ._gfedg );_febbe :=_debaf .Value ;if _afgb ,_ecaf :=ev .GetFromCache (_febbe );_ecaf {return _afgb ;};_cdgd :=_g .Split (_febbe ,"\u0021");if len (_cdgd )!=2{return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u006e\u0061\u006de\u0064 \u0072\u0061\u006e\u0067\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0025\u0073",_febbe ));};_acddg :=ctx .Sheet (_cdgd [0]);_fadae :=_g .Split (_cdgd [1],"\u003a");switch len (_fadae ){case 1:_adaf :=ev .Eval (_acddg ,_fadae [0]);ev .SetCache (_febbe ,_adaf );return _adaf ;case 2:_gbcag :=_dfad (_acddg ,ev ,_fadae [0],_fadae [1]);ev .SetCache (_febbe ,_gbcag );return _gbcag ;};return MakeErrorResult (_b .Sprintf ("\u0075\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0074\u0079\u0070e \u0025\u0073",_debaf .Type ));};type criteriaParsed struct{_faaff bool ;_dfccd float64 ;_gcece string ;_febd *criteriaRegex ;};
// Reference returns an invalid reference for Error.
func (_gaa Error )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };
// NewNamedRangeRef constructs a new named range reference.
func NewNamedRangeRef (v string )Expression {return NamedRangeRef {_gfedg :v }};var ReferenceInvalid =Reference {Type :ReferenceTypeInvalid };func _beg (_bf BinOpType ,_aef []Result ,_gfd Result )Result {_ed :=[]Result {};switch _gfd .Type {case ResultTypeNumber :_gb :=_gfd .ValueNumber ;for _abf :=range _aef {_cd :=_aef [_abf ].AsNumber ();if _cd .Type !=ResultTypeNumber {return MakeErrorResult ("\u006e\u006f\u006e\u002d\u006e\u0075\u006e\u006d\u0065\u0072\u0069\u0063\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0069\u006e\u0020\u0062\u0069n\u0061\u0072\u0079\u0020\u006fp\u0065\u0072a\u0074\u0069\u006f\u006e");};switch _bf {case BinOpTypePlus :_ed =append (_ed ,MakeNumberResult (_cd .ValueNumber +_gb ));case BinOpTypeMinus :_ed =append (_ed ,MakeNumberResult (_cd .ValueNumber -_gb ));case BinOpTypeMult :_ed =append (_ed ,MakeNumberResult (_cd .ValueNumber *_gb ));case BinOpTypeDiv :if _gb ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"");};_ed =append (_ed ,MakeNumberResult (_cd .ValueNumber /_gb ));case BinOpTypeExp :_ed =append (_ed ,MakeNumberResult (_ggd .Pow (_cd .ValueNumber ,_gb )));case BinOpTypeLT :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber < _gb ));case BinOpTypeGT :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber > _gb ));case BinOpTypeEQ :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber ==_gb ));case BinOpTypeLEQ :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber <=_gb ));case BinOpTypeGEQ :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber >=_gb ));case BinOpTypeNE :_ed =append (_ed ,MakeBoolResult (_cd .ValueNumber !=_gb ));default:return MakeErrorResult (_b .Sprintf ("\u0075\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u006c\u0069\u0073\u0074\u0020\u0062\u0069\u006e\u0061\u0072\u0079\u0020\u006fp \u0025\u0073",_bf ));};};case ResultTypeString :_gae :=_gfd .ValueString ;for _de :=range _aef {_bea :=_aef [_de ].AsString ();if _bea .Type !=ResultTypeString {return MakeErrorResult ("\u006e\u006f\u006e\u002d\u006e\u0075\u006e\u006d\u0065\u0072\u0069\u0063\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0069\u006e\u0020\u0062\u0069n\u0061\u0072\u0079\u0020\u006fp\u0065\u0072a\u0074\u0069\u006f\u006e");};switch _bf {case BinOpTypeLT :_ed =append (_ed ,MakeBoolResult (_bea .ValueString < _gae ));case BinOpTypeGT :_ed =append (_ed ,MakeBoolResult (_bea .ValueString > _gae ));case BinOpTypeEQ :_ed =append (_ed ,MakeBoolResult (_bea .ValueString ==_gae ));case BinOpTypeLEQ :_ed =append (_ed ,MakeBoolResult (_bea .ValueString <=_gae ));case BinOpTypeGEQ :_ed =append (_ed ,MakeBoolResult (_bea .ValueString >=_gae ));case BinOpTypeNE :_ed =append (_ed ,MakeBoolResult (_bea .ValueString !=_gae ));default:return MakeErrorResult (_b .Sprintf ("\u0075\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u006c\u0069\u0073\u0074\u0020\u0062\u0069\u006e\u0061\u0072\u0079\u0020\u006fp \u0025\u0073",_bf ));};};default:return MakeErrorResult ("\u006e\u006f\u006e\u002d\u006e\u0075\u006e\u006d\u0065\u0072\u0069c\u0020\u0061\u006e\u0064\u0020\u006e\u006f\u006e-\u0073t\u0072\u0069\u006e\u0067\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0069\u006e\u0020\u0062\u0069\u006e\u0061r\u0079\u0020\u006f\u0070\u0065\u0072\u0061\u0074\u0069\u006f\u006e");};return MakeListResult (_ed );};func _fbfa ()evCache {_cfag :=evCache {};_cfag ._cffd =make (map[string ]Result );_cfag ._eeb =&_fd .Mutex {};return _cfag ;};
// Eval evaluates a vertical range with prefix returning a list of results or an error.
func (_bffb PrefixVerticalRange )Eval (ctx Context ,ev Evaluator )Result {_gfgfb :=_bffb ._ecac .Reference (ctx ,ev );switch _gfgfb .Type {case ReferenceTypeSheet :if _eabad (_gfgfb ,ctx ){return MakeErrorResultType (ErrorTypeName ,_b .Sprintf ("\u0053h\u0065e\u0074\u0020\u0025\u0073\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064",_gfgfb .Value ));};_afebc :=_bffb .verticalRangeReference (_gfgfb .Value );if _cdafb ,_afff :=ev .GetFromCache (_afebc );_afff {return _cdafb ;};_adfc :=ctx .Sheet (_gfgfb .Value );_ebcfga ,_bfegg :=_aaaaa (_adfc ,_bffb ._eacgc ,_bffb ._faag );_cdecf :=_dfad (_adfc ,ev ,_ebcfga ,_bfegg );ev .SetCache (_afebc ,_cdecf );return _cdecf ;default:return MakeErrorResult (_b .Sprintf ("\u006e\u006f\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0066\u006f\u0072\u0020r\u0065f\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_gfgfb .Type ));};};func init (){RegisterFunction ("\u0041\u0043\u0043\u0052\u0049\u004e\u0054\u004d",Accrintm );RegisterFunction ("\u0041M\u004f\u0052\u0044\u0045\u0047\u0052C",Amordegrc );RegisterFunction ("\u0041\u004d\u004f\u0052\u004c\u0049\u004e\u0043",Amorlinc );RegisterFunction ("\u0043O\u0055\u0050\u0044\u0041\u0059\u0042S",Coupdaybs );RegisterFunction ("\u0043\u004f\u0055\u0050\u0044\u0041\u0059\u0053",Coupdays );RegisterFunction ("\u0043\u004f\u0055\u0050\u0044\u0041\u0059\u0053\u004e\u0043",Coupdaysnc );RegisterFunction ("\u0043O\u0055\u0050\u004e\u0055\u004d",Coupnum );RegisterFunction ("\u0043O\u0055\u0050\u004e\u0043\u0044",Coupncd );RegisterFunction ("\u0043O\u0055\u0050\u0050\u0043\u0044",Couppcd );RegisterFunction ("\u0043U\u004d\u0049\u0050\u004d\u0054",Cumipmt );RegisterFunction ("\u0043\u0055\u004d\u0050\u0052\u0049\u004e\u0043",Cumprinc );RegisterFunction ("\u0044\u0042",Db );RegisterFunction ("\u0044\u0044\u0042",Ddb );RegisterFunction ("\u0044\u0049\u0053\u0043",Disc );RegisterFunction ("\u0044\u004f\u004c\u004c\u0041\u0052\u0044\u0045",Dollarde );RegisterFunction ("\u0044\u004f\u004c\u004c\u0041\u0052\u0046\u0052",Dollarfr );RegisterFunction ("\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e",Duration );RegisterFunction ("\u0045\u0046\u0046\u0045\u0043\u0054",Effect );RegisterFunction ("\u0046\u0056",Fv );RegisterFunction ("\u0046\u0056\u0053\u0043\u0048\u0045\u0044\u0055\u004c\u0045",Fvschedule );RegisterFunction ("\u0049N\u0054\u0052\u0041\u0054\u0045",Intrate );RegisterFunction ("\u0049\u0050\u004d\u0054",Ipmt );RegisterFunction ("\u0049\u0052\u0052",Irr );RegisterFunction ("\u0049\u0053\u0050M\u0054",Ispmt );RegisterFunction ("\u004dD\u0055\u0052\u0041\u0054\u0049\u004fN",Mduration );RegisterFunction ("\u004d\u0049\u0052\u0052",Mirr );RegisterFunction ("\u004eO\u004d\u0049\u004e\u0041\u004c",Nominal );RegisterFunction ("\u004e\u0050\u0045\u0052",Nper );RegisterFunction ("\u004e\u0050\u0056",Npv );RegisterFunction ("\u004fD\u0044\u004c\u0050\u0052\u0049\u0043E",Oddlprice );RegisterFunction ("\u004fD\u0044\u004c\u0059\u0049\u0045\u004cD",Oddlyield );RegisterFunction ("\u0050D\u0055\u0052\u0041\u0054\u0049\u004fN",Pduration );RegisterFunction ("\u005fx\u006cf\u006e\u002e\u0050\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e",Pduration );RegisterFunction ("\u0050\u004d\u0054",Pmt );RegisterFunction ("\u0050\u0050\u004d\u0054",Ppmt );RegisterFunction ("\u0050\u0052\u0049C\u0045",Price );RegisterFunction ("\u0050R\u0049\u0043\u0045\u0044\u0049\u0053C",Pricedisc );RegisterFunction ("\u0050\u0052\u0049\u0043\u0045\u004d\u0041\u0054",Pricemat );RegisterFunction ("\u0050\u0056",Pv );RegisterFunction ("\u0052\u0041\u0054\u0045",Rate );RegisterFunction ("\u0052\u0045\u0043\u0045\u0049\u0056\u0045\u0044",Received );RegisterFunction ("\u0052\u0052\u0049",Rri );RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0052\u0052I",Rri );RegisterFunction ("\u0053\u004c\u004e",Sln );RegisterFunction ("\u0053\u0059\u0044",Syd );RegisterFunction ("\u0054B\u0049\u004c\u004c\u0045\u0051",Tbilleq );RegisterFunction ("\u0054\u0042\u0049\u004c\u004c\u0050\u0052\u0049\u0043\u0045",Tbillprice );RegisterFunction ("\u0054\u0042\u0049\u004c\u004c\u0059\u0049\u0045\u004c\u0044",Tbillyield );RegisterFunction ("\u0056\u0044\u0042",Vdb );RegisterFunction ("\u0058\u0049\u0052\u0052",Xirr );RegisterFunction ("\u0058\u004e\u0050\u0056",Xnpv );RegisterFunction ("\u0059\u0049\u0045L\u0044",Yield );RegisterFunction ("\u0059I\u0045\u004c\u0044\u0044\u0049\u0053C",Yielddisc );RegisterFunction ("\u0059\u0049\u0045\u004c\u0044\u004d\u0041\u0054",Yieldmat );};
// Len is an implementation of the Excel LEN function that returns length of a string
func Len (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004c\u0045N\u0020\u0072\u0065\u0071u\u0069\u0072e\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067l\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cgage :=args [0].AsString ();if _cgage .Type !=ResultTypeString {return MakeErrorResult ("\u004c\u0045N\u0020\u0072\u0065\u0071u\u0069\u0072e\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067l\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};return MakeNumberResult (float64 (len (_cgage .ValueString )));};func _bgaf (_gadef Result )*criteriaParsed {_ceadg :=_gadef .Type ==ResultTypeNumber ;_cdbd :=_gadef .ValueNumber ;_cdbb :=_g .ToLower (_gadef .ValueString );_eaage :=_egdg (_cdbb );return &criteriaParsed {_ceadg ,_cdbd ,_cdbb ,_eaage };};func _cgbc (_ecg ,_ecff _dd .Time ,_aff int )float64 {if _ecg .After (_ecff ){_ecg ,_ecff =_ecff ,_ecg ;};_agbd :=0;_bbc ,_cgbe ,_dee :=_ecg .Date ();_bbgf ,_gdac ,_bgc :=_ecff .Date ();_dac ,_aec :=int (_cgbe ),int (_gdac );_ceda ,_cgd :=_afgda (_bbc ,_dac ,_dee ,_aff ),_afgda (_bbgf ,_aec ,_bgc ,_aff );if !_feecf (_aff ){return _agd (_bbgf ,_aec ,_cgd )-_agd (_bbc ,_dac ,_ceda );};if _aff ==0{if (_dac ==2||_ceda < 30)&&_bgc ==31{_cgd =31;}else if _aec ==2&&_cgd ==_gabg (_bbgf ,_aec ){_cgd =_gabg (_bbgf ,2);};}else {if _dac ==2&&_ceda ==30{_ceda =_gabg (_bbc ,2);};if _aec ==2&&_cgd ==30{_cgd =_gabg (_bbgf ,2);};};if _bbc < _bbgf ||(_bbc ==_bbgf &&_dac < _aec ){_agbd =30-_ceda +1;_dee =1;_ceda =1;_aca :=_dd .Date (_bbc ,_dd .Month (_dac ),_dee ,0,0,0,0,_dd .UTC ).AddDate (0,1,0);if _aca .Year ()< _bbgf {_agbd +=_fdgd (_aca .Year (),int (_aca .Month ()),12,_aff );_aca =_aca .AddDate (0,13-int (_aca .Month ()),0);_agbd +=_ceag (_aca .Year (),_bbgf -1,_aff );};_agbd +=_fdgd (_bbgf ,int (_aca .Month ()),_aec -1,_aff );_aca =_aca .AddDate (0,_aec -int (_aca .Month ()),0);_dac =_aca .Day ();};_agbd +=_cgd -_ceda ;if _agbd > 0{return float64 (_agbd );}else {return 0;};};
// CeilingMath implements _xlfn.CEILING.MATH which rounds numbers to the nearest
// multiple of the second argument, toward or away from zero as specified by the
// third argument.
func CeilingMath (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0043E\u0049\u004cI\u004e\u0047\u002eM\u0041\u0054\u0048\u0028\u0029\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073 \u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006ee\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if len (args )> 3{return MakeErrorResult ("\u0043E\u0049\u004cI\u004e\u0047\u002eM\u0041\u0054\u0048\u0028\u0029\u0020\u0061l\u006c\u006f\u0077\u0073\u0020\u0061t\u0020\u006d\u006f\u0073\u0074\u0020\u0074\u0068\u0072\u0065\u0065 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_cdbc :=args [0].AsNumber ();if _cdbc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072\u0073\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0043\u0045\u0049\u004c\u0049\u004e\u0047\u002e\u004dA\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061 \u006eu\u006d\u0062\u0065\u0072");};_dgadf :=float64 (1);if _cdbc .ValueNumber < 0{_dgadf =-1;};if len (args )> 1{_bfa :=args [1].AsNumber ();if _bfa .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f \u0043\u0045\u0049\u004c\u0049\u004e\u0047.\u004d\u0041\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dgadf =_bfa .ValueNumber ;};_dbga :=float64 (1);if len (args )> 2{_ggece :=args [2].AsNumber ();if _ggece .Type !=ResultTypeNumber {return MakeErrorResult ("\u0074\u0068\u0069\u0072\u0064\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0043\u0045\u0049\u004c\u0049\u004e\u0047\u002e\u004dA\u0054\u0048\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061 \u006eu\u006d\u0062\u0065\u0072");};_dbga =_ggece .ValueNumber ;};if len (args )==1{return MakeNumberResult (_ggd .Ceil (_cdbc .ValueNumber ));};_adcg :=_cdbc .ValueNumber ;_adcg ,_aaeb :=_ggd .Modf (_adcg /_dgadf );if _aaeb !=0{if _cdbc .ValueNumber > 0{_adcg ++;}else if _dbga < 0{_adcg --;};};return MakeNumberResult (_adcg *_dgadf );};
// Or is an implementation of the Excel OR() function and takes a variable
// number of arguments.
func Or (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u004f\u0052\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074 \u006f\u006e\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_becg :=false ;for _ ,_cedcb :=range args {switch _cedcb .Type {case ResultTypeList ,ResultTypeArray :_agde :=Or (_cedcb .ListValues ());if _agde .Type ==ResultTypeError {return _agde ;};if _agde .ValueNumber !=0{_becg =true ;};case ResultTypeNumber :if _cedcb .ValueNumber !=0{_becg =true ;};case ResultTypeString :return MakeErrorResult ("\u004f\u0052 \u0064\u006f\u0065\u0073\u006e\u0027\u0074\u0020\u006f\u0070\u0065\u0072\u0061\u0074\u0065\u0020\u006f\u006e\u0020\u0073\u0074\u0072in\u0067\u0073");case ResultTypeError :return _cedcb ;default:return MakeErrorResult ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u006e\u0020\u004f\u0052");};};return MakeBoolResult (_becg );};
// Update updates references in the BinaryExpr after removing a row/column.
func (_ge BinaryExpr )Update (q *_fc .UpdateQuery )Expression {_ffb :=_ge ;_ffb ._bb =_ge ._bb .Update (q );_ffb ._ce =_ge ._ce .Update (q );return _ffb ;};func _edbdd (_acacf Result ,_egabc *criteriaParsed )bool {if _acacf .IsBoolean {return false ;};_ecfgf :=_acacf .Type ;if _egabc ._faaff {return _ecfgf ==ResultTypeNumber &&_acacf .ValueNumber ==_egabc ._dfccd ;}else if _ecfgf ==ResultTypeNumber {return _dddaf (_acacf .ValueNumber ,_egabc ._febd );};return _cfcc (_acacf ,_egabc );};
// Coupdaybs implements the Excel COUPDAYBS function.
func Coupdaybs (args []Result )Result {_cfb ,_dddb :=_abfb (args ,"\u0043O\u0055\u0050\u0044\u0041\u0059\u0042S");if _dddb .Type ==ResultTypeError {return _dddb ;};return MakeNumberResult (_eecf (_cfb ._dddg ,_cfb ._edg ,_cfb ._edba ,_cfb ._bbed ));};
// SumIf implements the SUMIF function.
func SumIf (args []Result )Result {if len (args )< 3{return MakeErrorResult ("\u0053\u0055\u004d\u0049\u0046\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0074\u0068\u0072e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_febe :=args [0];if _febe .Type !=ResultTypeArray &&_febe .Type !=ResultTypeList {return MakeErrorResult ("\u0053\u0055\u004d\u0049\u0046\u0020\u0072e\u0071\u0075\u0069r\u0065\u0073\u0020\u0066i\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_geec :=_ggecf (_febe );_cdee :=args [2];if _cdee .Type !=ResultTypeArray &&_cdee .Type !=ResultTypeList {return MakeErrorResult ("\u0053\u0055\u004dI\u0046\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0061\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074y\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_gdfd :=_ggecf (_cdee );_edgf :=_bgaf (args [1]);_ecdg :=0.0;for _gfbe ,_bedc :=range _geec {for _dfac ,_abaag :=range _bedc {if _edbdd (_abaag ,_edgf ){_ecdg +=_gdfd [_gfbe ][_dfac ].ValueNumber ;};};};return MakeNumberResult (_ecdg );};
// String returns a string representation of a horizontal range with prefix.
func (_facc PrefixHorizontalRange )String ()string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0064\u003a\u0025\u0064",_facc ._fceb .String (),_facc ._baabe ,_facc ._ebade );};
// Dollarde implements the Excel DOLLARDE function.
func Dollarde (args []Result )Result {_abe ,_aeab ,_ceab :=_fcag (args ,"\u0044\u004f\u004c\u004c\u0041\u0052\u0044\u0045");if _ceab .Type ==ResultTypeError {return _ceab ;};if _aeab < 1{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0044\u004f\u004c\u004c\u0041\u0052\u0044\u0045\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0072a\u0063t\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u006f\u0072 \u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u0031");};if _abe ==0{return MakeNumberResult (0);};_dbg :=_abe < 0;if _dbg {_abe =-_abe ;};_dfea :=args [0].Value ();_ffc :=_g .Split (_dfea ,"\u002e");_cedc :=float64 (int (_abe ));_deeb :=_ffc [1];_acgba :=len (_deeb );_fgce :=int (_ggd .Log10 (_aeab ))+1;_aeac :=float64 (_fgce -_acgba );_afece ,_efaa :=_dc .ParseFloat (_deeb ,64);if _efaa !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0066\u0072\u0061\u0063\u0074\u0069\u006f\u006e\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0066\u006fr \u0044\u004f\u004cL\u0041R\u0044\u0045");};_afece *=_ggd .Pow (10,_aeac );_ccc :=_cedc +_afece /_aeab ;if _dbg {_ccc =-_ccc ;};return MakeNumberResult (_ccc );};
// CountIfs implements the COUNTIFS function.
func CountIfs (args []Result )Result {_fgecca :=_cfeae (args ,false ,"\u0043\u004f\u0055\u004e\u0054\u0049\u0046\u0053");if _fgecca .Type !=ResultTypeEmpty {return _fgecca ;};_eddebb :=_gdbac (args );return MakeNumberResult (float64 (len (_eddebb )));};
// Update updates references in the PrefixHorizontalRange after removing a row/column.
func (_cbcda PrefixHorizontalRange )Update (q *_fc .UpdateQuery )Expression {return _cbcda };
// MakeErrorResult constructs a #VALUE! error with a given extra error message.
// The error message is for debugging formula evaluation only and is not stored
// in the sheet.
func MakeErrorResult (msg string )Result {return MakeErrorResultType (ErrorTypeValue ,msg )};
// Update updates references in the Negate after removing a row/column.
func (_caeaf Negate )Update (q *_fc .UpdateQuery )Expression {return Negate {_ceada :_caeaf ._ceada .Update (q )};};
// Eval evaluates and returns the result of a formula.
func (_egae *defEval )Eval (ctx Context ,formula string )Result {_daa :=ParseString (formula );_ddg :=make (chan Result );go func (){if _daa ==nil {_ddg <-MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0061\u0062\u006c\u0065\u0020\u0074\u006f\u0020\u0070a\u0072\u0073\u0065\u0020\u0066\u006f\u0072\u006d\u0075\u006ca\u0020\u0025\u0073",formula ));}else {_egae .checkLastEvalIsRef (ctx ,_daa );_ddg <-_daa .Eval (ctx ,_egae );};}();select{case _gbe :=<-_ddg :return _gbe ;case <-_dd .After (_fcb ):_ea .Log .Debug ("\u0055\u006e\u0069\u004ff\u0066\u0069\u0063\u0065\u0020\u0065\u0076\u0061\u006c\u0075a\u0074i\u006f\u006e\u0020\u0074\u0069\u006d\u0065o\u0075\u0074");return MakeNumberResult (0);};};const _cde ="\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0054\u0049\u004d\u0045\u0056\u0041\u004c\u0055\u0045";func _gggdc (_ebcf []string ,_eefcd int )string {return _dc .Itoa (len (_ebcf [len (_ebcf )-1-_eefcd ]))};
// Update returns the same object as updating sheet references does not affect String.
func (_fdgfgf String )Update (q *_fc .UpdateQuery )Expression {return _fdgfgf };
// Floor is an implementation of the FlOOR function.
func Floor (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0046\u004c\u004f\u004f\u0052\u0028\u0029\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074w\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_feacg :=args [0].AsNumber ();if _feacg .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072s\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0046\u004c\u004f\u004f\u0052\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};var _dfdef float64 ;_ageg :=args [1].AsNumber ();if _ageg .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020a\u0072\u0067\u0075m\u0065\u006e\u0074\u0020t\u006f\u0020\u0046\u004c\u004f\u004f\u0052\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dfdef =_ageg .ValueNumber ;if _dfdef < 0&&_feacg .ValueNumber >=0{return MakeErrorResultType (ErrorTypeNum ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0073\u0020\u0074\u006f\u0020\u0046L\u004f\u004f\u0052");};_gcgc :=_feacg .ValueNumber ;_gcgc ,_dcdf :=_ggd .Modf (_gcgc /_dfdef );if _dcdf !=0{if _feacg .ValueNumber < 0&&_dcdf < 0{_gcgc --;};};return MakeNumberResult (_gcgc *_dfdef );};func _ebbdb (_ecdfe string ,_eeaa []Result )(*parsedReplaceObject ,Result ){if len (_eeaa )!=4{return nil ,MakeErrorResult (_ecdfe +"\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _eeaa [0].Type !=ResultTypeString {return nil ,MakeErrorResult (_ecdfe +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072s\u0074\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u0073t\u0072\u0069\u006e\u0067");};_fbbe :=_eeaa [0].ValueString ;if _eeaa [1].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_ecdfe +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062e \u0061\u0020\u006eu\u006db\u0065\u0072");};_dacdb :=int (_eeaa [1].ValueNumber )-1;if _eeaa [2].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_ecdfe +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068\u0069r\u0064\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006eu\u006d\u0062\u0065\u0072");};_ccda :=int (_eeaa [2].ValueNumber );if _eeaa [3].Type !=ResultTypeString {return nil ,MakeErrorResult (_ecdfe +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075\u0072\u0074\u0068\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062e \u0061\u0020\u0073t\u0072i\u006e\u0067");};_efdee :=_eeaa [3].ValueString ;return &parsedReplaceObject {_fbbe ,_dacdb ,_ccda ,_efdee },_dabe ;};
// Log implements the Excel LOG function which returns the log of a number. By
// default the result is base 10, however the second argument to the function
// can specify a different base.
func Log (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u004cO\u0047\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074 o\u006e\u0065\u0020n\u0075\u006de\u0072\u0069\u0063\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};if len (args )> 2{return MakeErrorResult ("L\u004f\u0047\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u006d\u0061\u0078i\u006d\u0075\u006d\u0020\u006f\u0066\u0020\u0074\u0077\u006f a\u0072\u0067\u0075m\u0065n\u0074\u0073");};_edgd :=args [0].AsNumber ();if _edgd .Type !=ResultTypeNumber {return MakeErrorResult ("\u004cO\u0047\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074 o\u006e\u0065\u0020n\u0075\u006de\u0072\u0069\u0063\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_agbedd :=10.0;if len (args )> 1{_eaab :=args [1].AsNumber ();if _eaab .Type !=ResultTypeNumber {return MakeErrorResult ("\u004cO\u0047\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061rg\u0075\u006d\u0065n\u0074\u0020t\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0065r\u0069\u0063");};_agbedd =args [1].ValueNumber ;};if _edgd .ValueNumber ==0{return MakeErrorResult ("\u004cO\u0047\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0061\u0072gu\u006d\u0065\u006et\u0020\u0074o\u0020\u0062\u0065\u0020\u006e\u006fn\u002d\u007ae\u0072\u006f");};if _agbedd ==0{return MakeErrorResult ("\u004cO\u0047\u0028)\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0073e\u0063\u006f\u006e\u0064\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062e\u0020\u006e\u006f\u006e\u002d\u007a\u0065\u0072\u006f");};return MakeNumberResult (_ggd .Log (_edgd .ValueNumber )/_ggd .Log (_agbedd ));};
// String returns a string representation of PrefixExpr.
func (_dcebe PrefixExpr )String ()string {return _b .Sprintf ("\u0025\u0073\u0021%\u0073",_dcebe ._ecfdc .String (),_dcebe ._bgbg .String ());};var _aeagd =[]ri {{1000,"\u004d"},{900,"\u0043\u004d"},{500,"\u0044"},{400,"\u0043\u0044"},{100,"\u0043"},{90,"\u0058\u0043"},{50,"\u004c"},{40,"\u0058\u004c"},{10,"\u0058"},{9,"\u0049\u0058"},{5,"\u0056"},{4,"\u0049\u0056"},{1,"\u0049"}};func _gaff (_eagc ,_abb ,_gadc float64 )float64 {return (_eagc *3600+_abb *60+_gadc )/86400};type node struct{_bbce tokenType ;_gafa string ;};
// Today is an implementation of the Excel TODAY() function.
func Today (args []Result )Result {if len (args )> 0{return MakeErrorResult ("\u0054\u004f\u0044A\u0059\u0020\u0064\u006fe\u0073\u006e\u0027\u0074\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_cgb :=_dd .Now ();_ ,_gfg :=_cgb .Zone ();_decdf :=_fae (_adef ,_cgb .Unix ()+int64 (_gfg ))+1;return MakeNumberResult (_decdf );};
// Mduration implements the Excel MDURATION function.
func Mduration (args []Result )Result {_bcad ,_babbf :=_ggg (args ,"\u004dD\u0055\u0052\u0041\u0054\u0049\u004fN");if _babbf .Type ==ResultTypeError {return _babbf ;};_eaggb :=_bcad ._bdfe ;_bdag :=_bcad ._gcfgf ;_bbab :=_bcad ._debg ;_gcfe :=_bcad ._bgga ;_gbab :=_bcad ._ddcb ;_gaca :=_bcad ._bfcb ;_bdbg :=_ecbc (_eaggb ,_bdag ,_bbab ,_gcfe ,_gbab ,_gaca );if _bdbg .Type ==ResultTypeError {return _bdbg ;};_efab :=_bdbg .ValueNumber /(1.0+_gcfe /_gbab );return MakeNumberResult (_efab );};func _ede (_abdc ,_edcga float64 )bool {return _ggd .Abs (_abdc -_edcga )< 1.0e-6};func _gaab (_faec ,_bbggc ,_eddg ,_bcc float64 ,_dfbg int )float64 {var _gbca float64 ;if _faec ==0{_gbca =_bcc +_eddg *_bbggc ;}else {_ebcb :=_ggd .Pow (1+_faec ,_bbggc );if _dfbg ==1{_gbca =_bcc *_ebcb +_eddg *(1+_faec )*(_ebcb -1)/_faec ;}else {_gbca =_bcc *_ebcb +_eddg *(_ebcb -1)/_faec ;};};return -_gbca ;};func _ggg (_acac []Result ,_gdba string )(*durationArgs ,Result ){_dcae :=len (_acac );if _dcae !=5&&_dcae !=6{return nil ,MakeErrorResult (_gdba +"\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s\u0020\u0066\u0069\u0076\u0065\u0020\u006fr\u0020\u0073\u0069\u0078\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_gfda ,_eaa ,_aede :=_gbce (_acac [0],_acac [1],_gdba );if _aede .Type ==ResultTypeError {return nil ,_aede ;};_dccdg :=_acac [2];if _dccdg .Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gdba +"\u0020\u0072eq\u0075\u0069\u0072e\u0073\u0020\u0063\u006fupo\u006e r\u0061\u0074\u0065\u0020\u006f\u0066\u0020ty\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072");};_accb :=_dccdg .ValueNumber ;if _accb < 0{return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0043\u006f\u0075po\u006e\u0020\u0072\u0061\u0074\u0065\u0020\u0073\u0068o\u0075l\u0064 \u006eo\u0074\u0020\u0062\u0065\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};_edcbd :=_acac [3];if _edcbd .Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gdba +" \u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0079\u0069\u0065\u006cd\u0020\u0072\u0061\u0074\u0065\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072");};_fcfc :=_edcbd .ValueNumber ;if _fcfc < 0{return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0059\u0069\u0065\u006c\u0064\u0020r\u0061\u0074\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u006ft\u0020\u0062\u0065\u0020\u006e\u0065\u0067a\u0074\u0069\u0076\u0065");};_afcb :=_acac [4];if _afcb .Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gdba +"\u0020\u0072\u0065qu\u0069\u0072\u0065\u0073\u0020\u0066\u0072\u0065\u0071u\u0065n\u0063y\u0020o\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cae :=float64 (int (_afcb .ValueNumber ));if !_dccgg (_cae ){return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0066\u0072e\u0071u\u0065n\u0063\u0065\u0020\u0076\u0061\u006c\u0075e");};_dedc :=0;if _dcae ==6&&_acac [5].Type !=ResultTypeEmpty {_bdg :=_acac [5];if _bdg .Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gdba +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020b\u0061\u0073\u0069\u0073\u0020\u006f\u0066 \u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dedc =int (_bdg .ValueNumber );if !_bbf (_dedc ){return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0062a\u0073\u0069\u0073\u0020\u0076\u0061\u006c\u0075\u0065\u0020f\u006f\u0072\u0020"+_gdba );};};return &durationArgs {_gfda ,_eaa ,_accb ,_fcfc ,_cae ,_dedc },_dabe ;};func _cbfe (_cffa []Result ,_cad string )(*amorArgs ,Result ){_gfaa :=len (_cffa );if _gfaa !=6&&_gfaa !=7{return nil ,MakeErrorResult (_cad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0069\u0078\u0020\u006fr\u0020s\u0065\u0076\u0065\u006e\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _cffa [0].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_cad +"\u0020\u0072eq\u0075\u0069\u0072e\u0073\u0020\u0063\u006fst \u0074o \u0062\u0065\u0020\u006e\u0075\u006d\u0062er\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_ffgd :=_cffa [0].ValueNumber ;if _ffgd < 0{return nil ,MakeErrorResultType (ErrorTypeNum ,_cad +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0063\u006f\u0073\u0074\u0020\u0074\u006f\u0020\u0062\u0065 \u006e\u006f\u006e\u0020\u006e\u0065\u0067a\u0074\u0069\u0076\u0065");};_cdcc ,_bfg :=_eeg (_cffa [1],"\u0064\u0061\u0074\u0065\u0020\u0070\u0075\u0072\u0063h\u0061\u0073\u0065\u0064",_cad );if _bfg .Type ==ResultTypeError {return nil ,_bfg ;};_acaf ,_bfg :=_eeg (_cffa [2],"\u0066\u0069\u0072s\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064",_cad );if _bfg .Type ==ResultTypeError {return nil ,_bfg ;};if _acaf < _cdcc {return nil ,MakeErrorResultType (ErrorTypeNum ,_cad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072\u0073\u0074 \u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020l\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0064\u0061te\u0020\u0070\u0075\u0072\u0063\u0068\u0061\u0073\u0065\u0064");};if _cffa [3].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_cad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006cv\u0061\u0067\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_ffedf :=_cffa [3].ValueNumber ;if _ffedf < 0||_ffedf > _ffgd {return nil ,MakeErrorResultType (ErrorTypeNum ,_cad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061g\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0062\u0065\u0074\u0077\u0065e\u006e\u0020\u0030\u0020\u0061\u006e\u0064\u0020\u0074\u0068\u0065\u0020in\u0069\u0074\u0069\u0061\u006c\u0020\u0063\u006f\u0073\u0074");};if _cffa [4].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_cad +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_gffb :=int (_cffa [4].ValueNumber );if _gffb < 0{return nil ,MakeErrorResultType (ErrorTypeNum ,_cad +" \u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0070\u0065\u0072\u0069o\u0064\u0020\u0074\u006f\u0020\u0062\u0065 \u006e\u006f\u006e\u002d\u006e\u0065\u0067\u0061\u0074\u0069v\u0065");};if _cffa [5].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_cad +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0064\u0065\u0070\u0072\u0065\u0063\u0069\u0061\u0074\u0069\u006f\u006e\u0020\u0072\u0061\u0074\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_eccd :=_cffa [5].ValueNumber ;if _eccd < 0{return nil ,MakeErrorResultType (ErrorTypeNum ,_cad +"\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 d\u0065\u0070\u0072\u0065\u0063\u0069\u0061\u0074\u0069\u006f\u006e\u0020\u0072\u0061t\u0065\u0020t\u006f\u0020\u0062e\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u0020\u0061\u006e\u0064 \u006c\u0065ss\u0020\u0074\u0068a\u006e\u0020\u0030\u002e\u0035");};_gcca :=0;if _gfaa ==7&&_cffa [6].Type !=ResultTypeEmpty {if _cffa [6].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_cad +"\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020b\u0061\u0073\u0069\u0073\u0020\u0074\u006f\u0020b\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_gcca =int (_cffa [6].ValueNumber );if !_bbf (_gcca )||_gcca ==2{return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020fo\u0072\u0020"+_cad );};};return &amorArgs {_ffgd ,_cdcc ,_acaf ,_ffedf ,_gffb ,_eccd ,_gcca },_dabe ;};const _eef ="\u0028\u0028\u005b\u0030\u002d\u0039]\u0029\u002b\u0029:\u0028\u0028\u005b0\u002d\u0039\u005d\u0029\u002b\u0029\u003a\u0028\u0028\u005b0\u002d\u0039\u005d\u0029\u002b(\\\u002e\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u003f\u0029\u0028\u0020\u0028\u0061\u006d\u007c\u0070\u006d\u0029\u0029\u003f";const _bcaf =1;const _dedcd ="\u0052\u0065\u0073\u0075\u006c\u0074\u0054\u0079\u0070\u0065U\u006e\u006b\u006e\u006f\u0077\u006e\u0052\u0065\u0073u\u006c\u0074\u0054y\u0070\u0065\u004e\u0075\u006d\u0062\u0065\u0072\u0052\u0065s\u0075\u006c\u0074\u0054\u0079\u0070\u0065\u0053\u0074\u0072\u0069\u006e\u0067\u0052\u0065\u0073\u0075\u006c\u0074\u0054\u0079\u0070\u0065\u004c\u0069\u0073\u0074\u0052\u0065\u0073\u0075lt\u0054\u0079p\u0065\u0041r\u0072\u0061\u0079\u0052\u0065\u0073\u0075\u006c\u0074\u0054\u0079\u0070\u0065\u0045\u0072\u0072\u006f\u0072\u0052\u0065\u0073\u0075\u006c\u0074\u0054\u0079\u0070\u0065\u0045\u006d\u0070\u0074\u0079";
// NewEvaluator constructs a new defEval object which is the default formula evaluator.
func NewEvaluator ()Evaluator {_gda :=&defEval {};_gda .evCache =_fbfa ();return _gda };func _dgb (){_bbg ["\u006d\u006d\u002f\u0064\u0064\u002f\u0079\u0079"]=_gg .MustCompile ("\u005e"+_gfc +_caa );_bbg ["\u006dm\u0020\u0064\u0064\u002c\u0020\u0079y"]=_gg .MustCompile ("\u005e"+_cafc +_caa );_bbg ["\u0079\u0079\u002d\u006d\u006d\u002d\u0064\u0064"]=_gg .MustCompile ("\u005e"+_dca +_caa );_bbg ["y\u0079\u002d\u006d\u006d\u0053\u0074\u0072\u002d\u0064\u0064"]=_gg .MustCompile ("\u005e"+_fac +_caa );_dbbe ["\u0068\u0068"]=_gg .MustCompile (_gfa +_gdea +"\u0024");_dbbe ["\u0068\u0068\u003am\u006d"]=_gg .MustCompile (_gfa +_dab +"\u0024");_dbbe ["\u006d\u006d\u003as\u0073"]=_gg .MustCompile (_gfa +_abd +"\u0024");_dbbe ["\u0068\u0068\u003a\u006d\u006d\u003a\u0073\u0073"]=_gg .MustCompile (_gfa +_eef +"\u0024");_ceee =[]*_gg .Regexp {_gg .MustCompile ("\u005e"+_gfc +"\u0024"),_gg .MustCompile ("\u005e"+_cafc +"\u0024"),_gg .MustCompile ("\u005e"+_dca +"\u0024"),_gg .MustCompile ("\u005e"+_fac +"\u0024")};_dge =[]*_gg .Regexp {_gg .MustCompile ("\u005e"+_gdea +"\u0024"),_gg .MustCompile ("\u005e"+_dab +"\u0024"),_gg .MustCompile ("\u005e"+_abd +"\u0024"),_gg .MustCompile ("\u005e"+_eef +"\u0024")};};var (_efcb =0;_ggee =false ;);func _gbbb (_faac ,_ggbc ,_agfa ,_dbcc ,_ffdf ,_gfdef float64 ,_dfged int )(float64 ,Result ){_fdcd :=int (_gfdef );_eadg :=_eabc (_faac ,_ggbc ,_fdcd ,_dfged );_aggc :=_gdb (_faac ,_ggbc ,_fdcd ,_dfged )/_eadg ;_bdfec ,_bbdc :=_dccd (_faac ,_ggbc ,_fdcd ,_dfged );if _bbdc .Type ==ResultTypeError {return 0,_bbdc ;};_fdbc :=_eecf (_faac ,_ggbc ,_fdcd ,_dfged );_dcdc :=_ffdf /_ggd .Pow (1+_dbcc /_gfdef ,_bdfec -1+_aggc );_dcdc -=100*_agfa /_gfdef *_fdbc /_eadg ;_bebee :=100*_agfa /_gfdef ;_gddc :=1+_dbcc /_gfdef ;for _dfa :=0.0;_dfa < _bdfec ;_dfa ++{_dcdc +=_bebee /_ggd .Pow (_gddc ,_dfa +_aggc );};return _dcdc ,MakeEmptyResult ();};
// Reference returns an invalid reference for FunctionCall.
func (_ggfbf FunctionCall )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };
// Eval evaluates and returns the result of a Negate expression.
func (_dece Negate )Eval (ctx Context ,ev Evaluator )Result {_ecfc :=_dece ._ceada .Eval (ctx ,ev );if _ecfc .Type ==ResultTypeNumber {return MakeNumberResult (-_ecfc .ValueNumber );};return MakeErrorResult ("\u004e\u0045\u0047A\u0054\u0045\u0020\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};
// NewEmptyExpr constructs a new empty expression.
func NewEmptyExpr ()Expression {return EmptyExpr {}};
// IsNA is an implementation of the Excel ISNA() function.
func IsNA (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u004e\u0041\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeError &&args [0].ValueString =="\u0023\u004e\u002f\u0041");};type yySymType struct{_fbbg int ;_fabb *node ;_fgge Expression ;_bgfe []Expression ;_adbg [][]Expression ;};
// String returns a string representation of a vertical range.
func (_fdbg VerticalRange )String ()string {return _fdbg .verticalRangeReference ()};
// Atan2 implements the Excel ATAN2 function. It accepts two numeric arguments,
// and the arguments are (x,y), reversed from normal to match Excel's behaviour.
func Atan2 (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0041\u0054\u0041\u004e2\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020t\u0077o\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073");};_fefg :=args [0].AsNumber ();_bfegb :=args [1].AsNumber ();if _fefg .Type ==ResultTypeNumber &&_bfegb .Type ==ResultTypeNumber {_aeeac :=_ggd .Atan2 (_bfegb .ValueNumber ,_fefg .ValueNumber );if _aeeac !=_aeeac {return MakeErrorResult ("\u0041T\u0041N\u0032\u0020\u0072\u0065\u0074u\u0072\u006ee\u0064\u0020\u004e\u0061\u004e");};return MakeNumberResult (_aeeac );};for _ ,_ffff :=range []ResultType {_fefg .Type ,_bfegb .Type }{switch _ffff {case ResultTypeList ,ResultTypeString :return MakeErrorResult ("\u0041\u0054\u0041\u004e\u0032\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");case ResultTypeError :return _fefg ;default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068an\u0064\u006c\u0065\u0064\u0020\u0041\u0054\u0041\u004e2\u0028)\u0020a\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_ffff ));};};return MakeErrorResult ("u\u006e\u0068\u0061\u006e\u0064\u006ce\u0064\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0066o\u0072\u0020\u0041T\u0041N\u0032\u0028\u0029");};var _dabe Result =MakeEmptyResult ();
// Xnpv implements the Excel XNPV function.
func Xnpv (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u0058\u004eP\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("X\u004e\u0050\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_gfdcc :=args [0].ValueNumber ;if _gfdcc <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0058\u004e\u0050\u0056\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006f\u0073i\u0074\u0069\u0076\u0065");};_gdca ,_agee :=_cafgg (args [1],args [2],"\u0058\u004e\u0050\u0056");if _agee .Type ==ResultTypeError {return _agee ;};_gfgbf :=_gdca ._fbafa ;_agca :=_gdca ._afddg ;_adee :=0.0;_ggff :=_agca [0];for _ffdeg ,_dgad :=range _gfgbf {_adee +=_dgad /_ggd .Pow (1+_gfdcc ,(_agca [_ffdeg ]-_ggff )/365);};return MakeNumberResult (_adee );};
// HLookup implements the HLOOKUP function that returns a matching value from a
// row in an array.
func HLookup (args []Result )Result {if len (args )< 3{return MakeErrorResult ("\u0048\u004c\u004f\u004f\u004bU\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074 \u006c\u0065\u0061\u0073\u0074\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if len (args )> 4{return MakeErrorResult ("\u0048\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0061\u0074\u0020m\u006f\u0073\u0074\u0020\u0066\u006f\u0075\u0072\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_cgagf :=args [0];_bffc :=args [1];if _bffc .Type !=ResultTypeArray {return MakeErrorResult ("\u0048\u004cO\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_bfddc :=args [2].AsNumber ();if _bfddc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0048\u004cO\u004f\u004b\u0055\u0050 \u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075m\u0065\u0072\u0069\u0063\u0020\u0072\u006f\u0077\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cbfeg :=false ;if len (args )==4{_fbdca :=args [3].AsNumber ();if _fbdca .Type !=ResultTypeNumber {return MakeErrorResult ("\u0048\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};if _fbdca .ValueNumber ==0{_cbfeg =true ;};};_gedg :=-1;_adca :=false ;if len (_bffc .ValueArray )==0{return MakeErrorResult ("\u0048\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020n\u006f\u006e\u002d\u0065\u006d\u0070\u0074\u0079\u0020\u0061\u0072\u0072\u0061\u0079");};_aegg :=_bffc .ValueArray [0];_cgab :for _efcd ,_eaad :=range _aegg {switch _adeg (_eaad ,_cgagf ,false ,_cbfeg ){case _agaa :_gedg =_efcd ;case _dbdf :_gedg =_efcd ;_adca =true ;break _cgab ;};};if _gedg ==-1{return MakeErrorResultType (ErrorTypeNA ,"\u0048\u004c\u004fOK\u0055\u0050\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_cegc :=int (_bfddc .ValueNumber )-1;if _cegc < 0||_cegc > len (_bffc .ValueArray ){return MakeErrorResult ("\u0048L\u004f\u004f\u004b\u0055P\u0020\u0068\u0061\u0064\u0020i\u006ev\u0061l\u0069\u0064\u0020\u0069\u006e\u0064\u0065x");};_aegg =_bffc .ValueArray [_cegc ];if _gedg < 0||_gedg >=len (_aegg ){return MakeErrorResult ("\u0056\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0068\u0061\u0073\u0020\u0069\u006e\u0076a\u006ci\u0064\u0020\u0063\u006f\u006c\u0075\u006d\u006e\u0020\u0069\u006e\u0064\u0065\u0078");};if _adca ||!_cbfeg {return _aegg [_gedg ];};return MakeErrorResultType (ErrorTypeNA ,"\u0056\u004c\u004fOK\u0055\u0050\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};
// Mirr implements the Excel MIRR function.
func Mirr (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u004d\u0049R\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};if args [0].Type !=ResultTypeList &&args [0].Type !=ResultTypeArray {return MakeErrorResult ("M\u0049\u0052\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0076\u0061\u006c\u0075\u0065s\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020ar\u0072\u0061\u0079 \u0074y\u0070\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0049\u0052\u0052\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s \u0066\u0069\u006e\u0061\u006e\u0063e\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_ffbg :=args [1].ValueNumber +1;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0049\u0052\u0052\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0069\u006e\u0076\u0065\u0073\u0074\u0020\u0072\u0061\u0074\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_afbfc :=args [2].ValueNumber +1;if _afbfc ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"");};_gccac :=_ggecf (args [0]);_ggbd :=float64 (len (_gccac ));_cabdc ,_dda :=0.0,0.0;_gcffc ,_gcge :=1.0,1.0;_cefe ,_acgc :=false ,false ;for _ ,_cdbfc :=range _gccac {for _ ,_acae :=range _cdbfc {if _acae .Type ==ResultTypeNumber &&!_acae .IsBoolean {_facg :=_acae .ValueNumber ;if _facg ==0{continue ;}else {if _facg > 0{_cefe =true ;_dda +=_acae .ValueNumber *_gcge ;}else {_acgc =true ;_cabdc +=_acae .ValueNumber *_gcffc ;};_gcffc /=_ffbg ;_gcge /=_afbfc ;};};};};if !_cefe ||!_acgc {return MakeErrorResultType (ErrorTypeDivideByZero ,"");};_dgab :=-_dda /_cabdc ;_dgab *=_ggd .Pow (_afbfc ,_ggbd -1);_dgab =_ggd .Pow (_dgab ,1/(_ggbd -1));return MakeNumberResult (_dgab -1);};
// ReferenceType is a type of reference
//go:generate stringer -type=ReferenceType
type ReferenceType byte ;
// Cumprinc implements the Excel CUMPRINC function.
func Cumprinc (args []Result )Result {_acca ,_ggaf :=_efdb (args ,"\u0043\u0055\u004d\u0050\u0052\u0049\u004e\u0043");if _ggaf .Type ==ResultTypeError {return _ggaf ;};_fba :=_acca ._bbd ;_fedg :=_acca ._bbbf ;_dcgc :=_acca ._dfbe ;_gadb :=_acca ._dfeb ;_cefc :=_acca ._fbca ;_gadbe :=_acca ._fbgf ;_dgdbc :=_gdge (_fba ,_fedg ,_dcgc ,0,_gadbe );_gaef :=0.0;if _gadb ==1{if _gadbe ==0{_gaef =_dgdbc +_dcgc *_fba ;}else {_gaef =_dgdbc ;};_gadb ++;};for _cgad :=_gadb ;_cgad <=_cefc ;_cgad ++{if _gadbe ==1{_gaef +=_dgdbc -(_gaab (_fba ,_cgad -2,_dgdbc ,_dcgc ,1)-_dgdbc )*_fba ;}else {_gaef +=_dgdbc -_gaab (_fba ,_cgad -1,_dgdbc ,_dcgc ,0)*_fba ;};};return MakeNumberResult (_gaef );};func (_cfece PrefixHorizontalRange )horizontalRangeReference (_bggef string )string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0064\u003a\u0025\u0064",_bggef ,_cfece ._baabe ,_cfece ._ebade );};
// Proper is an implementation of the Excel PROPER function that returns a copy
// of the string with each word capitalized.
func Proper (args []Result )Result {if len (args )!=1{return MakeErrorResult ("P\u0052\u004f\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073i\u006e\u0067\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006eg \u0061\u0072\u0067u\u006de\u006e\u0074");};_eaagc :=args [0].AsString ();if _eaagc .Type !=ResultTypeString {return MakeErrorResult ("P\u0052\u004f\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073i\u006e\u0067\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006eg \u0061\u0072\u0067u\u006de\u006e\u0074");};_afca :=_db .Buffer {};_eagdf :=false ;for _ ,_efdd :=range _eaagc .ValueString {if !_eagdf &&_a .IsLetter (_efdd ){_afca .WriteRune (_a .ToUpper (_efdd ));}else {_afca .WriteRune (_a .ToLower (_efdd ));};_eagdf =_a .IsLetter (_efdd );};return MakeStringResult (_afca .String ());};
// Choose implements the Excel CHOOSE function.
func Choose (args []Result )Result {if len (args )< 2{return MakeErrorResult ("\u0043\u0048O\u004f\u0053\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};_gfedad :=args [0];if _gfedad .Type !=ResultTypeNumber {return MakeErrorResult ("\u0043H\u004f\u004fS\u0045\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020f\u0069\u0072\u0073\u0074\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074y\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cedae :=int (_gfedad .ValueNumber );if _cedae < 1{return MakeErrorResult ("\u0049\u006e\u0064\u0065\u0078\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065 \u0061 \u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u0076\u0061\u006c\u0075\u0065");};if len (args )<=_cedae {return MakeErrorResult ("\u0049\u006e\u0064\u0065\u0078\u0020\u0073\u0068\u006f\u0075\u006cd\u0020\u0062\u0065\u0020\u006c\u0065\u0073\u0073 \u006fr\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006f\u0066\u0020\u0076\u0061\u006c\u0075\u0065\u0073");};return args [_cedae ];};func _dbcg (_cceb []Result )Result {_bacg :=_cceb [0].ValueArray ;if len (_cceb )==1{_gcad :=[][]Result {};for _ ,_ecaa :=range _bacg {_gcad =append (_gcad ,_fddb ([]Result {MakeListResult (_ecaa )}).ValueList );};return MakeArrayResult (_gcad );}else if len (_cceb )==2{_cfabe :=len (_bacg );_efgg :=len (_bacg [0]);_fefb :=_cbga (_cceb [1],_cfabe ,_efgg );_aafb :=len (_fefb );_fcdd :=[][]Result {};var _gaaa []Result ;for _edcc ,_efga :=range _bacg {if _edcc < _aafb {_gaaa =_fefb [_edcc ];}else {_gaaa =_dfcd (MakeErrorResultType (ErrorTypeNA ,""),_efgg );};_fcdd =append (_fcdd ,_fddb ([]Result {MakeListResult (_efga ),MakeListResult (_gaaa )}).ValueList );};return MakeArrayResult (_fcdd );}else if len (_cceb )==3{_edcce :=len (_bacg );_fgfd :=len (_bacg [0]);_bfcbf :=_cbga (_cceb [1],_edcce ,_fgfd );_edfg :=_cbga (_cceb [2],_edcce ,_fgfd );_ccgb :=len (_bfcbf );_cbcdg :=len (_edfg );_febb :=[][]Result {};var _afcf ,_dgaa []Result ;for _agcbd ,_bdfc :=range _bacg {if _agcbd < _ccgb {_afcf =_bfcbf [_agcbd ];}else {_afcf =_dfcd (MakeErrorResultType (ErrorTypeNA ,""),_fgfd );};if _agcbd < _cbcdg {_dgaa =_edfg [_agcbd ];}else {_dgaa =_dfcd (MakeErrorResultType (ErrorTypeNA ,""),_fgfd );};_febb =append (_febb ,_fddb ([]Result {MakeListResult (_bdfc ),MakeListResult (_afcf ),MakeListResult (_dgaa )}).ValueList );};return MakeArrayResult (_febb );};return MakeErrorResultType (ErrorTypeValue ,"");};
// FunctionComplex is a function whose result depends on its arguments and the
// context that it's in. As an example, INDIRECT is a complex function so that
// INDIRECT("A1") which returns the value of the "A1" cell in a sheet can use
// the context to reach into the sheet and pull out required values.
type FunctionComplex func (_ffcfb Context ,_egbgd Evaluator ,_fcgad []Result )Result ;
// Ipmt implements the Excel IPMT function.
func Ipmt (args []Result )Result {_agda :=len (args );if _agda < 4||_agda > 6{return MakeErrorResult ("\u0049P\u004d\u0054\u0020\u0072\u0065\u0071\u0075ir\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074s\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0062\u0065\u0074\u0077\u0065\u0065n\u0020\u0066ou\u0072\u0020\u0061n\u0064\u0020\u0073\u0069\u0078");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("I\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_bbga :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0050\u004dT\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_efc :=args [1].ValueNumber ;if _efc <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u0050\u004d\u0054\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006fd\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006ff\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_abce :=args [2].ValueNumber ;if _abce <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062er\u0020o\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f \u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0050\u004d\u0054\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0020\u0076\u0061\u006c\u0075\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_dcac :=args [3].ValueNumber ;_aad :=0.0;if _agda > 4&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0050\u004d\u0054\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s \u0066\u0075\u0074\u0075\u0072\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_aad =args [4].ValueNumber ;};_cgdea :=0;if _agda ==6&&args [5].Type !=ResultTypeEmpty {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("I\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_cgdea =int (args [5].ValueNumber );if _cgdea !=0{_cgdea =1;};};return MakeNumberResult (_cfed (_bbga ,_efc ,_abce ,_dcac ,_aad ,_cgdea ));};
// Exact is an implementation of the Excel EXACT() which compares two strings.
func Exact (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0043\u004f\u004e\u0043\u0041\u0054\u0045N\u0041\u0054\u0045(\u0029\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_eccdd :=args [0].AsString ();_gddfb :=args [1].AsString ();if _eccdd .Type !=ResultTypeString ||_gddfb .Type !=ResultTypeString {return MakeErrorResult ("\u0043\u004f\u004e\u0043\u0041\u0054\u0045N\u0041\u0054\u0045(\u0029\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};return MakeBoolResult (_eccdd .ValueString ==_gddfb .ValueString );};
// ISERROR is an implementation of the Excel ISERROR() function.
func IsError (args []Result )Result {if len (args )!=1{return MakeErrorResult ("I\u0053\u0045\u0052\u0052\u004f\u0052(\u0029\u0020\u0061\u0063\u0063\u0065p\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeError );};
// Median implements the MEDIAN function that returns the median of a range of
// values.
func Median (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u004d\u0045D\u0049\u0041\u004e\u0020r\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020l\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_adgc :=_aadb (args );_bg .Float64s (_adgc );var _ecfde float64 ;if len (_adgc )%2==0{_ecfde =(_adgc [len (_adgc )/2-1]+_adgc [len (_adgc )/2])/2;}else {_ecfde =_adgc [len (_adgc )/2];};return MakeNumberResult (_ecfde );};
// Update updates the horizontal range references after removing a row/column.
func (_cfbg HorizontalRange )Update (q *_fc .UpdateQuery )Expression {return _cfbg };func _adeg (_adff ,_efcc Result ,_dbacc ,_gffa bool )cmpResult {_adff =_adff .AsNumber ();_efcc =_efcc .AsNumber ();if _adff .Type !=_efcc .Type {return _gdbc ;};if _adff .Type ==ResultTypeNumber {if _adff .ValueNumber ==_efcc .ValueNumber {return _dbdf ;};if _adff .ValueNumber < _efcc .ValueNumber {return _agaa ;};return _egac ;};if _adff .Type ==ResultTypeString {_bdgf :=_adff .ValueString ;_dgcd :=_efcc .ValueString ;if !_dbacc {_bdgf =_g .ToLower (_bdgf );_dgcd =_g .ToLower (_dgcd );};if _gffa {_fgee :=_be .Match (_dgcd ,_bdgf );if _fgee {return _dbdf ;}else {return _egac ;};};return cmpResult (_g .Compare (_bdgf ,_dgcd ));};if _adff .Type ==ResultTypeEmpty {return _dbdf ;};if _adff .Type ==ResultTypeList {if len (_adff .ValueList )< len (_efcc .ValueList ){return _agaa ;};if len (_adff .ValueList )> len (_efcc .ValueList ){return _egac ;};for _gbbbc :=range _adff .ValueList {_fece :=_adeg (_adff .ValueList [_gbbbc ],_efcc .ValueList [_gbbbc ],_dbacc ,_gffa );if _fece !=_dbdf {return _fece ;};};return _dbdf ;};if _adff .Type ==ResultTypeList {if len (_adff .ValueArray )< len (_efcc .ValueArray ){return _agaa ;};if len (_adff .ValueArray )> len (_efcc .ValueArray ){return _egac ;};for _cfffb :=range _adff .ValueArray {_bcadb :=_adff .ValueArray [_cfffb ];_daag :=_adff .ValueArray [_cfffb ];if len (_bcadb )< len (_daag ){return _agaa ;};if len (_bcadb )> len (_daag ){return _egac ;};for _cefcd :=range _bcadb {_bbfg :=_adeg (_bcadb [_cefcd ],_daag [_cefcd ],_dbacc ,_gffa );if _bbfg !=_dbdf {return _bbfg ;};};};return _dbdf ;};return _gdbc ;};var _cbeb string =string ([]byte {92});
// Amorlinc implements the Excel AMORLINC function.
func Amorlinc (args []Result )Result {_afec ,_ffab :=_cbfe (args ,"\u0041\u004d\u004f\u0052\u004c\u0049\u004e\u0043");if _ffab .Type ==ResultTypeError {return _ffab ;};_gcff :=_afec ._ggdb ;_cgbd :=_afec ._gdcec ;_dgdd :=_afec ._eaag ;_cdbe :=_afec ._gag ;_deeg :=_afec ._aaef ;_adde :=_afec ._bfbd ;_cbgf :=_afec ._gfde ;_eabea ,_aafd :=_cebg (_cgbd ,_dgdd ,_cbgf );if _aafd .Type ==ResultTypeError {return MakeErrorResult ("\u0069\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0064\u0061\u0074\u0065\u0073 \u0066o\u0072\u0020\u0041\u004d\u004f\u0052\u004cI\u004e\u0043");};_caea :=_eabea *_adde *_gcff ;if _deeg ==0{return MakeNumberResult (_caea );};_fccde :=_gcff *_adde ;_bgae :=_gcff -_cdbe ;_acfe :=int ((_bgae -_caea )/_fccde );if _deeg <=_acfe {return MakeNumberResult (_fccde );}else if _deeg ==_acfe +1{return MakeNumberResult (_bgae -_fccde *float64 (_acfe )-_caea );}else {return MakeNumberResult (0);};};
// Amordegrc implements the Excel AMORDEGRC function.
func Amordegrc (args []Result )Result {_acgb ,_cabd :=_cbfe (args ,"\u0041M\u004f\u0052\u0044\u0045\u0047\u0052C");if _cabd .Type ==ResultTypeError {return _cabd ;};_ggcf :=_acgb ._ggdb ;_bdcba :=_acgb ._gdcec ;_effc :=_acgb ._eaag ;_acgfc :=_acgb ._gag ;_gggb :=_acgb ._aaef ;_dbbee :=_acgb ._bfbd ;if _dbbee >=0.5{return MakeErrorResultType (ErrorTypeNum ,"\u0041\u004d\u004f\u0052\u0044\u0045\u0047R\u0043\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006c\u0065\u0073\u0073\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0035");};_cce :=_acgb ._gfde ;_dddgg :=1.0/_dbbee ;_dfb :=2.5;if _dddgg < 3{_dfb =1;}else if _dddgg < 5{_dfb =1.5;}else if _dddgg <=6{_dfb =2;};_dbbee *=_dfb ;_gdf ,_ggce :=_cebg (_bdcba ,_effc ,_cce );if _ggce .Type ==ResultTypeError {return MakeErrorResult ("\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0064\u0061\u0074\u0065\u0073\u0020\u0066\u006f\u0072\u0020\u0041\u004d\u004f\u0052\u0044EG\u0052\u0043");};_fcce :=_fgb (_gdf *_dbbee *_ggcf );_ggcf -=_fcce ;_ffdgf :=_ggcf -_acgfc ;for _ggdf :=0;_ggdf < _gggb ;_ggdf ++{_fcce =_fgb (_dbbee *_ggcf );_ffdgf -=_fcce ;if _ffdgf < 0{switch _gggb -_ggdf {case 0:case 1:return MakeNumberResult (_fgb (_ggcf *0.5));default:return MakeNumberResult (0);};};_ggcf -=_fcce ;};return MakeNumberResult (_fcce );};
// Multinomial implements the excel MULTINOMIAL function.
func Multinomial (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u004d\u0055\u004c\u0054\u0049\u004eO\u004d\u0049\u0041\u004c\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006ce\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069c\u0020i\u006e\u0070\u0075\u0074");};_ebea ,_ecbga ,_ffcc :=_badd (args );if _ffcc .Type ==ResultTypeError {return _ffcc ;};return MakeNumberResult (_gdbed (_ebea )/_ecbga );};func _ebbf (_fagd Result )[]Result {_ffbd :=_fagd .ValueList ;if _fagd .Type ==ResultTypeArray {_ffbd =nil ;for _ ,_agcg :=range _fagd .ValueArray {if len (_agcg )> 0{_ffbd =append (_ffbd ,_agcg [0]);}else {_ffbd =append (_ffbd ,_dabe );};};};return _ffbd ;};
// Yield implements the Excel YIELD function.
func Yield (args []Result )Result {_cfdc :=len (args );if _cfdc !=6&&_cfdc !=7{return MakeErrorResult ("\u0059\u0049E\u004c\u0044\u0020\u0072e\u0071\u0075i\u0072\u0065\u0073\u0020\u0073\u0069\u0078\u0020o\u0072\u0020\u0073\u0065\u0076\u0065\u006e\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_edcgf ,_befbd ,_bdba :=_gbce (args [0],args [1],"\u0059\u0049\u0045L\u0044");if _bdba .Type ==ResultTypeError {return _bdba ;};_ebd :=args [2];if _ebd .Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045LD\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0072a\u0074e\u0020o\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_fdca :=_ebd .ValueNumber ;if _fdca < 0{return MakeErrorResultType (ErrorTypeNum ,"R\u0061\u0074\u0065\u0020\u0073\u0068o\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u006e\u006fn\u0020\u006e\u0065g\u0061t\u0069\u0076\u0065");};_fggb :=args [3];if _fggb .Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020p\u0072 \u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dbgb :=_fggb .ValueNumber ;if _dbgb <=0{return MakeErrorResultType (ErrorTypeNum ,"p\u0072\u0020\u0073\u0068ou\u006cd\u0020\u0062\u0065\u0020\u0070o\u0073\u0069\u0074\u0069\u0076\u0065");};_aebg :=args [4];if _aebg .Type !=ResultTypeNumber {return MakeErrorResult ("Y\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065m\u0070\u0074\u0069\u006f\u006e\u0020\u006f\u0066\u0020\u0074yp\u0065\u0020\u006eu\u006db\u0065\u0072");};_dcebc :=_aebg .ValueNumber ;if _dcebc < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0069\u0065\u006cd\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065 \u006eo\u006e\u0020\u006e\u0065\u0067\u0061\u0074i\u0076\u0065");};_cebda :=args [5];if _cebda .Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0066\u0072\u0065\u0071\u0075e\u006e\u0063\u0079\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_cbdce :=float64 (int (_cebda .ValueNumber ));if !_dccgg (_cbdce ){return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0066\u0072e\u0071u\u0065n\u0063\u0065\u0020\u0076\u0061\u006c\u0075e");};_fafg :=0;if _cfdc ==7&&args [6].Type !=ResultTypeEmpty {_ceg :=args [6];if _ceg .Type !=ResultTypeNumber {return MakeErrorResult ("Y\u0049\u0045\u004c\u0044\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073 \u0062\u0061\u0073\u0069\u0073\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072");};_fafg =int (_ceg .ValueNumber );if !_bbf (_fafg ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063o\u0072\u0072\u0065\u0063t\u0020\u0062\u0061\u0073\u0069\u0073\u0020v\u0061\u006c\u0075\u0065\u0020\u0066\u006f\u0072\u0020\u0059\u0049\u0045\u004c\u0044");};};_dgbg :=0.0;_ggea :=0.0;_bgddf :=1.0;_deea ,_bdba :=_gbbb (_edcgf ,_befbd ,_fdca ,_ggea ,_dcebc ,_cbdce ,_fafg );if _bdba .Type ==ResultTypeError {return _bdba ;};_eeff ,_bdba :=_gbbb (_edcgf ,_befbd ,_fdca ,_bgddf ,_dcebc ,_cbdce ,_fafg );if _bdba .Type ==ResultTypeError {return _bdba ;};_gdgdb :=(_bgddf -_ggea )*0.5;for _eedb :=0;_eedb < 100&&_dgbg !=_dbgb ;_eedb ++{_dgbg ,_bdba =_gbbb (_edcgf ,_befbd ,_fdca ,_gdgdb ,_dcebc ,_cbdce ,_fafg );if _bdba .Type ==ResultTypeError {return _bdba ;};if _dbgb ==_deea {return MakeNumberResult (_ggea );}else if _dbgb ==_eeff {return MakeNumberResult (_bgddf );}else if _dbgb ==_dgbg {return MakeNumberResult (_gdgdb );}else if _dbgb < _eeff {_bgddf *=2.0;_eeff ,_bdba =_gbbb (_edcgf ,_befbd ,_fdca ,_bgddf ,_dcebc ,_cbdce ,_fafg );if _bdba .Type ==ResultTypeError {return _bdba ;};_gdgdb =(_bgddf -_ggea )*0.5;}else {if _dbgb < _dgbg {_ggea =_gdgdb ;_deea =_dgbg ;}else {_bgddf =_gdgdb ;_eeff =_dgbg ;};_gdgdb =_bgddf -(_bgddf -_ggea )*((_dbgb -_eeff )/(_deea -_eeff ));};};return MakeNumberResult (_gdgdb );};var _dge =[]*_gg .Regexp {};type yyParserImpl struct{_cfdb yySymType ;_eede [_dggbg ]yySymType ;_dacac int ;};
// SumIfs implements the SUMIFS function.
func SumIfs (args []Result )Result {_efbec :=_cfeae (args ,true ,"\u0053\u0055\u004d\u0049\u0046\u0053");if _efbec .Type !=ResultTypeEmpty {return _efbec ;};_gbcbc :=_gdbac (args [1:]);_ccged :=0.0;_caceb :=_ggecf (args [0]);for _ ,_cdgce :=range _gbcbc {_ccged +=_caceb [_cdgce ._dccb ][_cdgce ._bddb ].ValueNumber ;};return MakeNumberResult (float64 (_ccged ));};func _eaaag (_abfc Result ,_faeb ,_agbag string )(string ,Result ){switch _abfc .Type {case ResultTypeString ,ResultTypeNumber ,ResultTypeEmpty :return _abfc .Value (),_dabe ;default:return "",MakeErrorResult (_faeb +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020"+_agbag +"\u0020t\u006f\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006db\u0065r\u0020o\u0072\u0020\u0073\u0074\u0072\u0069\u006eg");};};var _ffda =[]ri {{1000,"\u004d"},{990,"\u0058\u004d"},{950,"\u004c\u004d"},{900,"\u0043\u004d"},{500,"\u0044"},{490,"\u0058\u0044"},{450,"\u004c\u0044"},{400,"\u0043\u0044"},{100,"\u0043"},{99,"\u0049\u0043"},{90,"\u0058\u0043"},{50,"\u004c"},{45,"\u0056\u004c"},{40,"\u0058\u004c"},{10,"\u0058"},{9,"\u0049\u0058"},{5,"\u0056"},{4,"\u0049\u0056"},{1,"\u0049"}};
// Munit is an implementation of the Excel MUNIT function that returns an
// identity matrix.
func Munit (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004d\u0055\u004eIT\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073 \u006fn\u0065 \u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0069\u006e\u0070\u0075\u0074");};_fecfd :=args [0].AsNumber ();if _fecfd .Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u0055\u004eIT\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073 \u006fn\u0065 \u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0069\u006e\u0070\u0075\u0074");};_efgc :=int (_fecfd .ValueNumber );_acdaa :=make ([][]Result ,0,_efgc );for _edafg :=0;_edafg < _efgc ;_edafg ++{_cddb :=make ([]Result ,_efgc );for _fbeb :=0;_fbeb < _efgc ;_fbeb ++{if _edafg ==_fbeb {_cddb [_fbeb ]=MakeNumberResult (1.0);}else {_cddb [_fbeb ]=MakeNumberResult (0.0);};};_acdaa =append (_acdaa ,_cddb );};return MakeArrayResult (_acdaa );};
// SheetPrefixExpr is a reference to a sheet like Sheet1! (reference to sheet 'Sheet1').
type SheetPrefixExpr struct{_bece string };type yyParser interface{Parse (yyLexer )int ;Lookahead ()int ;};
// T is an implementation of the Excel T function that returns whether the
// argument is text.
func T (args []Result )Result {if len (args )!=1{return MakeErrorResult ("T\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0061\u0020\u0073i\u006e\u0067\u006c\u0065\u0020\u0073\u0074r\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_bgefe :=args [0];if _bgefe .Type ==ResultTypeError ||_bgefe .Type ==ResultTypeString {return _bgefe ;};return _dabe ;};func _gabg (_ffba ,_abcg int )int {if _abcg ==2&&_bef (_ffba ){return 29;}else {return _bag [_abcg -1];};};func (_bfdc *noCache )SetCache (key string ,value Result ){};func (_gcdbb *Lexer )Next ()*node {_gcdbb ._cabg .Lock ();defer _gcdbb ._cabg .Unlock ();if len (_gcdbb ._egbg )> 0{_aeec :=_gcdbb ._egbg [0];_gcdbb ._egbg =_gcdbb ._egbg [1:];return _aeec ;};return _gcdbb .nextRaw ();};const _befce =57348;const _bccd =57369;type ivr struct{};func init (){RegisterFunction ("\u0043\u0048\u004f\u004f\u0053\u0045",Choose );RegisterFunction ("\u0043\u004f\u004c\u0055\u004d\u004e",Column );RegisterFunction ("\u0043O\u004c\u0055\u004d\u004e\u0053",Columns );RegisterFunction ("\u0049\u004e\u0044E\u0058",Index );RegisterFunctionComplex ("\u0049\u004e\u0044\u0049\u0052\u0045\u0043\u0054",Indirect );RegisterFunctionComplex ("\u004f\u0046\u0046\u0053\u0045\u0054",Offset );RegisterFunction ("\u004d\u0041\u0054C\u0048",Match );RegisterFunction ("\u0048L\u004f\u004f\u004b\u0055\u0050",HLookup );RegisterFunction ("\u004c\u0041\u0052G\u0045",Large );RegisterFunction ("\u004c\u004f\u004f\u004b\u0055\u0050",Lookup );RegisterFunction ("\u0052\u004f\u0057",Row );RegisterFunction ("\u0052\u004f\u0057\u0053",Rows );RegisterFunction ("\u0053\u004d\u0041L\u004c",Small );RegisterFunction ("\u0056L\u004f\u004f\u004b\u0055\u0050",VLookup );RegisterFunction ("\u0054R\u0041\u004e\u0053\u0050\u004f\u0053E",Transpose );};func _ggecf (_bgbcg Result )[][]Result {switch _bgbcg .Type {case ResultTypeArray :return _bgbcg .ValueArray ;case ResultTypeList :return [][]Result {_bgbcg .ValueList };default:return [][]Result {};};};
// GetFormat returns an empty string for the invalid reference context.
func (_bgbd *ivr )GetFormat (cellRef string )string {return ""};var _ceee =[]*_gg .Regexp {};var _fbb float64 =25569.0;
// Yieldmat implements the Excel YIELDMAT function.
func Yieldmat (args []Result )Result {_cgce :=len (args );if _cgce !=5&&_cgce !=6{return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0066\u0069v\u0065\u0020\u006f\u0072\u0020\u0073\u0069\u0078\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_babe ,_egaef ,_afecd :=_gbce (args [0],args [1],"\u0059\u0049\u0045\u004c\u0044\u004d\u0041\u0054");if _afecd .Type ==ResultTypeError {return _afecd ;};_bcgd ,_afecd :=_eeg (args [2],"\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065","\u0059\u0049\u0045\u004c\u0044\u004d\u0041\u0054");if _afecd .Type ==ResultTypeError {return _afecd ;};if _bcgd >=_babe {return MakeErrorResult ("\u0059\u0049\u0045\u004cD\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062e\u0020\u0062\u0065\u0066\u006fr\u0065\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049E\u004c\u0044\u004d\u0041T\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072a\u0074\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_gdbe :=args [3].ValueNumber ;if _gdbe < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0049\u0045\u004c\u0044M\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072a\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067\u0061\u0074\u0069\u0076\u0065");};if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044\u004d\u0041\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0079\u0069\u0065\u006c\u0064\u0020o\u0066\u0020\u0074\u0079\u0070e\u0020\u006eu\u006d\u0062\u0065\u0072");};_bcge :=args [4].ValueNumber ;if _bcge <=0{return MakeErrorResultType (ErrorTypeNum ,"Y\u0049\u0045\u004c\u0044\u004d\u0041T\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0070\u0072\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069v\u0065");};_fcbcc :=0;if _cgce ==6&&args [5].Type !=ResultTypeEmpty {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059I\u0045\u004cD\u004d\u0041\u0054 \u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0062\u0061\u0073\u0069\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fcbcc =int (args [5].ValueNumber );if !_bbf (_fcbcc ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065c\u0074\u0020b\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0059\u0049\u0045L\u0044\u004d\u0041\u0054");};};_cebca ,_afecd :=_cebg (_bcgd ,_egaef ,_fcbcc );if _afecd .Type ==ResultTypeError {return _afecd ;};_egdf ,_afecd :=_cebg (_bcgd ,_babe ,_fcbcc );if _afecd .Type ==ResultTypeError {return _afecd ;};_fgfb ,_afecd :=_cebg (_babe ,_egaef ,_fcbcc );if _afecd .Type ==ResultTypeError {return _afecd ;};_fbecc :=1+_cebca *_gdbe ;_fbecc /=_bcge /100+_egdf *_gdbe ;_fbecc --;_fbecc /=_fgfb ;return MakeNumberResult (_fbecc );};
// Eval evaluates and returns the result of an empty expression.
func (_gfe EmptyExpr )Eval (ctx Context ,ev Evaluator )Result {return MakeEmptyResult ()};
// Left implements the Excel LEFT(string,[n]) function which returns the
// leftmost n characters.
func Left (args []Result )Result {_aaca :=1;switch len (args ){case 1:case 2:if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u004c\u0045F\u0054\u0020\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075me\u006e\u0074");};_aaca =int (args [1].ValueNumber );if _aaca < 0{return MakeErrorResult ("\u004c\u0045\u0046T \u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020n\u0075m\u0062e\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u003e\u003d\u0020\u0030");};if _aaca ==0{return MakeStringResult ("");};default:return MakeErrorResult ("\u004c\u0045\u0046T \u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u006ee\u0020o\u0072 \u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type ==ResultTypeList {return MakeErrorResult ("\u004c\u0045\u0046T\u0020\u0063\u0061\u006e'\u0074\u0020\u0062\u0065\u0020\u0063\u0061l\u006c\u0065\u0064\u0020\u006f\u006e\u0020\u0061\u0020\u0072\u0061\u006e\u0067\u0065");};_gbcg :=args [0].Value ();if _aaca > len (_gbcg ){return MakeStringResult (_gbcg );};return MakeStringResult (_gbcg [0:_aaca ]);};
// NewPrefixRangeExpr constructs a new range with prefix.
func NewPrefixRangeExpr (pfx ,from ,to Expression )Expression {_ddbb ,_cbff ,_bdgbf :=_addc (from ,to );if _bdgbf !=nil {_ea .Log .Debug (_bdgbf .Error ());return NewError (_bdgbf .Error ());};return PrefixRangeExpr {_acbed :pfx ,_eeafd :_ddbb ,_cedga :_cbff };};func _gdcc (_dcceg Result )Result {if _dcceg .Type ==ResultTypeEmpty {return _dcceg ;};_bbecg :=_dcceg .AsString ();if _bbecg .Type !=ResultTypeString {return MakeErrorResult ("\u004c\u004f\u0057\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0061\u0020\u0073\u0069\u006eg\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};if _dcceg .IsBoolean {if _bbecg .ValueString =="\u0031"{return MakeStringResult ("\u0074\u0072\u0075\u0065");}else if _bbecg .ValueString =="\u0030"{return MakeStringResult ("\u0066\u0061\u006cs\u0065");}else {return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u004c\u004fW\u0045\u0052");};}else {return MakeStringResult (_g .ToLower (_bbecg .ValueString ));};};type defEval struct{evCache ;_ceeg bool ;};type xargs struct{_fbafa []float64 ;_afddg []float64 ;};
// Xor is an implementation of the Excel XOR() function and takes a variable
// number of arguments. It's odd to say the least. If any argument is numeric,
// it returns true if the number of non-zero numeric arguments is odd and false
// otherwise. If no argument is numeric, it returns an error.
func Xor (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u0058\u004f\u0052 r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061t\u0020l\u0065a\u0073t\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_abfbe :=0;_fcfbb :=false ;for _ ,_ddge :=range args {switch _ddge .Type {case ResultTypeList ,ResultTypeArray :_agcdca :=Xor (_ddge .ListValues ());if _agcdca .Type ==ResultTypeError {return _agcdca ;};if _agcdca .ValueNumber !=0{_abfbe ++;};_fcfbb =true ;case ResultTypeNumber :if _ddge .ValueNumber !=0{_abfbe ++;};_fcfbb =true ;case ResultTypeString :case ResultTypeError :return _ddge ;default:return MakeErrorResult ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0061\u0072\u0067u\u006de\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u006e\u0020\u0058\u004f\u0052");};};if !_fcfbb {return MakeErrorResult ("\u0058\u004f\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0069n\u0070\u0075\u0074");};return MakeBoolResult (_abfbe %2!=0);};
// IfError is an implementation of the Excel IFERROR() function. It takes two arguments.
func IfError (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0049\u0046\u0045\u0052\u0052\u004f\u0052\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074w\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeError {if args [0].Type ==ResultTypeEmpty {return MakeNumberResult (0);};return args [0];};return args [1];};
// Count implements the COUNT function.
func Count (args []Result )Result {return MakeNumberResult (_bddf (args ,_cdcca ))};var _eda =[...]uint8 {0,16,29,43,56,68,80,91,102,113,125,137,148,163};var _cbcga =[...]uint8 {0,17,33,49,63,78,93,108};var _geb =map[string ]int {"\u006aa\u006e\u0075\u0061\u0072\u0079":1,"\u0066\u0065\u0062\u0072\u0075\u0061\u0072\u0079":2,"\u006d\u0061\u0072c\u0068":3,"\u0061\u0070\u0072i\u006c":4,"\u006d\u0061\u0079":5,"\u006a\u0075\u006e\u0065":6,"\u006a\u0075\u006c\u0079":7,"\u0061\u0075\u0067\u0075\u0073\u0074":8,"\u0073e\u0070\u0074\u0065\u006d\u0070\u0065r":9,"\u006fc\u0074\u006f\u0062\u0065\u0072":10,"\u006e\u006f\u0076\u0065\u006d\u0062\u0065\u0072":11,"\u0064\u0065\u0063\u0065\u006d\u0062\u0065\u0072":12,"\u006a\u0061\u006e":1,"\u0066\u0065\u0062":2,"\u006d\u0061\u0072":3,"\u0061\u0070\u0072":4,"\u006a\u0075\u006e":6,"\u006a\u0075\u006c":7,"\u0061\u0075\u0067":8,"\u0073\u0065\u0070":9,"\u006f\u0063\u0074":10,"\u006e\u006f\u0076":11,"\u0064\u0065\u0063":12};func _cdg (_bfe string )bool {for _ ,_eagf :=range _ceee {_fcc :=_eagf .FindStringSubmatch (_bfe );if len (_fcc )> 1{return true ;};};return false ;};var _gbbd []byte =[]byte {0,1,2,1,11,1,12,1,13,1,14,1,15,1,16,1,17,1,18,1,19,1,20,1,21,1,22,1,23,1,24,1,25,1,26,1,27,1,28,1,29,1,30,1,31,1,32,1,33,1,34,1,35,1,36,1,37,1,38,1,39,1,40,1,41,1,42,1,43,2,0,1,2,3,4,2,3,5,2,3,6,2,3,7,2,3,8,2,3,9,2,3,10};
// Negate is a negate expression like -A1.
type Negate struct{_ceada Expression };
// Min is an implementation of the Excel MIN() function.
func Min (args []Result )Result {return _geee (args ,false )};func init (){_bdgb ();RegisterFunction ("\u004e\u0041",NA );RegisterFunction ("\u0049S\u0042\u004c\u0041\u004e\u004b",IsBlank );RegisterFunction ("\u0049\u0053\u0045R\u0052",IsErr );RegisterFunction ("\u0049S\u0045\u0052\u0052\u004f\u0052",IsError );RegisterFunction ("\u0049\u0053\u0045\u0056\u0045\u004e",IsEven );RegisterFunctionComplex ("\u005fx\u006cf\u006e\u002e\u0049\u0053\u0046\u004f\u0052\u004d\u0055\u004c\u0041",IsFormula );RegisterFunctionComplex ("\u004fR\u0047\u002e\u004f\u0050E\u004e\u004f\u0046\u0046\u0049C\u0045.\u0049S\u004c\u0045\u0041\u0050\u0059\u0045\u0041R",IsLeapYear );RegisterFunctionComplex ("\u0049S\u004c\u004f\u0047\u0049\u0043\u0041L",IsLogical );RegisterFunction ("\u0049\u0053\u004e\u0041",IsNA );RegisterFunction ("\u0049S\u004e\u004f\u004e\u0054\u0045\u0058T",IsNonText );RegisterFunction ("\u0049\u0053\u004e\u0055\u004d\u0042\u0045\u0052",IsNumber );RegisterFunction ("\u0049\u0053\u004fD\u0044",IsOdd );RegisterFunctionComplex ("\u0049\u0053\u0052E\u0046",IsRef );RegisterFunction ("\u0049\u0053\u0054\u0045\u0058\u0054",IsText );RegisterFunctionComplex ("\u0043\u0045\u004c\u004c",Cell );};
// Ispmt implements the Excel ISPMT function.
func Ispmt (args []Result )Result {if len (args )!=4{return MakeErrorResult ("\u0049\u0053P\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075\u0072\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u0050\u004d\u0054 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_decg :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u0050\u004d\u0054\u0020\u0072e\u0071\u0075\u0069r\u0065\u0073\u0020\u0070e\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gddf :=args [1].ValueNumber ;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0065\u0072\u0069o\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006dbe\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ebca :=args [2].ValueNumber ;if _ebca <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0049S\u0050\u004d\u0054\u0020\u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020p\u0065\u0072i\u006f\u0064\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006eu\u006d\u0062er\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065s\u0065\u006e\u0074\u0020\u0076\u0061\u006cu\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_caad :=args [3].ValueNumber ;return MakeNumberResult (_caad *_decg *(_gddf /_ebca -1));};var _cbdf =[...]int {0,1,1,2,4,1,1,1,1,2,2,1,1,1,1,3,1,3,1,3,1,3,1,2,1,1,1,3,4,1,1,1,2,2,3,3,3,3,3,3,3,3,3,3,3,3,1,2,3,1,3,1,1,0};
// Eval evaluates a range with prefix returning a list of results or an error.
func (_dbgfd PrefixRangeExpr )Eval (ctx Context ,ev Evaluator )Result {_dgfg :=_dbgfd ._acbed .Reference (ctx ,ev );_fagg :=_dbgfd ._eeafd .Reference (ctx ,ev );_accbd :=_dbgfd ._cedga .Reference (ctx ,ev );switch _dgfg .Type {case ReferenceTypeSheet :if _eabad (_dgfg ,ctx ){return MakeErrorResultType (ErrorTypeName ,_b .Sprintf ("\u0053h\u0065e\u0074\u0020\u0025\u0073\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064",_dgfg .Value ));};_cgdbe :=_fadc (_dgfg ,_fagg ,_accbd );if _fagg .Type ==ReferenceTypeCell &&_accbd .Type ==ReferenceTypeCell {if _ecae ,_bcbf :=ev .GetFromCache (_cgdbe );_bcbf {return _ecae ;}else {_eebde :=_dfad (ctx .Sheet (_dgfg .Value ),ev ,_fagg .Value ,_accbd .Value );ev .SetCache (_cgdbe ,_eebde );return _eebde ;};};return MakeErrorResult ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072a\u006e\u0067\u0065\u0020"+_cgdbe );default:return MakeErrorResult (_b .Sprintf ("\u006e\u006f\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0066\u006f\u0072\u0020r\u0065f\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_dgfg .Type ));};};func _eabc (_adccc ,_ccf float64 ,_bce ,_fada int )float64 {_dcee :=_gfae (_adccc );_ecca :=_gfae (_ccf );if _fada ==1{_cdb :=_fgf (_dcee ,_ecca ,_bce ,1);_gfb :=_cdb .AddDate (0,12/_bce ,0);return _cgbc (_cdb ,_gfb ,_fada );};return float64 (_edc (0,_fada ))/float64 (_bce );};const _ebgf =57360;
// Reference returns an invalid reference for String.
func (_bafe String )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };func (_aegace *Lexer )nextRaw ()*node {for len (_aegace ._dacad )!=0{_daad :=<-_aegace ._dacad [len (_aegace ._dacad )-1];if _daad !=nil {return _daad ;};_aegace ._dacad =_aegace ._dacad [0:len (_aegace ._dacad )-1];};return <-_aegace ._cccf ;};
// GCD implements the Excel GCD() function which returns the greatest common
// divisor of a range of numbers.
func GCD (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0047\u0043D(\u0029\u0020\u0072e\u0071\u0075\u0069\u0072es \u0061t \u006c\u0065\u0061\u0073\u0074\u0020\u006fne\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_dbdb :=[]float64 {};for _ ,_gfdee :=range args {switch _gfdee .Type {case ResultTypeString :_fgeea :=_gfdee .AsNumber ();if _fgeea .Type !=ResultTypeNumber {return MakeErrorResult ("\u0047\u0043D(\u0029\u0020\u006fn\u006c\u0079\u0020\u0061cce\u0070ts\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_dbdb =append (_dbdb ,_fgeea .ValueNumber );case ResultTypeList ,ResultTypeArray :_ddgd :=GCD (_gfdee .ListValues ());if _ddgd .Type !=ResultTypeNumber {return _ddgd ;};_dbdb =append (_dbdb ,_ddgd .ValueNumber );case ResultTypeNumber :_dbdb =append (_dbdb ,_gfdee .ValueNumber );case ResultTypeError :return _gfdee ;default:return MakeErrorResult (_b .Sprintf ("\u0047\u0043\u0044()\u0020\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072t\u0065d\u0020a\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_gfdee .Type ));};};if _dbdb [0]< 0{return MakeErrorResult ("\u0047\u0043D\u0028\u0029\u0020\u006fn\u006c\u0079 \u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};if len (_dbdb )==1{return MakeNumberResult (_dbdb [0]);};_ccdb :=_dbdb [0];for _aaagf :=1;_aaagf < len (_dbdb );_aaagf ++{if _dbdb [_aaagf ]< 0{return MakeErrorResult ("\u0047\u0043D\u0028\u0029\u0020\u006fn\u006c\u0079 \u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_ccdb =_bfdbe (_ccdb ,_dbdb [_aaagf ]);};return MakeNumberResult (_ccdb );};
// Reference returns a string reference value to a range.
func (_babgg Range )Reference (ctx Context ,ev Evaluator )Reference {_dfdd :=_babgg ._bbag .Reference (ctx ,ev );_dgggc :=_babgg ._cgbeb .Reference (ctx ,ev );if _dfdd .Type ==ReferenceTypeCell &&_dgggc .Type ==ReferenceTypeCell {return MakeRangeReference (_fffc (_dfdd ,_dgggc ));};return ReferenceInvalid ;};
// Max is an implementation of the Excel MAX() function.
func Max (args []Result )Result {return _baaf (args ,false )};type rangeIndex struct{_dccb int ;_bddb int ;};func _edeaa (_dege yyLexer )int {return _ggfag ().Parse (_dege )};
// YearFrac is an implementation of the Excel YEARFRAC() function.
func YearFrac (args []Result )Result {_fcdb :=len (args );if (_fcdb !=2&&_fcdb !=3)||args [0].Type !=ResultTypeNumber ||args [1].Type !=ResultTypeNumber {return MakeErrorResult ("Y\u0045\u0041\u0052\u0046\u0052\u0041\u0043\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020tw\u006f\u0020\u006f\u0072 \u0074\u0068\u0072\u0065\u0065\u0020\u006e\u0075\u006dbe\u0072\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_dedg :=0;if _fcdb ==3&&args [2].Type !=ResultTypeEmpty {if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("Y\u0045\u0041\u0052\u0046\u0052\u0041\u0043\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020ba\u0073\u0069\u0073\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074o \u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dedg =int (args [2].ValueNumber );if !_bbf (_dedg ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065c\u0074\u0020b\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0059\u0045\u0041R\u0046\u0052\u0041\u0043");};};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0045\u0041\u0052\u0046\u0052\u0041\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020s\u0074\u0061\u0072\u0074\u0020\u0064\u0061t\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cecg :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0045\u0041\u0052\u0046\u0052\u0041\u0043 \u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u0065\u006ed\u0020\u0064\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_defg :=args [1].ValueNumber ;_egd ,_dfgg :=_cebg (_cecg ,_defg ,_dedg );if _dfgg .Type ==ResultTypeError {return _dfgg ;};return MakeNumberResult (_egd );};
// Eval evaluates and returns the result of the cell reference.
func (_fdc CellRef )Eval (ctx Context ,ev Evaluator )Result {return ctx .Cell (_fdc ._abc ,ev )};func _baea (_ebaea int )string {if _ebaea >=1&&_ebaea -1< len (_dabef ){if _dabef [_ebaea -1]!=""{return _dabef [_ebaea -1];};};return _b .Sprintf ("\u0074\u006f\u006b\u002d\u0025\u0076",_ebaea );};const _fac ="(\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u002d"+_dba +"-\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029";const _dgfec =57370;func (_cgc *evCache )GetFromCache (key string )(Result ,bool ){_cgc ._eeb .Lock ();_afb ,_dbb :=_cgc ._cffd [key ];_cgc ._eeb .Unlock ();return _afb ,_dbb ;};func _bbabd (_geeed yyLexer ,_bgfdc *yySymType )(_cdccf ,_eedd int ){_eedd =0;_cdccf =_geeed .Lex (_bgfdc );if _cdccf <=0{_eedd =_acbfc [0];goto _aafg ;};if _cdccf < len (_acbfc ){_eedd =_acbfc [_cdccf ];goto _aafg ;};if _cdccf >=_ccgede {if _cdccf < _ccgede +len (_cced ){_eedd =_cced [_cdccf -_ccgede ];goto _aafg ;};};for _fcgcg :=0;_fcgcg < len (_dffa );_fcgcg +=2{_eedd =_dffa [_fcgcg +0];if _eedd ==_cdccf {_eedd =_dffa [_fcgcg +1];goto _aafg ;};};_aafg :if _eedd ==0{_eedd =_cced [1];};if _efcb >=3{_b .Printf ("l\u0065\u0078\u0020\u0025\u0073\u0028\u0025\u0064\u0029\u000a",_baea (_eedd ),uint (_cdccf ));};return _cdccf ,_eedd ;};
// Days is an implementation of the Excel DAYS() function.
func Days (args []Result )Result {if len (args )!=2{return MakeErrorResult ("D\u0041\u0059\u0053\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};var _bbb ,_dgfe float64 ;switch args [0].Type {case ResultTypeNumber :_dgfe =args [0].ValueNumber ;case ResultTypeString :_aab :=DateValue ([]Result {args [0]});if _aab .Type ==ResultTypeError {return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0065\u006e\u0064\u0020\u0064\u0061\u0074e\u0020\u0066\u006fr\u0020D\u0041\u0059\u0053");};_dgfe =_aab .ValueNumber ;default:return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0020\u0066\u006fr\u0020D\u0041\u0059\u0053");};switch args [1].Type {case ResultTypeNumber :_bbb =args [1].ValueNumber ;if _bbb < 62&&_dgfe >=62{_bbb --;};case ResultTypeString :_cgg :=DateValue ([]Result {args [1]});if _cgg .Type ==ResultTypeError {return MakeErrorResult ("\u0049\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0064\u0061\u0074\u0065\u0020\u0066\u006f\u0072\u0020DA\u0059\u0053");};_bbb =_cgg .ValueNumber ;default:return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0020\u0066\u006fr\u0020D\u0041\u0059\u0053");};_ffe :=float64 (int (_dgfe -_bbb ));return MakeNumberResult (_ffe );};
// TextJoin is an implementation of the Excel TEXTJOIN function.
func TextJoin (args []Result )Result {if len (args )< 3{return MakeErrorResult ("\u0054\u0045\u0058\u0054\u004aO\u0049\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074h\u0072\u0065\u0065\u0020\u006f\u0072\u0020\u006d\u006f\u0072\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeString {return MakeErrorResult ("\u0054\u0045\u0058T\u004a\u004f\u0049\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0064\u0065\u006c\u0069\u006d\u0069\u0074\u0065\u0072\u0020\u0074\u006f\u0020\u0062\u0065 \u0061\u0020\u0073\u0074\u0072\u0069\u006e\u0067");};_gaaba :=args [0].ValueString ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0054\u0045\u0058\u0054\u004a\u004f\u0049\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065c\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0072 \u0062\u006f\u006f\u006c\u0065a\u006e");};_egaa :=args [1].ValueNumber !=0;_dffc :=_gfdca (args [2:],[]string {},_egaa );return MakeStringResult (_g .Join (_dffc ,_gaaba ));};func init (){RegisterFunction ("\u0041\u004e\u0044",And );RegisterFunction ("\u0046\u0041\u004cS\u0045",False );RegisterFunction ("\u0049\u0046",If );RegisterFunction ("\u0049F\u0045\u0052\u0052\u004f\u0052",IfError );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0049\u0046\u004e\u0041",IfNA );RegisterFunction ("\u0049\u0046\u0053",Ifs );RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0049\u0046S",Ifs );RegisterFunction ("\u004e\u004f\u0054",Not );RegisterFunction ("\u004f\u0052",Or );RegisterFunction ("\u0054\u0052\u0055\u0045",True );RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0058\u004fR",Xor );};var _cced =[...]int {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};const _gebaf =57359;
// NewSheetPrefixExpr constructs a new prefix expression.
func NewSheetPrefixExpr (s string )Expression {return &SheetPrefixExpr {_bece :s }};type plex struct{_fagb chan *node ;_fggc Expression ;_bfbcb string ;};const (ErrorTypeValue ErrorType =iota ;ErrorTypeNull ;ErrorTypeRef ;ErrorTypeName ;ErrorTypeNum ;ErrorTypeSpill ;ErrorTypeNA ;ErrorTypeDivideByZero ;);
// Findb is an implementation of the Excel FINDB().
func Findb (ctx Context ,ev Evaluator ,args []Result )Result {if !ctx .IsDBCS (){return Find (args );};_aac ,_cbfb :=_bdbgb ("\u0046\u0049\u004e\u0044",args );if _cbfb .Type !=ResultTypeEmpty {return _cbfb ;};_dgfb :=_aac ._fccb ;if _dgfb ==""{return MakeNumberResult (1.0);};_cacbg :=_aac ._ddadg ;_acgd :=_aac ._ggbf -1;_gfagf :=1;_eafg :=0;for _dacb :=range _cacbg {if _dacb !=0{_cgdf :=1;if _dacb -_eafg > 1{_cgdf =2;};_gfagf +=_cgdf ;};if _gfagf > _acgd {_ddfcc :=_g .Index (_cacbg [_dacb :],_dgfb );if _ddfcc ==0{return MakeNumberResult (float64 (_gfagf ));};};_eafg =_dacb ;};return MakeErrorResultType (ErrorTypeValue ,"\u004eo\u0074\u0020\u0066\u006f\u0075\u006ed");};var _dabef =[...]string {"\u0024\u0065\u006e\u0064","\u0065\u0072\u0072o\u0072","\u0024\u0075\u006e\u006b","t\u006fk\u0065\u006e\u0048\u006f\u0072\u0069\u007a\u006fn\u0074\u0061\u006c\u0052an\u0067\u0065","\u0074o\u006be\u006e\u0056\u0065\u0072\u0074i\u0063\u0061l\u0052\u0061\u006e\u0067\u0065","\u0074\u006f\u006b\u0065\u006e\u0052\u0065\u0073\u0065\u0072\u0076\u0065d\u004e\u0061\u006d\u0065","\u0074\u006f\u006be\u006e\u0044\u0044\u0045\u0043\u0061\u006c\u006c","\u0074\u006f\u006b\u0065\u006e\u004c\u0065\u0078\u0045\u0072\u0072\u006f\u0072","\u0074o\u006be\u006e\u004e\u0061\u006d\u0065\u0064\u0052\u0061\u006e\u0067\u0065","\u0074o\u006b\u0065\u006e\u0042\u006f\u006fl","t\u006f\u006b\u0065\u006e\u004e\u0075\u006d\u0062\u0065\u0072","t\u006f\u006b\u0065\u006e\u0053\u0074\u0072\u0069\u006e\u0067","\u0074\u006f\u006b\u0065\u006e\u0045\u0072\u0072\u006f\u0072","\u0074\u006f\u006b\u0065\u006e\u0045\u0072\u0072\u006f\u0072\u0052\u0065\u0066","\u0074\u006f\u006b\u0065\u006e\u0053\u0068\u0065\u0065\u0074","\u0074o\u006b\u0065\u006e\u0043\u0065\u006cl","t\u006fk\u0065\u006e\u0046\u0075\u006e\u0063\u0074\u0069o\u006e\u0042\u0075\u0069lt\u0069\u006e","t\u006f\u006b\u0065\u006e\u004c\u0042\u0072\u0061\u0063\u0065","t\u006f\u006b\u0065\u006e\u0052\u0042\u0072\u0061\u0063\u0065","t\u006f\u006b\u0065\u006e\u004c\u0050\u0061\u0072\u0065\u006e","t\u006f\u006b\u0065\u006e\u0052\u0050\u0061\u0072\u0065\u006e","\u0074o\u006b\u0065\u006e\u0050\u006c\u0075s","\u0074\u006f\u006b\u0065\u006e\u004d\u0069\u006e\u0075\u0073","\u0074o\u006b\u0065\u006e\u004d\u0075\u006ct","\u0074\u006f\u006b\u0065\u006e\u0044\u0069\u0076","\u0074\u006f\u006b\u0065\u006e\u0045\u0078\u0070","\u0074o\u006b\u0065\u006e\u0045\u0051","\u0074o\u006b\u0065\u006e\u004c\u0054","\u0074o\u006b\u0065\u006e\u0047\u0054","\u0074\u006f\u006b\u0065\u006e\u004c\u0045\u0051","\u0074\u006f\u006b\u0065\u006e\u0047\u0045\u0051","\u0074o\u006b\u0065\u006e\u004e\u0045","\u0074\u006f\u006b\u0065\u006e\u0043\u006f\u006c\u006f\u006e","\u0074\u006f\u006b\u0065\u006e\u0043\u006f\u006d\u006d\u0061","\u0074\u006f\u006b\u0065\u006e\u0041\u006d\u0070\u0065r\u0073\u0061\u006e\u0064","\u0074o\u006b\u0065\u006e\u0053\u0065\u006di"};
// NewString constructs a new string expression.
func NewString (v string )Expression {v =_g .Replace (v ,"\u0022\u0022","\u0022",-1);return String {_ccafe :v };};
// NewHorizontalRange constructs a new full rows range.
func NewHorizontalRange (v string )Expression {_bfbc :=_g .Split (v ,"\u003a");if len (_bfbc )!=2{return nil ;};_bgcd ,_ :=_dc .Atoi (_bfbc [0]);_dcgf ,_ :=_dc .Atoi (_bfbc [1]);if _bgcd > _dcgf {_bgcd ,_dcgf =_dcgf ,_bgcd ;};return HorizontalRange {_cedf :_bgcd ,_gcddd :_dcgf };};
// SumSquares is an implementation of the Excel SUMSQ() function.
func SumSquares (args []Result )Result {_afdf :=MakeNumberResult (0);for _ ,_bgfdb :=range args {_bgfdb =_bgfdb .AsNumber ();switch _bgfdb .Type {case ResultTypeNumber :_afdf .ValueNumber +=_bgfdb .ValueNumber *_bgfdb .ValueNumber ;case ResultTypeList ,ResultTypeArray :_ggecg :=SumSquares (_bgfdb .ListValues ());if _ggecg .Type !=ResultTypeNumber {return _ggecg ;};_afdf .ValueNumber +=_ggecg .ValueNumber ;case ResultTypeString :case ResultTypeError :return _bgfdb ;case ResultTypeEmpty :default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u0053\u0055\u004dS\u0051\u0055\u0041\u0052\u0045\u0053(\u0029\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079p\u0065\u0020\u0025\u0073",_bgfdb .Type ));};};return _afdf ;};func _fab (_cecb string )bool {for _ ,_bdf :=range _dge {_aefa :=_bdf .FindStringSubmatch (_cecb );if len (_aefa )> 1{return true ;};};return false ;};func (_da BinOpType )String ()string {if _da >=BinOpType (len (_eda )-1){return _b .Sprintf ("\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065\u0028\u0025\u0064\u0029",_da );};return _eae [_eda [_da ]:_eda [_da +1]];};func _cee (_bbe string ,_gaf uint32 )string {_bga :=_ac .ColumnToIndex (_bbe );if _bga ==_gaf {return "\u0023\u0052\u0045F\u0021";}else if _bga > _gaf {return _ac .IndexToColumn (_bga -1);}else {return _bbe ;};};
// LastEvalIsRef returns if last evaluation with the evaluator was a reference.
func (_gab *defEval )LastEvalIsRef ()bool {return _gab ._ceeg };
// String returns a string representation of String.
func (_dggf String )String ()string {return "\u0022"+_dggf ._ccafe +"\u0022"};func _eebgb (_bfaa []Result )(bool ,Result ){for _ ,_cdfg :=range _bfaa {if _cdfg .Type ==ResultTypeError {return true ,_cdfg ;};};return false ,MakeEmptyResult ();};func init (){_cfgac =_ef .New (_ef .NewSource (_dd .Now ().UnixNano ()));RegisterFunction ("\u0041\u0042\u0053",_babf ("\u0041\u0053\u0049\u004e",_ggd .Abs ));RegisterFunction ("\u0041\u0043\u004f\u0053",_babf ("\u0041\u0053\u0049\u004e",_ggd .Acos ));RegisterFunction ("\u0041\u0043\u004fS\u0048",_babf ("\u0041\u0053\u0049\u004e",_ggd .Acosh ));RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0041\u0043\u004f\u0054",_babf ("\u0041\u0043\u004f\u0054",func (_edec float64 )float64 {return _ggd .Pi /2-_ggd .Atan (_edec )}));RegisterFunction ("_\u0078\u006c\u0066\u006e\u002e\u0041\u0043\u004f\u0054\u0048",_babf ("\u0041\u0043\u004fT\u0048",func (_dffd float64 )float64 {return _ggd .Atanh (1/_dffd )}));RegisterFunction ("\u005f\u0078\u006cf\u006e\u002e\u0041\u0052\u0041\u0042\u0049\u0043",Arabic );RegisterFunction ("\u0041\u0053\u0049\u004e",_babf ("\u0041\u0053\u0049\u004e",_ggd .Asin ));RegisterFunction ("\u0041\u0053\u0049N\u0048",_babf ("\u0041\u0053\u0049N\u0048",_ggd .Asinh ));RegisterFunction ("\u0041\u0054\u0041\u004e",_babf ("\u0041\u0054\u0041\u004e",_ggd .Atan ));RegisterFunction ("\u0041\u0054\u0041N\u0048",_babf ("\u0041\u0054\u0041N\u0048",_ggd .Atanh ));RegisterFunction ("\u0041\u0054\u0041N\u0032",Atan2 );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0042\u0041\u0053\u0045",Base );RegisterFunction ("\u0043E\u0049\u004c\u0049\u004e\u0047",Ceiling );RegisterFunction ("\u005fx\u006cf\u006e\u002e\u0043\u0045\u0049L\u0049\u004eG\u002e\u004d\u0041\u0054\u0048",CeilingMath );RegisterFunction ("_\u0078\u006c\u0066\u006e.C\u0045I\u004c\u0049\u004e\u0047\u002eP\u0052\u0045\u0043\u0049\u0053\u0045",CeilingPrecise );RegisterFunction ("\u0043\u004f\u004d\u0042\u0049\u004e",Combin );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0043\u004f\u004d\u0042\u0049\u004e\u0041",Combina );RegisterFunction ("\u0043\u004f\u0053",_babf ("\u0043\u004f\u0053",_ggd .Cos ));RegisterFunction ("\u0043\u004f\u0053\u0048",_babf ("\u0043\u004f\u0053\u0048",_ggd .Cosh ));RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0043\u004fT",_defa ("\u0043\u004f\u0054",_ggd .Tan ));RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0043\u004f\u0054\u0048",_defa ("\u0043\u004f\u0054\u0048",_ggd .Tanh ));RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0043\u0053C",_defa ("\u0043\u0053\u0043",_ggd .Sin ));RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0043\u0053\u0043\u0048",_defa ("\u0043\u0053\u0043",_ggd .Sinh ));RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0044\u0045\u0043\u0049\u004d\u0041\u004c",Decimal );RegisterFunction ("\u0044E\u0047\u0052\u0045\u0045\u0053",Degrees );RegisterFunction ("\u0045\u0056\u0045\u004e",Even );RegisterFunction ("\u0045\u0058\u0050",_babf ("\u0045\u0058\u0050",_ggd .Exp ));RegisterFunction ("\u0046\u0041\u0043\u0054",Fact );RegisterFunction ("\u0046\u0041\u0043\u0054\u0044\u004f\u0055\u0042\u004c\u0045",FactDouble );RegisterFunction ("\u0046\u004c\u004fO\u0052",Floor );RegisterFunction ("\u005f\u0078l\u0066\u006e\u002eF\u004c\u004f\u004f\u0052\u002e\u004d\u0041\u0054\u0048",FloorMath );RegisterFunction ("\u005f\u0078\u006c\u0066n.\u0046\u004c\u004f\u004f\u0052\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045",FloorPrecise );RegisterFunction ("\u0047\u0043\u0044",GCD );RegisterFunction ("\u0049\u004e\u0054",Int );RegisterFunction ("I\u0053\u004f\u002e\u0043\u0045\u0049\u004c\u0049\u004e\u0047",CeilingPrecise );RegisterFunction ("\u004c\u0043\u004d",LCM );RegisterFunction ("\u004c\u004e",_babf ("\u004c\u004e",_ggd .Log ));RegisterFunction ("\u004c\u004f\u0047",Log );RegisterFunction ("\u004c\u004f\u00471\u0030",_babf ("\u004c\u004f\u00471\u0030",_ggd .Log10 ));RegisterFunction ("\u004dD\u0045\u0054\u0045\u0052\u004d",MDeterm );RegisterFunction ("\u004d\u004f\u0044",Mod );RegisterFunction ("\u004d\u0052\u004f\u0055\u004e\u0044",Mround );RegisterFunction ("M\u0055\u004c\u0054\u0049\u004e\u004f\u004d\u0049\u0041\u004c",Multinomial );RegisterFunction ("_\u0078\u006c\u0066\u006e\u002e\u004d\u0055\u004e\u0049\u0054",Munit );RegisterFunction ("\u004f\u0044\u0044",Odd );RegisterFunction ("\u0050\u0049",Pi );RegisterFunction ("\u0050\u004f\u0057E\u0052",Power );RegisterFunction ("\u0050R\u004f\u0044\u0055\u0043\u0054",Product );RegisterFunction ("\u0051\u0055\u004f\u0054\u0049\u0045\u004e\u0054",Quotient );RegisterFunction ("\u0052A\u0044\u0049\u0041\u004e\u0053",Radians );RegisterFunction ("\u0052\u0041\u004e\u0044",Rand );RegisterFunction ("R\u0041\u004e\u0044\u0042\u0045\u0054\u0057\u0045\u0045\u004e",RandBetween );RegisterFunction ("\u0052\u004f\u004dA\u004e",Roman );RegisterFunction ("\u0052\u004f\u0055N\u0044",Round );RegisterFunction ("\u0052O\u0055\u004e\u0044\u0044\u004f\u0057N",RoundDown );RegisterFunction ("\u0052O\u0055\u004e\u0044\u0055\u0050",RoundUp );RegisterFunction ("\u005fx\u006c\u0066\u006e\u002e\u0053\u0045C",_defa ("\u0053\u0045\u0043",_ggd .Cos ));RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0053\u0045\u0043\u0048",_defa ("\u0053\u0045\u0043\u0048",_ggd .Cosh ));RegisterFunction ("\u0053E\u0052\u0049\u0045\u0053\u0053\u0055M",SeriesSum );RegisterFunction ("\u0053\u0049\u0047\u004e",Sign );RegisterFunction ("\u0053\u0049\u004e",_babf ("\u0053\u0049\u004e",_ggd .Sin ));RegisterFunction ("\u0053\u0049\u004e\u0048",_babf ("\u0053\u0049\u004e\u0048",_ggd .Sinh ));RegisterFunction ("\u0053\u0051\u0052\u0054",_babf ("\u0053\u0051\u0052\u0054",_ggd .Sqrt ));RegisterFunction ("\u0053\u0051\u0052\u0054\u0050\u0049",_babf ("\u0053\u0051\u0052\u0054\u0050\u0049",func (_eegb float64 )float64 {return _ggd .Sqrt (_eegb *_ggd .Pi )}));RegisterFunction ("\u0053\u0055\u004d",Sum );RegisterFunction ("\u0053\u0055\u004dI\u0046",SumIf );RegisterFunction ("\u0053\u0055\u004d\u0049\u0046\u0053",SumIfs );RegisterFunction ("\u0053\u0055\u004d\u0050\u0052\u004f\u0044\u0055\u0043\u0054",SumProduct );RegisterFunction ("\u0053\u0055\u004dS\u0051",SumSquares );RegisterFunction ("\u0054\u0041\u004e",_babf ("\u0054\u0041\u004e",_ggd .Tan ));RegisterFunction ("\u0054\u0041\u004e\u0048",_babf ("\u0054\u0041\u004e\u0048",_ggd .Tanh ));RegisterFunction ("\u0054\u0052\u0055N\u0043",Trunc );};func _adefe (_cfbb ,_effca float64 )float64 {_cfbb =_ggd .Trunc (_cfbb );_effca =_ggd .Trunc (_effca );if _cfbb ==0&&_effca ==0{return 0;};return _cfbb *_effca /_bfdbe (_cfbb ,_effca );};const _ggeef int =30;const _fdcf ="\u0052\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0054\u0079\u0070\u0065\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0052\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0054\u0079\u0070\u0065\u0043\u0065\u006c\u006c\u0052\u0065\u0066\u0065r\u0065\u006ec\u0065\u0054\u0079\u0070e\u004e\u0061\u006d\u0065\u0064\u0052\u0061\u006e\u0067\u0065R\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0054y\u0070\u0065\u0052\u0061\u006e\u0067\u0065\u0052\u0065\u0066e\u0072\u0065\u006ec\u0065\u0054\u0079\u0070\u0065\u0053\u0068e\u0065\u0074";
// Degrees is an implementation of the Excel function DEGREES() that converts
// radians to degrees.
func Degrees (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0044\u0045\u0047R\u0045\u0045\u0053\u0028)\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ebgd :=args [0].AsNumber ();if _ebgd .Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0045\u0047RE\u0045\u0053\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072e\u0073 \u006eu\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeNumberResult (180.0/_ggd .Pi *_ebgd .ValueNumber );};func _cca (_eff string )(int ,int ,float64 ,bool ,bool ,Result ){_bdcb :="";_dga :=[]string {};for _cbbb ,_def :=range _dbbe {_dga =_def .FindStringSubmatch (_eff );if len (_dga )> 1{_bdcb =_cbbb ;break ;};};if _bdcb ==""{return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_dbcb :=_dga [1]=="";_dga =_dga [49:];_cecbg :=len (_dga );_ddeg :=_dga [_cecbg -1];_gac :=_ddeg =="\u0061\u006d";_cga :=_ddeg =="\u0070\u006d";var _gecf ,_edfa int ;var _gdce float64 ;var _geg error ;switch _bdcb {case "\u0068\u0068":_gecf ,_geg =_dc .Atoi (_dga [0]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_edfa =0;_gdce =0;case "\u0068\u0068\u003am\u006d":_gecf ,_geg =_dc .Atoi (_dga [0]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_edfa ,_geg =_dc .Atoi (_dga [2]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_gdce =0;case "\u006d\u006d\u003as\u0073":_gecf =0;_edfa ,_geg =_dc .Atoi (_dga [0]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_gdce ,_geg =_dc .ParseFloat (_dga [2],64);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};case "\u0068\u0068\u003a\u006d\u006d\u003a\u0073\u0073":_gecf ,_geg =_dc .Atoi (_dga [0]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_edfa ,_geg =_dc .Atoi (_dga [2]);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};_gdce ,_geg =_dc .ParseFloat (_dga [4],64);if _geg !=nil {return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};};if _edfa >=60{return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};if _gac ||_cga {if _gecf > 12||_gdce >=60{return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );}else if _gecf ==12{_gecf =0;};}else if _gecf >=24||_gdce >=10000{return 0,0,0,false ,false ,MakeErrorResultType (ErrorTypeValue ,_cde );};return _gecf ,_edfa ,_gdce ,_cga ,_dbcb ,_dabe ;};func (_debag *Lexer )emit (_cafab tokenType ,_ffbac []byte ){if _gdcg {_b .Println ("\u0065\u006d\u0069\u0074",_cafab ,_cbeae (string (_ffbac )));};_debag ._cccf <-&node {_cafab ,string (_ffbac )};};
// HorizontalRange is a range expression that when evaluated returns a list of Results from references like 1:4 (all cells from rows 1 to 4).
type HorizontalRange struct{_cedf ,_gcddd int };
// Radians is an implementation of the Excel function RADIANS() that converts
// degrees to radians.
func Radians (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0052\u0041\u0044I\u0041\u004e\u0053\u0028)\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cgaba :=args [0].AsNumber ();if _cgaba .Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0044IA\u004e\u0053\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072e\u0073 \u006eu\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeNumberResult (_ggd .Pi /180.0*_cgaba .ValueNumber );};
// IsLeapYear is an implementation of the Excel ISLEAPYEAR() function.
func IsLeapYear (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1||args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049S\u004c\u0045A\u0050\u0059\u0045\u0041R\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073in\u0067\u006c\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_fffb :=ctx .GetEpoch ();_gdab ,_feac :=_ffebc (args [0].Value (),_fffb );if _feac !=nil {return MakeErrorResult ("\u0049S\u004c\u0045A\u0050\u0059\u0045\u0041R\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073in\u0067\u006c\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_dcb :=_gdab .Year ();return MakeBoolResult (_bef (_dcb ));};
// And is an implementation of the Excel AND() function.
func And (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0041\u004e\u0044 r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061t\u0020l\u0065a\u0073t\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dedce :=true ;for _ ,_gcgf :=range args {_gcgf =_gcgf .AsNumber ();switch _gcgf .Type {case ResultTypeList ,ResultTypeArray :_adagf :=And (_gcgf .ListValues ());if _adagf .Type ==ResultTypeError {return _adagf ;};if _adagf .ValueNumber ==0{_dedce =false ;};case ResultTypeNumber :if _gcgf .ValueNumber ==0{_dedce =false ;};case ResultTypeString :return MakeErrorResult ("\u0041\u004e\u0044\u0020\u0064\u006f\u0065\u0073\u006e\u0027t\u0020\u006f\u0070\u0065\u0072\u0061\u0074e\u0020\u006f\u006e\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0073");case ResultTypeError :return _gcgf ;default:return MakeErrorResult ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0061\u0072\u0067u\u006de\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u006e\u0020\u0041\u004e\u0044");};};return MakeBoolResult (_dedce );};
// String returns a string representation of CellRef.
func (_cf CellRef )String ()string {return _cf ._abc };
// RoundUp is an implementation of the Excel ROUNDUP function that rounds a number
// up to a specified number of digits.
func RoundUp (args []Result )Result {return _dgbb (args ,_ffcf )};
// Npv implements the Excel NPV function.
func Npv (args []Result )Result {_afde :=len (args );if _afde < 2{return MakeErrorResult ("\u004e\u0050\u0056 r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074w\u006f \u006fr\u0020m\u006f\u0072\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u004e\u0050\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020r\u0061\u0074\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_aagb :=args [0].ValueNumber ;if _aagb ==-1{return MakeErrorResultType (ErrorTypeDivideByZero ,"");};_cagg :=[]float64 {};for _ ,_cdccb :=range args [1:]{switch _cdccb .Type {case ResultTypeNumber :_cagg =append (_cagg ,_cdccb .ValueNumber );case ResultTypeArray ,ResultTypeList :_gafdc :=_ggecf (_cdccb );for _ ,_gbdcf :=range _gafdc {for _ ,_eaf :=range _gbdcf {if _eaf .Type ==ResultTypeNumber &&!_eaf .IsBoolean {_cagg =append (_cagg ,_eaf .ValueNumber );};};};};};_deaa :=0.0;for _feag ,_gebgd :=range _cagg {_deaa +=_gebgd /_ggd .Pow (1+_aagb ,float64 (_feag )+1);};return MakeNumberResult (_deaa );};const _caa ="\u0028\u0020\u0028"+_gdea +"\u007c"+_dab +"\u007c"+_abd +"\u007c"+_eef +"\u0029\u0029\u003f\u0024";func (_adbgb *Lexer )lex (_cgadb _e .Reader ){_gfdab ,_fadd ,_cfdf :=0,0,0;_eeag :=-1;_gggca ,_gbacg ,_fcafc :=0,0,0;_ =_fcafc ;_dgcbf :=1;_ =_dgcbf ;_fbggd :=make ([]byte ,4096);_gdcae :=false ;for !_gdcae {_cedb :=0;if _gggca > 0{_cedb =_fadd -_gggca ;};_fadd =0;_gacfb ,_fgfef :=_cgadb .Read (_fbggd [_cedb :]);if _gacfb ==0||_fgfef !=nil {_gdcae =true ;};_cfdf =_gacfb +_cedb ;if _cfdf < len (_fbggd ){_eeag =_cfdf ;};{_gfdab =_ffbb ;_gggca =0;_gbacg =0;_fcafc =0;};{var _gcbe int ;var _abdce uint ;if _fadd ==_cfdf {goto _fagc ;};if _gfdab ==0{goto _cdged ;};_gdaa :_gcbe =int (_fege [_gfdab ]);_abdce =uint (_gbbd [_gcbe ]);_gcbe ++;for ;_abdce > 0;_abdce --{_gcbe ++;switch _gbbd [_gcbe -1]{case 2:_gggca =_fadd ;};};switch _gfdab {case 30:switch _fbggd [_fadd ]{case 34:goto _gdeff ;case 35:goto _gebac ;case 36:goto _abafa ;case 38:goto _gbcab ;case 39:goto _eced ;case 40:goto _ffdgb ;case 41:goto _egccg ;case 42:goto _bbcae ;case 43:goto _efgb ;case 44:goto _aebce ;case 45:goto _bgcb ;case 47:goto _agdc ;case 58:goto _aegba ;case 59:goto _dadd ;case 60:goto _dbdcc ;case 61:goto _baafa ;case 62:goto _egfe ;case 63:goto _ebaf ;case 70:goto _decb ;case 84:goto _edecg ;case 92:goto _fcfaa ;case 94:goto _egeaf ;case 95:goto _ecbda ;case 123:goto _fegae ;case 125:goto _gdccc ;};switch {case _fbggd [_fadd ]< 65:switch {case _fbggd [_fadd ]> 37:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gbdg ;};case _fbggd [_fadd ]>=33:goto _ebaf ;};case _fbggd [_fadd ]> 90:switch {case _fbggd [_fadd ]> 93:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _cegfa ;};case _fbggd [_fadd ]>=91:goto _ebaf ;};default:goto _bbfd ;};goto _ccbf ;case 1:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _gceag ;case 123:goto _gceag ;case 125:goto _gceag ;};switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _gceag ;};case _fbggd [_fadd ]> 45:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _gceag ;};case _fbggd [_fadd ]>=58:goto _gceag ;};default:goto _gceag ;};goto _ccbf ;case 0:goto _cdged ;case 2:if _fbggd [_fadd ]==34{goto _edbde ;};goto _gdeff ;case 31:if _fbggd [_fadd ]==34{goto _gdeff ;};goto _acfc ;case 3:switch _fbggd [_fadd ]{case 78:goto _dbedf ;case 82:goto _dedcc ;};goto _ebaf ;case 4:switch _fbggd [_fadd ]{case 47:goto _cdcfg ;case 85:goto _fdae ;};goto _ebaf ;case 5:if _fbggd [_fadd ]==65{goto _cefg ;};goto _ebaf ;case 6:switch _fbggd [_fadd ]{case 76:goto _dfccdd ;case 77:goto _bfag ;};goto _ebaf ;case 7:if _fbggd [_fadd ]==76{goto _bfag ;};goto _ebaf ;case 8:if _fbggd [_fadd ]==33{goto _cefg ;};goto _ebaf ;case 9:if _fbggd [_fadd ]==69{goto _dbdac ;};goto _ebaf ;case 10:if _fbggd [_fadd ]==70{goto _fcad ;};goto _ebaf ;case 11:if _fbggd [_fadd ]==33{goto _dbbad ;};goto _ebaf ;case 12:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _ebaf ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _ebaf ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]< 65:if 58<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=63{goto _ebaf ;};case _fbggd [_fadd ]> 90:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _ebaf ;};default:goto _bdcg ;};default:goto _dgbga ;};goto _ccbf ;case 13:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _ebaf ;case 58:goto _ffbaa ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _ebaf ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _ebaf ;};case _fbggd [_fadd ]>=59:goto _ebaf ;};default:goto _dgbga ;};goto _ccbf ;case 14:if _fbggd [_fadd ]==36{goto _bcfe ;};if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dbdg ;};goto _gceag ;case 15:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dbdg ;};goto _gceag ;case 32:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dbdg ;};goto _cdfe ;case 16:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 47:goto _ebaf ;case 58:goto _ggfe ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 45:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _abgc ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]> 90:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _ebaf ;};case _fbggd [_fadd ]>=65:goto _bdcg ;};default:goto _ebaf ;};goto _ccbf ;case 17:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _gceag ;case 123:goto _gceag ;case 125:goto _gceag ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _gceag ;};case _fbggd [_fadd ]>=34:goto _gceag ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _gceag ;};case _fbggd [_fadd ]>=58:goto _gceag ;};default:goto _abgc ;};goto _ccbf ;case 33:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _gaed ;case 123:goto _gaed ;case 125:goto _gaed ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _gaed ;};case _fbggd [_fadd ]>=34:goto _gaed ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _gaed ;};case _fbggd [_fadd ]>=58:goto _gaed ;};default:goto _abgc ;};goto _ccbf ;case 18:if _fbggd [_fadd ]==36{goto _bcggc ;};if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _cfca ;};goto _gceag ;case 19:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _cfca ;};goto _gceag ;case 34:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _cfca ;};goto _ebfdge ;case 20:switch _fbggd [_fadd ]{case 39:goto _ebaf ;case 42:goto _ebaf ;case 47:goto _ebaf ;case 58:goto _ebaf ;case 63:goto _ebaf ;};if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=93{goto _ebaf ;};goto _abad ;case 21:switch _fbggd [_fadd ]{case 39:goto _geff ;case 42:goto _ebaf ;case 47:goto _ebaf ;case 58:goto _ebaf ;case 63:goto _ebaf ;};if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=93{goto _ebaf ;};goto _abad ;case 22:if _fbggd [_fadd ]==33{goto _aecgf ;};goto _ebaf ;case 35:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _afebf ;case 58:goto _ffbaa ;case 101:goto _cgbb ;case 123:goto _fdaa ;case 125:goto _fdaa ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=47{goto _fdaa ;};case _fbggd [_fadd ]>=34:goto _fdaa ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _fdaa ;};case _fbggd [_fadd ]>=59:goto _fdaa ;};default:goto _gbdg ;};goto _ccbf ;case 36:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _fdaa ;case 101:goto _cgbb ;case 123:goto _fdaa ;case 125:goto _fdaa ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _fdaa ;};case _fbggd [_fadd ]>=34:goto _fdaa ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _fdaa ;};case _fbggd [_fadd ]>=58:goto _fdaa ;};default:goto _afebf ;};goto _ccbf ;case 23:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _bacce ;case 123:goto _bacce ;case 125:goto _bacce ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _bacce ;};case _fbggd [_fadd ]>=34:goto _bacce ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _bacce ;};case _fbggd [_fadd ]>=58:goto _bacce ;};default:goto _ccfdc ;};goto _ccbf ;case 37:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 47:goto _fdaa ;case 123:goto _fdaa ;case 125:goto _fdaa ;};switch {case _fbggd [_fadd ]< 48:switch {case _fbggd [_fadd ]> 35:if 37<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=45{goto _fdaa ;};case _fbggd [_fadd ]>=34:goto _fdaa ;};case _fbggd [_fadd ]> 57:switch {case _fbggd [_fadd ]> 63:if 91<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=94{goto _fdaa ;};case _fbggd [_fadd ]>=58:goto _fdaa ;};default:goto _ccfdc ;};goto _ccbf ;case 38:switch _fbggd [_fadd ]{case 61:goto _ffdbf ;case 62:goto _ecag ;};goto _aabdg ;case 39:if _fbggd [_fadd ]==61{goto _fgbe ;};goto _dfdea ;case 24:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _ebaf ;};default:goto _ebaf ;};goto _ccbf ;case 40:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 40:goto _adfac ;case 46:goto _eaef ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _eaef ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _eaef ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 41:switch _fbggd [_fadd ]{case 46:goto _egca ;case 92:goto _egca ;case 95:goto _egca ;};switch {case _fbggd [_fadd ]< 65:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _egca ;};case _fbggd [_fadd ]> 90:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _egca ;};default:goto _egca ;};goto _aaebc ;case 42:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 43:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 40:goto _adfac ;case 46:goto _eaef ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _gaed ;case 125:goto _gaed ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _gaed ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};default:goto _gaed ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _eaef ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _gaed ;};default:goto _gaed ;};goto _ccbf ;case 44:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _gceag ;case 125:goto _gceag ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _gceag ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _gceag ;};default:goto _gceag ;};goto _ccbf ;case 25:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 65:goto _cbfgb ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 66<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _ebaf ;};default:goto _ebaf ;};goto _ccbf ;case 45:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 76:goto _bbdde ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 46:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 83:goto _ddgec ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 47:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 69:goto _gccfc ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 26:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 79:goto _adfg ;case 82:goto _eggdg ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _ebaf ;};default:goto _ebaf ;};goto _ccbf ;case 48:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 68:goto _dfdc ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 49:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 79:goto _daagd ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 50:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 36:goto _eaceb ;case 40:goto _adfac ;case 46:goto _eaef ;case 58:goto _ggfe ;case 85:goto _ddgec ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 59:switch {case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _gdcdg ;};case _fbggd [_fadd ]>=34:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _feccg ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 27:switch _fbggd [_fadd ]{case 46:goto _egca ;case 92:goto _egca ;case 95:goto _egca ;};switch {case _fbggd [_fadd ]< 65:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _egca ;};case _fbggd [_fadd ]> 90:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _egca ;};default:goto _egca ;};goto _ebaf ;case 28:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 120:goto _gdbce ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _ebaf ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _ebaf ;};default:goto _ebaf ;};goto _ccbf ;case 51:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 108:goto _cbfbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 52:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 102:goto _cbegc ;case 110:goto _bfda ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 53:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 110:goto _effef ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 54:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dcage ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 55:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _fbbb ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _fbbb ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 56:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 40:goto _efca ;case 46:goto _fbbb ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _fbbb ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _fbbb ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 57:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 109:goto _gddd ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 58:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _cfggd ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _aaebc ;case 125:goto _aaebc ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _aaebc ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _aaebc ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _aaebc ;};default:goto _aaebc ;};goto _ccbf ;case 59:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dgecf ;case 123:goto _gceag ;case 125:goto _gceag ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _gceag ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _gceag ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dgecf ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _gceag ;};default:goto _gceag ;};goto _ccbf ;case 29:switch _fbggd [_fadd ]{case 33:goto _cdaf ;case 46:goto _dfbbe ;case 92:goto _egca ;case 95:goto _dfbbe ;case 123:goto _ebaf ;case 125:goto _ebaf ;};switch {case _fbggd [_fadd ]< 58:switch {case _fbggd [_fadd ]< 37:if 34<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=35{goto _ebaf ;};case _fbggd [_fadd ]> 47:if 48<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=57{goto _dfbbe ;};default:goto _ebaf ;};case _fbggd [_fadd ]> 63:switch {case _fbggd [_fadd ]< 91:if 65<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=90{goto _dfbbe ;};case _fbggd [_fadd ]> 94:if 97<=_fbggd [_fadd ]&&_fbggd [_fadd ]<=122{goto _dfbbe ;};default:goto _ebaf ;};default:goto _ebaf ;};goto _ccbf ;};_ebaf :_gfdab =0;goto _bfacf ;_ccbf :_gfdab =1;goto _bfacf ;_gdeff :_gfdab =2;goto _bfacf ;_gebac :_gfdab =3;goto _bfacf ;_dbedf :_gfdab =4;goto _bfacf ;_cdcfg :_gfdab =5;goto _bfacf ;_fdae :_gfdab =6;goto _bfacf ;_dfccdd :_gfdab =7;goto _bfacf ;_bfag :_gfdab =8;goto _bfacf ;_dedcc :_gfdab =9;goto _bfacf ;_dbdac :_gfdab =10;goto _bfacf ;_fcad :_gfdab =11;goto _bfacf ;_abafa :_gfdab =12;goto _bfacf ;_dgbga :_gfdab =13;goto _bfacf ;_ffbaa :_gfdab =14;goto _bfacf ;_bcfe :_gfdab =15;goto _bfacf ;_bdcg :_gfdab =16;goto _bfacf ;_eaceb :_gfdab =17;goto _bfacf ;_ggfe :_gfdab =18;goto _bfacf ;_bcggc :_gfdab =19;goto _bfacf ;_eced :_gfdab =20;goto _bfacf ;_abad :_gfdab =21;goto _bfacf ;_geff :_gfdab =22;goto _bfacf ;_cgbb :_gfdab =23;goto _bfacf ;_bbfd :_gfdab =24;goto _bfacf ;_decb :_gfdab =25;goto _bfacf ;_edecg :_gfdab =26;goto _bfacf ;_fcfaa :_gfdab =27;goto _bfacf ;_ecbda :_gfdab =28;goto _bfacf ;_cegfa :_gfdab =29;goto _bfacf ;_gceag :_gfdab =30;goto _bgba ;_cdaf :_gfdab =30;goto _bacd ;_cefg :_gfdab =30;goto _faafe ;_dbbad :_gfdab =30;goto _fcfg ;_aecgf :_gfdab =30;goto _abee ;_bacce :_gfdab =30;goto _gdgee ;_adfac :_gfdab =30;goto _adggg ;_gbcab :_gfdab =30;goto _gbagf ;_ffdgb :_gfdab =30;goto _eeaf ;_egccg :_gfdab =30;goto _cgaa ;_bbcae :_gfdab =30;goto _effb ;_efgb :_gfdab =30;goto _daada ;_aebce :_gfdab =30;goto _caeb ;_bgcb :_gfdab =30;goto _dccbb ;_agdc :_gfdab =30;goto _gegec ;_aegba :_gfdab =30;goto _edgbd ;_dadd :_gfdab =30;goto _abac ;_baafa :_gfdab =30;goto _fecg ;_egeaf :_gfdab =30;goto _aegaced ;_fegae :_gfdab =30;goto _dfedd ;_gdccc :_gfdab =30;goto _dcab ;_acfc :_gfdab =30;goto _dccggf ;_cdfe :_gfdab =30;goto _fbafg ;_gaed :_gfdab =30;goto _eddd ;_ebfdge :_gfdab =30;goto _cbeaa ;_fdaa :_gfdab =30;goto _dfcda ;_aabdg :_gfdab =30;goto _bgdfd ;_ffdbf :_gfdab =30;goto _ggaa ;_ecag :_gfdab =30;goto _ggfgbe ;_dfdea :_gfdab =30;goto _cbfga ;_fgbe :_gfdab =30;goto _ffgce ;_aaebc :_gfdab =30;goto _fedd ;_efca :_gfdab =30;goto _caeed ;_edbde :_gfdab =31;goto _dead ;_dbdg :_gfdab =32;goto _bfacf ;_abgc :_gfdab =33;goto _adbc ;_cfca :_gfdab =34;goto _bfacf ;_gbdg :_gfdab =35;goto _bdbb ;_afebf :_gfdab =36;goto _bdbb ;_ccfdc :_gfdab =37;goto _bdbb ;_dbdcc :_gfdab =38;goto _bfacf ;_egfe :_gfdab =39;goto _bfacf ;_eaef :_gfdab =40;goto _aaabf ;_egca :_gfdab =41;goto _bfacf ;_dfbbe :_gfdab =42;goto _aaabf ;_gdcdg :_gfdab =43;goto _adbc ;_feccg :_gfdab =44;goto _aaabf ;_gccfc :_gfdab =44;goto _fbecg ;_daagd :_gfdab =44;goto _egbbg ;_cbfgb :_gfdab =45;goto _aaabf ;_bbdde :_gfdab =46;goto _aaabf ;_ddgec :_gfdab =47;goto _aaabf ;_adfg :_gfdab =48;goto _aaabf ;_dfdc :_gfdab =49;goto _aaabf ;_eggdg :_gfdab =50;goto _aaabf ;_gdbce :_gfdab =51;goto _aaabf ;_cbfbe :_gfdab =52;goto _aaabf ;_cbegc :_gfdab =53;goto _aaabf ;_effef :_gfdab =54;goto _aaabf ;_dcage :_gfdab =55;goto _aaabf ;_fbbb :_gfdab =56;goto _aaabf ;_bfda :_gfdab =57;goto _aaabf ;_gddd :_gfdab =58;goto _aaabf ;_cfggd :_gfdab =59;goto _aaabf ;_dgecf :_gfdab =59;goto _efcgb ;_faafe :_gcbe =3;goto _afae ;_fcfg :_gcbe =5;goto _afae ;_bacd :_gcbe =7;goto _afae ;_abee :_gcbe =9;goto _afae ;_adggg :_gcbe =11;goto _afae ;_caeed :_gcbe =13;goto _afae ;_gbagf :_gcbe =15;goto _afae ;_dfedd :_gcbe =17;goto _afae ;_dcab :_gcbe =19;goto _afae ;_eeaf :_gcbe =21;goto _afae ;_cgaa :_gcbe =23;goto _afae ;_daada :_gcbe =25;goto _afae ;_dccbb :_gcbe =27;goto _afae ;_effb :_gcbe =29;goto _afae ;_gegec :_gcbe =31;goto _afae ;_aegaced :_gcbe =33;goto _afae ;_fecg :_gcbe =35;goto _afae ;_ggaa :_gcbe =37;goto _afae ;_ffgce :_gcbe =39;goto _afae ;_ggfgbe :_gcbe =41;goto _afae ;_edgbd :_gcbe =43;goto _afae ;_abac :_gcbe =45;goto _afae ;_caeb :_gcbe =47;goto _afae ;_dfcda :_gcbe =49;goto _afae ;_eddd :_gcbe =51;goto _afae ;_fbafg :_gcbe =53;goto _afae ;_cbeaa :_gcbe =55;goto _afae ;_fedd :_gcbe =57;goto _afae ;_dccggf :_gcbe =59;goto _afae ;_bgdfd :_gcbe =61;goto _afae ;_cbfga :_gcbe =63;goto _afae ;_gdgee :_gcbe =65;goto _afae ;_bgba :_gcbe =67;goto _afae ;_fbecg :_gcbe =72;goto _afae ;_bdbb :_gcbe =75;goto _afae ;_adbc :_gcbe =78;goto _afae ;_egbbg :_gcbe =81;goto _afae ;_efcgb :_gcbe =84;goto _afae ;_aaabf :_gcbe =87;goto _afae ;_dead :_gcbe =90;goto _afae ;_afae :_abdce =uint (_gbbd [_gcbe ]);_gcbe ++;for ;_abdce > 0;_abdce --{_gcbe ++;switch _gbbd [_gcbe -1]{case 3:_gbacg =_fadd +1;case 4:_fcafc =1;case 5:_fcafc =2;case 6:_fcafc =3;case 7:_fcafc =4;case 8:_fcafc =11;case 9:_fcafc =14;case 10:_fcafc =15;case 11:_gbacg =_fadd +1;{_adbgb .emit (_dggg ,_fbggd [_gggca :_gbacg ]);};case 12:_gbacg =_fadd +1;{_adbgb .emit (_fdeb ,_fbggd [_gggca :_gbacg ]);};case 13:_gbacg =_fadd +1;{_adbgb .emit (_eddga ,_fbggd [_gggca :_gbacg -1]);};case 14:_gbacg =_fadd +1;{_adbgb .emit (_eddga ,_fbggd [_gggca +1:_gbacg -2]);};case 15:_gbacg =_fadd +1;{_adbgb .emit (_gebaf ,_fbggd [_gggca :_gbacg -1]);};case 16:_gbacg =_fadd +1;{_adbgb .emit (_gebaf ,_fbggd [_gggca :_gbacg -1]);};case 17:_gbacg =_fadd +1;{_adbgb .emit (_dbbc ,_fbggd [_gggca :_gbacg ]);};case 18:_gbacg =_fadd +1;{_adbgb .emit (_ebgf ,_fbggd [_gggca :_gbacg ]);};case 19:_gbacg =_fadd +1;{_adbgb .emit (_fcbgb ,_fbggd [_gggca :_gbacg ]);};case 20:_gbacg =_fadd +1;{_adbgb .emit (_befa ,_fbggd [_gggca :_gbacg ]);};case 21:_gbacg =_fadd +1;{_adbgb .emit (_fgdd ,_fbggd [_gggca :_gbacg ]);};case 22:_gbacg =_fadd +1;{_adbgb .emit (_fggda ,_fbggd [_gggca :_gbacg ]);};case 23:_gbacg =_fadd +1;{_adbgb .emit (_abfca ,_fbggd [_gggca :_gbacg ]);};case 24:_gbacg =_fadd +1;{_adbgb .emit (_gcbg ,_fbggd [_gggca :_gbacg ]);};case 25:_gbacg =_fadd +1;{_adbgb .emit (_eebd ,_fbggd [_gggca :_gbacg ]);};case 26:_gbacg =_fadd +1;{_adbgb .emit (_gegbb ,_fbggd [_gggca :_gbacg ]);};case 27:_gbacg =_fadd +1;{_adbgb .emit (_bccd ,_fbggd [_gggca :_gbacg ]);};case 28:_gbacg =_fadd +1;{_adbgb .emit (_begaf ,_fbggd [_gggca :_gbacg ]);};case 29:_gbacg =_fadd +1;{_adbgb .emit (_ccaa ,_fbggd [_gggca :_gbacg ]);};case 30:_gbacg =_fadd +1;{_adbgb .emit (_fcca ,_fbggd [_gggca :_gbacg ]);};case 31:_gbacg =_fadd +1;{_adbgb .emit (_dbda ,_fbggd [_gggca :_gbacg ]);};case 32:_gbacg =_fadd +1;{_adbgb .emit (_cgadg ,_fbggd [_gggca :_gbacg ]);};case 33:_gbacg =_fadd +1;{_adbgb .emit (_acaaf ,_fbggd [_gggca :_gbacg ]);};case 34:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_bbbd ,_fbggd [_gggca :_gbacg ]);};case 35:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_facf ,_fbggd [_gggca :_gbacg ]);};case 36:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_ebff ,_fbggd [_gggca :_gbacg ]);};case 37:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_bdge ,_fbggd [_gggca :_gbacg ]);};case 38:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_ebcaf ,_fbggd [_gggca :_gbacg ]);};case 39:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_ddgb ,_fbggd [_gggca +1:_gbacg -1]);};case 40:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_dgfec ,_fbggd [_gggca :_gbacg ]);};case 41:_gbacg =_fadd ;_fadd --;{_adbgb .emit (_fgabg ,_fbggd [_gggca :_gbacg ]);};case 42:_fadd =(_gbacg )-1;{_adbgb .emit (_bbbd ,_fbggd [_gggca :_gbacg ]);};case 43:switch _fcafc {case 0:{_gfdab =0;goto _bfacf ;};case 1:{_fadd =(_gbacg )-1;_adbgb .emit (_daedb ,_fbggd [_gggca :_gbacg ]);};case 2:{_fadd =(_gbacg )-1;_adbgb .emit (_bbbd ,_fbggd [_gggca :_gbacg ]);};case 3:{_fadd =(_gbacg )-1;_adbgb .emit (_facf ,_fbggd [_gggca :_gbacg ]);};case 4:{_fadd =(_gbacg )-1;_adbgb .emit (_gacc ,_fbggd [_gggca :_gbacg ]);};case 11:{_fadd =(_gbacg )-1;_adbgb .emit (_befce ,_fbggd [_gggca :_gbacg ]);};case 14:{_fadd =(_gbacg )-1;_adbgb .emit (_ebcaf ,_fbggd [_gggca :_gbacg ]);};case 15:{_fadd =(_gbacg )-1;_adbgb .emit (_ddgb ,_fbggd [_gggca +1:_gbacg -1]);};};};};goto _bfacf ;_bfacf :_gcbe =int (_gaefdg [_gfdab ]);_abdce =uint (_gbbd [_gcbe ]);_gcbe ++;for ;_abdce > 0;_abdce --{_gcbe ++;switch _gbbd [_gcbe -1]{case 0:_gggca =0;case 1:_fcafc =0;};};if _gfdab ==0{goto _cdged ;};if _fadd ++;_fadd !=_cfdf {goto _gdaa ;};_fagc :{};if _fadd ==_eeag {switch _gfdab {case 1:goto _gceag ;case 2:goto _gceag ;case 31:goto _acfc ;case 14:goto _gceag ;case 15:goto _gceag ;case 32:goto _cdfe ;case 17:goto _gceag ;case 33:goto _gaed ;case 18:goto _gceag ;case 19:goto _gceag ;case 34:goto _ebfdge ;case 35:goto _fdaa ;case 36:goto _fdaa ;case 23:goto _bacce ;case 37:goto _fdaa ;case 38:goto _aabdg ;case 39:goto _dfdea ;case 40:goto _aaebc ;case 41:goto _aaebc ;case 42:goto _aaebc ;case 43:goto _gaed ;case 44:goto _gceag ;case 45:goto _aaebc ;case 46:goto _aaebc ;case 47:goto _aaebc ;case 48:goto _aaebc ;case 49:goto _aaebc ;case 50:goto _aaebc ;case 51:goto _aaebc ;case 52:goto _aaebc ;case 53:goto _aaebc ;case 54:goto _aaebc ;case 55:goto _aaebc ;case 56:goto _aaebc ;case 57:goto _aaebc ;case 58:goto _aaebc ;case 59:goto _gceag ;};};_cdged :{};};if _gggca > 0{copy (_fbggd [0:],_fbggd [_gggca :]);};};_ =_eeag ;if _gfdab ==_gfddb {_adbgb .emit (_cabdcd ,nil );};close (_adbgb ._cccf );};func _agd (_edf ,_ddc ,_gdg int )float64 {return float64 (_edb (_edf ,_dd .Month (_ddc ),_gdg )/86400)+_fbb ;};
// Reference returns a string reference value to a named range.
func (_cdgca NamedRangeRef )Reference (ctx Context ,ev Evaluator )Reference {return Reference {Type :ReferenceTypeNamedRange ,Value :_cdgca ._gfedg };};
// Averagea implements the AVERAGEA function, AVERAGEA counts cells that contain
// text as a zero where AVERAGE ignores them entirely.
func Averagea (args []Result )Result {_daegc ,_geba :=_dfacb (args ,true );if _geba ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0041\u0056\u0045\u0052AG\u0045\u0020\u0064\u0069\u0076\u0069\u0064\u0065\u0020\u0062\u0079\u0020\u007a\u0065r\u006f");};return MakeNumberResult (_daegc /_geba );};
// Eval evaluates and returns the result of an error expression.
func (_aeed Error )Eval (ctx Context ,ev Evaluator )Result {return MakeErrorResult (_aeed ._afcd )};
// GetLabelPrefix returns an empty string for the invalid reference context.
func (_dgfbf *ivr )GetLabelPrefix (cellRef string )string {return ""};
// RoundDown is an implementation of the Excel ROUNDDOWN function that rounds a number
// down to a specified number of digits.
func RoundDown (args []Result )Result {return _dgbb (args ,_fgecc )};func _ee (_cc Result )bool {if _cc .Type ==ResultTypeString {return _cc .ValueString =="";};return _cc .ValueNumber ==0;};
// Duration implements the Excel DURATION function.
func Duration (args []Result )Result {_eggdd ,_ecbef :=_ggg (args ,"\u0044\u0055\u0052\u0041\u0054\u0049\u004f\u004e");if _ecbef .Type ==ResultTypeError {return _ecbef ;};_cfcf :=_eggdd ._bdfe ;_edde :=_eggdd ._gcfgf ;_ggca :=_eggdd ._debg ;_fegf :=_eggdd ._bgga ;_fgg :=_eggdd ._ddcb ;_bge :=_eggdd ._bfcb ;return _ecbc (_cfcf ,_edde ,_ggca ,_fegf ,_fgg ,_bge );};const _dffg =_dd .Millisecond *1000;func _eecf (_gba ,_efe float64 ,_gadcb ,_adcc int )float64 {_cfgb :=_gfae (_gba );_fcg :=_gfae (_efe );_cgag :=_fgf (_cfgb ,_fcg ,_gadcb ,_adcc );return _cgbc (_cgag ,_cfgb ,_adcc );};
// VLookup implements the VLOOKUP function that returns a matching value from a
// column in an array.
func VLookup (args []Result )Result {_bbef :=len (args );if _bbef < 3{return MakeErrorResult ("\u0056\u004c\u004f\u004f\u004bU\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074 \u006c\u0065\u0061\u0073\u0074\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _bbef > 4{return MakeErrorResult ("\u0056\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0061\u0074\u0020m\u006f\u0073\u0074\u0020\u0066\u006f\u0075\u0072\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_dfaf :=args [0];_eaaa :=args [1];if _eaaa .Type !=ResultTypeArray {return MakeErrorResult ("\u0056\u004cO\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_dbdc :=args [2].AsNumber ();if _dbdc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u004cO\u004f\u004b\u0055\u0050 \u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075m\u0065\u0072\u0069\u0063\u0020\u0063\u006f\u006c\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_ebcd :=false ;if _bbef ==4&&args [3].Type !=ResultTypeEmpty {_cccc :=args [3].AsNumber ();if _cccc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};if _cccc .ValueNumber ==0{_ebcd =true ;};};_cdac :=int (_dbdc .ValueNumber )-1;_gabf :=-1;_adgda :=false ;_fbcc :for _dggb ,_dbcd :=range _eaaa .ValueArray {if len (_dbcd )==0{continue ;};_bbefg :=_dbcd [0];switch _adeg (_bbefg ,_dfaf ,false ,_ebcd ){case _agaa :_gabf =_dggb ;case _dbdf :_gabf =_dggb ;_adgda =true ;break _fbcc ;};};if _gabf ==-1{return MakeErrorResultType (ErrorTypeNA ,"\u0056\u004c\u004fOK\u0055\u0050\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_egbb :=_eaaa .ValueArray [_gabf ];if _cdac < 0||_cdac >=len (_egbb ){return MakeErrorResult ("\u0056\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0068\u0061\u0073\u0020\u0069\u006e\u0076a\u006ci\u0064\u0020\u0063\u006f\u006c\u0075\u006d\u006e\u0020\u0069\u006e\u0064\u0065\u0078");};if _adgda ||!_ebcd {return _egbb [_cdac ];};return MakeErrorResultType (ErrorTypeNA ,"\u0056\u004c\u004fOK\u0055\u0050\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};const _ebcaf =57351;
// MDeterm is an implementation of the Excel MDETERM which finds the determinant
// of a matrix.
func MDeterm (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004d\u0044\u0045T\u0045\u0052\u004d\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0072\u0061\u0079 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cegd :=args [0];if _cegd .Type !=ResultTypeArray {return MakeErrorResult ("\u004d\u0044\u0045T\u0045\u0052\u004d\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0072\u0061\u0079 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_deee :=len (_cegd .ValueArray );for _ ,_dabbe :=range _cegd .ValueArray {if len (_dabbe )!=_deee {return MakeErrorResult ("\u004d\u0044\u0045TE\u0052\u004d\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072e\u0073 \u0061 \u0073\u0071\u0075\u0061\u0072\u0065\u0020\u006d\u0061\u0074\u0072\u0069\u0078");};};return MakeNumberResult (_cccg (_cegd .ValueArray ));};const _dggbg =16;
// Error is called in the case of parsing error and saves an error to a plex.
func (_eccdb *plex )Error (s string ){_ea .Log .Debug ("\u0070a\u0072s\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0073",s );_eccdb ._bfbcb =s ;};func _feecf (_ccbd int )bool {return _ccbd ==0||_ccbd ==4};
// Coupncd implements the Excel COUPNCD function.
func Coupncd (args []Result )Result {_fcf ,_ecgc :=_abfb (args ,"\u0043O\u0055\u0050\u004e\u0043\u0044");if _ecgc .Type ==ResultTypeError {return _ecgc ;};_befb :=_gfae (_fcf ._dddg );_ecfa :=_gfae (_fcf ._edg );_bdeeb :=_fcf ._edba ;_edbae :=_eed (_befb ,_ecfa ,_bdeeb );_afee ,_cda ,_aege :=_edbae .Date ();return MakeNumberResult (_agd (_afee ,int (_cda ),_aege ));};
// SeriesSum implements the Excel SERIESSUM function.
func SeriesSum (args []Result )Result {if len (args )!=4{return MakeErrorResult ("\u0053\u0045\u0052\u0049\u0045\u0053\u0053\u0055\u004d\u0028\u0029\u0020\u0072\u0065\u0071u\u0069r\u0065\u0073\u0020\u0034\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_daabc :=args [0].AsNumber ();_dagf :=args [1].AsNumber ();_gceb :=args [2].AsNumber ();_cggf :=args [3].ListValues ();if _daabc .Type !=ResultTypeNumber ||_dagf .Type !=ResultTypeNumber ||_gceb .Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0045\u0052\u0049\u0045\u0053S\u0055\u004d\u0028)\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072\u0073t\u0020\u0074\u0068\u0072\u0065e \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063");};_cefbg :=float64 (0);for _gdabf ,_abgd :=range _cggf {_cefbg +=_abgd .ValueNumber *_ggd .Pow (_daabc .ValueNumber ,_dagf .ValueNumber +float64 (_gdabf )*_gceb .ValueNumber );};return MakeNumberResult (_cefbg );};var _gecfd =map[string ]FunctionComplex {};var _dffdd =[...]int {0,-2,1,2,0,0,0,0,11,12,13,14,0,16,5,6,7,8,22,0,24,46,0,26,25,29,30,31,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,18,20,9,10,0,0,23,32,33,47,0,49,51,34,35,36,37,38,39,40,41,42,43,44,45,0,17,0,0,15,27,0,48,53,4,19,21,28,50,52};
// Reference returns a string reference value to a cell.
func (_cab CellRef )Reference (ctx Context ,ev Evaluator )Reference {return Reference {Type :ReferenceTypeCell ,Value :_cab ._abc };};func _addc (_daefc ,_eagdfc Expression )(Expression ,Expression ,error ){_dcaeg ,_edbg :=_daefc .(CellRef );if !_edbg {return nil ,nil ,_d .New (_b .Sprintf ("\u0049\u006e\u0063\u006frr\u0065\u0063\u0074\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020%\u0073",_daefc .String ()));};_bbcef ,_edbg :=_eagdfc .(CellRef );if !_edbg {return nil ,nil ,_d .New (_b .Sprintf ("\u0049\u006e\u0063\u006frr\u0065\u0063\u0074\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0020%\u0073",_eagdfc .String ()));};_afda ,_abdbf :=_ac .ParseCellReference (_dcaeg ._abc );if _abdbf !=nil {return nil ,nil ,_abdbf ;};_geebd ,_acff :=_ac .ParseCellReference (_bbcef ._abc );if _acff !=nil {return nil ,nil ,_acff ;};_dccdd :=false ;if _afda .RowIdx > _geebd .RowIdx {_dccdd =true ;_afda .RowIdx ,_geebd .RowIdx =_geebd .RowIdx ,_afda .RowIdx ;};if _afda .ColumnIdx > _geebd .ColumnIdx {_dccdd =true ;_afda .ColumnIdx ,_geebd .ColumnIdx =_geebd .ColumnIdx ,_afda .ColumnIdx ;_afda .Column ,_geebd .Column =_geebd .Column ,_afda .Column ;};if _dccdd {return NewCellRef (_afda .String ()),NewCellRef (_geebd .String ()),nil ;};return _daefc ,_eagdfc ,nil ;};const _gfa ="\u005e\u0028\u0028"+_gfc +"\u007c"+_cafc +"\u007c"+_dca +"\u007c"+_fac +"\u0029\u0020\u0029\u003f";
// Ppmt implements the Excel PPPMT function.
func Ppmt (args []Result )Result {_fbga :=len (args );if _fbga < 4||_fbga > 6{return MakeErrorResult ("\u0050\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006ff\u0020\u0066\u006f\u0075\u0072\u0020a\u006e\u0064\u0020s\u0069\u0078");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("P\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_acbae :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0050\u004dT\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cbcdb :=args [1].ValueNumber ;if _cbcdb <=0{return MakeErrorResultType (ErrorTypeNum ,"P\u0050\u004d\u0054\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020p\u0065\u0072\u0069\u006f\u0064\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069v\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006ff\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gbbeb :=args [2].ValueNumber ;if _gbbeb < _cbcdb {return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064s\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u0074\u0020\u006c\u0065s\u0073\u0020\u0074\u0068\u0061\u006e \u0070\u0065\u0072i\u006f\u0064");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0050\u004d\u0054\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0020\u0076\u0061\u006c\u0075\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_bgbe :=args [3].ValueNumber ;_gfbbc :=0.0;if _fbga >=5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0050\u004d\u0054\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s \u0066\u0075\u0074\u0075\u0072\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_gfbbc =args [4].ValueNumber ;};_cafbe :=0;if _fbga ==6&&args [5].Type !=ResultTypeEmpty {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("P\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_cafbe =int (args [5].ValueNumber );if _cafbe !=0{_cafbe =1;};};return MakeNumberResult (_gdge (_acbae ,_gbbeb ,_bgbe ,_gfbbc ,_cafbe )-_cfed (_acbae ,_cbcdb ,_gbbeb ,_bgbe ,_gfbbc ,_cafbe ));};
// Update returns the same object as updating sheet references does not affect SheetPrefixExpr.
func (_cbeadc SheetPrefixExpr )Update (q *_fc .UpdateQuery )Expression {return _cbeadc };func _geee (_adeeg []Result ,_afbff bool )Result {_dcegd :="\u004d\u0049\u004e";if _afbff {_dcegd ="\u004d\u0049\u004e\u0041";};if len (_adeeg )==0{return MakeErrorResult (_dcegd +"\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s\u0020\u0061\u0074\u0020\u006c\u0065\u0061s\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fadb :=_ggd .MaxFloat64 ;for _ ,_acgcd :=range _adeeg {switch _acgcd .Type {case ResultTypeNumber :if (_afbff ||!_acgcd .IsBoolean )&&_acgcd .ValueNumber < _fadb {_fadb =_acgcd .ValueNumber ;};case ResultTypeList ,ResultTypeArray :_dfeac :=_geee (_acgcd .ListValues (),_afbff );if _dfeac .ValueNumber < _fadb {_fadb =_dfeac .ValueNumber ;};case ResultTypeEmpty :case ResultTypeString :_eegde :=0.0;if _afbff {_eegde =_acgcd .AsNumber ().ValueNumber ;};if _eegde < _fadb {_fadb =_eegde ;};default:_ea .Log .Debug ("\u0075\u006e\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020"+_dcegd +"\u0028\u0029\u0020\u0061rg\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_acgcd .Type );};};if _fadb ==_ggd .MaxFloat64 {_fadb =0;};return MakeNumberResult (_fadb );};
// NewNumber constructs a new number expression.
func NewNumber (v string )Expression {_bfcbc ,_bbbbc :=_dc .ParseFloat (v ,64);if _bbbbc !=nil {_ea .Log .Debug ("e\u0072\u0072\u006f\u0072\u0020\u0070a\u0072\u0073\u0069\u006e\u0067\u0020f\u006f\u0072\u006d\u0075\u006c\u0061\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0025\u0073\u003a\u0020%\u0076",v ,_bbbbc );};return Number {_bdcc :_bfcbc };};
// Eomonth is an implementation of the Excel EOMONTH() function.
func Eomonth (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0045\u004f\u004d\u004f\u004e\u0054\u0048\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074w\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0045\u004f\u004d\u004f\u004e\u0054\u0048");};_ece :=args [1].ValueNumber ;_aeede :=args [0];var _egab float64 ;switch _aeede .Type {case ResultTypeEmpty :_egab =0;case ResultTypeNumber :_egab =_aeede .ValueNumber ;case ResultTypeString :_eac :=DateValue ([]Result {args [0]});if _eac .Type ==ResultTypeError {return MakeErrorResult ("\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0045\u004f\u004d\u004f\u004e\u0054\u0048");};_egab =_eac .ValueNumber ;default:return MakeErrorResult ("\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0045\u004f\u004d\u004f\u004e\u0054\u0048");};_ddf :=_gfae (_egab );_gdeg :=_ddf .AddDate (0,int (_ece +1),0);_fdg ,_bcf ,_ :=_gdeg .Date ();_badc :=_agd (_fdg ,int (_bcf ),0);if _badc < 1{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0045\u004f\u004d\u004f\u004e\u0054\u0048");};if _fdg ==1900&&_bcf ==3{_badc --;};return MakeNumberResult (_badc );};
// MakeArrayResult constructs an array result (matrix).
func MakeArrayResult (arr [][]Result )Result {return Result {Type :ResultTypeArray ,ValueArray :arr }};
// Row implements the Excel ROW function.
func Row (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u0052O\u0057\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065 \u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_dbab :=args [0].Ref ;if _dbab .Type !=ReferenceTypeCell {return MakeErrorResult ("\u0052\u004f\u0057\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073 a\u006e\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079p\u0065\u0020\u0072\u0065\u0066\u0065\u0072\u0065n\u0063\u0065");};_fdbb ,_gggd :=_ac .ParseCellReference (_dbab .Value );if _gggd !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_dbab .Value );};return MakeNumberResult (float64 (_fdbb .RowIdx ));};const _gfc ="\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u002f\u0028\u0028\u005b\u0030-\u0039]\u0029\u002b\u0029\u002f\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029";func (_agfda *yyParserImpl )Lookahead ()int {return _agfda ._dacac };
// BinOpType is the binary operation operator type
//go:generate stringer -type=BinOpType
type BinOpType byte ;func _bfdbe (_aegac ,_fccef float64 )float64 {_aegac =_ggd .Trunc (_aegac );_fccef =_ggd .Trunc (_fccef );if _aegac ==0{return _fccef ;};if _fccef ==0{return _aegac ;};for _aegac !=_fccef {if _aegac > _fccef {_aegac =_aegac -_fccef ;}else {_fccef =_fccef -_aegac ;};};return _aegac ;};func (_gada HorizontalRange )horizontalRangeReference ()string {return _b .Sprintf ("\u0025\u0064\u003a%\u0064",_gada ._cedf ,_gada ._gcddd );};
// Offset is an implementation of the Excel OFFSET function.
func Offset (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=3&&len (args )!=5{return MakeErrorResult ("\u004f\u0046\u0046\u0053\u0045\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0074\u0068\u0072\u0065e\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_cdgcd :=args [0].Ref ;for _cdgcd .Type ==ReferenceTypeNamedRange {_cdgcd =ctx .NamedRange (_cdgcd .Value );};_bdda :="";switch _cdgcd .Type {case ReferenceTypeCell :_bdda =_cdgcd .Value ;case ReferenceTypeRange :_dgcf :=_g .Split (_cdgcd .Value ,"\u003a");if len (_dgcf )==2{_bdda =_dgcf [0];};default:return MakeErrorResult (_b .Sprintf ("\u0049\u006ev\u0061\u006c\u0069\u0064\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0069\u006e\u0020\u004f\u0046\u0046\u0053\u0045\u0054\u0028\u0029: \u0025\u0073",_cdgcd .Type ));};_gagf ,_caee :=_ac .ParseCellReference (_bdda );if _caee !=nil {return MakeErrorResult (_b .Sprintf ("\u0070\u0061\u0072s\u0065\u0020\u006f\u0072i\u0067\u0069\u006e\u0020\u0065\u0072\u0072o\u0072\u0020\u004f\u0046\u0046\u0053\u0045\u0054\u0028\u0029\u003a\u0020\u0025\u0073",_caee .Error ()));};_dfde ,_eecc ,_fcfb :=_gagf .Column ,_gagf .RowIdx ,_gagf .SheetName ;_aagag :=args [1].AsNumber ();if _aagag .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0046\u0046SE\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020n\u0075m\u0065r\u0069\u0063\u0020\u0072\u006f\u0077\u0020\u006f\u0066\u0066\u0073\u0065\u0074");};_bfbda :=args [2].AsNumber ();if _bfbda .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0046\u0046SE\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020n\u0075m\u0065r\u0069\u0063\u0020\u0063\u006f\u006c\u0020\u006f\u0066\u0066\u0073\u0065\u0074");};var _cbcg ,_cecag Result ;if len (args )==3{_cbcg =MakeNumberResult (1);_cecag =MakeNumberResult (1);}else {_cbcg =args [3].AsNumber ();if _cbcg .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0046\u0046\u0053\u0045\u0054\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u006e\u0075m\u0065\u0072\u0069\u0063\u0020\u0068\u0065\u0069\u0067\u0068\u0074");};if _cbcg .ValueNumber ==0{return MakeErrorResultType (ErrorTypeRef ,"");};_cecag =args [4].AsNumber ();if _cecag .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0046F\u0053\u0045\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0077id\u0074\u0068");};if _cecag .ValueNumber ==0{return MakeErrorResultType (ErrorTypeRef ,"");};};_befbf :=_ac .ColumnToIndex (_dfde );_cbea :=_eecc +uint32 (_aagag .ValueNumber );_gfag :=_befbf +uint32 (_bfbda .ValueNumber );_edeg :=_cbea +uint32 (_cbcg .ValueNumber );_dfgff :=_gfag +uint32 (_cecag .ValueNumber );if _cbcg .ValueNumber > 0{_edeg --;}else {_edeg ++;_cbea ,_edeg =_edeg ,_cbea ;};if _cecag .ValueNumber > 0{_dfgff --;}else {_dfgff ++;_gfag ,_dfgff =_dfgff ,_gfag ;};_cgge :=_b .Sprintf ("\u0025\u0073\u0025\u0064",_ac .IndexToColumn (_gfag ),_cbea );_dabf :=_b .Sprintf ("\u0025\u0073\u0025\u0064",_ac .IndexToColumn (_dfgff ),_edeg );if _fcfb ==""{return _dfad (ctx ,ev ,_cgge ,_dabf );}else {return _dfad (ctx .Sheet (_fcfb ),ev ,_cgge ,_dabf );};};
// Tbillprice implements the Excel TBILLPRICE function.
func Tbillprice (args []Result )Result {if len (args )!=3{return MakeErrorResult ("T\u0042\u0049\u004c\u004c\u0050\u0052I\u0043\u0045\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0074\u0068r\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_cbdad ,_cafd ,_ffdc :=_gbce (args [0],args [1],"\u0054\u0042\u0049\u004c\u004c\u0050\u0052\u0049\u0043\u0045");if _ffdc .Type ==ResultTypeError {return _ffdc ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0054\u0042\u0049\u004c\u004c\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0064\u0069\u0073\u0063\u006f\u0075n\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dfbeg :=_cafd -_cbdad ;if _dfbeg > 365{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004cP\u0052\u0049\u0043\u0045\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020m\u0061\u0074\u0075r\u0069\u0074\u0079\u0020t\u006f\u0020\u0062\u0065\u0020\u006eo\u0074\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e\u0020\u006f\u006e\u0065\u0020\u0079e\u0061\u0072\u0020\u0061\u0066\u0074\u0065\u0072\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074");};_dceec :=args [2].ValueNumber ;if _dceec <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004c\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020d\u0069\u0073\u0063\u006f\u0075\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065n\u0074");};return MakeNumberResult (100*(1-_dceec *_dfbeg /360));};func _dgbb (_addbf []Result ,_dcdcc rmode )Result {if len (_addbf )!=2{return MakeErrorResult ("\u0052\u004f\u0055\u004e\u0044\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};_fdfa :=_addbf [0].AsNumber ();if _fdfa .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072s\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0052\u004f\u0055\u004e\u0044\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cebee :=_addbf [1].AsNumber ();if _cebee .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020a\u0072\u0067\u0075m\u0065\u006e\u0074\u0020t\u006f\u0020\u0052\u004f\u0055\u004e\u0044\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dggd :=_cebee .ValueNumber ;_afcee :=_fdfa .ValueNumber ;_bcgge :=1.0;if _dggd > 0{_bcgge =_ggd .Pow (1/10.0,_dggd );}else {_bcgge =_ggd .Pow (10.0,-_dggd );};_afcee ,_deec :=_ggd .Modf (_afcee /_bcgge );switch _dcdcc {case _cace :const _dceaf =0.499999999;if _deec >=_dceaf {_afcee ++;}else if _deec <=-_dceaf {_afcee --;};case _fgecc :case _ffcf :if _deec > 0{_afcee ++;}else if _deec < 0{_afcee --;};};return MakeNumberResult (_afcee *_bcgge );};
// Eval evaluates the binary expression using the context given.
func (_fgd BinaryExpr )Eval (ctx Context ,ev Evaluator )Result {_aa :=_fgd ._bb .Eval (ctx ,ev );if _aa .Type ==ResultTypeError {return _aa ;};_ad :=_fgd ._ce .Eval (ctx ,ev );if _ad .Type ==ResultTypeError {return _ad ;};if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeArray {if !_gf (_aa .ValueArray ,_ad .ValueArray ){return MakeErrorResult ("l\u0068\u0073\u002f\u0072\u0068\u0073 \u0073\u0068\u006f\u0075\u006c\u0064 \u0068\u0061\u0076\u0065\u0020\u0073\u0061m\u0065\u0020\u0064\u0069\u006d\u0065\u006e\u0073\u0069\u006fn\u0073");};return _afc (_fgd ._ceb ,_aa .ValueArray ,_ad .ValueArray );}else if _aa .Type ==ResultTypeList {if len (_aa .ValueList )!=len (_ad .ValueList ){return MakeErrorResult ("l\u0068\u0073\u002f\u0072\u0068\u0073 \u0073\u0068\u006f\u0075\u006c\u0064 \u0068\u0061\u0076\u0065\u0020\u0073\u0061m\u0065\u0020\u0064\u0069\u006d\u0065\u006e\u0073\u0069\u006fn\u0073");};return _ga (_fgd ._ceb ,_aa .ValueList ,_ad .ValueList );};}else if _aa .Type ==ResultTypeArray &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return _ead (_fgd ._ceb ,_aa .ValueArray ,_ad );}else if _aa .Type ==ResultTypeList &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return _beg (_fgd ._ceb ,_aa .ValueList ,_ad );};switch _fgd ._ceb {case BinOpTypePlus :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeNumberResult (_aa .ValueNumber +_ad .ValueNumber );};};case BinOpTypeMinus :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeNumberResult (_aa .ValueNumber -_ad .ValueNumber );};};case BinOpTypeMult :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeNumberResult (_aa .ValueNumber *_ad .ValueNumber );};};case BinOpTypeDiv :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {if _ad .ValueNumber ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0064\u0069\u0076\u0069\u0064\u0065\u0020\u0062\u0079 \u007a\u0065\u0072\u006f");};return MakeNumberResult (_aa .ValueNumber /_ad .ValueNumber );};};case BinOpTypeExp :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeNumberResult (_ggd .Pow (_aa .ValueNumber ,_ad .ValueNumber ));};};case BinOpTypeLT :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber < _ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString < _ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (false );};}else if _aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber {return MakeBoolResult (false );}else if _aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString {return MakeBoolResult (true );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (true );}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (false );};case BinOpTypeGT :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber > _ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString > _ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (false );};}else if _aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber {return MakeBoolResult (true );}else if _aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString {return MakeBoolResult (false );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (false );}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (true );};case BinOpTypeEQ :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber ==_ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString ==_ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (true );};}else if (_aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber )||(_aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString ){return MakeBoolResult (false );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (_ee (_ad ));}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (_ee (_aa ));};case BinOpTypeNE :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber !=_ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString !=_ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (false );};}else if (_aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber )||(_aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString ){return MakeBoolResult (true );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (!_ee (_ad ));}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (!_ee (_aa ));};case BinOpTypeLEQ :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber <=_ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString <=_ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (true );};}else if _aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber {return MakeBoolResult (false );}else if _aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString {return MakeBoolResult (true );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (_ee (_ad ));}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (_ee (_aa ));};case BinOpTypeGEQ :if _aa .Type ==_ad .Type {if _aa .Type ==ResultTypeNumber {return MakeBoolResult (_aa .ValueNumber >=_ad .ValueNumber );};if _aa .Type ==ResultTypeString {return MakeBoolResult (_aa .ValueString >=_ad .ValueString );};if _aa .Type ==ResultTypeEmpty {return MakeBoolResult (true );};}else if _aa .Type ==ResultTypeString &&_ad .Type ==ResultTypeNumber {return MakeBoolResult (true );}else if _aa .Type ==ResultTypeNumber &&_ad .Type ==ResultTypeString {return MakeBoolResult (false );}else if _aa .Type ==ResultTypeEmpty &&(_ad .Type ==ResultTypeNumber ||_ad .Type ==ResultTypeString ){return MakeBoolResult (_ee (_ad ));}else if (_aa .Type ==ResultTypeNumber ||_aa .Type ==ResultTypeString )&&_ad .Type ==ResultTypeEmpty {return MakeBoolResult (_ee (_aa ));};case BinOpTypeConcat :return MakeStringResult (_aa .Value ()+_ad .Value ());};return MakeErrorResult ("u\u006e\u0073\u0075\u0070po\u0072t\u0065\u0064\u0020\u0062\u0069n\u0061\u0072\u0079\u0020\u006f\u0070");};
// Irr implements the Excel IRR function.
func Irr (args []Result )Result {_gfef :=len (args );if _gfef ==0||_gfef > 2{return MakeErrorResult ("\u0049\u0052\u0052\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006f\u006e\u0065\u0020\u006f\u0072\u0020t\u0077\u006f\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeList &&args [0].Type !=ResultTypeArray {return MakeErrorResult ("\u0049\u0052\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020v\u0061\u006c\u0075\u0065\u0073\u0020t\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0061\u0072\u0072\u0061\u0079 \u0074\u0079\u0070\u0065");};_cfab :=_ggecf (args [0]);_cebec :=[]float64 {};for _ ,_eabg :=range _cfab {for _ ,_edbd :=range _eabg {if _edbd .Type ==ResultTypeNumber &&!_edbd .IsBoolean {_cebec =append (_cebec ,_edbd .ValueNumber );};};};_abeb :=len (_cebec );if len (_cebec )< 2{return MakeErrorResultType (ErrorTypeNum ,"");};_abebb :=0.1;if _gfef ==2&&args [1].Type !=ResultTypeEmpty {if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("I\u0052\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0067\u0075\u0065\u0073\u0073\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_abebb =args [1].ValueNumber ;if _abebb <=-1{return MakeErrorResult ("\u0049\u0052R\u0020\u0072\u0065\u0071u\u0069\u0072e\u0073\u0020\u0067\u0075\u0065\u0073\u0073\u0020t\u006f\u0020\u0062\u0065\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068a\u006e\u0020\u002d\u0031");};};_cdae :=[]float64 {};for _fbde :=0;_fbde < _abeb ;_fbde ++{if _fbde ==0{_cdae =append (_cdae ,0);}else {_cdae =append (_cdae ,_cdae [_fbde -1]+365);};};return _aefb (_cebec ,_cdae ,_abebb );};
// Transpose implements the TRANSPOSE function that transposes a cell range.
func Transpose (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0054\u0052AN\u0053\u0050\u004fS\u0045\u0020\u0072\u0065qui\u0072es\u0020\u0061\u0020\u0073\u0069\u006e\u0067le\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};if args [0].Type !=ResultTypeArray &&args [0].Type !=ResultTypeList {return MakeErrorResult ("T\u0052\u0041\u004e\u0053\u0050\u004fS\u0045\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0061\u0020\u0072a\u006e\u0067\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_dgca :=args [0];if _dgca .Type ==ResultTypeList {_ebdc :=[][]Result {};for _ ,_dbba :=range _dgca .ValueList {_ebdc =append (_ebdc ,[]Result {_dbba });};return MakeArrayResult (_ebdc );};_ffdcb :=make ([][]Result ,len (_dgca .ValueArray [0]));for _ ,_dgfeb :=range _dgca .ValueArray {for _addb ,_caca :=range _dgfeb {_ffdcb [_addb ]=append (_ffdcb [_addb ],_caca );};};return MakeArrayResult (_ffdcb );};
// LookupFunction looks up and returns a standard function or nil.
func LookupFunction (name string )Function {_eccac .Lock ();defer _eccac .Unlock ();if _bbfb ,_cebdaf :=_gafdf [name ];_cebdaf {return _bbfb ;};return nil ;};const _gacc =57349;
// ISREF is an implementation of the Excel ISREF() function.
func IsRef (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u0052\u0045\u0046\u0028)\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};return MakeBoolResult (ev .LastEvalIsRef ());};
// Substitute is an implementation of the Excel SUBSTITUTE function.
func Substitute (args []Result )Result {_cbee :=len (args );if _cbee !=3&&_cbee !=4{return MakeErrorResult ("\u0053\u0055\u0042\u0053\u0054\u0049\u0054U\u0054\u0045\u0020r\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u006f\u0072\u0020\u0066\u006f\u0075\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_fecb ,_bbgd :=_eaaag (args [0],"\u0053\u0055\u0042\u0053\u0054\u0049\u0054\u0055\u0054\u0045","\u0074\u0065\u0078\u0074");if _bbgd .Type ==ResultTypeError {return _bbgd ;};_ffcb ,_bbgd :=_eaaag (args [1],"\u0053\u0055\u0042\u0053\u0054\u0049\u0054\u0055\u0054\u0045","\u006f\u006c\u0064\u0020\u0074\u0065\u0078\u0074");if _bbgd .Type ==ResultTypeError {return _bbgd ;};_cbefc ,_bbgd :=_eaaag (args [2],"\u0053\u0055\u0042\u0053\u0054\u0049\u0054\u0055\u0054\u0045","\u006e\u0065\u0077\u0020\u0074\u0065\u0078\u0074");if _bbgd .Type ==ResultTypeError {return _bbgd ;};_fffe :=0;if _cbee ==3{return MakeStringResult (_g .Replace (_fecb ,_ffcb ,_cbefc ,-1));}else {_feeb ,_dbbgf :=_cgaf (args [3],"\u0053\u0055\u0042\u0053\u0054\u0049\u0054\u0055\u0054\u0045","\u0069\u006e\u0073t\u0061\u006e\u0063\u0065\u005f\u006e\u0075\u006d");if _dbbgf .Type ==ResultTypeError {return _dbbgf ;};_fffe =int (_feeb );if _fffe < 1{return MakeErrorResult ("\u0069\u006es\u0074\u0061\u006e\u0063e\u005f\u006eu\u006d\u0020\u0073\u0068\u006f\u0075\u006c\u0064 \u0062\u0065\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u007a\u0065\u0072\u006f");};_efbb :=_fecb ;_dbgcg :=_fffe ;_fbcb :=-1;_abbe :=len (_ffcb );_aafdc :=0;for {_dbgcg --;_gffbd :=_g .Index (_efbb ,_ffcb );if _gffbd ==-1{_fbcb =-1;break ;}else {_fbcb =_gffbd +_aafdc ;if _dbgcg ==0{break ;};_cfcbcc :=_abbe +_gffbd ;_aafdc +=_cfcbcc ;_efbb =_efbb [_cfcbcc :];};};if _fbcb ==-1{return MakeStringResult (_fecb );}else {_aafbc :=_fecb [:_fbcb ];_fbad :=_fecb [_fbcb +_abbe :];return MakeStringResult (_aafbc +_cbefc +_fbad );};};};func _gcce (){_cafgf =_gg .MustCompile ("\u005e\u0028\u005b\u0030\u002d\u0039\u005d\u002b\u0029\u0024");_fdga =_gg .MustCompile ("\u005e=\u0028\u002e\u002a\u0029\u0024");_eagd =_gg .MustCompile ("\u005e<\u0028\u002e\u002a\u0029\u0024");_dcaga =_gg .MustCompile ("\u005e>\u0028\u002e\u002a\u0029\u0024");_faff =_gg .MustCompile ("\u005e\u003c\u003d\u0028\u002e\u002a\u0029\u0024");_cdgcda =_gg .MustCompile ("\u005e\u003e\u003d\u0028\u002e\u002a\u0029\u0024");};
// Nper implements the Excel NPER function.
func Nper (args []Result )Result {_ccge :=len (args );if _ccge < 3||_ccge > 5{return MakeErrorResult ("\u004e\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006ff\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067e\u0020\u006f\u0066\u0020\u0033\u0020\u0061\u006e\u0064\u0020\u0035");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("N\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_gdgeg :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u004e\u0050\u0045\u0052\u0020\u0072\u0065q\u0075\u0069\u0072e\u0073\u0020\u0070\u0061y\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_febcb :=args [1].ValueNumber ;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u004e\u0050\u0045\u0052\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0020\u0076\u0061\u006c\u0075\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_fbdc :=args [2].ValueNumber ;_bgefc :=0.0;if _ccge >=4&&args [3].Type !=ResultTypeEmpty {if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u004e\u0050\u0045\u0052\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s \u0066\u0075\u0074\u0075\u0072\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_bgefc =args [3].ValueNumber ;};_fdd :=0.0;if _ccge ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("N\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_fdd =args [4].ValueNumber ;if _fdd !=0{_fdd =1;};};_beged :=_febcb *(1+_gdgeg *_fdd )-_bgefc *_gdgeg ;_afa :=(_fbdc *_gdgeg +_febcb *(1+_gdgeg *_fdd ));return MakeNumberResult (_ggd .Log (_beged /_afa )/_ggd .Log (1+_gdgeg ));};func init (){_gcce ();RegisterFunction ("\u0041V\u0045\u0052\u0041\u0047\u0045",Average );RegisterFunction ("\u0041\u0056\u0045\u0052\u0041\u0047\u0045\u0041",Averagea );RegisterFunction ("\u0043\u004f\u0055N\u0054",Count );RegisterFunction ("\u0043\u004f\u0055\u004e\u0054\u0041",Counta );RegisterFunction ("\u0043O\u0055\u004e\u0054\u0049\u0046",CountIf );RegisterFunction ("\u0043\u004f\u0055\u004e\u0054\u0049\u0046\u0053",CountIfs );RegisterFunction ("\u0043\u004f\u0055\u004e\u0054\u0042\u004c\u0041\u004e\u004b",CountBlank );RegisterFunction ("\u004d\u0041\u0058",Max );RegisterFunction ("\u004d\u0041\u0058\u0041",MaxA );RegisterFunction ("\u004d\u0041\u0058\u0049\u0046\u0053",MaxIfs );RegisterFunction ("\u005f\u0078\u006cf\u006e\u002e\u004d\u0041\u0058\u0049\u0046\u0053",MaxIfs );RegisterFunction ("\u004d\u0045\u0044\u0049\u0041\u004e",Median );RegisterFunction ("\u004d\u0049\u004e",Min );RegisterFunction ("\u004d\u0049\u004e\u0041",MinA );RegisterFunction ("\u004d\u0049\u004e\u0049\u0046\u0053",MinIfs );RegisterFunction ("\u005f\u0078\u006cf\u006e\u002e\u004d\u0049\u004e\u0049\u0046\u0053",MinIfs );};
// Coupdaysnc implements the Excel COUPDAYSNC function.
func Coupdaysnc (args []Result )Result {_cdf ,_cfeg :=_abfb (args ,"\u0043\u004f\u0055\u0050\u0044\u0041\u0059\u0053\u004e\u0043");if _cfeg .Type ==ResultTypeError {return _cfeg ;};return MakeNumberResult (_gdb (_cdf ._dddg ,_cdf ._edg ,_cdf ._edba ,_cdf ._bbed ));};
// Reference returns a string reference value to an expression with prefix.
func (_aceag PrefixExpr )Reference (ctx Context ,ev Evaluator )Reference {_eeabd :=_aceag ._ecfdc .Reference (ctx ,ev );_bdbcd :=_aceag ._bgbg .Reference (ctx ,ev );if _eeabd .Type ==ReferenceTypeSheet &&_bdbcd .Type ==ReferenceTypeCell {return Reference {Type :ReferenceTypeCell ,Value :_eeabd .Value +"\u0021"+_bdbcd .Value };};return ReferenceInvalid ;};
// Disc implements the Excel DISC function.
func Disc (args []Result )Result {_fca :=len (args );if _fca !=4&&_fca !=5{return MakeErrorResult ("\u0044\u0049SC\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s f\u006fur\u0020\u006f\u0072\u0020\u0066\u0069\u0076e \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_aefe ,_dceb ,_eace :=_gbce (args [0],args [1],"\u0044\u0049\u0053\u0043");if _eace .Type ==ResultTypeError {return _eace ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_beac :=args [2].ValueNumber ;if _beac <=0{return MakeErrorResultType (ErrorTypeNum ,"D\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0070\u0072\u0020\u0074o \u0062\u0065\u0020\u0070o\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0049S\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065\u006d\u0070\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ggfb :=args [3].ValueNumber ;if _ggfb <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0049\u0053\u0043\u0020\u0072\u0065q\u0075\u0069\u0072e\u0073\u0020\u0072e\u0064\u0065m\u0070\u0074\u0069\u006f\u006e\u0020t\u006f b\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_eaeg :=0;if _fca ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0049\u0053\u0043\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0062\u0061\u0073\u0069\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_eaeg =int (args [4].ValueNumber );if !_bbf (_eaeg ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0066\u006f\u0072 \u0044\u0049\u0053\u0043");};};_gcea ,_eace :=_cebg (_aefe ,_dceb ,_eaeg );if _eace .Type ==ResultTypeError {return _eace ;};return MakeNumberResult ((_ggfb -_beac )/_ggfb /_gcea );};func _eabad (_ceed Reference ,_ddecb Context )bool {return _ddecb .Sheet (_ceed .Value )==InvalidReferenceContext ;};const _gcbg =57366;func _dfcd (_gaee Result ,_cbgg int )[]Result {_dggbc :=[]Result {};switch _gaee .Type {case ResultTypeList :_ebfd :=_gaee .ValueList ;_bfca :=len (_ebfd );for _gbga :=0;_gbga < _cbgg ;_gbga ++{if _gbga < _bfca {_dggbc =append (_dggbc ,_ebfd [_gbga ]);}else {_dggbc =append (_dggbc ,MakeErrorResultType (ErrorTypeNA ,""));};};case ResultTypeNumber ,ResultTypeString ,ResultTypeError ,ResultTypeEmpty :for _caaf :=0;_caaf < _cbgg ;_caaf ++{_dggbc =append (_dggbc ,_gaee );};};return _dggbc ;};
// String returns a string representation of a range with prefix.
func (_agcbf PrefixRangeExpr )String ()string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0073\u003a\u0025\u0073",_agcbf ._acbed .String (),_agcbf ._eeafd .String (),_agcbf ._cedga .String ());};
// Find is an implementation of the Excel FIND().
func Find (args []Result )Result {_dcgb ,_gef :=_bdbgb ("\u0046\u0049\u004e\u0044",args );if _gef .Type !=ResultTypeEmpty {return _gef ;};_effa :=_dcgb ._fccb ;if _effa ==""{return MakeNumberResult (1.0);};_bfgb :=_dcgb ._ddadg ;_aeeg :=_dcgb ._ggbf ;_gfbg :=1;for _dfdf :=range _bfgb {if _gfbg < _aeeg {_gfbg ++;continue ;};_ebfa :=_g .Index (_bfgb [_dfdf :],_effa );if _ebfa ==0{return MakeNumberResult (float64 (_gfbg ));};_gfbg ++;};return MakeErrorResultType (ErrorTypeValue ,"\u004eo\u0074\u0020\u0066\u006f\u0075\u006ed");};func _adag (_bcdbb ,_fcee ,_eebc ,_bceeb ,_fdgb float64 )float64 {var _bbdd float64 ;_ggfc :=_fdgb /_eebc ;if _ggfc >=1{_ggfc =1;if _bceeb ==1{_bbdd =_bcdbb ;}else {_bbdd =0;};}else {_bbdd =_bcdbb *_ggd .Pow (1-_ggfc ,_bceeb -1);};_gdeca :=_bcdbb *_ggd .Pow (1-_ggfc ,_bceeb );var _bbbfa float64 ;if _gdeca < _fcee {_bbbfa =_bbdd -_fcee ;}else {_bbbfa =_bbdd -_gdeca ;};if _bbbfa < 0{_bbbfa =0;};return _bbbfa ;};
// Columns implements the Excel COLUMNS function.
func Columns (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u0043\u004fL\u0055\u004d\u004e\u0053\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075me\u006e\u0074");};_eccb :=args [0];if _eccb .Type !=ResultTypeArray &&_eccb .Type !=ResultTypeList {return MakeErrorResult ("\u0043O\u004c\u0055M\u004e\u0053\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0066\u0069\u0072\u0073\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020t\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_fggbb :=_eccb .ValueArray ;if len (_fggbb )==0{return MakeErrorResult ("\u0043\u004f\u004c\u0055\u004d\u004e\u0053\u0020r\u0065\u0071\u0075ir\u0065\u0073\u0020\u0061\u0072\u0072a\u0079\u0020\u0074\u006f\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0061\u0074 \u006c\u0065\u0061\u0073\u0074\u0020\u0031\u0020r\u006f\u0077");};return MakeNumberResult (float64 (len (_fggbb [0])));};type cumulArgs struct{_bbd float64 ;_bbbf float64 ;_dfbe float64 ;_dfeb float64 ;_fbca float64 ;_fbgf int ;};
// NewPrefixHorizontalRange constructs a new full rows range with prefix.
func NewPrefixHorizontalRange (pfx Expression ,v string )Expression {_cgee :=_g .Split (v ,"\u003a");if len (_cgee )!=2{return nil ;};_ggcfd ,_ :=_dc .Atoi (_cgee [0]);_cedg ,_ :=_dc .Atoi (_cgee [1]);if _ggcfd > _cedg {_ggcfd ,_cedg =_cedg ,_ggcfd ;};return PrefixHorizontalRange {_fceb :pfx ,_baabe :_ggcfd ,_ebade :_cedg };};func _bdgb (){_ggac =_gg .MustCompile ("\u005e\u0030\u002b\u0024");_ebg =_gg .MustCompile ("\u005e\u0028\u0028\u0023|0\u0029\u002b\u002c\u0029\u002b\u0028\u0023\u007c\u0030\u0029\u002b\u0028\u003b\u007c$\u0029");_ggag =_gg .MustCompile ("\u005e\u0028\u0023\u007c\u0030\u007c\u002c\u0029\u002a\u005f\u005c\u0029\u003b");_ggdc =_gg .MustCompile ("\u005e\u0030\u002b\u005c\u002e\u0028\u0030\u002b\u0029\u0024");_ffeb =_gg .MustCompile ("\u005e\u0028\u0028\u0023\u007c\u0030\u0029\u002b\u002c\u0029+\u0028\u0023\u007c\u0030\u0029\u002b\u005c.\u0028\u0030\u002b\u0029\u002e\u002a\u0028\u003b\u007c\u0024\u0029");_cadf =_gg .MustCompile ("^\u0028\u005f\u007c\u002d\u007c\u0020)\u002b\u005c\u002a\u0020\u0023\u002b\u002c\u0023\u002b0\u005c\u002e\u00280\u002b)\u002e\u002a\u003b");_fgcg =_gg .MustCompile ("\u005e\u0028\u0028\u0023\u007c\u0030)\u002b\u002c\u0029\u002b\u0028\u0023\u007c\u0030\u0029\u002b\u005c\u002e\u0028(\u0023\u007c\u0030\u0029\u002b\u0029\u005f\\\u0029\u002e\u002a\u003b");_dfbca =_gg .MustCompile ("\u005e\u0028\u0023\u007c0)\u002b\u005c\u002e\u0028\u0028\u0023\u007c\u0030\u0029\u002b\u0029\u0025\u0024");_defb =_gg .MustCompile ("\u005c\u005b\u005c$\u005c\u0024\u002d\u002e+\u005c\u005d\u0028\u005c\u002a\u0020\u0029?\u0028\u0023\u007c\u0030\u0029\u002b\u002c\u0028\u0023\u007c\u0030\u0029\u002b\u003b");_ebgc =_gg .MustCompile ("\u005c[\u005c\u0024\\\u0024\u002d\u002e+\u005c\u005d\u0028\u005c\u002a\u0020\u0029?\u0028\u0023\u007c\u0030\u0029\u002b,\u0028\u0023\u007c\u0030\u0029\u002b\u005c\u002e\u0028\u0028\u0023|\u0030\u007c\u002d\u0029\u002b\u0029\u002e\u002a\u003b");_egeg =_gg .MustCompile ("\u005e(\u0028\u0023|\u0030\u0029\u002b,\u0029\u002b\u0028\u0023\u007c\u0030\u0029+\u0028\u005c\u002e\u0028\u0028\u0023|\u0030\u007c\u002d\u0029\u002b\u0029\u0029\u003f\u002e\u002b\u005c[\u005c\u0024\u002e\u002b\u005c\u005d\u002e\u002a\u003b");_cadbb =_gg .MustCompile ("\u005e\u004d\u002b(\u002f\u007c\u0020\u007c\u002c\u007c\u0022\u007c"+_cbeb +_cbeb +"\u0029\u002b\u0044\u002b\u0028\u002f\u007c\u0020\u007c\u002c\u007c\u0022\u007c"+_cbeb +_cbeb +"\u0029\u002b\u0059+\u0024");_eaac =_gg .MustCompile ("\u005e\u0044\u002b\u0028\u002f\u007c\u0020\u007c\u005c\u002e\u007c\u0022\u007c"+_cbeb +_cbeb +"\u0029\u002b\u004d\u002b\u0028\u002f\u007c\u0020\u007c\\\u002e\u007c\u0022\u007c"+_cbeb +_cbeb +"\u0029\u002b\u0059+\u0024");_cbca =_gg .MustCompile ("\u005e\u0028\u0023|\u0030\u0029\u002b\u005c.\u0028\u0028\u0023\u007c\u0030\u0029\u002a)\u0045\u005c\u002b\u0028\u0023\u007c\u0030\u0029\u002b\u0028\u003b\u007c\u0024\u0029");_edfd =_gg .MustCompile ("\u005e.\u002a\u005f\u005c\u0029\u002e\u002a;");};
// TimeValue is an implementation of the Excel TIMEVALUE() function.
func TimeValue (args []Result )Result {if len (args )!=1||args [0].Type !=ResultTypeString {return MakeErrorResult ("\u0054I\u004d\u0045V\u0041\u004c\u0055\u0045 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069ng\u006c\u0065\u0020s\u0074\u0072i\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};_bfb :=_g .ToLower (args [0].ValueString );if !_fab (_bfb ){_ ,_ ,_ ,_cdd ,_bec :=_eggd (_bfb );if _bec .Type ==ResultTypeError {_bec .ErrorMessage ="\u0049\u006e\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020f\u006f\u0072\u0020\u0054\u0049\u004d\u0045V\u0041\u004c\u0055\u0045";return _bec ;};if _cdd {return MakeNumberResult (0);};};_gbef ,_adc ,_daeg ,_fea ,_ ,_gbcf :=_cca (_bfb );if _gbcf .Type ==ResultTypeError {return _gbcf ;};_ffa :=_gaff (float64 (_gbef ),float64 (_adc ),_daeg );if _fea {_ffa +=0.5;}else if _ffa >=1{_ffa -=float64 (int (_ffa ));};return MakeNumberResult (_ffa );};
// MinA is an implementation of the Excel MINA() function.
func MinA (args []Result )Result {return _geee (args ,true )};func _gdbac (_bceb []Result )[]rangeIndex {_fccdc :=[]rangeIndex {};_ecffa :=len (_bceb );for _gafg :=0;_gafg < _ecffa -1;_gafg +=2{_gcgd :=[]rangeIndex {};_bbabf :=_ggecf (_bceb [_gafg ]);_adgg :=_bgaf (_bceb [_gafg +1]);if _gafg ==0{for _fedb ,_dgaac :=range _bbabf {for _agafd ,_ecdf :=range _dgaac {if _edbdd (_ecdf ,_adgg ){_gcgd =append (_gcgd ,rangeIndex {_fedb ,_agafd });};};};}else {for _ ,_baeg :=range _fccdc {_dedd :=_bbabf [_baeg ._dccb ][_baeg ._bddb ];if _edbdd (_dedd ,_adgg ){_gcgd =append (_gcgd ,_baeg );};};};if len (_gcgd )==0{return []rangeIndex {};};_fccdc =_gcgd [:];};return _fccdc ;};var _adaa =[...]int {-1,1,1,-1,-2,0};const _gegbb =57368;func (_befae *noCache )GetFromCache (key string )(Result ,bool ){return _dabe ,false };func (_ccb *defEval )checkLastEvalIsRef (_ecb Context ,_bc Expression ){switch _bc .(type ){case FunctionCall :switch _bc .(FunctionCall )._beab {case "\u0049\u0053\u0052E\u0046":for _ ,_aeb :=range _bc .(FunctionCall )._febcbff {switch _aeb .(type ){case CellRef ,Range ,HorizontalRange ,VerticalRange ,NamedRangeRef ,PrefixExpr ,PrefixRangeExpr ,PrefixHorizontalRange ,PrefixVerticalRange :_ecf :=_aeb .Eval (_ecb ,_ccb );_ccb ._ceeg =!(_ecf .Type ==ResultTypeError &&_ecf .ValueString =="\u0023\u004e\u0041\u004d\u0045\u003f");default:_ccb ._ceeg =false ;};};};};};func _geac (_faged ,_bagc []float64 ,_dbaf float64 )float64 {_cgeb :=_dbaf +1;_gfdc :=_faged [0];_dfgef :=len (_faged );_ddea :=_bagc [0];for _fcaa :=1;_fcaa < _dfgef ;_fcaa ++{_gfdc +=_faged [_fcaa ]/_ggd .Pow (_cgeb ,(_bagc [_fcaa ]-_ddea )/365);};return _gfdc ;};
// Reference returns a string reference value to a vertical range.
func (_ggbdf VerticalRange )Reference (ctx Context ,ev Evaluator )Reference {return Reference {Type :ReferenceTypeVerticalRange ,Value :_ggbdf .verticalRangeReference ()};};
// NewBinaryExpr constructs a new binary expression with a given operator.
func NewBinaryExpr (lhs Expression ,op BinOpType ,rhs Expression )Expression {return BinaryExpr {_bb :lhs ,_ce :rhs ,_ceb :op };};
// Fvschedule implements the Excel FVSCHEDULE function.
func Fvschedule (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0046\u0056\u0053\u0043\u0048\u0045D\u0055\u004c\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020t\u0077\u006f\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0056\u0053\u0043\u0048E\u0044\u0055\u004c\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0070\u0072\u0069\u006e\u0063\u0069\u0070\u0061\u006c\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_cddg :=args [0].ValueNumber ;switch args [1].Type {case ResultTypeNumber :return MakeNumberResult (_cddg *(args [1].ValueNumber +1));case ResultTypeList ,ResultTypeArray :_cfgd :=_ggecf (args [1]);for _ ,_aece :=range _cfgd {for _ ,_gfdd :=range _aece {if _gfdd .Type !=ResultTypeNumber ||_gfdd .IsBoolean {return MakeErrorResult ("\u0046\u0056\u0053\u0043\u0048\u0045\u0044\u0055\u004c\u0045\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020r\u0061\u0074\u0065\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075m\u0062\u0065\u0072\u0073");};_cddg *=1.0+_gfdd .ValueNumber ;};};return MakeNumberResult (_cddg );default:return MakeErrorResult ("\u0046\u0056\u0053\u0043\u0048\u0045\u0044\u0055\u004c\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020s\u0063\u0068\u0065\u0064\u0075\u006c\u0065\u0020\u0074o\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0072\u0020\u0061\u0072\u0072a\u0079\u0020\u0074y\u0070\u0065");};};
// Ddb implements the Excel DDB function.
func Ddb (args []Result )Result {_agba :=len (args );if _agba !=4&&_agba !=5{return MakeErrorResult ("\u0044\u0044\u0042 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075\u0072\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020c\u006f\u0073\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_bega :=args [0].ValueNumber ;if _bega < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0044B \u0072\u0065\u0071u\u0069\u0072\u0065\u0073 co\u0073t \u0074\u006f\u0020\u0062\u0065\u0020\u006eon\u0020\u006e\u0065\u0067\u0061\u0074\u0069v\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0044\u0042 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ebfb :=args [1].ValueNumber ;if _ebfb < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020s\u0061\u006c\u0076\u0061\u0067\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067a\u0074\u0069\u0076\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020l\u0069\u0066\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_fcgg :=args [2].ValueNumber ;if _fcgg <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069f\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0044\u0042\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cebd :=args [3].ValueNumber ;if _cebd < 1{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0044\u0042\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s\u0020\u0070\u0065\u0072i\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u0074\u0020\u006c\u0065\u0073\u0073\u0020\u0074\u0068\u0061\u006e\u0020\u006f\u006e\u0065");};if _cebd > _fcgg {return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0070\u0065\u0072i\u006f\u0064\u0020\u0066\u006f\u0072\u0020\u0044\u0044\u0042");};_cbbe :=2.0;if _agba ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0044\u0042\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0061\u0063\u0074\u006f\u0072 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cbbe =args [4].ValueNumber ;if _cbbe < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0061\u0063\u0074\u006f\u0072\u0020\u0074\u006f\u0020\u0062e\u0020\u006e\u006f\u006e\u0020n\u0065\u0067a\u0074\u0069\u0076\u0065");};};return MakeNumberResult (_adag (_bega ,_ebfb ,_fcgg ,_cebd ,_cbbe ));};
// Update returns the same object as updating sheet references does not affect Number.
func (_cbada Number )Update (q *_fc .UpdateQuery )Expression {return _cbada };const _ebff =57346;
// NewVerticalRange constructs a new full columns range.
func NewVerticalRange (v string )Expression {_bdgeb :=_g .Split (v ,"\u003a");if len (_bdgeb )!=2{return nil ;};if _bdgeb [0]> _bdgeb [1]{_bdgeb [0],_bdgeb [1]=_bdgeb [1],_bdgeb [0];};return VerticalRange {_beag :_bdgeb [0],_bagcg :_bdgeb [1]};};
// Vdb implements the Excel VDB function.
func Vdb (args []Result )Result {_ffbc :=len (args );if _ffbc < 5||_ffbc > 7{return MakeErrorResult ("\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0074\u006f\u0020b\u0065\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u0062\u0065\u0074\u0077\u0065\u0065\u006e\u0020\u0066\u0069\u0076\u0065\u0020a\u006e\u0064\u0020\u0073\u0065v\u0065\u006e");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020c\u006f\u0073\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_agcf :=args [0].ValueNumber ;if _agcf < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0056\u0044B \u0072\u0065\u0071u\u0069\u0072\u0065\u0073 co\u0073t \u0074\u006f\u0020\u0062\u0065\u0020\u006eon\u0020\u006e\u0065\u0067\u0061\u0074\u0069v\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u0044\u0042 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cbad :=args [1].ValueNumber ;if _cbad < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020s\u0061\u006c\u0076\u0061\u0067\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u006e\u0065\u0067a\u0074\u0069\u0076\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020l\u0069\u0066\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_eea :=args [2].ValueNumber ;if _eea ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069f\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if _eea < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069f\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("V\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0073\u0074\u0061\u0072\u0074 p\u0065\u0072\u0069\u006fd\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_daegd :=args [3].ValueNumber ;if _daegd < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0056\u0044\u0042\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074o\u0020\u0062\u0065\u0020\u006e\u006f\u0074\u0020\u006c\u0065\u0073\u0073\u0020\u0074h\u0061n\u0020\u006f\u006e\u0065");};if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056D\u0042\u0020r\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0065\u006e\u0064 \u0070\u0065\u0072\u0069\u006f\u0064 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ggcb :=args [4].ValueNumber ;if _daegd > _ggcb {return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020s\u0074\u0061\u0072\u0074\u0020\u0070\u0065r\u0069\u006f\u0064\u0020\u0066\u006f\u0072\u0020\u0056\u0044\u0042");};if _ggcb > _eea {return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0065\u006e\u0064\u0020\u0070e\u0072i\u006f\u0064\u0020\u0066\u006f\u0072\u0020V\u0044\u0042");};_ggec :=2.0;if _ffbc > 5{if args [5].Type ==ResultTypeEmpty {_ggec =0.0;}else {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056\u0044\u0042\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0061\u0063\u0074\u006f\u0072 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ggec =args [5].ValueNumber ;if _ggec < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0056\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0061\u0063\u0074\u006f\u0072\u0020\u0074\u006f\u0020\u0062e\u0020\u006e\u006f\u006e\u0020n\u0065\u0067a\u0074\u0069\u0076\u0065");};};};_ggeg :=false ;if _ffbc > 6&&args [6].Type !=ResultTypeEmpty {if args [6].Type !=ResultTypeNumber {return MakeErrorResult ("\u0056D\u0042\u0020r\u0065\u0071\u0075\u0069r\u0065\u0073\u0020n\u006f\u005f\u0073\u0077\u0069\u0074\u0063\u0068\u0020to\u0020\u0062\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_ggeg =args [6].ValueNumber !=0;};_gcaa :=0.0;_dgc :=_ggd .Floor (_daegd );_eefa :=_ggd .Ceil (_ggcb );if _ggeg {for _fgbd :=_dgc +1;_fgbd <=_eefa ;_fgbd ++{_gddbe :=_adag (_agcf ,_cbad ,_eea ,_fgbd ,_ggec );if _fgbd ==_dgc +1{_gddbe *=_ggd .Min (_ggcb ,_dgc +1)-_daegd ;}else if _fgbd ==_eefa {_gddbe *=_ggcb +1-_eefa ;};_gcaa +=_gddbe ;};}else {_gbfgd :=_eea ;var _dcce float64 ;if !_ede (_daegd ,_ggd .Floor (_daegd )){if _ggec ==1{_gafde :=_eea /2;if _daegd > _gafde ||_ede (_daegd ,_gafde ){_dcce =_daegd -_gafde ;_daegd =_gafde ;_ggcb -=_dcce ;_gbfgd ++;};};};if _ggec !=0{_agcf -=_fcbd (_agcf ,_cbad ,_eea ,_gbfgd ,_daegd ,_ggec );};_gcaa =_fcbd (_agcf ,_cbad ,_eea ,_eea -_daegd ,_ggcb -_daegd ,_ggec );};return MakeNumberResult (_gcaa );};
// PrefixExpr is an expression containing reference to another sheet like Sheet1!A1 (the value of the cell A1 from sheet 'Sheet1').
type PrefixExpr struct{_ecfdc Expression ;_bgbg Expression ;};
// Average implements the AVERAGE function. It differs slightly from Excel (and
// agrees with LibreOffice) in that boolean values are counted. As an example,
// AVERAGE of two cells containing TRUE & FALSE is 0.5 in LibreOffice and
// #DIV/0! in Excel. unioffice will return 0.5 in this case.
func Average (args []Result )Result {_adada ,_gbabe :=_dfacb (args ,false );if _gbabe ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0041\u0056\u0045\u0052AG\u0045\u0020\u0064\u0069\u0076\u0069\u0064\u0065\u0020\u0062\u0079\u0020\u007a\u0065r\u006f");};return MakeNumberResult (_adada /_gbabe );};type couponArgs struct{_dddg float64 ;_edg float64 ;_edba int ;_bbed int ;};
// Minute is an implementation of the Excel MINUTE() function.
func Minute (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004d\u0049\u004e\u0055T\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_gade :=args [0];switch _gade .Type {case ResultTypeEmpty :return MakeNumberResult (0);case ResultTypeNumber :_fcbe :=_gfae (_gade .ValueNumber );return MakeNumberResult (float64 (_fcbe .Minute ()));case ResultTypeString :_cgcc :=_g .ToLower (_gade .ValueString );if !_fab (_cgcc ){_ ,_ ,_ ,_fda ,_ffed :=_eggd (_cgcc );if _ffed .Type ==ResultTypeError {_ffed .ErrorMessage ="\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074s\u0020\u0066\u006f\u0072\u0020\u004d\u0049\u004e\u0055\u0054\u0045";return _ffed ;};if _fda {return MakeNumberResult (0);};};_ ,_ebf ,_ ,_ ,_ ,_dfc :=_cca (_cgcc );if _dfc .Type ==ResultTypeError {return _dfc ;};return MakeNumberResult (float64 (_ebf ));default:return MakeErrorResult ("\u0049\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u004d\u0049NU\u0054\u0045");};};func LexReader (r _e .Reader )chan *node {_ddag :=NewLexer ();go _ddag .lex (r );return _ddag ._cccf };
// String returns a string representation for Negate.
func (_gbcfc Negate )String ()string {return "\u002d"+_gbcfc ._ceada .String ()};func init (){RegisterFunction ("\u0043\u0048\u0041\u0052",Char );RegisterFunction ("\u0043\u004c\u0045A\u004e",Clean );RegisterFunction ("\u0043\u004f\u0044\u0045",Code );RegisterFunction ("C\u004f\u004e\u0043\u0041\u0054\u0045\u004e\u0041\u0054\u0045",Concat );RegisterFunction ("\u0043\u004f\u004e\u0043\u0041\u0054",Concat );RegisterFunction ("\u005f\u0078\u006cf\u006e\u002e\u0043\u004f\u004e\u0043\u0041\u0054",Concat );RegisterFunction ("\u0045\u0058\u0041C\u0054",Exact );RegisterFunction ("\u0046\u0049\u004e\u0044",Find );RegisterFunctionComplex ("\u0046\u0049\u004eD\u0042",Findb );RegisterFunction ("\u004c\u0045\u0046\u0054",Left );RegisterFunction ("\u004c\u0045\u0046T\u0042",Left );RegisterFunction ("\u004c\u0045\u004e",Len );RegisterFunction ("\u004c\u0045\u004e\u0042",Len );RegisterFunction ("\u004c\u004f\u0057E\u0052",Lower );RegisterFunction ("\u004d\u0049\u0044",Mid );RegisterFunction ("\u0050\u0052\u004f\u0050\u0045\u0052",Proper );RegisterFunction ("\u0052E\u0050\u004c\u0041\u0043\u0045",Replace );RegisterFunction ("\u0052\u0045\u0050\u0054",Rept );RegisterFunction ("\u0052\u0049\u0047H\u0054",Right );RegisterFunction ("\u0052\u0049\u0047\u0048\u0054\u0042",Right );RegisterFunction ("\u0053\u0045\u0041\u0052\u0043\u0048",Search );RegisterFunctionComplex ("\u0053E\u0041\u0052\u0043\u0048\u0042",Searchb );RegisterFunction ("\u0053\u0055\u0042\u0053\u0054\u0049\u0054\u0055\u0054\u0045",Substitute );RegisterFunction ("\u0054",T );RegisterFunction ("\u0054\u0045\u0058\u0054",Text );RegisterFunction ("\u0054\u0045\u0058\u0054\u004a\u004f\u0049\u004e",TextJoin );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0054\u0045\u0058T\u004a\u004f\u0049\u004e",TextJoin );RegisterFunction ("\u0054\u0052\u0049\u004d",Trim );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0055\u004e\u0049\u0043\u0048\u0041\u0052",Char );RegisterFunction ("\u005f\u0078\u006c\u0066\u006e\u002e\u0055\u004e\u0049\u0043\u004f\u0044\u0045",Unicode );RegisterFunction ("\u0055\u0050\u0050E\u0052",Upper );RegisterFunction ("\u0056\u0041\u004cU\u0045",Value );};
// PrefixHorizontalRange is a range expression that when evaluated returns a list of Results from references like Sheet1!1:4 (all cells from rows 1 to 4 of sheet 'Sheet1').
type PrefixHorizontalRange struct{_fceb Expression ;_baabe ,_ebade int ;};
// Result is the result of a formula or cell evaluation .
type Result struct{ValueNumber float64 ;ValueString string ;ValueList []Result ;ValueArray [][]Result ;IsBoolean bool ;ErrorMessage string ;Type ResultType ;Ref Reference ;};func _bef (_gbb int )bool {if _gbb ==_gbb /400*400{return true ;};if _gbb ==_gbb /100*100{return false ;};return _gbb ==_gbb /4*4;};
// Tbilleq implements the Excel TBILLEQ function.
func Tbilleq (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u0054\u0042\u0049\u004c\u004c\u0045\u0051\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020t\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_egf ,_fcbc ,_cbfg :=_gbce (args [0],args [1],"\u0054B\u0049\u004c\u004c\u0045\u0051");if _cbfg .Type ==ResultTypeError {return _cbfg ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("T\u0042\u0049\u004c\u004c\u0045\u0051\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0064is\u0063\u006f\u0075\u006et\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gdged :=_fcbc -_egf ;if _gdged > 365{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004c\u0045\u0051\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006d\u0061\u0074\u0075\u0072\u0069\u0074\u0079\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eo\u0074\u0020m\u006f\u0072e\u0020\u0074\u0068\u0061\u006e\u0020\u006f\u006e\u0065\u0020\u0079\u0065\u0061r \u0061\u0066\u0074\u0065\u0072\u0020\u0073\u0065\u0074t\u006c\u0065\u006d\u0065\u006e\u0074");};_cgfd :=args [2].ValueNumber ;if _cgfd <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0042\u0049\u004c\u004c\u0045Q\u0020\u0072\u0065q\u0075\u0069\u0072e\u0073\u0020\u0064\u0069\u0073\u0063\u006f\u0075\u006e\u0074 \u0074\u006f\u0020\u0062\u0065 p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeNumberResult ((365*_cgfd )/(360-_cgfd *_gdged ));};
// Update returns the same object as updating sheet references does not affect named ranges.
func (_bdged NamedRangeRef )Update (q *_fc .UpdateQuery )Expression {return _bdged };
// BinaryExpr is a binary expression.
type BinaryExpr struct{_bb ,_ce Expression ;_ceb BinOpType ;};const _daedb =57352;func _befd (_gcfag ,_bfaf int )string {const TOKSTART =4;if !_ggee {return "\u0073\u0079\u006et\u0061\u0078\u0020\u0065\u0072\u0072\u006f\u0072";};for _ ,_ggab :=range _baefe {if _ggab ._gcdd ==_gcfag &&_ggab ._edbbd ==_bfaf {return "\u0073\u0079\u006e\u0074\u0061\u0078\u0020\u0065\u0072r\u006f\u0072\u003a\u0020"+_ggab ._egdc ;};};_gcaaa :="\u0073y\u006e\u0074\u0061\u0078 \u0065\u0072\u0072\u006f\u0072:\u0020u\u006ee\u0078\u0070\u0065\u0063\u0074\u0065\u0064 "+_baea (_bfaf );_addeg :=make ([]int ,0,4);_bdad :=_bdcd [_gcfag ];for _dffaa :=TOKSTART ;_dffaa -1< len (_dabef );_dffaa ++{if _ggba :=_bdad +_dffaa ;_ggba >=0&&_ggba < _adbgg &&_edff [_edccg [_ggba ]]==_dffaa {if len (_addeg )==cap (_addeg ){return _gcaaa ;};_addeg =append (_addeg ,_dffaa );};};if _dffdd [_gcfag ]==-2{_dfca :=0;for _adaa [_dfca ]!=-1||_adaa [_dfca +1]!=_gcfag {_dfca +=2;};for _dfca +=2;_adaa [_dfca ]>=0;_dfca +=2{_cbcfc :=_adaa [_dfca ];if _cbcfc < TOKSTART ||_adaa [_dfca +1]==0{continue ;};if len (_addeg )==cap (_addeg ){return _gcaaa ;};_addeg =append (_addeg ,_cbcfc );};if _adaa [_dfca +1]!=0{return _gcaaa ;};};for _bceg ,_cggfg :=range _addeg {if _bceg ==0{_gcaaa +="\u002c\u0020\u0065x\u0070\u0065\u0063\u0074\u0069\u006e\u0067\u0020";}else {_gcaaa +="\u0020\u006f\u0072\u0020";};_gcaaa +=_baea (_cggfg );};return _gcaaa ;};
// NewError constructs a new error expression from a string.
func NewError (v string )Expression {return Error {_afcd :v }};
// Concat is an implementation of the Excel CONCAT() and deprecated CONCATENATE() function.
func Concat (args []Result )Result {_gfad :=_db .Buffer {};for _ ,_dggda :=range args {switch _dggda .Type {case ResultTypeString :_gfad .WriteString (_dggda .ValueString );case ResultTypeNumber :var _eedc string ;if _dggda .IsBoolean {if _dggda .ValueNumber ==0{_eedc ="\u0046\u0041\u004cS\u0045";}else {_eedc ="\u0054\u0052\u0055\u0045";};}else {_eedc =_dggda .AsString ().ValueString ;};_gfad .WriteString (_eedc );default:return MakeErrorResult ("\u0043\u004f\u004e\u0043\u0041T\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0073");};};return MakeStringResult (_gfad .String ());};const (_ byte =iota ;_ebfdg ;_cbgc ;_eegbb ;_gfcf ;_bbae ;);var _fege []byte =[]byte {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// MaxIfs implements the MAXIFS function.
func MaxIfs (args []Result )Result {_dcbg :=_cfeae (args ,true ,"\u004d\u0041\u0058\u0049\u0046\u0053");if _dcbg .Type !=ResultTypeEmpty {return _dcbg ;};_dgbc :=_gdbac (args [1:]);_ggae :=-_ggd .MaxFloat64 ;_agfc :=_ggecf (args [0]);for _ ,_cfce :=range _dgbc {_ccac :=_agfc [_cfce ._dccb ][_cfce ._bddb ].ValueNumber ;if _ggae < _ccac {_ggae =_ccac ;};};if _ggae ==-_ggd .MaxFloat64 {_ggae =0;};return MakeNumberResult (float64 (_ggae ));};type tokenType int ;func _ga (_eg BinOpType ,_ab ,_fce []Result )Result {_dg :=[]Result {};for _ega :=range _ab {_eee :=_ab [_ega ].AsNumber ();_cg :=_fce [_ega ].AsNumber ();if _eee .Type !=ResultTypeNumber ||_cg .Type !=ResultTypeNumber {return MakeErrorResult ("\u006e\u006f\u006e\u002d\u006e\u0075\u006e\u006d\u0065\u0072\u0069\u0063\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0069\u006e\u0020\u0062\u0069n\u0061\u0072\u0079\u0020\u006fp\u0065\u0072a\u0074\u0069\u006f\u006e");};switch _eg {case BinOpTypePlus :_dg =append (_dg ,MakeNumberResult (_eee .ValueNumber +_cg .ValueNumber ));case BinOpTypeMinus :_dg =append (_dg ,MakeNumberResult (_eee .ValueNumber -_cg .ValueNumber ));case BinOpTypeMult :_dg =append (_dg ,MakeNumberResult (_eee .ValueNumber *_cg .ValueNumber ));case BinOpTypeDiv :if _cg .ValueNumber ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"");};_dg =append (_dg ,MakeNumberResult (_eee .ValueNumber /_cg .ValueNumber ));case BinOpTypeExp :_dg =append (_dg ,MakeNumberResult (_ggd .Pow (_eee .ValueNumber ,_cg .ValueNumber )));case BinOpTypeLT :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber < _cg .ValueNumber ));case BinOpTypeGT :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber > _cg .ValueNumber ));case BinOpTypeEQ :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber ==_cg .ValueNumber ));case BinOpTypeLEQ :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber <=_cg .ValueNumber ));case BinOpTypeGEQ :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber >=_cg .ValueNumber ));case BinOpTypeNE :_dg =append (_dg ,MakeBoolResult (_eee .ValueNumber !=_cg .ValueNumber ));default:return MakeErrorResult (_b .Sprintf ("\u0075\u006es\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u006c\u0069\u0073\u0074\u0020\u0062\u0069\u006e\u0061\u0072\u0079\u0020\u006fp \u0025\u0073",_eg ));};};return MakeListResult (_dg );};
// Eval evaluates a horizontal range returning a list of results or an error.
func (_egbaa HorizontalRange )Eval (ctx Context ,ev Evaluator )Result {_febgga :=_egbaa .horizontalRangeReference ();if _edcba ,_ecee :=ev .GetFromCache (_febgga );_ecee {return _edcba ;};_ecbfe ,_afdb :=_cgcbb (ctx ,_egbaa ._cedf ,_egbaa ._gcddd );_fbegb :=_dfad (ctx ,ev ,_ecbfe ,_afdb );ev .SetCache (_febgga ,_fbegb );return _fbegb ;};
// NewRange constructs a new range.
func NewRange (from ,to Expression )Expression {_affg ,_abagg ,_egec :=_addc (from ,to );if _egec !=nil {_ea .Log .Debug (_egec .Error ());return NewError (_egec .Error ());};return Range {_bbag :_affg ,_cgbeb :_abagg };};func _cafgg (_bdef ,_acaa Result ,_fdcb string )(*xargs ,Result ){if _bdef .Type !=ResultTypeList &&_bdef .Type !=ResultTypeArray {return nil ,MakeErrorResult (_fdcb +"\u0020\u0072eq\u0075\u0069\u0072e\u0073\u0020\u0076\u0061lue\u0073 t\u006f\u0020\u0062\u0065\u0020\u006f\u0066 a\u0072\u0072\u0061\u0079\u0020\u0074\u0079p\u0065");};_cfaa :=_ggecf (_bdef );_cdef :=[]float64 {};for _ ,_geaf :=range _cfaa {for _ ,_bace :=range _geaf {if _bace .Type ==ResultTypeNumber &&!_bace .IsBoolean {_cdef =append (_cdef ,_bace .ValueNumber );}else {return nil ,MakeErrorResult (_fdcb +"\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0076\u0061\u006c\u0075\u0065\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006dbe\u0072\u0073");};};};_adga :=len (_cdef );if len (_cdef )< 2{return nil ,MakeErrorResultType (ErrorTypeNum ,"");};if _acaa .Type !=ResultTypeList &&_acaa .Type !=ResultTypeArray {return nil ,MakeErrorResult (_fdcb +" \u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0064\u0061\u0074\u0065s\u0020\u0074\u006f\u0020\u0062\u0065\u0020o\u0066\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u0074\u0079p\u0065");};_dacf :=_ggecf (_acaa );_cgagc :=[]float64 {};_bbegg :=0.0;for _ ,_acbf :=range _dacf {for _ ,_egda :=range _acbf {if _egda .Type ==ResultTypeNumber &&!_egda .IsBoolean {_fcgc :=float64 (int (_egda .ValueNumber ));if _fcgc < _bbegg {return nil ,MakeErrorResultType (ErrorTypeNum ,_fdcb +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0064\u0061\u0074\u0065\u0073\u0020\u0074\u006f\u0020b\u0065\u0020\u0069\u006e\u0020\u0061\u0073\u0063\u0065\u006edi\u006e\u0067\u0020o\u0072d\u0065\u0072");};_cgagc =append (_cgagc ,_fcgc );_bbegg =_fcgc ;}else {return nil ,MakeErrorResult (_fdcb +"\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0064\u0061\u0074\u0065\u0073\u0020t\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0073");};};};if len (_cgagc )!=_adga {return nil ,MakeErrorResultType (ErrorTypeNum ,"");};return &xargs {_cdef ,_cgagc },MakeEmptyResult ();};func (_ddcae *ivr )Sheet (name string )Context {return _ddcae };
// Trim is an implementation of the Excel TRIM function that removes leading,
// trailing and consecutive spaces.
func Trim (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0054\u0052\u0049\u004d\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0073t\u0072\u0069\u006e\u0067\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_aeebb :=args [0].AsString ();if _aeebb .Type !=ResultTypeString {return MakeErrorResult ("\u0054\u0052\u0049\u004d\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0073t\u0072\u0069\u006e\u0067\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_deeef :=_db .Buffer {};_degfa :=false ;_beacd :=false ;_fcdbg :=0;for _ ,_bgded :=range _aeebb .ValueString {_gaag :=_bgded ==' ';if _gaag {if !_degfa {continue ;};if !_beacd {_fcdbg ++;_deeef .WriteRune (_bgded );};}else {_fcdbg =0;_degfa =true ;_deeef .WriteRune (_bgded );};_beacd =_gaag ;};_deeef .Truncate (_deeef .Len ()-_fcdbg );return MakeStringResult (_deeef .String ());};var _acbfc =[...]int {1};func (_aeeda *yyParserImpl )Parse (yylex yyLexer )int {_acdd :=_dd .Now ();var _eebec int ;var _acbd yySymType ;var _cbgab []yySymType ;_ =_cbgab ;_aegfa :=_aeeda ._eede [:];Nerrs :=0;Errflag :=0;_bcde :=0;_aeeda ._dacac =-1;_cgac :=-1;defer func (){_bcde =-1;_aeeda ._dacac =-1;_cgac =-1}();_gdaf :=-1;goto _cfgf ;_cacac :return 0;_dcef :return 1;_cfgf :if _bfebdg (_acdd ){_ea .Log .Error ("\u0050\u0061\u0072\u0073\u0065\u0020\u0074\u0069\u006d\u0065\u006f\u0075\u0074");goto _dcef ;};if _efcb >=4{_b .Printf ("\u0063\u0068\u0061\u0072\u0020\u0025\u0076\u0020\u0069n\u0020\u0025\u0076\u000a",_baea (_cgac ),_fddbg (_bcde ));};_gdaf ++;if _gdaf >=len (_aegfa ){_dabed :=make ([]yySymType ,len (_aegfa )*2);copy (_dabed ,_aegfa );_aegfa =_dabed ;};_aegfa [_gdaf ]=_acbd ;_aegfa [_gdaf ]._fbbg =_bcde ;_feda :if _bfebdg (_acdd ){_ea .Log .Error ("\u0050\u0061\u0072\u0073\u0065\u0020\u0074\u0069\u006d\u0065\u006f\u0075\u0074");goto _dcef ;};_eebec =_bdcd [_bcde ];if _eebec <=_facd {goto _ffedfa ;};if _aeeda ._dacac < 0{_aeeda ._dacac ,_cgac =_bbabd (yylex ,&_aeeda ._cfdb );};_eebec +=_cgac ;if _eebec < 0||_eebec >=_adbgg {goto _ffedfa ;};_eebec =_edccg [_eebec ];if _edff [_eebec ]==_cgac {_aeeda ._dacac =-1;_cgac =-1;_acbd =_aeeda ._cfdb ;_bcde =_eebec ;if Errflag > 0{Errflag --;};goto _cfgf ;};_ffedfa :if _bfebdg (_acdd ){_ea .Log .Error ("\u0050\u0061\u0072\u0073\u0065\u0020\u0074\u0069\u006d\u0065\u006f\u0075\u0074");goto _dcef ;};_eebec =_dffdd [_bcde ];if _eebec ==-2{if _aeeda ._dacac < 0{_aeeda ._dacac ,_cgac =_bbabd (yylex ,&_aeeda ._cfdb );};_dafec :=0;for {if _adaa [_dafec +0]==-1&&_adaa [_dafec +1]==_bcde {break ;};_dafec +=2;};for _dafec +=2;;_dafec +=2{_eebec =_adaa [_dafec +0];if _eebec < 0||_eebec ==_cgac {break ;};};_eebec =_adaa [_dafec +1];if _eebec < 0{goto _cacac ;};};if _eebec ==0{switch Errflag {case 0:yylex .Error (_befd (_bcde ,_cgac ));Nerrs ++;if _efcb >=1{_b .Printf ("\u0025\u0073",_fddbg (_bcde ));_b .Printf ("\u0020\u0073\u0061\u0077\u0020\u0025\u0073\u000a",_baea (_cgac ));};fallthrough;case 1,2:Errflag =3;for _gdaf >=0{_eebec =_bdcd [_aegfa [_gdaf ]._fbbg ]+_fedf ;if _eebec >=0&&_eebec < _adbgg {_bcde =_edccg [_eebec ];if _edff [_bcde ]==_fedf {goto _cfgf ;};};if _efcb >=2{_b .Printf ("\u0065\u0072r\u006f\u0072\u0020\u0072\u0065\u0063\u006f\u0076\u0065\u0072\u0079\u0020\u0070\u006f\u0070\u0073\u0020\u0073\u0074\u0061\u0074\u0065 %\u0064\u000a",_aegfa [_gdaf ]._fbbg );};_gdaf --;};goto _dcef ;case 3:if _efcb >=2{_b .Printf ("e\u0072\u0072\u006f\u0072\u0020\u0072e\u0063\u006f\u0076\u0065\u0072\u0079\u0020\u0064\u0069s\u0063\u0061\u0072d\u0073 \u0025\u0073\u000a",_baea (_cgac ));};if _cgac ==_bcaf {goto _dcef ;};_aeeda ._dacac =-1;_cgac =-1;goto _feda ;};};if _efcb >=2{_b .Printf ("\u0072e\u0064u\u0063\u0065\u0020\u0025\u0076 \u0069\u006e:\u000a\u0009\u0025\u0076\u000a",_eebec ,_fddbg (_bcde ));};_deaae :=_eebec ;_affd :=_gdaf ;_ =_affd ;_gdaf -=_cbdf [_eebec ];if _gdaf +1>=len (_aegfa ){_ddbe :=make ([]yySymType ,len (_aegfa )*2);copy (_ddbe ,_aegfa );_aegfa =_ddbe ;};_acbd =_aegfa [_gdaf +1];_eebec =_abde [_eebec ];_fcaba :=_ddgdg [_eebec ];_aebc :=_fcaba +_aegfa [_gdaf ]._fbbg +1;if _aebc >=_adbgg {_bcde =_edccg [_fcaba ];}else {_bcde =_edccg [_aebc ];if _edff [_bcde ]!=-_eebec {_bcde =_edccg [_fcaba ];};};switch _deaae {case 1:_cbgab =_aegfa [_affd -1:_affd +1];{yylex .(*plex )._fggc =_acbd ._fgge ;};case 3:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =_cbgab [2]._fgge ;};case 4:_cbgab =_aegfa [_affd -4:_affd +1];{};case 5:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewBool (_cbgab [1]._fabb ._gafa );};case 6:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewNumber (_cbgab [1]._fabb ._gafa );};case 7:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewString (_cbgab [1]._fabb ._gafa );};case 8:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewError (_cbgab [1]._fabb ._gafa );};case 9:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =_cbgab [2]._fgge ;};case 10:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =NewNegate (_cbgab [2]._fgge );};case 15:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =_cbgab [2]._fgge ;};case 17:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewConstArrayExpr (_cbgab [2]._adbg );};case 18:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._adbg =append (_acbd ._adbg ,_cbgab [1]._bgfe );};case 19:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._adbg =append (_cbgab [1]._adbg ,_cbgab [3]._bgfe );};case 20:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._bgfe =append (_acbd ._bgfe ,_cbgab [1]._fgge );};case 21:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._bgfe =append (_cbgab [1]._bgfe ,_cbgab [3]._fgge );};case 23:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =NewPrefixExpr (_cbgab [1]._fgge ,_cbgab [2]._fgge );};case 25:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewSheetPrefixExpr (_cbgab [1]._fabb ._gafa );};case 26:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewCellRef (_cbgab [1]._fabb ._gafa );};case 27:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewRange (_cbgab [1]._fgge ,_cbgab [3]._fgge );};case 28:_cbgab =_aegfa [_affd -4:_affd +1];{_acbd ._fgge =NewPrefixRangeExpr (_cbgab [1]._fgge ,_cbgab [2]._fgge ,_cbgab [4]._fgge );};case 29:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewNamedRangeRef (_cbgab [1]._fabb ._gafa );};case 30:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewHorizontalRange (_cbgab [1]._fabb ._gafa );};case 31:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._fgge =NewVerticalRange (_cbgab [1]._fabb ._gafa );};case 32:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =NewPrefixHorizontalRange (_cbgab [1]._fgge ,_cbgab [2]._fabb ._gafa );};case 33:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =NewPrefixVerticalRange (_cbgab [1]._fgge ,_cbgab [2]._fabb ._gafa );};case 34:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypePlus ,_cbgab [3]._fgge );};case 35:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeMinus ,_cbgab [3]._fgge );};case 36:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeMult ,_cbgab [3]._fgge );};case 37:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeDiv ,_cbgab [3]._fgge );};case 38:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeExp ,_cbgab [3]._fgge );};case 39:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeLT ,_cbgab [3]._fgge );};case 40:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeGT ,_cbgab [3]._fgge );};case 41:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeLEQ ,_cbgab [3]._fgge );};case 42:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeGEQ ,_cbgab [3]._fgge );};case 43:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeEQ ,_cbgab [3]._fgge );};case 44:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeNE ,_cbgab [3]._fgge );};case 45:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewBinaryExpr (_cbgab [1]._fgge ,BinOpTypeConcat ,_cbgab [3]._fgge );};case 47:_cbgab =_aegfa [_affd -2:_affd +1];{_acbd ._fgge =NewFunction (_cbgab [1]._fabb ._gafa ,nil );};case 48:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._fgge =NewFunction (_cbgab [1]._fabb ._gafa ,_cbgab [2]._bgfe );};case 49:_cbgab =_aegfa [_affd -1:_affd +1];{_acbd ._bgfe =append (_acbd ._bgfe ,_cbgab [1]._fgge );};case 50:_cbgab =_aegfa [_affd -3:_affd +1];{_acbd ._bgfe =append (_cbgab [1]._bgfe ,_cbgab [3]._fgge );};case 53:_cbgab =_aegfa [_affd -0:_affd +1];{_acbd ._fgge =NewEmptyExpr ();};};goto _cfgf ;};
// Product is an implementation of the Excel PRODUCT() function.
func Product (args []Result )Result {_egce :=1.0;for _ ,_bddc :=range args {_bddc =_bddc .AsNumber ();switch _bddc .Type {case ResultTypeNumber :_egce *=_bddc .ValueNumber ;case ResultTypeList ,ResultTypeArray :_baddc :=Product (_bddc .ListValues ());if _baddc .Type !=ResultTypeNumber {return _baddc ;};_egce *=_baddc .ValueNumber ;case ResultTypeString :case ResultTypeError :return _bddc ;case ResultTypeEmpty :default:return MakeErrorResult (_b .Sprintf ("\u0075\u006eha\u006e\u0064\u006ce\u0064\u0020\u0050\u0052ODU\u0043T(\u0029\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0020\u0074\u0079\u0070\u0065\u0020%\u0073",_bddc .Type ));};};return MakeNumberResult (_egce );};const _gdea ="\u0028(\u005b0\u002d\u0039\u005d\u0029\u002b)\u0020\u0028a\u006d\u007c\u0070\u006d\u0029";const (ResultTypeUnknown ResultType =iota ;ResultTypeNumber ;ResultTypeString ;ResultTypeList ;ResultTypeArray ;ResultTypeError ;ResultTypeEmpty ;);
// Upper is an implementation of the Excel UPPER function that returns a upper
// case version of a string.
func Upper (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0055\u0050\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0061\u0020\u0073\u0069\u006eg\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_dacfe :=args [0].AsString ();if _dacfe .Type !=ResultTypeString {return MakeErrorResult ("\u0055\u0050\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0061\u0020\u0073\u0069\u006eg\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};return MakeStringResult (_g .ToUpper (_dacfe .ValueString ));};
// String returns a string representation of FunctionCall expression.
func (_ccad FunctionCall )String ()string {_gbbefg :=_db .Buffer {};_gbbefg .WriteString (_ccad ._beab );_gbbefg .WriteString ("\u0028");_gdgbb :=len (_ccad ._febcbff )-1;for _baef ,_aefaf :=range _ccad ._febcbff {_gbbefg .WriteString (_aefaf .String ());if _baef !=_gdgbb {_gbbefg .WriteString ("\u002c");};};_gbbefg .WriteString ("\u0029");return _gbbefg .String ();};type countMode byte ;func _afgda (_fdcg ,_gfed ,_bebf ,_gge int )int {if !_feecf (_gge ){return _bebf ;};_ggad :=_bebf ;_efde :=_gabg (_fdcg ,_gfed );if _ggad > 30||_bebf >=_efde ||_ggad >=_efde {_ggad =30;};return _ggad ;};func _fddbg (_dggdg int )string {if _dggdg >=0&&_dggdg < len (_ddefg ){if _ddefg [_dggdg ]!=""{return _ddefg [_dggdg ];};};return _b .Sprintf ("\u0073\u0074\u0061\u0074\u0065\u002d\u0025\u0076",_dggdg );};
// String returns an empty string for EmptyExpr.
func (_cfa EmptyExpr )String ()string {return ""};func _aadb (_dbed []Result )[]float64 {_ffdb :=make ([]float64 ,0);for _ ,_aegf :=range _dbed {if _aegf .Type ==ResultTypeEmpty {continue ;};_aegf =_aegf .AsNumber ();switch _aegf .Type {case ResultTypeNumber :if !_aegf .IsBoolean {_ffdb =append (_ffdb ,_aegf .ValueNumber );};case ResultTypeList ,ResultTypeArray :_ffdb =append (_ffdb ,_aadb (_aegf .ListValues ())...);case ResultTypeString :default:_ea .Log .Debug ("\u0075\u006e\u0068\u0061\u006ed\u006c\u0065\u0064\u0020\u0065\u0078\u0074\u0072\u0061\u0063\u0074\u004e\u0075m\u0062\u0065\u0072\u0073\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_aegf .Type );};};return _ffdb ;};
// RegisterFunctionComplex registers a standard function.
func RegisterFunctionComplex (name string ,fn FunctionComplex ){_eccac .Lock ();defer _eccac .Unlock ();if _ ,_cada :=_gecfd [name ];_cada {_ea .Log .Debug ("\u0064\u0075p\u006c\u0069\u0063\u0061t\u0065\u0020r\u0065\u0067\u0069\u0073\u0074\u0072\u0061\u0074i\u006f\u006e\u0020\u006f\u0066\u0020\u0066\u0075\u006e\u0063\u0074\u0069o\u006e\u0020\u0025\u0073",name );};_gecfd [name ]=fn ;};func _bfebdg (_cegf _dd .Time )bool {return _dd .Now ().Sub (_cegf )>=_dffg };func _gdb (_afe ,_cafg float64 ,_dcd ,_ecec int )float64 {_ccg :=_gfae (_afe );_acef :=_gfae (_cafg );_cdfa :=_eed (_ccg ,_acef ,_dcd );return _cgbc (_ccg ,_cdfa ,_ecec );};
// Reference returns a string reference value to a horizontal range with prefix.
func (_ggfaa PrefixHorizontalRange )Reference (ctx Context ,ev Evaluator )Reference {_dacaf :=_ggfaa ._fceb .Reference (ctx ,ev );return Reference {Type :ReferenceTypeHorizontalRange ,Value :_ggfaa .horizontalRangeReference (_dacaf .Value )};};var _adef int64 =_edb (1900,_dd .January ,1);
// Base is an implementation of the Excel BASE function that returns a string
// form of an integer in a specified base and of a minimum length with padded
// zeros.
func Base (args []Result )Result {if len (args )< 2{return MakeErrorResult ("\u0042\u0041\u0053\u0045\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074 \u0074\u0077\u006f\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};if len (args )> 3{return MakeErrorResult ("\u0042\u0041S\u0045\u0028\u0029\u0020a\u006c\u006co\u0077\u0073\u0020\u0061\u0074\u0020\u006d\u006fs\u0074\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_fegacf :=args [0].AsNumber ();if _fegacf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072\u0073\u0074 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0042A\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_debf :=args [1].AsNumber ();if _debf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063o\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0042\u0041\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bfab :=int (_debf .ValueNumber );if _bfab < 0||_bfab > 36{return MakeErrorResult ("\u0072\u0061\u0064\u0069\u0078\u0020m\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0069\u006e\u0020\u0074\u0068\u0065 \u0072\u0061\u006e\u0067\u0065\u0020\u005b0\u002c\u0033\u0036\u005d");};_fecc :=0;if len (args )> 2{_bgaea :=args [2].AsNumber ();if _bgaea .Type !=ResultTypeNumber {return MakeErrorResult ("\u0074\u0068\u0069\u0072\u0064 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0042A\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_fecc =int (_bgaea .ValueNumber );};_fbdd :=_dc .FormatInt (int64 (_fegacf .ValueNumber ),_bfab );if len (_fbdd )< _fecc {_fbdd =_g .Repeat ("\u0030",_fecc -len (_fbdd ))+_fbdd ;};return MakeStringResult (_fbdd );};
// Update updates references in the Range after removing a row/column.
func (_eebdd Range )Update (q *_fc .UpdateQuery )Expression {_cage :=_eebdd ;if q .UpdateCurrentSheet {_cage ._bbag =_eebdd ._bbag .Update (q );_cage ._cgbeb =_eebdd ._cgbeb .Update (q );};return _cage ;};
// Int is an implementation of the Excel INT() function that rounds a number
// down to an integer.
func Int (args []Result )Result {if len (args )!=1{return MakeErrorResult ("I\u004e\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067u\u006de\u006e\u0074");};_dffb :=args [0].AsNumber ();if _dffb .Type !=ResultTypeNumber {return MakeErrorResult ("I\u004e\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069n\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067u\u006de\u006e\u0074");};_bcdbd ,_ccdfb :=_ggd .Modf (_dffb .ValueNumber );if _ccdfb < 0{_bcdbd --;};return MakeNumberResult (_bcdbd );};const _dbda =57375;
// Syd implements the Excel SYD function.
func Syd (args []Result )Result {if len (args )!=4{return MakeErrorResult ("S\u0059\u0044\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075\u0072 \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0059\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020c\u006f\u0073\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cabc :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0059\u0044 \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bcgb :=args [1].ValueNumber ;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0059\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020l\u0069\u0066\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_bcb :=args [2].ValueNumber ;if _bcb <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0053\u0059\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069f\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0059\u0044\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fega :=args [3].ValueNumber ;if _fega <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0053\u0059\u0044 r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070e\u0072i\u006fd\u0020t\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if _fega > _bcb {return MakeErrorResultType (ErrorTypeNum ,"\u0053\u0059\u0044\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0065q\u0075\u0061\u006c\u0020\u006f\u0072\u0020\u006c\u0065\u0073\u0073\u0020\u0074\u0068a\u006e \u006c\u0069\u0066\u0065");};_cbcf :=(_cabc -_bcgb )*(_bcb -_fega +1)*2;_afbd :=_bcb *(_bcb +1);return MakeNumberResult (_cbcf /_afbd );};
// ISEVEN is an implementation of the Excel ISEVEN() function.
func IsEven (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u0045VE\u004e\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070t\u0073 \u0061 \u0073i\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u0053\u0045\u0056\u0045\u004e \u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u006e\u0075\u006de\u0072\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cddc :=int (args [0].ValueNumber );return MakeBoolResult (_cddc ==_cddc /2*2);};const _eddga =57357;
// Oddlyield implements the Excel ODDLYIELD function.
func Oddlyield (args []Result )Result {if len (args )!=7&&len (args )!=8{return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0059\u0049\u0045L\u0044\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0073\u0065\u0076\u0065\u006e\u0020\u006f\u0072\u0020\u0065\u0069\u0067\u0068\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_fbge ,_gdgg ,_ccgc :=_gbce (args [0],args [1],"\u004fD\u0044\u004c\u0059\u0049\u0045\u004cD");if _ccgc .Type ==ResultTypeError {return _ccgc ;};_cgfa ,_ccgc :=_eeg (args [2],"\u0069\u0073\u0073\u0075\u0065\u0020\u0064\u0061\u0074\u0065","\u004fD\u0044\u004c\u0050\u0052\u0049\u0043E");if _ccgc .Type ==ResultTypeError {return _ccgc ;};if _cgfa >=_fbge {return MakeErrorResultType (ErrorTypeNum ,"\u004c\u0061\u0073\u0074\u0020i\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0064\u0061\u0074\u0065\u0020s\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0062\u0065\u0066\u006f\u0072\u0065\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074e");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0059\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020o\u0066\u0020\u0074\u0079\u0070e\u0020\u006eu\u006d\u0062\u0065\u0072");};_dfebc :=args [3].ValueNumber ;if _dfebc < 0{return MakeErrorResultType (ErrorTypeNum ,"R\u0061\u0074\u0065\u0020\u0073\u0068o\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u006e\u006fn\u0020\u006e\u0065g\u0061t\u0069\u0076\u0065");};if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("O\u0044\u0044\u004c\u0059\u0049\u0045\u004c\u0044\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073 p\u0072\u0065\u0073\u0065n\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006ff \u0074\u0079p\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_ggcc :=args [4].ValueNumber ;if _ggcc <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0072\u0065\u0073\u0065\u006e\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0073h\u006fu\u006c\u0064\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("\u004fD\u0044\u004cY\u0049\u0045\u004c\u0044 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065mp\u0074\u0069\u006fn\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020n\u0075\u006db\u0065\u0072");};_aded :=args [5].ValueNumber ;if _aded < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0069\u0065\u006cd\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065 \u006eo\u006e\u0020\u006e\u0065\u0067\u0061\u0074i\u0076\u0065");};if args [6].Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0059\u0049\u0045L\u0044\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0066\u0072\u0065\u0071\u0075\u0065\u006e\u0063\u0079\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bgee :=float64 (int (args [6].ValueNumber ));if !_dccgg (_bgee ){return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0066\u0072e\u0071u\u0065n\u0063\u0065\u0020\u0076\u0061\u006c\u0075e");};_dbac :=0;if len (args )==8&&args [7].Type !=ResultTypeEmpty {if args [7].Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u004c\u0059\u0049\u0045\u004c\u0044\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0062a\u0073\u0069\u0073\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_dbac =int (args [7].ValueNumber );if !_bbf (_dbac ){return MakeErrorResultType (ErrorTypeNum ,"I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0062\u0061\u0073\u0069s\u0020\u0076\u0061\u006c\u0075\u0065\u0020f\u006f\u0072\u0020\u004f\u0044\u0044\u004c\u0059\u0049\u0045L\u0044");};};_afbfa ,_ccgc :=_cebg (_cgfa ,_gdgg ,_dbac );if _ccgc .Type ==ResultTypeError {return _ccgc ;};_afbfa *=_bgee ;_feegg ,_ccgc :=_cebg (_fbge ,_gdgg ,_dbac );if _ccgc .Type ==ResultTypeError {return _ccgc ;};_feegg *=_bgee ;_fecf ,_ccgc :=_cebg (_cgfa ,_fbge ,_dbac );if _ccgc .Type ==ResultTypeError {return _ccgc ;};_fecf *=_bgee ;_gcag :=_aded +_afbfa *100*_dfebc /_bgee ;_gcag /=_ggcc +_fecf *100*_dfebc /_bgee ;_gcag --;_gcag *=_bgee /_feegg ;return MakeNumberResult (_gcag );};func _fcag (_bgdb []Result ,_cgfc string )(float64 ,float64 ,Result ){if len (_bgdb )!=2{return 0,0,MakeErrorResult (_cgfc +"\u0020\u0072\u0065qu\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _bgdb [0].Type !=ResultTypeNumber {return 0,0,MakeErrorResult (_cgfc +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0066\u0072\u0061\u0063\u0074\u0069\u006f\u006e\u0061\u006c\u0020\u0064\u006f\u006c\u006c\u0061\u0072 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_fegd :=_bgdb [0].ValueNumber ;if _bgdb [1].Type !=ResultTypeNumber {return 0,0,MakeErrorResult (_cgfc +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0072\u0061\u0063\u0074\u0069\u006f\u006e\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_ddfaa :=float64 (int (_bgdb [1].ValueNumber ));if _ddfaa < 0{return 0,0,MakeErrorResultType (ErrorTypeNum ,_cgfc +"\u0020r\u0065\u0071u\u0069\u0072\u0065\u0073 \u0066\u0072\u0061c\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062e \u006e\u006f\u006e \u006e\u0065g\u0061\u0074\u0069\u0076\u0065\u0020n\u0075\u006db\u0065\u0072");};return _fegd ,_ddfaa ,_dabe ;};
// PrefixRangeExpr is a range expression that when evaluated returns a list of Results from a given sheet like Sheet1!A1:B4 (all cells from A1 to B4 from a sheet 'Sheet1').
type PrefixRangeExpr struct{_acbed ,_eeafd ,_cedga Expression };
// Reference returns an invalid reference for BinaryExpr.
func (_df BinaryExpr )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };func _cgcbb (_acgab Context ,_ecea ,_fbbae int )(string ,string ){_fbbcg :="\u0041"+_dc .Itoa (_ecea );_afeb :=_acgab .LastColumn (_ecea ,_fbbae );_agcc :=_afeb +_dc .Itoa (_fbbae );return _fbbcg ,_agcc ;};func _dccd (_degb ,_bdbc float64 ,_fbe ,_cfbe int )(float64 ,Result ){_agbe ,_afea :=_gfae (_degb ),_gfae (_bdbc );if _afea .After (_agbe ){_bff :=_fgf (_agbe ,_afea ,_fbe ,_cfbe );_bedg :=(_afea .Year ()-_bff .Year ())*12+int (_afea .Month ())-int (_bff .Month ());return float64 (_bedg *_fbe )/12.0,_dabe ;};return 0,MakeErrorResultType (ErrorTypeNum ,"\u0053\u0065t\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0062\u0065\u0020\u0062\u0065\u0066\u006f\u0072\u0065\u0020\u006d\u0061\u0074\u0075\u0072\u0069\u0074\u0079\u0020\u0064\u0061\u0074\u0065");};var _cabdd =[]ri {{1000,"\u004d"},{995,"\u0056\u004d"},{990,"\u0058\u004d"},{950,"\u004c\u004d"},{900,"\u0043\u004d"},{500,"\u0044"},{495,"\u0056\u0044"},{490,"\u0058\u0044"},{450,"\u004c\u0044"},{400,"\u0043\u0044"},{100,"\u0043"},{99,"\u0049\u0043"},{90,"\u0058\u0043"},{50,"\u004c"},{45,"\u0056\u004c"},{40,"\u0058\u004c"},{10,"\u0058"},{9,"\u0049\u0058"},{5,"\u0056"},{4,"\u0049\u0056"},{1,"\u0049"}};const _cafc =_dba +"\u0020\u0028\u0028[0\u002d\u0039\u005d\u0029\u002b\u0029\u002c\u0020\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029";
// String returns a string representation of a named range.
func (_dfcb NamedRangeRef )String ()string {return _dfcb ._gfedg };func (_gefc *ivr )SetOffset (col ,row uint32 ){};
// Eval evaluates and returns the result of a constant array expression.
func (_ced ConstArrayExpr )Eval (ctx Context ,ev Evaluator )Result {_bed :=[][]Result {};for _ ,_ec :=range _ced ._fbd {_beb :=[]Result {};for _ ,_fe :=range _ec {_beb =append (_beb ,_fe .Eval (ctx ,ev ));};_bed =append (_bed ,_beb );};return MakeArrayResult (_bed );};func _ceag (_baa ,_bbeg ,_fadg int )int {if _baa > _bbeg {return 0;};if _feecf (_fadg ){return (_bbeg -_baa +1)*360;};_aecg :=0;for _aecf :=_baa ;_aecf <=_bbeg ;_aecf ++{_geca :=365;if _bef (_aecf ){_geca =366;};_aecg +=_geca ;};return _aecg ;};const _facd =-1000;
// DateValue is an implementation of the Excel DATEVALUE() function.
func DateValue (args []Result )Result {if len (args )!=1||args [0].Type !=ResultTypeString {return MakeErrorResult ("\u0044A\u0054\u0045V\u0041\u004c\u0055\u0045 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069ng\u006c\u0065\u0020s\u0074\u0072i\u006e\u0067\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};_bagf :=_g .ToLower (args [0].ValueString );if !_cdg (_bagf ){_ ,_ ,_ ,_ ,_dfgc ,_ffd :=_cca (_bagf );if _ffd .Type ==ResultTypeError {_ffd .ErrorMessage ="\u0049\u006e\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020f\u006f\u0072\u0020\u0044\u0041\u0054\u0045V\u0041\u004c\u0055\u0045";return _ffd ;};if _dfgc {return MakeNumberResult (0);};};_cbf ,_fbg ,_bagd ,_ ,_agcd :=_eggd (_bagf );if _agcd .Type ==ResultTypeError {return _agcd ;};return MakeNumberResult (_agd (_cbf ,_fbg ,_bagd ));};
// IsBool returns false for the invalid reference context.
func (_fbee *ivr )IsBool (cellRef string )bool {return false };const _aabc =86400000000000;const (_cdcca countMode =iota ;_fedgb ;_bbbed ;);
// Index implements the Excel INDEX function.
func Index (args []Result )Result {_ccfb :=len (args );if _ccfb < 2||_ccfb > 3{return MakeErrorResult ("\u0049\u004e\u0044E\u0058\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0072\u006f\u006d\u0020\u006f\u006e\u0065\u0020\u0074\u006f\u0020\u0074\u0068\u0072\u0065\u0065\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_gcfa :=args [0];if _gcfa .Type !=ResultTypeArray &&_gcfa .Type !=ResultTypeList {return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0072e\u0071\u0075\u0069r\u0065\u0073\u0020\u0066i\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_ddcf :=args [1].AsNumber ();if _ddcf .Type !=ResultTypeNumber {return MakeErrorResult ("I\u004e\u0044\u0045\u0058\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073 \u006e\u0075\u006d\u0065\u0072\u0069\u0063 \u0072\u006f\u0077\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_ged :=int (_ddcf .ValueNumber )-1;_adbf :=-1;if _ccfb ==3&&args [2].Type !=ResultTypeEmpty {_afddc :=args [2].AsNumber ();if _afddc .Type !=ResultTypeNumber {return MakeErrorResult ("I\u004e\u0044\u0045\u0058\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073 \u006e\u0075\u006d\u0065\u0072\u0069\u0063 \u0063\u006f\u006c\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_adbf =int (_afddc .ValueNumber )-1;};if _ged ==-1&&_adbf ==-1{return MakeErrorResult ("\u0049\u004e\u0044EX\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0072o\u0077 \u006fr\u0020\u0063\u006f\u006c\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};var _aegc []Result ;if _gcfa .Type ==ResultTypeArray {_agbac :=_gcfa .ValueArray ;if _ged < -1||_ged >=len (_agbac ){return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0068\u0061\u0073\u0020\u0072o\u0077\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072a\u006e\u0067\u0065");};if _ged ==-1{if _adbf >=len (_agbac [0]){return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0068\u0061\u0073\u0020\u0063o\u006c\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072a\u006e\u0067\u0065");};_dfed :=[][]Result {};for _ ,_gaefd :=range _agbac {_fbgc :=_gaefd [_adbf ];if _fbgc .Type ==ResultTypeEmpty {_fbgc =MakeNumberResult (0);};_dfed =append (_dfed ,[]Result {_fbgc });};return MakeArrayResult (_dfed );};_aegc =_agbac [_ged ];}else {_dedca :=_gcfa .ValueList ;if _ged < -1||_ged >=1{return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0068\u0061\u0073\u0020\u0072o\u0077\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072a\u006e\u0067\u0065");};if _ged ==-1{if _adbf >=len (_dedca ){return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0068\u0061\u0073\u0020\u0063o\u006c\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072a\u006e\u0067\u0065");};_fgdc :=_dedca [_adbf ];if _fgdc .Type ==ResultTypeEmpty {_fgdc =MakeNumberResult (0);};return _fgdc ;};_aegc =_dedca ;};if _adbf < -1||_adbf > len (_aegc ){return MakeErrorResult ("\u0049\u004e\u0044\u0045\u0058\u0020\u0068\u0061\u0073\u0020\u0063o\u006c\u0020\u006f\u0075\u0074\u0020\u006f\u0066\u0020\u0072a\u006e\u0067\u0065");};if _adbf ==-1{_aeff :=[]Result {};for _ ,_daaa :=range _aegc {if _daaa .Type ==ResultTypeEmpty {_aeff =append (_aeff ,MakeNumberResult (0));}else {_aeff =append (_aeff ,_daaa );};};return MakeArrayResult ([][]Result {_aeff });};_eagfc :=_aegc [_adbf ];if _eagfc .Type ==ResultTypeEmpty {return MakeNumberResult (0);};return _eagfc ;};
// Small implements the Excel SMALL function.
func Small (args []Result )Result {return _aecc (args ,false )};var _gafdf =map[string ]Function {};const _dggg =57355;
// MakeListResult constructs a list result.
func MakeListResult (list []Result )Result {return Result {Type :ResultTypeList ,ValueList :list }};var _cafgf ,_fdga ,_dcaga ,_eagd ,_cdgcda ,_faff *_gg .Regexp ;
// False is an implementation of the Excel FALSE() function. It takes no
// arguments.
func False (args []Result )Result {if len (args )!=0{return MakeErrorResult ("\u0046A\u004c\u0053\u0045\u0020\u0074\u0061\u006b\u0065\u0073\u0020\u006eo\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};return MakeBoolResult (false );};
// Combina is an implementation of the Excel COMBINA function whic returns the
// number of combinations with repetitions.
func Combina (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0043\u004f\u004dB\u0049\u004e\u0041\u0028)\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ffbcb :=args [0].AsNumber ();_gfcc :=args [1].AsNumber ();if _ffbcb .Type !=ResultTypeNumber ||_gfcc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0043\u004fMB\u0049\u004e\u0041(\u0029\u0020\u0072\u0065qui\u0072es\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_cdedc :=_ggd .Trunc (_ffbcb .ValueNumber );_ebcfg :=_ggd .Trunc (_gfcc .ValueNumber );if _cdedc < _ebcfg {return MakeErrorResult ("\u0043O\u004d\u0042\u0049\u004e\u0041\u0028\u0029\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u006e\u0020\u003e\u0020\u006b");};if _cdedc ==0{return MakeNumberResult (0);};args [0]=MakeNumberResult (_cdedc +_ebcfg -1);args [1]=MakeNumberResult (_cdedc -1);return Combin (args );};
// CellRef is a reference to a single cell
type CellRef struct{_abc string };
// ConstArrayExpr is a constant array expression.
type ConstArrayExpr struct{_fbd [][]Expression };func _fddb (_cfegd []Result )Result {_fecfb :=_cfegd [0].ValueList ;_dbeb :=len (_fecfb );switch len (_cfegd ){case 1:_egadd :=[]Result {};for _ ,_fgda :=range _fecfb {_egadd =append (_egadd ,MakeBoolResult (_fgda .ValueNumber !=0));};return MakeListResult (_egadd );case 2:_gbefe :=_cfegd [1];switch _gbefe .Type {case ResultTypeNumber ,ResultTypeString ,ResultTypeEmpty :_bdbag :=[]Result {};for _ ,_becac :=range _fecfb {var _fcaf Result ;if _becac .ValueNumber ==0{_fcaf =MakeBoolResult (false );}else {_fcaf =_gbefe ;};_bdbag =append (_bdbag ,_fcaf );};return MakeListResult (_bdbag );case ResultTypeList :_eafe :=_dfcd (_gbefe ,_dbeb );_cfaag :=[]Result {};for _fdgfg ,_edbb :=range _fecfb {var _ecbb Result ;if _edbb .ValueNumber ==0{_ecbb =MakeBoolResult (false );}else {_ecbb =_eafe [_fdgfg ];};_cfaag =append (_cfaag ,_ecbb );};return MakeListResult (_cfaag );case ResultTypeArray :_bbcd :=_cbga (_gbefe ,len (_gbefe .ValueArray ),_dbeb );_aaage :=[][]Result {};for _ ,_ccdf :=range _bbcd {_gcee :=[]Result {};for _aega ,_abag :=range _fecfb {var _gecg Result ;if _abag .ValueNumber ==0{_gecg =MakeBoolResult (false );}else {_gecg =_ccdf [_aega ];};_gcee =append (_gcee ,_gecg );};_aaage =append (_aaage ,_gcee );};return MakeArrayResult (_aaage );};case 3:_fadf :=_cfegd [1];_gbbebb :=_cfegd [2];_fdff :=_cbfc (_fadf );_bgda :=_cbfc (_gbbebb );if _fdff &&_bgda {_bcdga :=[]Result {};for _ ,_ddad :=range _fecfb {var _dgaae Result ;if _ddad .ValueNumber ==0{_dgaae =_gbbebb ;}else {_dgaae =_fadf ;};_bcdga =append (_bcdga ,_dgaae );};return MakeListResult (_bcdga );};if _fadf .Type !=ResultTypeArray &&_gbbebb .Type !=ResultTypeArray {_dbacf :=_dfcd (_fadf ,_dbeb );_cfde :=_dfcd (_gbbebb ,_dbeb );_ebad :=[]Result {};for _bfbeb ,_cgfb :=range _fecfb {var _ebdf Result ;if _cgfb .ValueNumber ==0{_ebdf =_cfde [_bfbeb ];}else {_ebdf =_dbacf [_bfbeb ];};_ebad =append (_ebad ,_ebdf );};return MakeListResult (_ebad );};_daca ,_ggede :=len (_fadf .ValueArray ),len (_gbbebb .ValueArray );_eege ,_fdfe :=_daca ,_ggede ;if _ggede > _eege {_eege ,_fdfe =_fdfe ,_eege ;};_egbd :=_cbga (_fadf ,_eege ,_dbeb );_gdde :=_cbga (_gbbebb ,_eege ,_dbeb );_bebc :=[][]Result {};for _accd :=0;_accd < _eege ;_accd ++{_cfga :=[]Result {};for _ebbd ,_bgbca :=range _fecfb {var _cdad Result ;if _bgbca .ValueNumber ==0{if _accd < _ggede {_cdad =_gdde [_accd ][_ebbd ];}else {_cdad =MakeErrorResultType (ErrorTypeNA ,"");};}else {if _accd < _daca {_cdad =_egbd [_accd ][_ebbd ];}else {_cdad =MakeErrorResultType (ErrorTypeNA ,"");};};_cfga =append (_cfga ,_cdad );};_bebc =append (_bebc ,_cfga );};return MakeArrayResult (_bebc );};return MakeErrorResult ("");};
// Db implements the Excel DB function.
func Db (args []Result )Result {_agcdc :=len (args );if _agcdc !=4&&_agcdc !=5{return MakeErrorResult ("\u0044\u0042\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u006f\u0075\u0072\u0020\u006f\u0072 \u0066\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0063\u006f\u0073\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_fage :=args [0].ValueNumber ;if _fage < 0{return MakeErrorResultType (ErrorTypeNum ,"D\u0042\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0063\u006fs\u0074\u0020\u0074\u006f\u0020\u0062\u0065 \u006e\u006f\u006e\u0020\u006e\u0065\u0067\u0061\u0074\u0069v\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0042\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_aegb :=args [1].ValueNumber ;if _aegb < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0062e\u0020\u006e\u006f\u006e\u0020n\u0065\u0067a\u0074\u0069\u0076\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069\u0066\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_cfd :=args [2].ValueNumber ;if _cfd <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0042\u0020r\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006c\u0069\u0066\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("D\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_gca :=args [3].ValueNumber ;if _gca <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0044\u0042\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006f\u0073i\u0074\u0069\u0076\u0065");};if _gca -_cfd > 1{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063or\u0072\u0065\u0063\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0066\u006f\u0072\u0020\u0044\u0042");};_gea :=12.0;if _agcdc ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0042\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006do\u006e\u0074\u0068\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_gea =args [4].ValueNumber ;if _gea < 1||_gea > 12{return MakeErrorResultType (ErrorTypeNum ,"\u0044B\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u006do\u006e\u0074\u0068\u0020\u0074\u006f\u0020\u0062\u0065 i\u006e\u0020\u0072a\u006e\u0067e\u0020\u006f\u0066\u0020\u0031\u0020a\u006e\u0064 \u0031\u0032");};};if _gea ==12&&_gca > _cfd {return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063or\u0072\u0065\u0063\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0066\u006f\u0072\u0020\u0044\u0042");};if _aegb >=_fage {return MakeNumberResult (0);};_ddfc :=1-_ggd .Pow (_aegb /_fage ,1/_cfd );_ddfc =float64 (int (_ddfc *1000+0.5))/1000;_cggc :=_fage *_ddfc *_gea /12;if _gca ==1{return MakeNumberResult (_cggc );};_acba :=_cggc ;_ddb :=0.0;_eebe :=_cfd ;if _eebe > _gca {_eebe =_gca ;};for _dceee :=2.0;_dceee <=_eebe ;_dceee ++{_ddb =(_fage -_acba )*_ddfc ;_acba +=_ddb ;};if _gca > _cfd {return MakeNumberResult ((_fage -_acba )*_ddfc *(12-_gea )/12);};return MakeNumberResult (_ddb );};func _dddaf (_bcda float64 ,_ccdff *criteriaRegex )bool {_gddfc ,_cffad :=_dc .ParseFloat (_ccdff ._ebde ,64);if _cffad !=nil {return false ;};switch _ccdff ._faea {case _ebfdg :return _bcda ==_gddfc ;case _cbgc :return _bcda <=_gddfc ;case _eegbb :return _bcda >=_gddfc ;case _gfcf :return _bcda < _gddfc ;case _bbae :return _bcda > _gddfc ;};return false ;};
// Year is an implementation of the Excel YEAR() function.
func Year (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1||args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0045\u0041\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_egb :=ctx .GetEpoch ();_gdd ,_daba :=_ffebc (args [0].Value (),_egb );if _daba !=nil {return MakeErrorResult ("\u0059\u0045AR\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s a\u0020si\u006e\u0067\u006c\u0065\u0020\u0064\u0061te\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};return MakeNumberResult (float64 (_gdd .Year ()));};
// Reference returns an invalid reference for Negate.
func (_ccaf Negate )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };
// Reference returns a string reference value to a sheet.
func (_dgecb SheetPrefixExpr )Reference (ctx Context ,ev Evaluator )Reference {return Reference {Type :ReferenceTypeSheet ,Value :_dgecb ._bece };};func Trunc (args []Result )Result {if len (args )==0{return MakeErrorResult ("T\u0052\u0055\u004e\u0043\u0028\u0029\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0061t \u006c\u0065\u0061\u0073t\u0020\u006f\u006e\u0065\u0020\u006e\u0075\u006d\u0065ri\u0063\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_dbee :=args [0].AsNumber ();if _dbee .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072s\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0054\u0052\u0055\u004e\u0043\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065 \u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bgbcd :=float64 (0);if len (args )> 1{_bbcdf :=args [1].AsNumber ();if _bbcdf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020a\u0072\u0067\u0075m\u0065\u006e\u0074\u0020t\u006f\u0020\u0054\u0052\u0055\u004e\u0043\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bgbcd =_bbcdf .ValueNumber ;};_bgeee :=_dbee .ValueNumber ;_eeebf :=1.0;if _bgbcd >=0{_eeebf =_ggd .Pow (1/10.0,_bgbcd );}else {return MakeNumberResult (0);};_bgeee ,_fbfcf :=_ggd .Modf (_bgeee /_eeebf );_eage :=0.99999;if _fbfcf > _eage {_bgeee ++;}else if _fbfcf < -_eage {_bgeee --;};_ =_fbfcf ;return MakeNumberResult (_bgeee *_eeebf );};func _ggfag ()yyParser {return &yyParserImpl {}};
// NewNegate constructs a new negate expression.
func NewNegate (e Expression )Expression {return Negate {_ceada :e }};func _edc (_fdeg ,_bdb int )int {switch _bdb {case 1:if _bef (_fdeg ){return 366;}else {return 365;};case 3:return 365;default:return 360;};};
// Month is an implementation of the Excel MONTH() function.
func Month (args []Result )Result {if len (args )!=1{return MakeErrorResult ("M\u004f\u004e\u0054\u0048\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006f\u006ee\u0020\u0061\u0072g\u0075m\u0065\u006e\u0074");};_cgf :=args [0];switch _cgf .Type {case ResultTypeEmpty :return MakeNumberResult (1);case ResultTypeNumber :_dde :=_gfae (_cgf .ValueNumber );return MakeNumberResult (float64 (_dde .Month ()));case ResultTypeString :_ggc :=_g .ToLower (_cgf .ValueString );if !_cdg (_ggc ){_ ,_ ,_ ,_ ,_fcbfg ,_bgdc :=_cca (_ggc );if _bgdc .Type ==ResultTypeError {_bgdc .ErrorMessage ="\u0049\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006f\u0072\u0020\u004dON\u0054\u0048";return _bgdc ;};if _fcbfg {return MakeNumberResult (1);};};_ ,_dae ,_ ,_ ,_eaggc :=_eggd (_ggc );if _eaggc .Type ==ResultTypeError {return _eaggc ;};return MakeNumberResult (float64 (_dae ));default:return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u004d\u004fN\u0054\u0048");};};const _cabdcd =57350;
// Reference returns a string reference value to a vertical range with prefix.
func (_dadgg PrefixVerticalRange )Reference (ctx Context ,ev Evaluator )Reference {_gfca :=_dadgg ._ecac .Reference (ctx ,ev );return Reference {Type :ReferenceTypeVerticalRange ,Value :_dadgg .verticalRangeReference (_gfca .Value )};};
// Sum is an implementation of the Excel SUM() function.
func Sum (args []Result )Result {_fceg :=MakeNumberResult (0);for _ ,_afdc :=range args {_afdc =_afdc .AsNumber ();switch _afdc .Type {case ResultTypeNumber :_fceg .ValueNumber +=_afdc .ValueNumber ;case ResultTypeList ,ResultTypeArray :_cbdcf :=Sum (_afdc .ListValues ());if _cbdcf .Type !=ResultTypeNumber {return _cbdcf ;};_fceg .ValueNumber +=_cbdcf .ValueNumber ;case ResultTypeString :case ResultTypeError :return _afdc ;case ResultTypeEmpty :default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u0053\u0055\u004d\u0028\u0029 \u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_afdc .Type ));};};return _fceg ;};var InvalidReferenceContext =&ivr {};type criteriaRegex struct{_faea byte ;_ebde string ;};func _bbf (_feg int )bool {return _feg >=0&&_feg <=4};
// FloorPrecise is an implementation of the FlOOR.PRECISE function.
func FloorPrecise (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0046\u004cO\u004f\u0052\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if len (args )> 2{return MakeErrorResult ("\u0046L\u004f\u004fR\u002e\u0050\u0052\u0045C\u0049\u0053\u0045(\u0029\u0020\u0061\u006c\u006c\u006f\u0077\u0073\u0020at\u0020\u006d\u006fs\u0074\u0020t\u0077\u006f\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};_dcagd :=args [0].AsNumber ();if _dcagd .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020F\u004c\u004f\u004f\u0052\u002e\u0050\u0052E\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_ebcg :=float64 (1);if _dcagd .ValueNumber < 0{_ebcg =-1;};if len (args )> 1{_dafb :=args [1].AsNumber ();if _dafb .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006ed\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020F\u004c\u004f\u004f\u0052\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065r");};_ebcg =_ggd .Abs (_dafb .ValueNumber );};if len (args )==1{return MakeNumberResult (_ggd .Floor (_dcagd .ValueNumber ));};_acdb :=_dcagd .ValueNumber ;_acdb ,_acced :=_ggd .Modf (_acdb /_ebcg );if _acced !=0{if _dcagd .ValueNumber < 0{_acdb --;};};return MakeNumberResult (_acdb *_ebcg );};
// Parse parses an io.Reader to get an Expression. If expression is parsed with an error, nil is returned
func Parse (r _e .Reader )Expression {_fbfb :=&plex {_fagb :LexReader (r )};_edeaa (_fbfb );if _fbfb ._bfbcb !=""{return nil ;};return _fbfb ._fggc ;};func _ecbc (_abcd ,_ffde ,_bbebc ,_bgg ,_cdde float64 ,_gfbb int )Result {_dfgeb ,_gee :=_cebg (_abcd ,_ffde ,_gfbb );if _gee .Type ==ResultTypeError {return _gee ;};_cgae ,_beca :=_dccd (_abcd ,_ffde ,int (_cdde ),_gfbb );if _beca .Type ==ResultTypeError {return _beca ;};_edcg :=0.0;_dccg :=0.0;_bbebc *=100/_cdde ;_bgg /=_cdde ;_bgg ++;_dcca :=_dfgeb *_cdde -_cgae ;for _ebfg :=1.0;_ebfg < _cgae ;_ebfg ++{_adg :=_ebfg +_dcca ;_deca :=_bbebc /_ggd .Pow (_bgg ,_adg );_dccg +=_deca ;_edcg +=_adg *_deca ;};_fdb :=(_bbebc +100)/_ggd .Pow (_bgg ,_cgae +_dcca );_dccg +=_fdb ;_edcg +=(_cgae +_dcca )*_fdb ;_edcg /=_dccg ;_edcg /=_cdde ;return MakeNumberResult (_edcg );};const _begaf =57372;const _abd ="\u0028\u0028\u005b0\u002d\u0039\u005d\u0029\u002b\u0029\u003a\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u005c\u002e\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u0028\u0020(\u0061\u006d\u007c\u0070\u006d\u0029\u0029\u003f";func _cfed (_adac ,_dabea ,_bbcg ,_aedc ,_bedb float64 ,_efef int )float64 {_bgef :=_gdge (_adac ,_bbcg ,_aedc ,_bedb ,_efef );var _gaec float64 ;if _dabea ==1{if _efef ==1{_gaec =0;}else {_gaec =-_aedc ;};}else {if _efef ==1{_gaec =_gaab (_adac ,_dabea -2,_bgef ,_aedc ,1)-_bgef ;}else {_gaec =_gaab (_adac ,_dabea -1,_bgef ,_aedc ,0);};};return _gaec *_adac ;};var _ggac ,_ggdc ,_ebg ,_ggag ,_ffeb ,_cadf ,_fgcg ,_edfd ,_dfbca ,_defb ,_ebgc ,_egeg ,_cadbb ,_eaac ,_cbca *_gg .Regexp ;func (_gaac *ivr )NamedRange (ref string )Reference {return ReferenceInvalid };
// Error is an error expression.
type Error struct{_afcd string };
// Right implements the Excel RIGHT(string,[n]) function which returns the
// rightmost n characters.
func Right (args []Result )Result {_fcdc :=1;switch len (args ){case 1:case 2:if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0049\u0047\u0048\u0054\u0020\u0065\u0078\u0070\u0065c\u0074\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fcdc =int (args [1].ValueNumber );if _fcdc < 0{return MakeErrorResult ("R\u0049\u0047\u0048\u0054\u0020\u0065x\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u003e\u003d \u0030");};if _fcdc ==0{return MakeStringResult ("");};default:return MakeErrorResult ("\u0052\u0049\u0047HT\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020o\u006ee\u0020o\u0072 \u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type ==ResultTypeList {return MakeErrorResult ("\u0052\u0049\u0047\u0048\u0054\u0020\u0063\u0061\u006e\u0027\u0074\u0020\u0062\u0065\u0020c\u0061l\u006c\u0065\u0064\u0020\u006f\u006e\u0020\u0061\u0020\u0072\u0061\u006e\u0067\u0065");};_fcbg :=args [0].Value ();_dgcba :=len (_fcbg );if _fcdc > _dgcba {return MakeStringResult (_fcbg );};return MakeStringResult (_fcbg [_dgcba -_fcdc :_dgcba ]);};func _badd (_bccb []Result )(float64 ,float64 ,Result ){_egea :=0.0;_dbae :=1.0;for _ ,_dfbf :=range _bccb {switch _dfbf .Type {case ResultTypeNumber :_egea +=_dfbf .ValueNumber ;_dbae *=_gdbed (_dfbf .ValueNumber );case ResultTypeList ,ResultTypeArray :_cafe ,_daga ,_fafgg :=_badd (_dfbf .ListValues ());_egea +=_cafe ;_dbae *=_gdbed (_daga );if _fafgg .Type ==ResultTypeError {return 0,0,_fafgg ;};case ResultTypeString :return 0,0,MakeErrorResult ("M\u0055\u004c\u0054\u0049\u004e\u004f\u004d\u0049\u0041\u004c\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063 a\u0072\u0067\u0075m\u0065n\u0074\u0073");case ResultTypeError :return 0,0,_dfbf ;};};return _egea ,_dbae ,_dabe ;};func _ead (_eb BinOpType ,_egg [][]Result ,_aaa Result )Result {_cbb :=[][]Result {};for _gc :=range _egg {_dbe :=_beg (_eb ,_egg [_gc ],_aaa );if _dbe .Type ==ResultTypeError {return _dbe ;};_cbb =append (_cbb ,_dbe .ValueList );};return MakeArrayResult (_cbb );};
// Nominal implements the Excel NOMINAL function.
func Nominal (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u004e\u004f\u004d\u0049\u004e\u0041\u004c\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074w\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("NO\u004d\u0049N\u0041\u004c\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006e\u006f\u006d\u0069\u006e\u0061\u006c\u0020\u0069\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062e\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072g\u0075m\u0065\u006et");};_eeef :=args [0].ValueNumber ;if _eeef <=0{return MakeErrorResultType (ErrorTypeNum ,"\u004e\u004fM\u0049\u004e\u0041\u004c\u0020r\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0065\u0066\u0066\u0065\u0063\u0074\u0020\u0069\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u004e\u004f\u004d\u0049\u004e\u0041\u004c\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0063\u006f\u006d\u0070\u006f\u0075\u006e\u0064\u0069\u006e\u0067\u0020\u0070\u0065\u0072i\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074");};_cfcbc :=float64 (int (args [1].ValueNumber ));if _cfcbc < 1{return MakeErrorResultType (ErrorTypeNum ,"\u004e\u004f\u004d\u0049\u004e\u0041\u004c\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006eum\u0062e\u0072\u0020\u006f\u0066\u0020\u0063\u006f\u006d\u0070\u006f\u0075\u006ed\u0069\u006e\u0067\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065 \u0031\u0020\u006f\u0072\u0020\u006d\u006f\u0072\u0065");};return MakeNumberResult ((_ggd .Pow (_eeef +1,1/_cfcbc )-1)*_cfcbc );};func (_cbdg Result )AsString ()Result {switch _cbdg .Type {case ResultTypeNumber :return MakeStringResult (_cbdg .Value ());default:return _cbdg ;};};
// GetWidth returns 0 for the invalid reference context.
func (_bfee *ivr )GetWidth (colIdx int )float64 {return float64 (0)};
// MakeNumberResult constructs a number result.
func MakeNumberResult (v float64 )Result {if v ==_ggd .Copysign (0,-1){v =0;};return Result {Type :ResultTypeNumber ,ValueNumber :v };};
// SumProduct is an implementation of the Excel SUMPRODUCT() function.
func SumProduct (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0053\u0055\u004d\u0050\u0052\u004f\u0044U\u0043\u0054\u0028)\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bdegc :=args [0].Type ;for _ ,_cgfgc :=range args {if _cgfgc .Type !=_bdegc {return MakeErrorResult ("\u0053\u0055M\u0050\u0052\u004f\u0044\u0055C\u0054\u0028\u0029\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u006c\u006c\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u006f\u0066\u0020\u0074\u0068\u0065\u0020\u0073\u0061\u006d\u0065\u0020\u0074\u0079\u0070\u0065");};};switch _bdegc {case ResultTypeNumber :return Product (args );case ResultTypeList ,ResultTypeArray :_bebcd :=len (args [0].ListValues ());_dfccf :=make ([]float64 ,_bebcd );for _abcga :=range _dfccf {_dfccf [_abcga ]=1.0;};for _ ,_cbce :=range args {if len (_cbce .ListValues ())!=_bebcd {return MakeErrorResult ("\u0053\u0055\u004d\u0050\u0052\u004f\u0044\u0055\u0043\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069re\u0073 \u0061\u006c\u006c\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074s\u0020\u0074\u006f\u0020\u0068\u0061\u0076\u0065\u0020\u0074\u0068\u0065\u0020\u0073\u0061\u006d\u0065 \u0064\u0069\u006d\u0065\u006e\u0073\u0069\u006f\u006e");};for _dagae ,_fggd :=range _cbce .ListValues (){_fggd =_fggd .AsNumber ();if _fggd .Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u0055\u004d\u0050\u0052\u004fD\u0055\u0043\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u006c\u006c\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020n\u0075m\u0065\u0072\u0069\u0063");};_dfccf [_dagae ]=_dfccf [_dagae ]*_fggd .ValueNumber ;};};_beacg :=0.0;for _ ,_dbbg :=range _dfccf {_beacg +=_dbbg ;};return MakeNumberResult (_beacg );};return MakeNumberResult (1.0);};var _bbg =map[string ]*_gg .Regexp {};
// ErrorType is a formula evaluation error type.
type ErrorType byte ;func _cbfc (_bbbb Result )bool {_bbega :=_bbbb .Type ;return _bbega !=ResultTypeArray &&_bbega !=ResultTypeList ;};
// String returns a string representation of SheetPrefixExpr.
func (_cddae SheetPrefixExpr )String ()string {return _cddae ._bece };
// Rept is an implementation of the Excel REPT function that returns n copies of
// a string.
func Rept (args []Result )Result {if len (args )!=2{return MakeErrorResult ("R\u0045\u0050\u0054\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};_agag :=args [0].AsString ();if _agag .Type !=ResultTypeString {return MakeErrorResult ("\u0050R\u004f\u0050E\u0052\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020f\u0069\u0072\u0073\u0074\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062e\u0020\u0061\u0020\u0073\u0074\u0072\u0069\u006e\u0067");};_eccc :=args [1].AsNumber ();if _eccc .Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052O\u0050\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _eccc .ValueNumber < 0{return MakeErrorResult ("\u0050\u0052\u004fP\u0045\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074o\u0020\u0062\u0065\u0020\u003e\u003d\u0020\u0030");};if _eccc .ValueNumber ==0{return MakeStringResult ("");};_cfcg :=_db .Buffer {};for _bfge :=0;_bfge < int (_eccc .ValueNumber );_bfge ++{_cfcg .WriteString (_agag .ValueString );};return MakeStringResult (_cfcg .String ());};
// Mod is an implementation of the Excel MOD function which returns the
// remainder after division. It requires two numeric argumnts.
func Mod (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u004d\u004fD(\u0029\u0020\u0072e\u0071\u0075\u0069\u0072es \u0074wo\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_abdb :=args [0].AsNumber ();_cfedc :=args [1].AsNumber ();if _abdb .Type !=ResultTypeNumber ||_cfedc .Type !=ResultTypeNumber {return MakeErrorResult ("\u004d\u004fD(\u0029\u0020\u0072e\u0071\u0075\u0069\u0072es \u0074wo\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};if _cfedc .ValueNumber ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"M\u004fD\u0028\u0029\u0020\u0064\u0069\u0076\u0069\u0064e\u0020\u0062\u0079\u0020ze\u0072\u006f");};_fdbe ,_gdecaf :=_ggd .Modf (_abdb .ValueNumber /_cfedc .ValueNumber );if _gdecaf < 0{_fdbe --;};return MakeNumberResult (_abdb .ValueNumber -_cfedc .ValueNumber *_fdbe );};
// String returns a string representation of a horizontal range.
func (_gbac HorizontalRange )String ()string {return _gbac .horizontalRangeReference ()};func _dfad (_afddd Context ,_faca Evaluator ,_edga ,_fagbg string )Result {_dccda ,_caeeg :=_ac .ParseCellReference (_edga );if _caeeg !=nil {return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0061bl\u0065\u0020\u0074\u006f\u0020\u0070\u0061\u0072\u0073e\u0020r\u0061n\u0067e\u0020\u0025\u0073\u003a\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_edga ,_caeeg .Error ()));};_bebdd ,_cegdg :=_dccda .ColumnIdx ,_dccda .RowIdx ;_aadba ,_debaa :=_ac .ParseCellReference (_fagbg );if _debaa !=nil {return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0061bl\u0065\u0020\u0074\u006f\u0020\u0070\u0061\u0072\u0073e\u0020r\u0061n\u0067e\u0020\u0025\u0073\u003a\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0025\u0073",_fagbg ,_debaa .Error ()));};_fefed ,_ebdb :=_aadba .ColumnIdx ,_aadba .RowIdx ;_agadg :=[][]Result {};for _aadc :=_cegdg ;_aadc <=_ebdb ;_aadc ++{_bada :=[]Result {};for _cegg :=_bebdd ;_cegg <=_fefed ;_cegg ++{_eacc :=_afddd .Cell (_b .Sprintf ("\u0025\u0073\u0025\u0064",_ac .IndexToColumn (_cegg ),_aadc ),_faca );_bada =append (_bada ,_eacc );};_agadg =append (_agadg ,_bada );};if len (_agadg )==1{if len (_agadg [0])==1{return _agadg [0][0];};return MakeListResult (_agadg [0]);};return MakeArrayResult (_agadg );};var _bag =[]int {31,28,31,30,31,30,31,31,30,31,30,31};func _abfb (_cebe []Result ,_ggbb string )(*couponArgs ,Result ){_gacf :=len (_cebe );if _gacf !=3&&_gacf !=4{return nil ,MakeErrorResult (_ggbb +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u006f\u0072\u0020\u0066o\u0075\u0072\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_gafd ,_dbeab ,_aead :=_gbce (_cebe [0],_cebe [1],_ggbb );if _aead .Type ==ResultTypeError {return nil ,_aead ;};if _cebe [2].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_ggbb +"\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0066\u0072\u0065\u0071\u0075\u0065\u006e\u0063\u0079 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_afbf :=_cebe [2].ValueNumber ;if !_dccgg (_afbf ){return nil ,MakeErrorResult ("\u0049n\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0066\u0072\u0065q\u0075\u0065\u006e\u0063\u0079\u0020\u0066\u006f\u0072\u0020"+_ggbb );};_cafge :=0;if _gacf ==4&&_cebe [3].Type !=ResultTypeEmpty {if _cebe [3].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_ggbb +"\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020b\u0061\u0073\u0069\u0073\u0020\u0074\u006f\u0020b\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cafge =int (_cebe [3].ValueNumber );if !_bbf (_cafge ){return nil ,MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020fo\u0072\u0020"+_ggbb );};};return &couponArgs {_gafd ,_dbeab ,int (_afbf ),_cafge },_dabe ;};const (_dbdf cmpResult =0;_agaa cmpResult =-1;_egac cmpResult =1;_gdbc cmpResult =2;);func (_bdga ResultType )String ()string {if _bdga >=ResultType (len (_cbcga )-1){return _b .Sprintf ("\u0052\u0065\u0073\u0075\u006c\u0074\u0054\u0079\u0070e\u0028\u0025\u0064\u0029",_bdga );};return _dedcd [_cbcga [_bdga ]:_cbcga [_bdga +1]];};const _acaaf =57376;
// Indirect is an implementation of the Excel INDIRECT function that returns the
// contents of a cell.
func Indirect (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1&&len (args )!=2{return MakeErrorResult ("\u0049\u004e\u0044\u0049\u0052\u0045\u0043\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006f\u006e\u0065\u0020\u006f\u0072 \u0074\u0077\u006f\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};_gccb :=args [0].AsString ();if _gccb .Type !=ResultTypeString {return MakeErrorResult ("\u0049\u004e\u0044\u0049\u0052\u0045\u0043\u0054\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069r\u0073t\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066 \u0074\u0079\u0070\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067");};return ctx .Cell (_gccb .ValueString ,ev );};const _dca ="\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u002d\u0028\u0028\u005b\u0030-\u0039]\u0029\u002b\u0029\u002d\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029";func _cfcc (_dfead Result ,_cadg *criteriaParsed )bool {_dacd :=_g .ToLower (_dfead .ValueString );_dcge :=_cadg ._febd ._faea ;_dafe :=_cadg ._febd ._ebde ;if _dcge ==_ebfdg {return _dacd ==_dafe ||_be .Match (_dafe ,_dacd );};if _dfead .Type !=ResultTypeEmpty {if _dacd ==_cadg ._gcece ||_be .Match (_cadg ._gcece ,_dacd ){return true ;};if _ ,_acfd :=_dc .ParseFloat (_dafe ,64);_acfd ==nil {return false ;};switch _dcge {case _cbgc :return _dacd <=_dafe ;case _eegbb :return _dacd >=_dafe ;case _gfcf :return _dacd < _dafe ;case _bbae :return _dacd > _dafe ;};};return false ;};
// Context is a formula execution context. Formula evaluation uses the context
// to retreive information from sheets.
type Context interface{
// Cell returns the result of evaluating a cell.
Cell (_gbc string ,_aga Evaluator )Result ;
// Sheet returns an evaluation context for a given sheet name. This is used
// when evaluating cells that pull data from other sheets (e.g. ='Sheet 2'!A1).
Sheet (_adb string )Context ;
// GetEpoch returns the time epoch of the context's Workbook.
GetEpoch ()_dd .Time ;
// GetFilename returns the full filename of the context's Workbook.
GetFilename ()string ;
// GetWidth returns a worksheet's column width.
GetWidth (_adf int )float64 ;
// GetFormat returns a cell's format.
GetFormat (_cba string )string ;
// GetLabelPrefix returns cell's label prefix dependent on cell horizontal alignment.
GetLabelPrefix (_caf string )string ;
// GetFormat returns if cell is protected.
GetLocked (_gcc string )bool ;
// HasFormula returns if cell contains formula.
HasFormula (_fee string )bool ;
// IsBool returns if cell contains boolean value.
IsBool (_bebe string )bool ;
// IsDBCS returns if workbook default language is among DBCS.
IsDBCS ()bool ;
// LastColumn returns the name of last column which contains data in range of context sheet's given rows.
LastColumn (_ded ,_fbf int )string ;
// LastRow returns the name of last row which contains data in range of context sheet's given columns.
LastRow (_fcd string )int ;
// SetLocked returns sets cell's protected attribute.
SetLocked (_fbc string ,_cff bool );
// NamedRange returns a named range.
NamedRange (_cdc string )Reference ;
// SetOffset is used so that the Context can evaluate cell references
// differently when they are not absolute (e.g. not like '$A$5'). See the
// shared formula support in Cell for usage.
SetOffset (_bgb ,_dgd uint32 );};func _fcbd (_ecfd ,_gdec ,_effe ,_gbfb ,_fcdg ,_bedgf float64 )float64 {var _bbge ,_edgc float64 ;_fcfe :=0.0;_fgac :=_ggd .Ceil (_fcdg );_fegac :=_ecfd -_gdec ;_bbde :=false ;_dbcca :=0.0;for _agbf :=1.0;_agbf <=_fgac ;_agbf ++{if !_bbde {_bbge =_adag (_ecfd ,_gdec ,_effe ,_agbf ,_bedgf );_dbcca =_fegac /(_effe -_agbf +1);if _dbcca > _bbge {_edgc =_dbcca ;_bbde =true ;}else {_edgc =_bbge ;_fegac -=_bbge ;};}else {_edgc =_dbcca ;};if _agbf ==_fgac {_edgc *=_fcdg +1-_fgac ;};_fcfe +=_edgc ;};return _fcfe ;};
// NewFunction constructs a new function call expression.
func NewFunction (name string ,args []Expression )Expression {return FunctionCall {_beab :name ,_febcbff :args };};const _bdge =57347;func _bddf (_fegfc []Result ,_gcdb countMode )float64 {_fbgb :=0.0;for _ ,_eegfe :=range _fegfc {switch _eegfe .Type {case ResultTypeNumber :if _gcdb ==_fedgb ||(_gcdb ==_cdcca &&!_eegfe .IsBoolean ){_fbgb ++;};case ResultTypeList ,ResultTypeArray :_fbgb +=_bddf (_eegfe .ListValues (),_gcdb );case ResultTypeString :if _gcdb ==_fedgb {_fbgb ++;};case ResultTypeEmpty :if _gcdb ==_bbbed {_fbgb ++;};};};return _fbgb ;};type Expression interface{Eval (_bfc Context ,_eag Evaluator )Result ;Reference (_fcbf Context ,_acb Evaluator )Reference ;String ()string ;Update (_gff *_fc .UpdateQuery )Expression ;};const _fedf =2;
// Xirr implements the Excel XIRR function.
func Xirr (args []Result )Result {_ebb :=len (args );if _ebb !=2&&_ebb !=3{return MakeErrorResult ("\u0058\u0049RR\u0020\u0072\u0065q\u0075\u0069\u0072\u0065s t\u0077o \u006f\u0072\u0020\u0074\u0068\u0072\u0065e \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_aeeb ,_febga :=_cafgg (args [0],args [1],"\u0058\u0049\u0052\u0052");if _febga .Type ==ResultTypeError {return _febga ;};_adgd :=_aeeb ._fbafa ;_ffcg :=_aeeb ._afddg ;_eedae :=0.1;if _ebb ==3&&args [2].Type !=ResultTypeEmpty {if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0058\u0049\u0052\u0052\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0067\u0075\u0065\u0073\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_eedae =args [2].ValueNumber ;if _eedae <=-1{return MakeErrorResult ("\u0058\u0049\u0052\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0067\u0075\u0065\u0073\u0073\u0020\u0074\u006f\u0020\u0062e\u0020\u006d\u006f\u0072\u0065 \u0074\u0068a\u006e\u0020\u002d\u0031");};};return _aefb (_adgd ,_ffcg ,_eedae );};func _gfdca (_degdf []Result ,_ggfgb []string ,_gabb bool )[]string {for _ ,_agbg :=range _degdf {switch _agbg .Type {case ResultTypeEmpty :if !_gabb {_ggfgb =append (_ggfgb ,"");};case ResultTypeString :if _agbg .ValueString !=""||!_gabb {_ggfgb =append (_ggfgb ,_agbg .ValueString );};case ResultTypeNumber :_ggfgb =append (_ggfgb ,_agbg .Value ());case ResultTypeList :_ggfgb =_baabg (_ggfgb ,_gfdca (_agbg .ValueList ,[]string {},_gabb ));case ResultTypeArray :for _ ,_dbcbf :=range _agbg .ValueArray {_ggfgb =_baabg (_ggfgb ,_gfdca (_dbcbf ,[]string {},_gabb ));};};};return _ggfgb ;};
// Rri implements the Excel RRI function.
func Rri (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u0052\u0052\u0049\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068r\u0065e\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0052I\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ecce :=args [0].ValueNumber ;if _ecce <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0052R\u0049\u0020r\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u006f\u0066\u0020p\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062e\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0052\u0049\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073 p\u0072\u0065\u0073\u0065\u006e\u0074 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_eddeb :=args [1].ValueNumber ;if _eddeb <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0052\u0052\u0049\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065\u006et\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("R\u0052\u0049\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0066\u0075\u0074\u0075\u0072e \u0076\u0061\u006c\u0075e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dbgf :=args [2].ValueNumber ;if _dbgf < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0052R\u0049\u0020r\u0065\u0071\u0075\u0069r\u0065\u0073\u0020f\u0075\u0074\u0075\u0072\u0065\u0020\u0076\u0061\u006cue\u0020\u0074\u006f \u0062\u0065 \u006e\u006f\u006e\u0020\u006e\u0065g\u0061\u0074i\u0076\u0065");};return MakeNumberResult (_ggd .Pow (_dbgf /_eddeb ,1/_ecce )-1);};
// MaxA is an implementation of the Excel MAXA() function.
func MaxA (args []Result )Result {return _baaf (args ,true )};const _dbbc =57377;
// CeilingPrecise is an implementation of the CEILING.PRECISE function which
// returns the ceiling of a number.
func CeilingPrecise (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0043\u0045\u0049\u004c\u0049\u004e\u0047\u002eP\u0052\u0045\u0043IS\u0045\u0028\u0029\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020o\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};if len (args )> 2{return MakeErrorResult ("\u0043\u0045I\u004c\u0049\u004e\u0047\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0074\u0020\u006d\u006f\u0073\u0074\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_bbdb :=args [0].AsNumber ();if _bbdb .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069r\u0073\u0074\u0020\u0061\u0072g\u0075\u006d\u0065\u006e\u0074 \u0074\u006f\u0020\u0043\u0045\u0049\u004c\u0049\u004e\u0047\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bcefc :=float64 (1);if _bbdb .ValueNumber < 0{_bcefc =-1;};if len (args )> 1{_caae :=args [1].AsNumber ();if _caae .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0043E\u0049L\u0049\u004e\u0047\u002e\u0050\u0052\u0045\u0043\u0049\u0053\u0045\u0028\u0029\u0020\u006d\u0075\u0073\u0074 \u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bcefc =_ggd .Abs (_caae .ValueNumber );};if len (args )==1{return MakeNumberResult (_ggd .Ceil (_bbdb .ValueNumber ));};_cfbf :=_bbdb .ValueNumber ;_cfbf ,_daaeg :=_ggd .Modf (_cfbf /_bcefc );if _daaeg !=0{if _bbdb .ValueNumber > 0{_cfbf ++;};};return MakeNumberResult (_cfbf *_bcefc );};
// Char is an implementation of the Excel CHAR function that takes an integer in
// the range [0,255] and returns the corresponding ASCII character.
func Char (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0043\u0048\u0041\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0061\u0020\u0073\u0069\u006e\u0067l\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_cafee :=args [0].AsNumber ();if _cafee .Type !=ResultTypeNumber {return MakeErrorResult ("\u0043\u0048\u0041\u0052\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0061\u0020\u0073\u0069\u006e\u0067l\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_gabd :=int (_cafee .ValueNumber );if _gabd < 0||_gabd > 255{return MakeErrorResult ("\u0043H\u0041\u0052 \u0072\u0065\u0071\u0075i\u0072\u0065\u0073 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073 i\u006e\u0020\u0074h\u0065\u0020r\u0061\u006e\u0067\u0065\u0020\u005b0\u002c\u00325\u0035\u005d");};return MakeStringResult (_b .Sprintf ("\u0025\u0063",_gabd ));};
// True is an implementation of the Excel TRUE() function. It takes no
// arguments.
func True (args []Result )Result {if len (args )!=0{return MakeErrorResult ("\u0054\u0052\u0055E \u0074\u0061\u006b\u0065\u0073\u0020\u006e\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};return MakeBoolResult (true );};const _dba ="\u0028\u0028\u006a\u0061\u006e|\u006a\u0061\u006e\u0075\u0061\u0072\u0079\u0029\u007c\u0028\u0066\u0065\u0062\u007c\u0066\u0065\u0062\u0072\u0075a\u0072\u0079\u0029\u007c\u0028\u006da\u0072\u007c\u006da\u0072\u0063\u0068\u0029\u007c\u0028\u0061\u0070\u0072\u007c\u0061\u0070\u0072\u0069\u006c\u0029\u007c\u0028\u006d\u0061\u0079\u0029\u007c\u0028j\u0075\u006e\u007cj\u0075\u006e\u0065\u0029\u007c\u0028\u006a\u0075\u006c\u007c\u006a\u0075\u006c\u0079\u0029\u007c\u0028a\u0075\u0067\u007c\u0061\u0075\u0067\u0075\u0073t\u0029\u007c\u0028\u0073\u0065\u0070\u007c\u0073\u0065\u0070\u0074\u0065\u006d\u0062\u0065\u0072\u0029\u007c\u0028o\u0063\u0074\u007c\u006f\u0063\u0074\u006f\u0062\u0065\u0072\u0029\u007c\u0028\u006e\u006f\u0076\u007c\u006e\u006f\u0076\u0065\u006d\u0062e\u0072\u0029\u007c\u0028\u0064\u0065\u0063\u007c\u0064\u0065\u0063\u0065\u006d\u0062\u0065\u0072\u0029\u0029";func _cbeae (_gfgf string )string {_gfgf =_g .Replace (_gfgf ,"\u000a","\u005c\u006e",-1);_gfgf =_g .Replace (_gfgf ,"\u000d","\u005c\u0072",-1);_gfgf =_g .Replace (_gfgf ,"\u0009","\u005c\u0074",-1);return _gfgf ;};func _efdb (_fgcf []Result ,_gadbf string )(*cumulArgs ,Result ){if len (_fgcf )!=6{return nil ,MakeErrorResult (_gadbf +"\u0020\u0072\u0065qu\u0069\u0072\u0065\u0073\u0020\u0073\u0069\u0078\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _fgcf [0].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gadbf +"\u0020\u0072eq\u0075\u0069\u0072e\u0073\u0020\u0072\u0061te \u0074o \u0062\u0065\u0020\u006e\u0075\u006d\u0062er\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_daaba :=_fgcf [0].ValueNumber ;if _daaba <=0{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020r\u0065\u0071u\u0069\u0072\u0065s\u0020\u0072\u0061\u0074\u0065\u0020\u0074o\u0020\u0062\u0065\u0020\u0070\u006fs\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if _fgcf [1].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gadbf +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_bbec :=_fgcf [1].ValueNumber ;if _bbec <=0{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020p\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f \u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u0061r\u0067\u0075\u006de\u006e\u0074");};if _fgcf [2].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gadbf +"\u0020r\u0065\u0071u\u0069\u0072\u0065s\u0020\u0070\u0072\u0065\u0073\u0065\u006et\u0020\u0076\u0061\u006c\u0075\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cfcb :=_fgcf [2].ValueNumber ;if _cfcb <=0{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065n\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065 \u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006dbe\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if _fgcf [3].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gadbf +"\u0020r\u0065\u0071u\u0069\u0072\u0065\u0073 \u0073\u0074\u0061r\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020to\u0020\u0062\u0065 \u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};_acgfb :=_fgcf [3].ValueNumber ;if _acgfb <=0{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073t\u0061\u0072\u0074\u0020\u0070\u0065\u0072\u0069o\u0064 \u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if _fgcf [4].Type !=ResultTypeNumber {return nil ,MakeErrorResult (_gadbf +"\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0065\u006e\u0064\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ege :=_fgcf [4].ValueNumber ;if _ege <=0{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0065\u006e\u0064\u0020\u0070\u0065\u0072\u0069\u006fd\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};if _ege < _acgfb {return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +"\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0065\u006e\u0064\u0020p\u0065\u0072\u0069\u006f\u0064\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006c\u0061\u0074\u0065\u0072\u0020o\u0072\u0020\u0065\u0071\u0075a\u006c\u0020\u0074\u006f\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0070\u0065\u0072\u0069\u006f\u0064");};if _ege > _bbec {return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +" \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074o\u0020\u0062\u0065\u0020\u0069\u006e\u0020\u0070\u0065\u0072io\u0064\u0073\u0020r\u0061n\u0067\u0065");};_ffeg :=int (_fgcf [5].ValueNumber );if _ffeg !=0&&_ffeg !=1{return nil ,MakeErrorResultType (ErrorTypeNum ,_gadbf +" \u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0074\u0079\u0070\u0065\u0020\u0074\u006f \u0062\u0065\u00200\u0020o\u0072\u0020\u0031");};return &cumulArgs {_daaba ,_bbec ,_cfcb ,_acgfb ,_ege ,_ffeg },_dabe ;};
// AsNumber attempts to intepret a string cell value as a number. Upon success,
// it returns a new number result, upon failure it returns the original result.
// This is used as functions return strings that can then act like number (e.g.
// LEFT(1.2345,3) + LEFT(1.2345,3) = 2.4)
func (_aeaa Result )AsNumber ()Result {if _aeaa .Type ==ResultTypeString {_gfff ,_daedbe :=_dc .ParseFloat (_aeaa .ValueString ,64);if _daedbe ==nil {return MakeNumberResult (_gfff );};};if _aeaa .Type ==ResultTypeEmpty {return MakeNumberResult (0);};return _aeaa ;};var _abde =[...]int {0,7,3,3,3,8,8,8,8,1,1,1,2,2,2,2,2,14,15,15,17,17,4,4,4,13,5,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,12,12,12,9,9,9,16,16,11,10,10};type parsedSearchObject struct{_fccb string ;_ddadg string ;_ggbf int ;};func Unicode (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0055\u004e\u0049\u0043\u004fD\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020s\u0069\u006e\u0067\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bdbfb :=args [0].AsString ();if _bdbfb .Type !=ResultTypeString {return MakeErrorResult ("\u0055\u004e\u0049\u0043\u004fD\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020s\u0069\u006e\u0067\u006c\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if len (_bdbfb .ValueString )==0{return MakeErrorResult ("\u0055\u004e\u0049\u0043\u004f\u0044\u0045 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073 \u0061\u0020\u006e\u006f\u006e\u002d\u007a\u0065\u0072\u006f\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeNumberResult (float64 (_bdbfb .ValueString [0]));};var _dbbe =map[string ]*_gg .Regexp {};
// Update updates the FunctionCall references after removing a row/column.
func (_cgbcg FunctionCall )Update (q *_fc .UpdateQuery )Expression {_dcgg :=[]Expression {};for _ ,_gccd :=range _cgbcg ._febcbff {_geef :=_gccd .Update (q );_dcgg =append (_dcgg ,_geef );};return FunctionCall {_beab :_cgbcg ._beab ,_febcbff :_dcgg };};const _gfddb int =0;
// Price implements the Excel PRICE function.
func Price (args []Result )Result {_gegf :=len (args );if _gegf !=6&&_gegf !=7{return MakeErrorResult ("\u0050\u0052I\u0043\u0045\u0020\u0072e\u0071\u0075i\u0072\u0065\u0073\u0020\u0073\u0069\u0078\u0020o\u0072\u0020\u0073\u0065\u0076\u0065\u006e\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_fgcfa ,_abfbf ,_cbcb :=_gbce (args [0],args [1],"\u0050\u0052\u0049C\u0045");if _cbcb .Type ==ResultTypeError {return _cbcb ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052\u0049CE\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0072a\u0074e\u0020o\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_gegb :=args [2].ValueNumber ;if _gegb < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u006eo\u0074\u0020\u0062\u0065\u0020n\u0065\u0067a\u0074\u0069\u0076\u0065");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("P\u0052\u0049\u0043\u0045\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073 \u0079\u0069\u0065\u006c\u0064\u0020\u006ff\u0020\u0074\u0079\u0070\u0065\u0020\u006e\u0075\u006d\u0062e\u0072");};_fgcdc :=args [3].ValueNumber ;if _fgcdc < 0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0079\u0069\u0065\u006c\u0064 \u0074\u006f\u0020\u006e\u006f\u0074\u0020\u0062\u0065\u0020\u006e\u0065\u0067a\u0074\u0069\u0076\u0065");};if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("P\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0072\u0065\u0064em\u0070\u0074\u0069\u006fn\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_eagfa :=args [4].ValueNumber ;if _eagfa <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u0052\u0049\u0043\u0045\u0020r\u0065\u0071\u0075i\u0072\u0065\u0073 \u0072\u0065\u0064\u0065\u006d\u0070\u0074\u0069\u006f\u006e \u0074\u006f\u0020\u0062\u0065 p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ebcac :=args [5];if _ebcac .Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052\u0049\u0043\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0066\u0072\u0065\u0071\u0075e\u006e\u0063\u0079\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u006eu\u006d\u0062\u0065\u0072");};_gagd :=_ebcac .ValueNumber ;if !_dccgg (_gagd ){return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0066\u0072e\u0071u\u0065n\u0063\u0065\u0020\u0076\u0061\u006c\u0075e");};_cfec :=0;if _gegf ==7&&args [6].Type !=ResultTypeEmpty {if args [6].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u0052\u0049C\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cfec =int (args [6].ValueNumber );if !_bbf (_cfec ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063or\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069s\u0020a\u0072g\u0075m\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0050\u0052\u0049\u0043\u0045");};};_cacb ,_cbcb :=_gbbb (_fgcfa ,_abfbf ,_gegb ,_fgcdc ,_eagfa ,_gagd ,_cfec );if _cbcb .Type ==ResultTypeError {return _cbcb ;};return MakeNumberResult (_cacb );};const (ReferenceTypeInvalid ReferenceType =iota ;ReferenceTypeCell ;ReferenceTypeHorizontalRange ;ReferenceTypeVerticalRange ;ReferenceTypeNamedRange ;ReferenceTypeRange ;ReferenceTypeSheet ;);
// SetLocked does nothing for the invalid reference context.
func (_ccfd *ivr )SetLocked (cellRef string ,locked bool ){};
// FactDouble is an implementation of the excel FACTDOUBLE function which
// returns the double factorial of a positive numeric input.
func FactDouble (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0046\u0041C\u0054\u0044\u004f\u0055\u0042\u004c\u0045\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ggage :=args [0].AsNumber ();if _ggage .Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0041C\u0054\u0044\u004f\u0055\u0042\u004c\u0045\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if _ggage .ValueNumber < 0{return MakeErrorResult ("\u0046A\u0043\u0054D\u004f\u0055\u0042\u004cE\u0028\u0029\u0020a\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u006f\u006ely\u0020\u0070\u006fs\u0069\u0074i\u0076\u0065\u0020\u0061\u0072\u0067u\u006d\u0065n\u0074\u0073");};_dbfb :=float64 (1);_ceaf :=_ggd .Trunc (_ggage .ValueNumber );for _cdec :=_ceaf ;_cdec > 1;_cdec -=2{_dbfb *=_cdec ;};return MakeNumberResult (_dbfb );};
// Update updates references in the PrefixRangeExpr after removing a row/column.
func (_baed PrefixRangeExpr )Update (q *_fc .UpdateQuery )Expression {_gaae :=_baed ;_abbc :=_baed ._acbed .String ();if _abbc ==q .SheetToUpdate {_fecd :=*q ;_fecd .UpdateCurrentSheet =true ;_gaae ._eeafd =_baed ._eeafd .Update (&_fecd );_gaae ._cedga =_baed ._cedga .Update (&_fecd );};return _gaae ;};func _cfeae (_gbfd []Result ,_dfggb bool ,_eedg string )Result {var _fagf ,_ccag string ;if _dfggb {_fagf ="\u0074\u0068\u0072e\u0065";_ccag ="\u006f\u0064\u0064";}else {_fagf ="\u0074\u0077\u006f";_ccag ="\u0065\u0076\u0065\u006e";};_accdb :=len (_gbfd );if (_dfggb &&_accdb < 3)||(!_dfggb &&_accdb < 2){return MakeErrorResult (_eedg +"\u0020\u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020"+_fagf +" \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0073");};if (_accdb /2*2==_accdb )==_dfggb {return MakeErrorResult (_eedg +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020"+_ccag +" \u006eu\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020a\u0072\u0067\u0075\u006den\u0074\u0073");};_bae :=-1;_gegg :=-1;for _dbgc :=0;_dbgc < _accdb ;_dbgc +=2{_fbef :=_gbfd [_dbgc ];if _fbef .Type !=ResultTypeArray &&_fbef .Type !=ResultTypeList {return MakeErrorResult (_eedg +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u006e\u0067\u0065\u0073\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065 \u006c\u0069\u0073\u0074\u0020o\u0072\u0020a\u0072\u0072\u0061\u0079");};_gbbef :=_ggecf (_fbef );if _gegg ==-1{_gegg =len (_gbbef );_bae =len (_gbbef [0]);}else if len (_gbbef )!=_gegg ||len (_gbbef [0])!=_bae {return MakeErrorResult (_eedg +"\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0061l\u006c\u0020\u0072\u0061n\u0067\u0065\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0068\u0065\u0020\u0073\u0061\u006d\u0065\u0020\u0073\u0069\u007a\u0065");};if _dfggb &&_dbgc ==0{_dbgc --;};};return _dabe ;};const _eae ="\u0042\u0069\u006e\u004f\u0070\u0054y\u0070\u0065\u0055\u006e\u006bn\u006fw\u006e\u0042\u0069\u006eO\u0070\u0054\u0079\u0070\u0065\u0050\u006c\u0075\u0073\u0042\u0069\u006eO\u0070\u0054\u0079\u0070\u0065\u004d\u0069\u006e\u0075\u0073\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065M\u0075lt\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065\u0044\u0069\u0076\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065\u0045\u0078\u0070\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065\u004c\u0054\u0042\u0069\u006eO\u0070\u0054\u0079\u0070\u0065G\u0054B\u0069\u006eO\u0070\u0054\u0079\u0070\u0065\u0045\u0051\u0042\u0069nO\u0070\u0054\u0079\u0070\u0065\u004c\u0045\u0051\u0042i\u006eO\u0070\u0054\u0079\u0070\u0065\u0047\u0045\u0051\u0042\u0069\u006e\u004f\u0070\u0054\u0079\u0070\u0065N\u0045\u0042\u0069\u006eO\u0070\u0054\u0079\u0070\u0065\u0043\u006f\u006e\u0063\u0061\u0074";const _cgadg =57378;
// PrefixVerticalRange is a range expression that when evaluated returns a list of Results from references like Sheet1!AA:IJ (all cells from columns AA to IJ of sheet 'Sheet1').
type PrefixVerticalRange struct{_ecac Expression ;_eacgc ,_faag string ;};func (_dgcg *ivr )Cell (ref string ,ev Evaluator )Result {return MakeErrorResult ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065");};
// Rows implements the Excel ROWS function.
func Rows (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u0052\u004f\u0057\u0053\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074");};_aaag :=args [0];if _aaag .Type !=ResultTypeArray &&_aaag .Type !=ResultTypeList {return MakeErrorResult ("\u0052\u004f\u0057S\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074y\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_afce :=_aaag .ValueArray ;if len (_afce )==0{return MakeErrorResult ("\u0052O\u0057\u0053 \u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0072r\u0061\u0079\u0020\u0074\u006f\u0020c\u006f\u006e\u0074\u0061\u0069\u006e\u0020\u0061\u0074\u0020\u006ce\u0061\u0073\u0074\u0020\u0031\u0020\u0072\u006f\u0077");};return MakeNumberResult (float64 (len (_afce )));};
// Not is an implementation of the Excel NOT() function and takes a single
// argument.
func Not (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u004eO\u0054\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065 \u0061\u0072\u0067\u0075\u006d\u0065\u006et");};switch args [0].Type {case ResultTypeError :return args [0];case ResultTypeString ,ResultTypeList :return MakeErrorResult ("\u004e\u004f\u0054\u0020\u0065\u0078\u0070\u0065\u0063\u0074s\u0020\u0061\u0020\u006e\u0075\u006d\u0065r\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");case ResultTypeNumber :return MakeBoolResult (!(args [0].ValueNumber !=0));default:return MakeErrorResult ("u\u006e\u0068\u0061\u006e\u0064\u006ce\u0064\u0020\u004e\u004f\u0054\u0020\u0061\u0072\u0067u\u006d\u0065\u006et\u0020t\u0079\u0070\u0065");};};
// GetLocked returns FALSE for the invalid reference context.
func (_gfddg *ivr )GetLocked (cellRef string )bool {return false };func _dccgg (_cac float64 )bool {return _cac ==1||_cac ==2||_cac ==4};const _fgabg =57371;func _gdbed (_caba float64 )float64 {_ebbc :=float64 (1);for _dded :=float64 (2);_dded <=_caba ;_dded ++{_ebbc *=_dded ;};return _ebbc ;};
// Even is an implementation of the Excel EVEN() that rounds a number to the
// nearest even integer.
func Even (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0045\u0056\u0045\u004e(\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_faga :=args [0].AsNumber ();if _faga .Type !=ResultTypeNumber {return MakeErrorResult ("\u0045\u0056\u0045N\u0028\u0029\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cedcd :=_ggd .Signbit (_faga .ValueNumber );_gcgg ,_facb :=_ggd .Modf (_faga .ValueNumber /2);_adfd :=_gcgg *2;if _facb !=0{if !_cedcd {_adfd +=2;}else {_adfd -=2;};};return MakeNumberResult (_adfd );};
// NewConstArrayExpr constructs a new constant array expression with a given data.
func NewConstArrayExpr (data [][]Expression )Expression {return &ConstArrayExpr {_fbd :data }};func _fgb (_dcea float64 )float64 {return float64 (int (_dcea +0.5))};
// NewBool constructs a new boolean expression.
func NewBool (v string )Expression {_fdf ,_fde :=_dc .ParseBool (v );if _fde !=nil {_ea .Log .Debug ("\u0065\u0072\u0072\u006f\u0072\u0020p\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0066\u006f\u0072\u006d\u0075\u006ca\u0020\u0062\u006f\u006f\u006c\u0020\u0025s\u003a\u0020\u0025\u0076",v ,_fde );};return Bool {_ba :_fdf };};
// Text is an implementation of the Excel TEXT function.
func Text (args []Result )Result {if len (args )!=2{return MakeErrorResult ("T\u0045\u0058\u0054\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};_cbfbb :=args [0];if _cbfbb .Type !=ResultTypeNumber &&_cbfbb .Type !=ResultTypeString &&_cbfbb .Type !=ResultTypeEmpty {return MakeErrorResult ("\u0054\u0045\u0058\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0066\u0069\u0072\u0073\u0074\u0020a\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u006f\u0072\u0020\u0073\u0074\u0072\u0069\u006e\u0067");};if args [1].Type !=ResultTypeString {return MakeErrorResult ("\u0054E\u0058\u0054 \u0072\u0065\u0071\u0075i\u0072\u0065\u0073 \u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072gu\u006d\u0065\u006et\u0020\u0074o\u0020\u0062\u0065\u0020\u0061\u0020s\u0074\u0072i\u006e\u0067");};_adbfb :=args [1].ValueString ;switch _cbfbb .Type {case ResultTypeNumber :return MakeStringResult (_fg .Number (_cbfbb .ValueNumber ,_adbfb ));case ResultTypeString :return MakeStringResult (_fg .String (_cbfbb .ValueString ,_adbfb ));case ResultTypeEmpty :return MakeStringResult (_fg .Number (0,_adbfb ));case ResultTypeArray ,ResultTypeList :return MakeErrorResultType (ErrorTypeSpill ,"\u0054\u0045X\u0054\u0020\u0064\u006f\u0065\u0073\u006e\u0027\u0074\u0020\u0077\u006f\u0072\u006b\u0020\u0077\u0069\u0074\u0068\u0020\u0061\u0072ra\u0079\u0073");default:return MakeErrorResult ("I\u006e\u0063\u006f\u0072\u0072\u0065c\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0020\u0066\u006fr\u0020T\u0045\u0058\u0054");};};
// Arabic implements the Excel ARABIC function which parses roman numerals. It
// accepts one numeric argument.
func Arabic (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0041\u0052\u0041\u0042I\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_dabbf :=args [0];switch _dabbf .Type {case ResultTypeNumber ,ResultTypeList ,ResultTypeEmpty :return MakeErrorResult ("\u0041\u0052\u0041B\u0049\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");case ResultTypeString :_fddc :=0.0;_egcc :=0.0;for _ ,_afeec :=range _dabbf .ValueString {_bdcbd :=0.0;switch _afeec {case 'I':_bdcbd =1;case 'V':_bdcbd =5;case 'X':_bdcbd =10;case 'L':_bdcbd =50;case 'C':_bdcbd =100;case 'D':_bdcbd =500;case 'M':_bdcbd =1000;};_fddc +=_bdcbd ;switch {case _egcc ==_bdcbd &&(_egcc ==5||_egcc ==50||_egcc ==500):return MakeErrorResult ("i\u006e\u0076\u0061\u006cid\u0020A\u0052\u0041\u0042\u0049\u0043 \u0066\u006f\u0072\u006d\u0061\u0074");case 2*_egcc ==_bdcbd :return MakeErrorResult ("i\u006e\u0076\u0061\u006cid\u0020A\u0052\u0041\u0042\u0049\u0043 \u0066\u006f\u0072\u006d\u0061\u0074");};if _egcc < _bdcbd {_fddc -=2*_egcc ;};_egcc =_bdcbd ;};return MakeNumberResult (_fddc );case ResultTypeError :return _dabbf ;default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068an\u0064\u006c\u0065\u0064\u0020\u0041\u0043\u004f\u0053H\u0028)\u0020a\u0072g\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_dabbf .Type ));};};type yyLexer interface{Lex (_bbca *yySymType )int ;Error (_cccd string );};
// Cell is an implementation of the Excel CELL function that returns information
// about the formatting, location, or contents of a cell.
func Cell (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1&&len (args )!=2{return MakeErrorResult ("\u0043\u0045\u004cL \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020o\u006ee\u0020o\u0072 \u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_ddfd :=args [0].AsString ();if _ddfd .Type !=ResultTypeString {return MakeErrorResult ("\u0043\u0045\u004c\u004c\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066\u0069\u0072\u0073\u0074\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065 \u0073t\u0072\u0069\u006e\u0067");};_cdfaf :="\u0041\u0031";if len (args )==2{_gcfcf :=args [1].Ref ;if _gcfcf .Type !=ReferenceTypeCell {return MakeErrorResult ("\u0043\u0045\u004c\u004c\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064 \u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079p\u0065\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");};_cdfaf =_gcfcf .Value ;};switch _ddfd .ValueString {case "\u0061d\u0064\u0072\u0065\u0073\u0073":_cded ,_gdae :=_ac .ParseCellReference (_cdfaf );if _gdae !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_cdfaf );};_debc :="\u0024"+_cded .Column +"\u0024"+_dc .Itoa (int (_cded .RowIdx ));if _cded .SheetName !=""{_debc =_cded .SheetName +"\u0021"+_debc ;};return MakeStringResult (_debc );case "\u0063\u006f\u006c":_cfeb ,_agbed :=_ac .ParseCellReference (_cdfaf );if _agbed !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_cdfaf );};return MakeNumberResult (float64 (_cfeb .ColumnIdx +1));case "\u0063\u006f\u006co\u0072":_dgdg :=_g .Contains (ctx .GetFormat (_cdfaf ),"\u005b\u0052\u0045D\u005d");return MakeBoolResult (_dgdg );case "\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u0073":return args [1];case "\u0066\u0069\u006c\u0065\u006e\u0061\u006d\u0065":return MakeStringResult (ctx .GetFilename ());case "\u0066\u006f\u0072\u006d\u0061\u0074":_bdcbf :="\u0047";_eecea :=ctx .GetFormat (_cdfaf );if _eecea =="\u0047e\u006e\u0065\u0072\u0061\u006c"||_ggac .MatchString (_eecea ){_bdcbf ="\u0046\u0030";}else if _eecea =="\u0030\u0025"{_bdcbf ="\u0050\u0030";}else if _eecea =="\u004d\u004d\u004d\u0020\u0044\u0044"{_bdcbf ="\u0044\u0032";}else if _eecea =="\u004d\u004d\u002fY\u0059"{_bdcbf ="\u0044\u0033";}else if _eecea =="\u004d\u004d\u002f\u0044D/\u0059\u0059\u005c\u0020\u0048\u0048\u003a\u004d\u004d\u005c\u0020\u0041\u004d\u002fP\u004d"||_eecea =="M\u004d/\u0044\u0044\u002f\u0059\u0059\u0059\u0059\u005c \u0048\u0048\u003a\u004dM:\u0053\u0053"{_bdcbf ="\u0044\u0034";}else if _eecea =="\u004d\u004d\u005c\u002d\u0044\u0044"{_bdcbf ="\u0044\u0035";}else if _eecea =="\u0048H\u003aM\u004d\u003a\u0053\u0053\u005c\u0020\u0041\u004d\u002f\u0050\u004d"{_bdcbf ="\u0044\u0036";}else if _eecea =="\u0048\u0048\u003aM\u004d\u005c\u0020\u0041\u004d\u002f\u0050\u004d"{_bdcbf ="\u0044\u0037";}else if _eecea =="\u0048\u0048\u003a\u004d\u004d\u003a\u0053\u0053"{_bdcbf ="\u0044\u0038";}else if _eecea =="\u0048\u0048\u003aM\u004d"{_bdcbf ="\u0044\u0039";}else if _ebg .MatchString (_eecea ){_bdcbf ="\u002e\u0030";}else if _ggag .MatchString (_eecea ){_bdcbf ="\u002e\u0030\u0028\u0029";}else if _defb .MatchString (_eecea ){_bdcbf ="\u0043\u0030";}else if _cadbb .MatchString (_eecea )||_eaac .MatchString (_eecea ){_bdcbf ="\u0044\u0031";}else if _dafc :=_ggdc .FindStringSubmatch (_eecea );len (_dafc )> 1{_bdcbf ="\u0046"+_dc .Itoa (len (_dafc [1]));}else if _agga :=_cadf .FindStringSubmatch (_eecea );len (_agga )> 1{_bdcbf ="\u002e"+_dc .Itoa (len (_agga [2]));}else if _ffbab :=_dfbca .FindStringSubmatch (_eecea );len (_ffbab )> 1{_bdcbf ="\u0050"+_dc .Itoa (len (_ffbab [2]));}else if _fgea :=_ebgc .FindStringSubmatch (_eecea );len (_fgea )> 1{_bdcbf ="\u0043"+_gggdc (_fgea ,1);}else if _faad :=_egeg .FindStringSubmatch (_eecea );len (_faad )> 1{_bdcbf ="\u0043"+_gggdc (_faad ,1);}else if _cebcf :=_fgcg .FindStringSubmatch (_eecea );len (_cebcf )> 1{_bdcbf ="\u002e"+_gggdc (_cebcf ,1)+"\u0028\u0029";}else if _fcecg :=_ffeb .FindStringSubmatch (_eecea );len (_fcecg )> 1{_bdcbf ="\u002e"+_gggdc (_fcecg ,1);}else if _gggc :=_cbca .FindStringSubmatch (_eecea );len (_gggc )> 1{_bdcbf ="\u0053"+_gggdc (_gggc ,3);};if _bdcbf !="\u0047"&&_g .Contains (_eecea ,"\u005b\u0052\u0045D\u005d"){_bdcbf +="\u002d";};return MakeStringResult (_bdcbf );case "p\u0061\u0072\u0065\u006e\u0074\u0068\u0065\u0073\u0065\u0073":_cgga :=ctx .GetFormat (_cdfaf );if _edfd .MatchString (_cgga ){return MakeNumberResult (1);}else {return MakeNumberResult (0);};case "\u0070\u0072\u0065\u0066\u0069\u0078":return MakeStringResult (ctx .GetLabelPrefix (_cdfaf ));case "\u0070r\u006f\u0074\u0065\u0063\u0074":_beec :=0.0;if ctx .GetLocked (_cdfaf ){_beec =1.0;};return MakeNumberResult (_beec );case "\u0072\u006f\u0077":_becc ,_aefc :=_ac .ParseCellReference (_cdfaf );if _aefc !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_cdfaf );};return MakeNumberResult (float64 (_becc .RowIdx ));case "\u0074\u0079\u0070\u0065":switch args [1].Type {case ResultTypeEmpty :return MakeStringResult ("\u0062");case ResultTypeString :return MakeStringResult ("\u006c");default:return MakeStringResult ("\u0076");};case "\u0077\u0069\u0064t\u0068":_dbdfc ,_bacc :=_ac .ParseCellReference (_cdfaf );if _bacc !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_cdfaf );};if _dbdfc .SheetName ==""{return MakeNumberResult (ctx .GetWidth (int (_dbdfc .ColumnIdx )));}else {return MakeNumberResult (ctx .Sheet (_dbdfc .SheetName ).GetWidth (int (_dbdfc .ColumnIdx )));};};return MakeErrorResult ("\u0049\u006e\u0063or\u0072\u0065\u0063\u0074\u0020\u0066\u0069\u0072\u0073t\u0020a\u0072g\u0075m\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0043\u0045\u004c\u004c\u003a\u0020"+_ddfd .ValueString );};var _ddgdg =[...]int {0,0,71,70,69,4,67,66,53,51,50,49,48,47,46,45,44,2};
// Fv implements the Excel FV function.
func Fv (args []Result )Result {_daed :=len (args );if _daed < 3||_daed > 5{return MakeErrorResult ("\u0046\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0033\u0020\u0061\u006e\u0064\u00205");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_faf :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_fbbc :=args [1].ValueNumber ;if _fbbc !=float64 (int (_fbbc )){return MakeErrorResultType (ErrorTypeNum ,"\u0046\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006ff\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065n\u0074");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0056\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0061\u0079\u006d\u0065\u006e\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fge :=args [2].ValueNumber ;_age :=0.0;if _daed >=4&&args [3].Type !=ResultTypeEmpty {if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("F\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0070\u0072\u0065\u0073\u0065\u006et \u0076\u0061\u006c\u0075e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_age =args [3].ValueNumber ;};_bgge :=0;if _daed ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0046\u0056\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006eu\u006d\u0062\u0065\u0072\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_bgge =int (args [4].ValueNumber );if _bgge !=0{_bgge =1;};};return MakeNumberResult (_gaab (_faf ,_fbbc ,_fge ,_age ,_bgge ));};
// MakeErrorResultType makes an error result of a given type with a specified
// debug message
func MakeErrorResultType (t ErrorType ,msg string )Result {switch t {case ErrorTypeNull :return Result {Type :ResultTypeError ,ValueString :"\u0023\u004e\u0055\u004c\u004c\u0021",ErrorMessage :msg };case ErrorTypeValue :return Result {Type :ResultTypeError ,ValueString :"\u0023V\u0041\u004c\u0055\u0045\u0021",ErrorMessage :msg };case ErrorTypeRef :return Result {Type :ResultTypeError ,ValueString :"\u0023\u0052\u0045F\u0021",ErrorMessage :msg };case ErrorTypeName :return Result {Type :ResultTypeError ,ValueString :"\u0023\u004e\u0041\u004d\u0045\u003f",ErrorMessage :msg };case ErrorTypeNum :return Result {Type :ResultTypeError ,ValueString :"\u0023\u004e\u0055M\u0021",ErrorMessage :msg };case ErrorTypeSpill :return Result {Type :ResultTypeError ,ValueString :"\u0023S\u0050\u0049\u004c\u004c\u0021",ErrorMessage :msg };case ErrorTypeNA :return Result {Type :ResultTypeError ,ValueString :"\u0023\u004e\u002f\u0041",ErrorMessage :msg };case ErrorTypeDivideByZero :return Result {Type :ResultTypeError ,ValueString :"\u0023D\u0049\u0056\u002f\u0030\u0021",ErrorMessage :msg };default:return Result {Type :ResultTypeError ,ValueString :"\u0023V\u0041\u004c\u0055\u0045\u0021",ErrorMessage :msg };};};
// Update returns the same object as updating sheet references does not affect Bool.
func (_ca Bool )Update (q *_fc .UpdateQuery )Expression {return _ca };const _ccgede =57344;
// String returns a string of a range.
func (_dbcfb Range )String ()string {return _b .Sprintf ("\u0025\u0073\u003a%\u0073",_dbcfb ._bbag .String (),_dbcfb ._cgbeb .String ());};func (_dgde *evCache )SetCache (key string ,value Result ){_dgde ._eeb .Lock ();_dgde ._cffd [key ]=value ;_dgde ._eeb .Unlock ();};var _cfgac *_ef .Rand ;func _fadc (_gcfb ,_feagg ,_ffafg Reference )string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0073\u003a\u0025\u0073",_gcfb .Value ,_feagg .Value ,_ffafg .Value );};type cmpResult int8 ;
// Reference returns a string reference value to a range with prefix.
func (_ceccf PrefixRangeExpr )Reference (ctx Context ,ev Evaluator )Reference {_dadg :=_ceccf ._acbed .Reference (ctx ,ev );_agada :=_ceccf ._eeafd .Reference (ctx ,ev );_acdf :=_ceccf ._cedga .Reference (ctx ,ev );if _dadg .Type ==ReferenceTypeSheet &&_agada .Type ==ReferenceTypeCell &&_acdf .Type ==ReferenceTypeCell {return MakeRangeReference (_fadc (_dadg ,_agada ,_acdf ));};return ReferenceInvalid ;};const _ffbb int =30;
// Eval evaluates a vertical range returning a list of results or an error.
func (_abgb VerticalRange )Eval (ctx Context ,ev Evaluator )Result {_fcabg :=_abgb .verticalRangeReference ();if _bgfa ,_cfcgb :=ev .GetFromCache (_fcabg );_cfcgb {return _bgfa ;};_ggdg ,_aeedb :=_aaaaa (ctx ,_abgb ._beag ,_abgb ._bagcg );_gebda :=_dfad (ctx ,ev ,_ggdg ,_aeedb );ev .SetCache (_fcabg ,_gebda );return _gebda ;};
//go:generate ragel -G2 -Z lexer.rl
//go:generate goimports -w lexer.go
type Lexer struct{_cccf chan *node ;_cabg _fd .Mutex ;_dacad []chan *node ;_egbg []*node ;};func _gdge (_acgbg ,_ddec ,_ccfa ,_dbeabe float64 ,_gebcg int )float64 {var _cdgc float64 ;if _acgbg ==0{_cdgc =(_ccfa +_dbeabe )/_ddec ;}else {_gbeb :=_ggd .Pow (1+_acgbg ,_ddec );if _gebcg ==1{_cdgc =(_dbeabe *_acgbg /(_gbeb -1)+_ccfa *_acgbg /(1-1/_gbeb ))/(1+_acgbg );}else {_cdgc =_dbeabe *_acgbg /(_gbeb -1)+_ccfa *_acgbg /(1-1/_gbeb );};};return -_cdgc ;};
// ResultType is the type of the result
//go:generate stringer -type=ResultType
type ResultType byte ;
// ISTEXT is an implementation of the Excel ISTEXT() function.
func IsText (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u0054EX\u0054\u0028\u0029\u0020\u0061\u0063\u0063\u0065\u0070t\u0073 \u0061 \u0073i\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeBoolResult (args [0].Type ==ResultTypeString );};
// String returns a string representation for Bool.
func (_cbe Bool )String ()string {if _cbe ._ba {return "\u0054\u0052\u0055\u0045";}else {return "\u0046\u0041\u004cS\u0045";};};
// VerticalRange is a range expression that when evaluated returns a list of Results from references like AA:IJ (all cells from columns AA to IJ).
type VerticalRange struct{_beag ,_bagcg string };func _badf (_degf Result ,_cfda *criteriaParsed )bool {if _degf .Type ==ResultTypeEmpty {return false ;};if _cfda ._faaff {return _degf .ValueNumber ==_cfda ._dfccd ;}else {_dagg :=_g .ToLower (_degf .ValueString );return _cfda ._gcece ==_dagg ||_be .Match (_cfda ._gcece ,_dagg );};};type amorArgs struct{_ggdb float64 ;_gdcec float64 ;_eaag float64 ;_gag float64 ;_aaef int ;_bfbd float64 ;_gfde int ;};
// Edate is an implementation of the Excel EDATE() function.
func Edate (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0045\u0044\u0041\u0054E\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020t\u0077o\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0045\u0044A\u0054\u0045");};_dabeg :=args [1].ValueNumber ;_dddc :=args [0];var _cfff float64 ;switch _dddc .Type {case ResultTypeEmpty :return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0045\u0044A\u0054\u0045");case ResultTypeNumber :_cfff =_dddc .ValueNumber ;case ResultTypeString :_ffdg :=DateValue ([]Result {args [0]});if _ffdg .Type ==ResultTypeError {return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0045\u0044A\u0054\u0045");};_cfff =_ffdg .ValueNumber ;default:return MakeErrorResult ("\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0045\u0044A\u0054\u0045");};_ddgc :=_gfae (_cfff );_cag :=_ddgc .AddDate (0,int (_dabeg ),0);_eefb ,_ccbb ,_ecbf :=_cag .Date ();_gbdc :=_agd (_eefb ,int (_ccbb ),_ecbf );if _gbdc < 1{return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020\u0066\u006f\u0072\u0020\u0045\u0044A\u0054\u0045");};return MakeNumberResult (_gbdc );};func _edb (_acc int ,_bbba _dd .Month ,_ggfg int )int64 {if _acc ==1900&&int (_bbba )<=2{_ggfg --;};_gcfg :=_dd .Date (_acc ,_bbba ,_ggfg ,0,0,0,0,_dd .UTC );return _gcfg .Unix ();};const _dab ="\u0028\u0028\u005b\u0030\u002d\u0039\u005d\u0029\u002b\u0029\u003a\u0028\u0028\u005b\u0030-\u0039]\u0029\u002b\u0029\u0028\u0020\u0028\u0061\u006d\u007c\u0070\u006d\u0029\u0029\u003f";var _gaefdg []byte =[]byte {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// MakeEmptyResult is ued when parsing an empty argument.
func MakeEmptyResult ()Result {return Result {Type :ResultTypeEmpty }};
// Eval evaluates a horizontal range with prefix returning a list of results or an error.
func (_cbfbeg PrefixHorizontalRange )Eval (ctx Context ,ev Evaluator )Result {_eeceb :=_cbfbeg ._fceb .Reference (ctx ,ev );switch _eeceb .Type {case ReferenceTypeSheet :if _eabad (_eeceb ,ctx ){return MakeErrorResultType (ErrorTypeName ,_b .Sprintf ("\u0053h\u0065e\u0074\u0020\u0025\u0073\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064",_eeceb .Value ));};_fcagd :=_cbfbeg .horizontalRangeReference (_eeceb .Value );if _gddee ,_eefda :=ev .GetFromCache (_fcagd );_eefda {return _gddee ;};_bfage :=ctx .Sheet (_eeceb .Value );_abcea ,_bgdcg :=_cgcbb (_bfage ,_cbfbeg ._baabe ,_cbfbeg ._ebade );_cbead :=_dfad (_bfage ,ev ,_abcea ,_bgdcg );ev .SetCache (_fcagd ,_cbead );return _cbead ;default:return MakeErrorResult (_b .Sprintf ("\u006e\u006f\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0020\u0066\u006f\u0072\u0020r\u0065f\u0065\u0072\u0065\u006e\u0063\u0065\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_eeceb .Type ));};};func _dfacb (_gbbge []Result ,_aggbd bool )(float64 ,float64 ){_becd :=0.0;_ecgd :=0.0;for _ ,_abcf :=range _gbbge {switch _abcf .Type {case ResultTypeNumber :if _aggbd ||!_abcf .IsBoolean {_ecgd +=_abcf .ValueNumber ;_becd ++;};case ResultTypeList ,ResultTypeArray :_adgb ,_cabb :=_dfacb (_abcf .ListValues (),_aggbd );_ecgd +=_adgb ;_becd +=_cabb ;case ResultTypeString :if _aggbd {_becd ++;};case ResultTypeEmpty :};};return _ecgd ,_becd ;};var _febcbf =[]ri {{1000,"\u004d"},{950,"\u004c\u004d"},{900,"\u0043\u004d"},{500,"\u0044"},{450,"\u004c\u0044"},{400,"\u0043\u0044"},{100,"\u0043"},{95,"\u0056\u0043"},{90,"\u0058\u0043"},{50,"\u004c"},{45,"\u0056\u004c"},{40,"\u0058\u004c"},{10,"\u0058"},{9,"\u0049\u0058"},{5,"\u0056"},{4,"\u0049\u0056"},{1,"\u0049"}};
// Code is an implementation of the Excel CODE function that returns the first
// character of the string as a number.
func Code (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0043\u004f\u0044\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0073t\u0072\u0069\u006e\u0067\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};_eebgf :=args [0].AsString ();if _eebgf .Type !=ResultTypeString {return MakeErrorResult ("\u0043\u004f\u0044\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0073t\u0072\u0069\u006e\u0067\u0020a\u0072\u0067u\u006d\u0065\u006e\u0074");};if len (_eebgf .ValueString )==0{return MakeNumberResult (0);};return MakeNumberResult (float64 (_eebgf .ValueString [0]));};func _fgf (_ada ,_gcfcd _dd .Time ,_dbfca ,_gfeda int )_dd .Time {_dgg :=_gcfcd ;_cdcf :=_ada .Year ()-_gcfcd .Year ();_dgg =_dgg .AddDate (_cdcf ,0,0);if _ada .After (_dgg ){_dgg =_dgg .AddDate (1,0,0);};_bac :=-12/_dbfca ;for _dgg .After (_ada ){_dgg =_dgg .AddDate (0,_bac ,0);};return _dgg ;};const _fdeb =57356;var _bdcd =[...]int {123,-1000,-1000,74,163,103,163,163,-1000,-1000,-1000,-1000,163,-1000,-1000,-1000,-1000,-1000,-12,106,-1000,-1000,143,-1000,-1000,-1000,-1000,-1000,163,163,163,163,163,163,163,163,163,163,163,163,74,163,163,6,-28,74,-15,-15,60,10,-14,-1000,-1000,-1000,7,-1000,74,-15,-15,-23,-23,-1000,-8,-8,-8,-8,-8,-8,-4,33,-1000,163,163,-1000,-1000,10,-1000,163,-1000,-28,74,-1000,-1000,74};var _eccac _fd .Mutex ;func MakeRangeReference (ref string )Reference {return Reference {Type :ReferenceTypeRange ,Value :ref }};
// Roman is an implementation of the Excel ROMAN function that convers numbers
// to roman numerals in one of 5 formats.
func Roman (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0052\u004fM\u0041\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if len (args )> 2{return MakeErrorResult ("\u0052\u004fM\u0041\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006d\u006f\u0073\u0074\u0020\u0074\u0077\u006f\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_acea :=args [0].AsNumber ();if _acea .Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u004fM\u0041\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dgcb :=0;if len (args )> 1{_acga :=args [1];if _acga .Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u004fM\u0041\u004e\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063");};_dgcb =int (_acga .ValueNumber );if _dgcb < 0{_dgcb =0;}else if _dgcb > 4{_dgcb =4;};};_gfgd :=_aeagd ;switch _dgcb {case 1:_gfgd =_febcbf ;case 2:_gfgd =_ffda ;case 3:_gfgd =_cabdd ;case 4:_gfgd =_gcbc ;};_dfgfc :=_ggd .Trunc (_acea .ValueNumber );_febcba :=_db .Buffer {};for _ ,_cagf :=range _gfgd {for _dfgfc >=_cagf ._beeg {_febcba .WriteString (_cagf ._fgcc );_dfgfc -=_cagf ._beeg ;};};return MakeStringResult (_febcba .String ());};
// Rand is an implementation of the Excel RAND() function that returns random
// numbers in the range [0,1).
func Rand (args []Result )Result {if len (args )!=0{return MakeErrorResult ("R\u0041\u004e\u0044\u0028\u0029\u0020a\u0063\u0063\u0065\u0070\u0074\u0073\u0020\u006e\u006f \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};return MakeNumberResult (_cfgac .Float64 ());};
// Now is an implementation of the Excel NOW() function.
func Now (args []Result )Result {if len (args )> 0{return MakeErrorResult ("\u004e\u004fW\u0020\u0064\u006f\u0065\u0073\u006e\u0027\u0074\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};_bbbe :=_dd .Now ();_ ,_ddff :=_bbbe .Zone ();_ecc :=_fbb +float64 (_bbbe .Unix ()+int64 (_ddff ))/86400;return MakeNumberResult (_ecc );};
// String is a string expression.
type String struct{_ccafe string };
// LookupFunctionComplex looks up and returns a complex function or nil.
func LookupFunctionComplex (name string )FunctionComplex {_eccac .Lock ();defer _eccac .Unlock ();if _ebdgg ,_fffcd :=_gecfd [name ];_fffcd {return _ebdgg ;};return nil ;};
// Sln implements the Excel SLN function.
func Sln (args []Result )Result {if len (args )!=3{return MakeErrorResult ("\u0053\u004c\u004e\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068r\u0065e\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u004c\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020c\u006f\u0073\u0074\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_agfd :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u004c\u004e \u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0061\u006c\u0076\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bgcc :=args [1].ValueNumber ;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0053\u004c\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020l\u0069\u0066\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_bcdb :=args [2].ValueNumber ;if _bcdb ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0053\u004c\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006c\u0069f\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u006e\u0020\u007a\u0065\u0072\u006f");};return MakeNumberResult ((_agfd -_bgcc )/_bcdb );};func _babf (_gcba string ,_begae func (_bbbff float64 )float64 )Function {return func (_fccg []Result )Result {if len (_fccg )!=1{return MakeErrorResult (_gcba +"\u0020\u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u006f\u006e\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_fddf :=_fccg [0].AsNumber ();switch _fddf .Type {case ResultTypeNumber :_dbca :=_begae (_fddf .ValueNumber );if _ggd .IsNaN (_dbca ){return MakeErrorResult (_gcba +"\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0065\u0064\u0020\u004e\u0061\u004e");};if _ggd .IsInf (_dbca ,0){return MakeErrorResult (_gcba +"\u0020r\u0065t\u0075\u0072\u006e\u0065\u0064 \u0069\u006ef\u0069\u006e\u0069\u0074\u0079");};return MakeNumberResult (_dbca );case ResultTypeList ,ResultTypeString :return MakeErrorResult (_gcba +"\u0020\u0072\u0065\u0071u\u0069\u0072\u0065\u0073\u0020\u0061\u0020\u006e\u0075\u006de\u0072i\u0063\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");case ResultTypeError :return _fddf ;default:return MakeErrorResult (_b .Sprintf ("\u0075\u006e\u0068a\u006e\u0064\u006c\u0065d\u0020\u0025\u0073\u0028\u0029\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0073",_gcba ,_fddf .Type ));};};};
// Odd is an implementation of the Excel ODD() that rounds a number to the
// nearest odd integer.
func Odd (args []Result )Result {if len (args )!=1{return MakeErrorResult ("O\u0044\u0044\u0028\u0029\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006f\u006ee\u0020\u0061\u0072g\u0075m\u0065\u006e\u0074");};_gfdda :=args [0].AsNumber ();if _gfdda .Type !=ResultTypeNumber {return MakeErrorResult ("\u004f\u0044\u0044\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_babfa :=_ggd .Signbit (_gfdda .ValueNumber );_dffbg ,_dfba :=_ggd .Modf ((_gfdda .ValueNumber -1)/2);_abfg :=_dffbg *2+1;if _dfba !=0{if !_babfa {_abfg +=2;}else {_abfg -=2;};};return MakeNumberResult (_abfg );};
// String returns a string representation of Number.
func (_dfcdb Number )String ()string {return _dc .FormatFloat (_dfcdb ._bdcc ,'f',-1,64)};
// NamedRangeRef is a reference to a named range.
type NamedRangeRef struct{_gfedg string };func _cccg (_debce [][]Result )float64 {if len (_debce )==2{_ebccb :=_debce [0][0].AsNumber ();_faegc :=_debce [0][1].AsNumber ();_gbfc :=_debce [1][0].AsNumber ();_aeagg :=_debce [1][1].AsNumber ();if _ebccb .Type !=ResultTypeNumber ||_faegc .Type !=ResultTypeNumber ||_gbfc .Type !=ResultTypeNumber ||_aeagg .Type !=ResultTypeNumber {return _ggd .NaN ();};return _ebccb .ValueNumber *_aeagg .ValueNumber -_gbfc .ValueNumber *_faegc .ValueNumber ;};_bdde :=float64 (0);_gaeed :=float64 (1);for _ddcd :=range _debce {_bdde +=_gaeed *_debce [0][_ddcd ].ValueNumber *_cccg (_dfdee (_debce ,_ddcd ));_gaeed *=-1;};return _bdde ;};
// MakeStringResult constructs a string result.
func MakeStringResult (s string )Result {return Result {Type :ResultTypeString ,ValueString :s }};
// Column implements the Excel COLUMN function.
func Column (args []Result )Result {if len (args )< 1{return MakeErrorResult ("\u0043\u004f\u004c\u0055M\u004e\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u006fn\u0065\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_cfegg :=args [0].Ref ;if _cfegg .Type !=ReferenceTypeCell {return MakeErrorResult ("\u0043\u004f\u004c\u0055\u004dN\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u006e\u0020a\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063e");};_feecb ,_efba :=_ac .ParseCellReference (_cfegg .Value );if _efba !=nil {return MakeErrorResult ("I\u006e\u0063\u006f\u0072re\u0063t\u0020\u0072\u0065\u0066\u0065r\u0065\u006e\u0063\u0065\u003a\u0020"+_cfegg .Value );};return MakeNumberResult (float64 (_feecb .ColumnIdx +1));};
// Rate implements the Excel RATE function.
func Rate (args []Result )Result {_daae :=len (args );if _daae < 3||_daae > 6{return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0074\u0068\u0072\u0065\u0065 \u0061\u006e\u0064\u0020\u0073i\u0078");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006ff\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cfgg :=args [0].ValueNumber ;if _cfgg !=float64 (int (_cfgg )){return MakeErrorResultType (ErrorTypeNum ,"R\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0065\u0072i\u006fd\u0073\u0020\u0074\u006f \u0062\u0065 \u0069\u006e\u0074\u0065\u0067\u0065\u0072\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020\u0072\u0065q\u0075\u0069\u0072e\u0073\u0020\u0070\u0061y\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_bfcbe :=args [1].ValueNumber ;if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0070\u0072\u0065\u0073\u0065\u006e\u0074\u0020\u0076\u0061\u006c\u0075\u0065 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061r\u0067u\u006d\u0065\u006e\u0074");};_gfeb :=args [2].ValueNumber ;_dfgf :=0.0;if _daae >=4&&args [3].Type !=ResultTypeEmpty {if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020\u0072\u0065\u0071u\u0069\u0072\u0065s \u0066\u0075\u0074\u0075\u0072\u0065 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_dfgf =args [3].ValueNumber ;};_efac :=0.0;if _daae >=5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("R\u0041\u0054\u0045\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0079\u0070\u0065\u0020t\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r \u0061\u0072\u0067u\u006de\u006e\u0074");};_efac =args [4].ValueNumber ;if _efac !=0{_efac =1;};};_dage :=0.1;if _daae >=6&&args [5].Type !=ResultTypeEmpty {if args [5].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0041\u0054\u0045\u0020r\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0067\u0075\u0065\u0073\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dage =args [5].ValueNumber ;};_aagf :=100;_adbbe :=0;_geeb :=false ;_gfea :=1e-6;_cdeg :=_dage ;for _adbbe < _aagf &&!_geeb {_caag :=_ggd .Pow (_cdeg +1,_cfgg );_dbeae :=_ggd .Pow (_cdeg +1,_cfgg -1);_bfcg :=_cdeg *_efac +1;_cead :=_bfcbe *(_caag -1);_cbda :=_dfgf +_caag *_gfeb +_cead *_bfcg /_cdeg ;_bebd :=_cfgg *_dbeae *_gfeb -_cead *_bfcg /_ggd .Pow (_cdeg ,2);_gebcf :=(_cfgg *_bfcbe *_dbeae *_bfcg +_cead *_efac )/_cdeg ;_fgab :=_cbda /(_bebd +_gebcf );if _ggd .Abs (_fgab )< _gfea {_geeb =true ;};_adbbe ++;_cdeg -=_fgab ;};return MakeNumberResult (_cdeg );};
// GetEpoch returns a null time object for the invalid reference context.
func (_fffed *ivr )GetEpoch ()_dd .Time {return _dd .Time {}};const _befa =57362;
// Value returns a string version of the result.
func (_fdgaa Result )Value ()string {switch _fdgaa .Type {case ResultTypeNumber :_cgdga :=_dc .FormatFloat (_fdgaa .ValueNumber ,'f',-1,64);if len (_cgdga )> 12{_gedgc :=12;for _feegb :=_gedgc ;_feegb > 0&&_cgdga [_feegb ]=='0';_feegb --{_gedgc --;};_cgdga =_cgdga [0:_gedgc +1];};return _cgdga ;case ResultTypeError :return _fdgaa .ValueString ;case ResultTypeString :return _fdgaa .ValueString ;case ResultTypeList :if len (_fdgaa .ValueList )==0{return "";};return _fdgaa .ValueList [0].Value ();case ResultTypeArray :if len (_fdgaa .ValueArray )==0||len (_fdgaa .ValueArray [0])==0{return "";};return _fdgaa .ValueArray [0][0].Value ();case ResultTypeEmpty :return "";default:return "\u0075\u006e\u0068\u0061nd\u006c\u0065\u0064\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0076\u0061\u006cu\u0065";};};func (_agaacd Result )String ()string {return _agaacd .Value ()};
// Mround is an implementation of the Excel MROUND function. It is not a
// generic rounding function and has some oddities to match Excel's behavior.
func Mround (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u004d\u0052\u004f\u0055\u004e\u0044\u0028\u0029\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0074\u0077o\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_ddaf :=args [0].AsNumber ();if _ddaf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0066\u0069\u0072\u0073\u0074\u0020\u0061r\u0067\u0075\u006de\u006e\u0074\u0020\u0074o\u0020\u004d\u0052\u004f\u0055\u004e\u0044\u0028\u0029\u0020\u006d\u0075\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bgde :=float64 (1);_gbdcfe :=args [1].AsNumber ();if _gbdcfe .Type !=ResultTypeNumber {return MakeErrorResult ("\u0073e\u0063\u006fn\u0064\u0020\u0061\u0072g\u0075\u006d\u0065n\u0074\u0020\u0074\u006f\u0020\u004d\u0052\u004f\u0055ND\u0028\u0029\u0020m\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u0020n\u0075\u006db\u0065\u0072");};_bgde =_gbdcfe .ValueNumber ;if _bgde < 0&&_ddaf .ValueNumber > 0||_bgde > 0&&_ddaf .ValueNumber < 0{return MakeErrorResult ("\u004d\u0052\u004fUN\u0044\u0028\u0029\u0020\u0061\u0072\u0067\u0075\u006de\u006et\u0020s\u0069g\u006e\u0073\u0020\u006d\u0075\u0073\u0074\u0020\u006d\u0061\u0074\u0063\u0068");};_bcgef :=_ddaf .ValueNumber ;_bcgef ,_ecbg :=_ggd .Modf (_bcgef /_bgde );if _ggd .Trunc (_ecbg +0.5)> 0{_bcgef ++;};return MakeNumberResult (_bcgef *_bgde );};
// CountBlank implements the COUNTBLANK function.
func CountBlank (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u0043\u004f\u0055N\u0054\u0042\u004c\u0041N\u004b\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0061\u006e\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};return MakeNumberResult (_bddf (args ,_bbbed ));};
// IsLogical is an implementation of the Excel ISLOGICAL() function.
func IsLogical (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053\u004c\u004f\u0047\u0049\u0043A\u004c\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_ffbe :=args [0].Ref ;if _ffbe .Type !=ReferenceTypeCell {return MakeErrorResult ("I\u0053\u004c\u004f\u0047\u0049\u0043\u0041\u004c\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068\u0065\u0020\u0066\u0069\u0072\u0073t\u0020a\u0072\u0067\u0075\u006de\u006e\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");};return MakeBoolResult (ctx .Cell (_ffbe .Value ,ev ).IsBoolean );};
// Eval evaluates and returns the result of a sheet expression.
func (_afdaa SheetPrefixExpr )Eval (ctx Context ,ev Evaluator )Result {return MakeErrorResult ("\u0073\u0068\u0065\u0065\u0074\u0020\u0070\u0072\u0065\u0066\u0069\u0078\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u006e\u0065\u0076\u0065r\u0020\u0062\u0065\u0020\u0065v\u0061\u006cu\u0061\u0074\u0065\u0064");};func _gbce (_bcfc ,_ggbe Result ,_abaf string )(float64 ,float64 ,Result ){_bcg ,_fdgf :=_eeg (_bcfc ,"\u0073e\u0074t\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065",_abaf );if _fdgf .Type ==ResultTypeError {return 0,0,_fdgf ;};_cbef ,_fdgf :=_eeg (_ggbe ,"\u006d\u0061\u0074\u0075\u0072\u0069\u0074\u0079\u0020\u0064\u0061\u0074\u0065",_abaf );if _fdgf .Type ==ResultTypeError {return 0,0,_fdgf ;};if _bcg >=_cbef {return 0,0,MakeErrorResultType (ErrorTypeNum ,_abaf +"\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020m\u0061\u0074\u0075r\u0069\u0074\u0079\u0020\u0064\u0061\u0074\u0065\u0020\u0074o\u0020\u0062\u0065\u0020\u006cat\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0073\u0065\u0074\u0074\u006c\u0065\u006d\u0065\u006e\u0074\u0020\u0064\u0061\u0074\u0065");};return _bcg ,_cbef ,_dabe ;};const _aabd int =30;type Reference struct{Type ReferenceType ;Value string ;};
// IfNA is an implementation of the Excel IFNA() function. It takes two arguments.
func IfNA (args []Result )Result {if len (args )!=2{return MakeErrorResult ("I\u0046\u004e\u0041\u0020\u0072\u0065q\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f \u0061\u0072\u0067u\u006de\u006e\u0074\u0073");};if args [0].Type ==ResultTypeError &&args [0].ValueString =="\u0023\u004e\u002f\u0041"{return args [1];};return args [0];};
// Eval evaluates and returns a boolean.
func (_eec Bool )Eval (ctx Context ,ev Evaluator )Result {return MakeBoolResult (_eec ._ba )};
// ISNONTEXT is an implementation of the Excel ISNONTEXT() function.
func IsNonText (args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053N\u004f\u004e\u0054\u0045X\u0054\u0028)\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073 \u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};return MakeBoolResult (args [0].Type !=ResultTypeString );};
// Received implements the Excel RECEIVED function.
func Received (args []Result )Result {_ddca :=len (args );if _ddca !=4&&_ddca !=5{return MakeErrorResult ("R\u0045\u0043\u0045\u0049\u0056\u0045\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0066o\u0075\u0072\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065 a\u0072\u0067\u0075m\u0065n\u0074\u0073");};_accaa ,_eeeb ,_edcbb :=_gbce (args [0],args [1],"\u0052\u0045\u0043\u0045\u0049\u0056\u0045\u0044");if _edcbb .Type ==ResultTypeError {return _edcbb ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0045\u0043\u0045\u0049\u0056\u0045\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020i\u006e\u0076\u0065\u0073\u0074\u006d\u0065n\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fbec :=args [2].ValueNumber ;if _fbec <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0052\u0045\u0043\u0045\u0049\u0056\u0045\u0044\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0069\u006ev\u0065\u0073\u0074\u006d\u0065\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065n\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052\u0045\u0043\u0045\u0049\u0056\u0045\u0044 \u0072\u0065\u0071ui\u0072\u0065\u0073\u0020\u0064\u0069s\u0063\u006f\u0075\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_fegg :=args [3].ValueNumber ;if _fegg <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0052\u0045\u0043\u0045I\u0056\u0045\u0044\u0020\u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u0064\u0069\u0073\u0063\u006f\u0075\u006e\u0074\u0020\u0074\u006f\u0020\u0062\u0065\u0020p\u006f\u0073\u0069\u0074\u0069v\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gcec :=0;if _ddca ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0052E\u0043\u0045I\u0056\u0045\u0044 \u0072\u0065\u0071\u0075\u0069\u0072\u0065s\u0020\u0062\u0061\u0073\u0069\u0073 \u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_gcec =int (args [4].ValueNumber );if !_bbf (_gcec ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006ec\u006f\u0072\u0072\u0065c\u0074\u0020b\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074\u0020\u0066\u006f\u0072\u0020\u0052\u0045\u0043E\u0049\u0056\u0045\u0044");};};_daee ,_edcbb :=_cebg (_accaa ,_eeeb ,_gcec );if _edcbb .Type ==ResultTypeError {return _edcbb ;};return MakeNumberResult (_fbec /(1-_fegg *_daee ));};func NewLexer ()*Lexer {return &Lexer {_cccf :make (chan *node )}};
// Reference returns an invalid reference for Bool.
func (_eaea Bool )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };var _edccg =[...]int {45,3,44,32,18,40,72,46,47,30,31,32,39,48,28,29,30,31,32,75,39,49,32,56,50,70,23,39,76,57,58,59,60,61,62,63,64,65,66,67,68,77,71,69,54,43,13,19,21,55,82,11,78,9,74,28,29,30,31,32,37,33,34,35,36,38,1,20,39,10,2,8,0,80,79,0,0,0,83,0,81,73,28,29,30,31,32,37,33,34,35,36,38,0,0,39,28,29,30,31,32,37,33,34,35,36,38,26,27,39,51,52,25,14,15,16,17,0,24,23,22,41,23,12,0,6,7,26,27,0,42,0,25,14,15,16,17,0,24,23,22,5,0,12,0,6,7,26,27,0,4,0,25,14,15,16,17,0,24,23,22,41,0,12,53,6,7,26,27,0,0,0,25,14,15,16,17,0,24,23,22,41,0,12,0,6,7};func _faefc (_ffea _dd .Time )_dd .Time {_ffea =_ffea .UTC ();return _dd .Date (_ffea .Year (),_ffea .Month (),_ffea .Day (),_ffea .Hour (),_ffea .Minute (),_ffea .Second (),_ffea .Nanosecond (),_dd .Local );};
// Update updates references in the PrefixExpr after removing a row/column.
func (_aeeec PrefixExpr )Update (q *_fc .UpdateQuery )Expression {_ccaag :=_aeeec ;_gdfce :=_aeeec ._ecfdc .String ();if _gdfce ==q .SheetToUpdate {_eaagf :=*q ;_eaagf .UpdateCurrentSheet =true ;_ccaag ._bgbg =_aeeec ._bgbg .Update (&_eaagf );};return _ccaag ;};
// LCM implements the Excel LCM() function which returns the least common
// multiple of a range of numbers.
func LCM (args []Result )Result {if len (args )==0{return MakeErrorResult ("\u004c\u0043M(\u0029\u0020\u0072e\u0071\u0075\u0069\u0072es \u0061t \u006c\u0065\u0061\u0073\u0074\u0020\u006fne\u0020\u0061\u0072\u0067\u0075\u006d\u0065n\u0074");};_adad :=[]float64 {};for _ ,_bcbg :=range args {switch _bcbg .Type {case ResultTypeString :_bcgc :=_bcbg .AsNumber ();if _bcgc .Type !=ResultTypeNumber {return MakeErrorResult ("\u004c\u0043M(\u0029\u0020\u006fn\u006c\u0079\u0020\u0061cce\u0070ts\u0020\u006e\u0075\u006d\u0065\u0072\u0069c \u0061\u0072\u0067\u0075\u006d\u0065\u006et\u0073");};_adad =append (_adad ,_bcgc .ValueNumber );case ResultTypeList :_ecffc :=LCM (_bcbg .ValueList );if _ecffc .Type !=ResultTypeNumber {return _ecffc ;};_adad =append (_adad ,_ecffc .ValueNumber );case ResultTypeNumber :_adad =append (_adad ,_bcbg .ValueNumber );case ResultTypeEmpty :case ResultTypeError :return _bcbg ;};};if len (_adad )==0{return MakeErrorResult ("\u004cC\u004d\u0020r\u0065\u0071\u0075\u0069r\u0065\u0073\u0020a\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006fne\u0020\u006e\u006fn\u002d\u0065m\u0070\u0074\u0079\u0020\u0061\u0072g\u0075\u006de\u006e\u0074");};if _adad [0]< 0{return MakeErrorResult ("\u004c\u0043M\u0028\u0029\u0020\u006fn\u006c\u0079 \u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};if len (_adad )==1{return MakeNumberResult (_adad [0]);};_bcadc :=_adad [0];for _bcaeg :=1;_bcaeg < len (_adad );_bcaeg ++{if _adad [_bcaeg ]< 0{return MakeErrorResult ("\u004c\u0043M\u0028\u0029\u0020\u006fn\u006c\u0079 \u0061\u0063\u0063\u0065\u0070\u0074\u0073\u0020p\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_bcadc =_adefe (_bcadc ,_adad [_bcaeg ]);};return MakeNumberResult (_bcadc );};const _adbgg =187;
// Function is a standard function whose result only depends on its arguments.
type Function func (_abgcd []Result )Result ;type ri struct{_beeg float64 ;_fgcc string ;};func _fffc (_ebgb ,_fbccg Reference )string {return _b .Sprintf ("\u0025\u0073\u003a%\u0073",_ebgb .Value ,_fbccg .Value );};
// NewPrefixVerticalRange constructs a new full columns range with prefix.
func NewPrefixVerticalRange (pfx Expression ,v string )Expression {_fegb :=_g .Split (v ,"\u003a");if len (_fegb )!=2{return nil ;};if _fegb [0]> _fegb [1]{_fegb [0],_fegb [1]=_fegb [1],_fegb [0];};return PrefixVerticalRange {_ecac :pfx ,_eacgc :_fegb [0],_faag :_fegb [1]};};
// LastRow returns 0 for the invalid reference context.
func (_efaf *ivr )LastRow (colFrom string )int {return 0};
// Parse parses a string to get an Expression.
func ParseString (s string )Expression {if s ==""{return NewEmptyExpr ();};return Parse (_g .NewReader (s ));};
// Range is a range expression that when evaluated returns a list of Results.
type Range struct{_bbag ,_cgbeb Expression };func (_fdec ReferenceType )String ()string {if _fdec >=ReferenceType (len (_gebd )-1){return _b .Sprintf ("\u0052\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065\u0054\u0079\u0070e\u0028\u0025\u0064\u0029",_fdec );};return _fdcf [_gebd [_fdec ]:_gebd [_fdec +1]];};func _agb (_agg int )int {if _agg < 1900{if _agg < 30{_agg +=2000;}else {_agg +=1900;};};return _agg ;};
// Effect implements the Excel EFFECT function.
func Effect (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0045\u0046F\u0045\u0043\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006den\u0074\u0073");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0045\u0046\u0046\u0045\u0043\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u006f\u006d\u0069n\u0061\u006c\u0020\u0069\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020a\u0072\u0067\u0075\u006d\u0065n\u0074");};_aagad :=args [0].ValueNumber ;if _aagad <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0045\u0046\u0046\u0045\u0043\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u006f\u006d\u0069n\u0061\u006c\u0020\u0069\u006e\u0074\u0065\u0072\u0065\u0073\u0074\u0020\u0072\u0061\u0074\u0065\u0020\u0074\u006f\u0020\u0062e\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062e\u0072\u0020\u0061r\u0067\u0075\u006d\u0065\u006e\u0074");};if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0045\u0046\u0046\u0045\u0043\u0054 \u0072\u0065\u0071\u0075\u0069r\u0065\u0073\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u006f\u0066 \u0063\u006f\u006d\u0070\u006f\u0075\u006e\u0064\u0069\u006e\u0067\u0020p\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075m\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074");};_fade :=float64 (int (args [1].ValueNumber ));if _fade < 1{return MakeErrorResultType (ErrorTypeNum ,"E\u0046\u0046\u0045\u0043\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0063o\u006dp\u006f\u0075\u006e\u0064i\u006e\u0067 \u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0031\u0020\u006f\u0072\u0020\u006d\u006f\u0072\u0065");};return MakeNumberResult (_ggd .Pow ((1+_aagad /_fade ),_fade )-1);};var _ddefg =[...]string {};
// Update makes a reference to point to one of the neighboring cells after removing a row/column with respect to the update type.
func (_bfd CellRef )Update (q *_fc .UpdateQuery )Expression {if q .UpdateCurrentSheet {_bfd ._abc =_gec (_bfd ._abc ,q );};return _bfd ;};
// ISFORMULA is an implementation of the Excel ISFORMULA() function.
func IsFormula (ctx Context ,ev Evaluator ,args []Result )Result {if len (args )!=1{return MakeErrorResult ("\u0049\u0053F\u004f\u0052\u004d\u0055L\u0041\u0028)\u0020\u0061\u0063\u0063\u0065\u0070\u0074\u0073 \u0061\u0020\u0073\u0069\u006e\u0067\u006c\u0065\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_dbagg :=args [0].Ref ;if _dbagg .Type !=ReferenceTypeCell {return MakeErrorResult ("I\u0053\u0046\u004f\u0052\u004d\u0055\u004c\u0041\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0068\u0065\u0020\u0066\u0069\u0072\u0073t\u0020a\u0072\u0067\u0075\u006de\u006e\u0074 \u0074\u006f\u0020\u0062\u0065\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0072\u0065\u0066\u0065\u0072\u0065\u006e\u0063\u0065");};return MakeBoolResult (ctx .HasFormula (_dbagg .Value ));};
// Reference returns an invalid reference for ConstArrayExpr.
func (_beaa ConstArrayExpr )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };
// Quotient is an implementation of the Excel QUOTIENT function that returns the
// integer portion of division.
func Quotient (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0051\u0055\u004f\u0054\u0049E\u004e\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0074\u0077\u006f\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_afbc :=args [0].AsNumber ();_gaeff :=args [1].AsNumber ();if _afbc .Type !=ResultTypeNumber ||_gaeff .Type !=ResultTypeNumber {return MakeErrorResult ("\u0051\u0055\u004f\u0054\u0049E\u004e\u0054\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073 \u0074\u0077\u006f\u0020\u006e\u0075\u006d\u0065\u0072\u0069\u0063\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};if _gaeff .ValueNumber ==0{return MakeErrorResultType (ErrorTypeDivideByZero ,"\u0051U\u004f\u0054\u0049\u0045N\u0054\u0028\u0029\u0020\u0064i\u0076i\u0064e\u0020\u0062\u0079\u0020\u007a\u0065\u0072o");};return MakeNumberResult (_ggd .Trunc (_afbc .ValueNumber /_gaeff .ValueNumber ));};
// Reference returns an invalid reference for Number.
func (_dcdgd Number )Reference (ctx Context ,ev Evaluator )Reference {return ReferenceInvalid };
// Update updates references in the VerticalRange after removing a row/column.
func (_edege VerticalRange )Update (q *_fc .UpdateQuery )Expression {if q .UpdateType ==_fc .UpdateActionRemoveColumn {_badg :=_edege ;if q .UpdateCurrentSheet {_bfebg :=q .ColumnIdx ;_badg ._beag =_cee (_edege ._beag ,_bfebg );_badg ._bagcg =_cee (_edege ._bagcg ,_bfebg );};return _badg ;};return _edege ;};func (_bgbda VerticalRange )verticalRangeReference ()string {return _b .Sprintf ("\u0025\u0073\u003a%\u0073",_bgbda ._beag ,_bgbda ._bagcg );};
// Cumipmt implements the Excel CUMIPMT function.
func Cumipmt (args []Result )Result {_bbcc ,_cfea :=_efdb (args ,"\u0043U\u004d\u0049\u0050\u004d\u0054");if _cfea .Type ==ResultTypeError {return _cfea ;};_aaed :=_bbcc ._bbd ;_bcae :=_bbcc ._bbbf ;_ddfa :=_bbcc ._dfbe ;_acce :=_bbcc ._dfeb ;_beff :=_bbcc ._fbca ;_aaae :=_bbcc ._fbgf ;_febc :=_gdge (_aaed ,_bcae ,_ddfa ,0,_aaae );_eeca :=0.0;if _acce ==1{if _aaae ==0{_eeca =-_ddfa ;_acce ++;};};for _aeag :=_acce ;_aeag <=_beff ;_aeag ++{if _aaae ==1{_eeca +=_gaab (_aaed ,_aeag -2,_febc ,_ddfa ,1)-_febc ;}else {_eeca +=_gaab (_aaed ,_aeag -1,_febc ,_ddfa ,0);};};_eeca *=_aaed ;return MakeNumberResult (_eeca );};const _fggda =57364;
// Update updates references in the PrefixVerticalRange after removing a row/column.
func (_dgbgc PrefixVerticalRange )Update (q *_fc .UpdateQuery )Expression {if q .UpdateType ==_fc .UpdateActionRemoveColumn {_acddb :=_dgbgc ;_fdcab :=_dgbgc ._ecac .String ();if _fdcab ==q .SheetToUpdate {_abae :=q .ColumnIdx ;_acddb ._eacgc =_cee (_dgbgc ._eacgc ,_abae );_acddb ._faag =_cee (_dgbgc ._faag ,_abae );};return _acddb ;};return _dgbgc ;};
// IsDBCS returns false for the invalid reference context.
func (_fdeec *ivr )IsDBCS ()bool {return false };var _edff =[...]int {-1000,-7,-3,-1,27,18,22,23,-2,-8,-4,-9,20,-14,10,11,12,13,-5,-13,-6,-12,17,16,15,9,4,5,22,23,24,25,26,28,29,30,31,27,32,35,-1,18,27,-15,-17,-1,-1,-1,-1,33,-5,4,5,21,-16,-11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,36,34,21,-5,33,21,34,19,-17,-1,-5,-10,-1};
// Update returns the same object as updating sheet references does not affect ConstArrayExpr.
func (_agc ConstArrayExpr )Update (q *_fc .UpdateQuery )Expression {return _agc };
// Decimal is an implementation of the Excel function DECIMAL() that parses a string
// in a given base and returns the numeric result.
func Decimal (args []Result )Result {if len (args )!=2{return MakeErrorResult ("\u0044\u0045\u0043\u0049\u004d\u0041\u004c\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069r\u0065s\u0020\u0074\u0077\u006f\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_feee :=args [0].AsString ();if _feee .Type !=ResultTypeString {return MakeErrorResult ("D\u0045\u0043\u0049\u004d\u0041\u004c\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020s\u0074\u0072\u0069\u006e\u0067\u0020\u0066\u0069\u0072\u0073t \u0061\u0072\u0067u\u006de\u006e\u0074");};_bdbf :=args [1].AsNumber ();if _bdbf .Type !=ResultTypeNumber {return MakeErrorResult ("\u0044\u0045\u0043\u0049\u004dA\u004c\u0028\u0029\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_fdde :=_feee .ValueString ;if len (_fdde )> 2&&(_g .HasPrefix (_fdde ,"\u0030\u0078")||_g .HasPrefix (_fdde ,"\u0030\u0058")){_fdde =_fdde [2:];};_ccce ,_accea :=_dc .ParseInt (_fdde ,int (_bdbf .ValueNumber ),64);if _accea !=nil {return MakeErrorResult ("\u0044\u0045C\u0049\u004d\u0041\u004c\u0028\u0029\u0020\u0065\u0072\u0072\u006f\u0072\u0020\u0069\u006e\u0020\u0063\u006f\u006e\u0076\u0065\u0072si\u006f\u006e");};return MakeNumberResult (float64 (_ccce ));};
// Pmt implements the Excel PMT function.
func Pmt (args []Result )Result {_adbd :=len (args );if _adbd < 3||_adbd > 5{return MakeErrorResult ("\u0050\u004dT\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065\u0020\u006f\u0066\u0020\u0033\u0020\u0061\u006e\u0064\u0020\u0035");};if args [0].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020r\u0061\u0074\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_eegd :=args [0].ValueNumber ;if args [1].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u004dT\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u006eu\u006d\u0062\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_dacg :=args [1].ValueNumber ;if _dacg ==0{return MakeErrorResultType (ErrorTypeNum ,"\u0050\u004d\u0054\u0020\u0072e\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u006e\u0075\u006d\u0062\u0065\u0072 \u006f\u0066\u0020\u0070\u0065\u0072\u0069\u006f\u0064\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u00200");};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073 p\u0072\u0065\u0073\u0065\u006e\u0074 \u0076\u0061\u006c\u0075\u0065\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006de\u006e\u0074");};_dceg :=args [2].ValueNumber ;_afdd :=0.0;if _adbd >=4&&args [3].Type !=ResultTypeEmpty {if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("P\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0066\u0075\u0074\u0075\u0072e \u0076\u0061\u006c\u0075e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075mb\u0065\u0072 \u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_afdd =args [3].ValueNumber ;};_fbaf :=0.0;if _adbd ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0050\u004d\u0054\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020t\u0079\u0070\u0065\u0020\u0074\u006f \u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067u\u006d\u0065\u006e\u0074");};_fbaf =args [4].ValueNumber ;if _fbaf !=0{_fbaf =1;};};var _bdff float64 ;if _eegd ==0{_bdff =(_dceg +_afdd )/_dacg ;}else {_cbcd :=_ggd .Pow (1+_eegd ,_dacg );if _fbaf ==1{_bdff =(_afdd *_eegd /(_cbcd -1)+_dceg *_eegd /(1-1/_cbcd ))/(1+_eegd );}else {_bdff =_afdd *_eegd /(_cbcd -1)+_dceg *_eegd /(1-1/_cbcd );};};return MakeNumberResult (-_bdff );};type evCache struct{_cffd map[string ]Result ;_eeb *_fd .Mutex ;};func _aaaaa (_feab Context ,_geea ,_dgbge string )(string ,string ){_cacc :=_geea +"\u0031";_dcfa :=_feab .LastRow (_geea );_dgbba :=_dgbge +_dc .Itoa (_dcfa );return _cacc ,_dgbba ;};
// NewPrefixExpr constructs an expression with prefix.
func NewPrefixExpr (pfx ,exp Expression )Expression {return &PrefixExpr {_ecfdc :pfx ,_bgbg :exp }};
// DateDif is an implementation of the Excel DATEDIF() function.
func DateDif (args []Result )Result {if len (args )!=3||args [0].Type !=ResultTypeNumber ||args [1].Type !=ResultTypeNumber ||args [2].Type !=ResultTypeString {return MakeErrorResult ("\u0044\u0041\u0054\u0045\u0044I\u0046\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0074\u0077o\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u006e\u0064\u0020\u006f\u006e\u0065\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_bde :=args [0].ValueNumber ;_bdc :=args [1].ValueNumber ;if _bdc < _bde {return MakeErrorResultType (ErrorTypeNum ,"\u0054\u0068\u0065\u0020\u0073\u0074\u0061r\u0074\u0020\u0064a\u0074\u0065\u0020\u0069s\u0020\u0067\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0074\u0068\u0065\u0020\u0065\u006e\u0064\u0020\u0064\u0061\u0074\u0065");};if _bdc ==_bde {return MakeNumberResult (0);};_bbgc :=_g .ToLower (args [2].ValueString );if _bbgc =="\u0064"{return MakeNumberResult (_bdc -_bde );};_ggf :=_gfae (_bde );_aba :=_gfae (_bdc );_ebc ,_acbe ,_feec :=_ggf .Date ();_eefc ,_fed ,_baf :=_aba .Date ();_dbc :=int (_acbe );_ggb :=int (_fed );var _gbd float64 ;switch _bbgc {case "\u0079":_gbd =float64 (_eefc -_ebc );if _ggb < _dbc ||(_ggb ==_dbc &&_baf < _feec ){_gbd --;};case "\u006d":_gdc :=_eefc -_ebc ;_fbba :=_ggb -_dbc ;if _baf < _feec {_fbba --;};if _fbba < 0{_gdc --;_fbba +=12;};_gbd =float64 (_gdc *12+_fbba );case "\u006d\u0064":_gbg :=_ggb ;if _baf < _feec {_gbg --;};_gbd =float64 (int (_bdc -_agd (_eefc ,_gbg ,_feec )));case "\u0079\u006d":_gbd =float64 (_ggb -_dbc );if _baf < _feec {_gbd --;};if _gbd < 0{_gbd +=12;};case "\u0079\u0064":_cdcg :=_eefc ;if _ggb < _dbc ||(_ggb ==_dbc &&_baf < _feec ){_cdcg --;};_gbd =float64 (int (_bdc -_agd (_cdcg ,_dbc ,_feec )));default:return MakeErrorResultType (ErrorTypeNum ,"\u0049n\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0069\u006e\u0074e\u0072\u0076\u0061\u006c\u0020\u0076\u0061\u006c\u0075\u0065");};return MakeNumberResult (_gbd );};func (_cbab tokenType )String ()string {return _baea (int (_cbab ))};func _gddb (_dfcc ,_afgd _dd .Time )bool {_cgfg :=_dfcc .Unix ();_gce :=_afgd .Unix ();_fccd :=_dfcc .Year ();_ffdd :=_edb (_fccd ,_dd .March ,1);if _bef (_fccd )&&_cgfg < _ffdd &&_gce >=_ffdd {return true ;};var _bege =_afgd .Year ();var _dbfc =_edb (_bege ,_dd .March ,1);return (_bef (_bege )&&_gce >=_dbfc &&_cgfg < _dbfc );};
// Couppcd implements the Excel COUPPCD function.
func Couppcd (args []Result )Result {_gcg ,_cdbf :=_abfb (args ,"\u0043O\u0055\u0050\u0050\u0043\u0044");if _cdbf .Type ==ResultTypeError {return _cdbf ;};_dea :=_gfae (_gcg ._dddg );_dbbb :=_gfae (_gcg ._edg );_feb :=_gcg ._edba ;_acgf :=_gcg ._bbed ;_bee :=_fgf (_dea ,_dbbb ,_feb ,_acgf );_cbd ,_dcc ,_cagd :=_bee .Date ();return MakeNumberResult (_agd (_cbd ,int (_dcc ),_cagd ));};
// Lookup implements the LOOKUP function that returns a matching value from a
// column, or from the same index in a second column.
func Lookup (args []Result )Result {if len (args )< 2{return MakeErrorResult ("\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074 \u0074\u0077\u006f\u0020\u0061r\u0067\u0075m\u0065\u006e\u0074\u0073");};if len (args )> 3{return MakeErrorResult ("\u004c\u004f\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072e\u0073\u0020\u0061\u0074\u0020\u006do\u0073\u0074\u0020\u0074\u0068\u0072\u0065\u0065\u0020\u0061\u0072\u0067\u0075m\u0065\u006e\u0074\u0073");};_fgfc :=args [0];_ffaf :=args [1];if _ffaf .Type !=ResultTypeArray &&_ffaf .Type !=ResultTypeList {return MakeErrorResult ("\u0056\u004cO\u004f\u004b\u0055\u0050\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0073\u0065\u0063\u006f\u006e\u0064\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0020\u006f\u0066\u0020\u0074\u0079\u0070\u0065\u0020\u0061\u0072\u0072\u0061\u0079");};_bcgg :=_ebbf (_ffaf );_fgfba :=-1;for _gebe ,_aagba :=range _bcgg {if _adeg (_fgfc ,_aagba ,false ,false )==_dbdf {_fgfba =_gebe ;};};if _fgfba ==-1{return MakeErrorResultType (ErrorTypeNA ,"\u004c\u004f\u004f\u004bUP\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075n\u0064");};_fcedg :=_bcgg ;if len (args )==3{_fcedg =_ebbf (args [2]);};if _fgfba < 0||_fgfba >=len (_fcedg ){return MakeErrorResultType (ErrorTypeNA ,"\u004c\u004f\u004f\u004bUP\u0020\u006e\u006f\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u0066\u006f\u0075n\u0064");};return _fcedg [_fgfba ];};
// Yielddisc implements the Excel YIELDDISC function.
func Yielddisc (args []Result )Result {_cefb :=len (args );if _cefb !=4&&_cefb !=5{return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044D\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020f\u006f\u0075\u0072\u0020\u006f\u0072\u0020\u0066\u0069\u0076\u0065\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074\u0073");};_feaa ,_eca ,_fbaa :=_gbce (args [0],args [1],"\u0059I\u0045\u004c\u0044\u0044\u0049\u0053C");if _fbaa .Type ==ResultTypeError {return _fbaa ;};if args [2].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044\u0044\u0049S\u0043\u0020\u0072e\u0071\u0075\u0069\u0072e\u0073\u0020\u0070\u0072\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_cdega :=args [2].ValueNumber ;if _cdega <=0{return MakeErrorResultType (ErrorTypeNum ,"\u0059\u0049E\u004c\u0044\u0044\u0049\u0053C\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0070\u0072\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};if args [3].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049\u0045\u004c\u0044D\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020r\u0065\u0064\u0065\u006d\u0070\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006et");};_cebf :=args [3].ValueNumber ;if _cebf <=0{return MakeErrorResultType (ErrorTypeNum ,"YI\u0045\u004cD\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075i\u0072\u0065\u0073\u0020\u0072\u0065\u0064\u0065\u006d\u0070\u0074\u0069\u006f\u006e\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u0076e\u0020n\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072g\u0075m\u0065\u006et");};_eefd :=0;if _cefb ==5&&args [4].Type !=ResultTypeEmpty {if args [4].Type !=ResultTypeNumber {return MakeErrorResult ("\u0059\u0049E\u004c\u0044\u0044\u0049\u0053\u0043\u0020\u0072\u0065\u0071\u0075\u0069\u0072\u0065\u0073\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0074\u006f\u0020\u0062\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074");};_eefd =int (args [4].ValueNumber );if !_bbf (_eefd ){return MakeErrorResultType (ErrorTypeNum ,"\u0049\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0062\u0061\u0073\u0069\u0073\u0020\u0061\u0072\u0067\u0075\u006d\u0065\u006e\u0074 \u0066\u006f\u0072\u0020\u0059I\u0045\u004cD\u0044\u0049\u0053\u0043");};};_egc ,_fbaa :=_cebg (_feaa ,_eca ,_eefd );if _fbaa .Type ==ResultTypeError {return _fbaa ;};return MakeNumberResult ((_cebf /_cdega -1)/_egc );};func (_efda PrefixVerticalRange )verticalRangeReference (_cbdab string )string {return _b .Sprintf ("\u0025\u0073\u0021\u0025\u0073\u003a\u0025\u0073",_cbdab ,_efda ._eacgc ,_efda ._faag );};
// Update returns the same object as updating sheet references does not affect EmptyExpr.
func (_gde EmptyExpr )Update (q *_fc .UpdateQuery )Expression {return _gde };