
    nht                       d Z ddlZddlZddlmZ ddlmZmZm	Z	m
Z
mZ ddl g dZdZdZd	Zd
ZdZdZdZdddddddZeez
  eez
  eez   ez   eez   ez   eez   ez   eez   ez   eeez   ez   eez   ez   eez   ez   eez   eez   dj,                  ZdZd	ZdZdZdZdZdZdZddddddd d!d"Z d#Z!g d$Z"g d%Z#g d&Z$g d'Z%g d(Z&e"e"e#e$e$e%e%e&d)Z'g d*Z(i dd+dd,dd-dd.d	d/dd0d1d2d3d4d
d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCddDi dEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbddcdddei dfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddēddƓddȓddʓi dd̓ddΓddГddғddԓdd֓ddؓddړddܓddޓddddddddddddddi dddddddddddddddddddd ddddddddd	d
ddddi dddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0i d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRi dSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdti dudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi dddddddddddÐdēdŐdƓdǐdȓdɐdʓdːd̓d͐dΓdϐdГdѐdғdӐdԓdՐd֓dאdؓdِdړi dېdܓdݐdޓdߐdddddddddddddddddddddddddddddi dddd ddddddddd	d
dddddddddddddddddddddd d!d"d#d$Z)d%d&d'd(d)d*d+d,d-d.	Z*h d/Z+e,e-e,e-e,e-fZ.e-e,e-e,e-e,fZ/d0 Z0did1Z1did2Z2did3Z3did4Z4djd5Z5djd6Z6 G d7 d8e7      Z8 G d9 d:      Z9 G d; d<e:      Z;dZ<d	Z=dZ>d1Z?d3Z@d
ZA eBd6dB      \  ZCZDZEZFZGZHd= ZId> ZJd? ZKd@ ZLdA ZMdB ZNdC ZOdD ZPdE ZQeeIeeRiZSeeIeeIiZTeeQeeIiZUe<eSeej                  d_dFfe=eSeej                  d_dGfe>eSeej                  drdHfe?eSeej                  drdIfe@eSeeJddJfeAeUeej                  dKdKfeCeTeeKd8dLfeDeTeeLd8dMfeEeTeeMd8dNfeFeTeeNd8dOfeGeTeeOd8dPfeHeTeePd8dQfiZZdR ddGdSfdT ddFdSfdU ddSdVfdWZ[dXZ\dXZ]dZ^d8Z_dkdYZ`	 dldZZadkd[Zbdmd\Zcdmd]Zdd^ Zedjd_Zfdnd`Zgda ZhdjdbZidndcZjdd ZkdndeZldf Zmdg Zndh Zoy(o  z9
Module for parsing/evaluating Microsoft Excel formulas.
    N)unpack   )	XLRDErrorerror_text_from_codehex_char_dumpunpack_string_update_posunpack_unicode_update_pos)*)oBOOLoERRoNUMoREFoRELoSTRGoUNKdecompile_formuladump_formulaevaluate_name_formula
okind_dictrangename3drangename3drelcellnamecellnameabscolnameFMLA_TYPE_CELLFMLA_TYPE_SHAREDFMLA_TYPE_ARRAYFMLA_TYPE_COND_FMTFMLA_TYPE_DATA_VALFMLA_TYPE_NAMEOperandRef3D                ?   CELLSHAREDARRAYzCOND-FMTzDATA-VALNAME)r   r#   r$   r%   r&   r'   )r   r#      r&      r'   #   9   :   ;   ,   -         r   r   r   r   r   r   r   oMSNG)r8   r7   r   r   r#   r5   r$   r6   ,)@r8   r$   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r8   r7   r%   r$   r#   r#   r5   	   r%   r#   r5   r%   r$      r6   r6   r6   r#   r$   r<   r$   r<   r#   r#   r8   r8   r8   r8   r8   r8   r8   r8   r5   r8   r8   r8   r8   r8   r8   r8   )@r8   r6   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r8   r7      r6   r#   r#   r5   r;   r;   r#   r5   r=   r$   r<   r<   r<   r<   r5   r$   r<   r$   r<   r5   r5   r8   r8   r8   r8   r8   r8   r8   r8   r5   r8   r8   r8   r8   r8   r8   r8   )@r8   r6   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r8   r7   r=   r6   r#   r#   r5   r;   r;   r5   r$   r=   r$   r<   r<   r<   r<   r5   r$   r<   r$   r<   r5   r5   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   r8   )@r8   r6   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r8   r7   r8   r8   r#   r#   r5   r;   r;   r5   r$   r-   r$   r<   r<   r<   r<   r5   r$   r<   r$   r<   r5   r5   r8   r8   r8   r8   r8   r8   r8   r8   r8            r?   r@   r8   r8   )@r8   r6   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r7   r7   r8   r8   r#   r#   r5   r;   r;   r5   r$   r6   r6   r;   r<   r<   r<   r5   r6   r;   r6   r;   r5   r5   r8   r8   r8   r8   r8   r8   r8   r8   r8   r<   r<   r=   r<   r=   r8   r8   )   r@      (   r4   2   F   P   )@Unk00ExpTblAddSubMulDivPowerConcatLTLEEQGEGTNEIsectListRangeUplusUminusPercentParenMissArgStrExtendedAttrSheetEndSheetErrBoolIntNumArrayFuncFuncVarNameRefAreaMemAreaMemErrMemNoMemMemFuncRefErrAreaErrRefNAreaNMemAreaN	MemNoMemN rw   rw   rw   rw   rw   rw   rw   FuncCENameXRef3dArea3dRefErr3d	AreaErr3drw   rw   )COUNTr   rB   r$   r   VR)IFr#   r5   r$   r5   r   VRR)ISNAr   r   r#   r   r   r   )ISERRORr   r   r#   r   r   r   )SUMr   rB   r$   r   r   r   )AVERAGEr   rB   r$   r   r   r      )MINr   rB   r$   r   r   r   r<   )MAXr   rB   r$   r   r   r   )ROWr   r   r$   r   r   r   r;   )COLUMNr   r   r$   r   r   r   
   )NAr   r   r#   r   r   rw   r=   )NPVr#   rB   r$   r#   r   VR   )STDEVr   rB   r$   r   r   r      )DOLLARr   r#   r$   r   r   r      )FIXEDr#   r5   r$   r5   r   VVVr-   )SINr   r   r#   r   r   r   )COSr   r   r#   r   r   r   r.   )TANr   r   r#   r   r   r   r?   )ATANr   r   r#   r   r   r      )PIr   r   r#   r   r   rw   rA   )SQRTr   r   r#   r   r   r   r@   )EXPr   r   r#   r   r   r      )LNr   r   r#   r   r   r      )LOG10r   r   r#   r   r   r      )ABSr   r   r#   r   r   r   r>   )INTr   r   r#   r   r   r      )SIGNr   r   r#   r   r   r      )ROUNDr#   r#   r#   r#   r   VV   )LOOKUPr#   r5   r$   r#   r   r      )INDEXr#   r$   r   r$   r   RVVVrB   )REPTr#   r#   r#   r#   r   r      )MIDr5   r5   r#   r5   r   r   )LENr   r   r#   r   r   r   !   )VALUEr   r   r#   r   r   r   "   )TRUEr   r   r#   r   r   rw   r/   )FALSEr   r   r#   r   r   rw   $   )ANDr   rB   r$   r   r   r   %   )ORr   rB   r$   r   r   r   &   )NOTr   r   r#   r   r   r   '   )MODr#   r#   r#   r#   r   r   rC   )DCOUNTr5   r5   r#   r5   r   RRR)   )DSUMr5   r5   r#   r5   r   r   *   )DAVERAGEr5   r5   r#   r5   r   r   +   )DMINr5   r5   r#   r5   r   r   r3   )DMAXr5   r5   r#   r5   r   r   r4   )DSTDEVr5   r5   r#   r5   r   r   .   )VARr   rB   r$   r   r   r   /   )DVARr5   r5   r#   r5   r   r   0   )TEXTr#   r#   r#   r#   r   r   1   )LINESTr   r$   r$   r$   ARRVVrD   )TRENDr   r$   r$   r$   r   RRRV3   )LOGESTr   r$   r$   r$   r   r   4   )GROWTHr   r$   r$   r$   r   r   8   )PVr5   r6   r$   r6   r   VVVVVr0   )FVr5   r6   r$   r6   r   r   r1   )NPERr5   r6   r$   r6   r   r   r2   )PMTr5   r6   r$   r6   r   r   <   )RATEr5   r   r$   r   r   VVVVVV=   )MIRRr5   r5   r#   r5   r   RVV>   )IRRr   r#   r$   r#   r   RV)RANDr   r   r   r   r   rw   @   )MATCHr#   r5   r$   r5   r   r   A   )DATEr5   r5   r#   r5   r   r   B   )TIMEr5   r5   r#   r5   r   r   C   )DAYr   r   r#   r   r   r   D   )MONTHr   r   r#   r   r   r   E   )YEARr   r   r#   r   r   r   rE   )WEEKDAYr   r#   r$   r#   r   r   G   )HOURr   r   r#   r   r   r   H   )MINUTEr   r   r#   r   r   r   I   )SECONDr   r   r#   r   r   r   J   )NOWr   r   r   r   r   rw   K   )AREASr   r   r#   r   r   r   L   )ROWSr   r   r#   r   r   r   M   )COLUMNSr   r   r#   r   r   r   N   )OFFSETr5   r6   r$   r6   r   RVVVVR   )SEARCHr#   r5   r$   r5   r   r   S   )	TRANSPOSEr   r   r#   r   r   r   V   )TYPEr   r   r#   r   r   r   \   )	SERIESSUMr$   r$   r#   r$   r   VVVAa   )ATAN2r#   r#   r#   r#   r   r   b   )ASINr   r   r#   r   r   r   c   )ACOSr   r   r#   r   r   r   d   )CHOOSEr#   rB   r$   r#   r   r   e   )HLOOKUPr5   r$   r$   r$   r   VRRVf   )VLOOKUPr5   r$   r$   r$   r   r  i   )ISREFr   r   r#   r   r   r   m   )LOGr   r#   r$   r#   r   r   o   )CHARr   r   r#   r   r   r   p   )LOWERr   r   r#   r   r   r   q   )UPPERr   r   r#   r   r   r   r   )PROPERr   r   r#   r   r   r   s   )LEFTr   r#   r$   r#   r   r   t   )RIGHTr   r#   r$   r#   r   r   u   )EXACTr#   r#   r#   r#   r   r   v   )TRIMr   r   r#   r   r   r   w   )REPLACEr$   r$   r#   r$   r   VVVVx   )
SUBSTITUTEr5   r$   r$   r$   r   r5  y   )CODEr   r   r#   r   r   r   |   )FINDr#   r5   r$   r5   r   r   }   )r)   r   r#   r   r#   r   r   ~   )ISERRr   r   r#   r   r   r      )ISTEXTr   r   r#   r   r   r      )ISNUMBERr   r   r#   r   r   r      )ISBLANKr   r   r#   r   r   r      )Tr   r   r#   r   r   r      )Nr   r   r#   r   r   r      )	DATEVALUEr   r   r#   r   r   r      )	TIMEVALUEr   r   r#   r   r   r      )SLNr5   r5   r#   r5   r   r      )SYDr$   r$   r#   r$   r   r5     )DDBr$   r6   r$   r6   r   r      )INDIRECTr   r#   r   r#   r   r      )CLEANr   r   r#   r   r   r      )MDETERMr   r   r#   r   r   r      )MINVERSEr   r   r#   r   r   r      )MMULTr#   r#   r#   r#   r   AA   )IPMTr$   r   r$   r   r   r      )PPMTr$   r   r$   r   r   r      )COUNTAr   rB   r$   r   r   r      )PRODUCTr   rB   r$   r   r   r      )FACTr   r   r#   r   r   r      )DPRODUCTr5   r5   r#   r5   r   r      )	ISNONTEXTr   r   r#   r   r   r      )STDEVPr   rB   r$   r   r   r      )VARPr   rB   r$   r   r   r      )DSTDEVPr5   r5   r#   r5   r   r      )DVARPr5   r5   r#   r5   r   r      )TRUNCr   r#   r$   r#   r   r      )	ISLOGICALr   r   r#   r   r   r      )DCOUNTAr5   r5   r#   r5   r   r      )USDOLLARr   r#   r$   r#   r   r      )FINDBr#   r5   r$   r5   r   r      )SEARCHBr#   r5   r$   r5   r   r      )REPLACEBr$   r$   r#   r$   r   r5     )LEFTBr   r#   r$   r#   r   r      )RIGHTBr   r#   r$   r#   r   r      )MIDBr5   r5   r#   r5   r   r      )LENBr   r   r#   r   r   r      )ROUNDUPr#   r#   r#   r#   r   r      )	ROUNDDOWNr#   r#   r#   r#   r   r      )ASCr   r   r#   r   r   r      )DBCSr   r   r#   r   r   r      )RANKr#   r5   r$   r5   r   VRV   )ADDRESSr#   r6   r$   r6   r   r      )DAYS360r#   r5   r$   r5   r   r      )TODAYr   r   r   r   r   rw      )VDBr6   r<   r$   r<   r   VVVVVVV   )MEDIANr   rB   r$   r   r   r      )
SUMPRODUCTr   rB   r$   r   r   r      )SINHr   r   r#   r   r   r      )COSHr   r   r#   r   r   r      )TANHr   r   r#   r   r   r      )ASINHr   r   r#   r   r   r      )ACOSHr   r   r#   r   r   r      )ATANHr   r   r#   r   r   r      )DGETr5   r5   r#   r5   r   r      )INFOr   r   r#   r   r   r      )DBr$   r6   r$   r6   r   r      )	FREQUENCYr#   r#   r#   r#   r   RRi  )z
ERROR.TYPEr   r   r#   r   r   r   i  )AVEDEVr   rB   r$   r   r   r   i  )BETADISTr5   r6   r$   r   r   r   i  )GAMMALNr   r   r#   r   r   r   i  )BETAINVr5   r6   r$   r   r   r   i  )	BINOMDISTr$   r$   r#   r$   r   r5  i  )CHIDISTr#   r#   r#   r#   r   r   i  )CHIINVr#   r#   r#   r#   r   r   i  )COMBINr#   r#   r#   r#   r   r   i  )
CONFIDENCEr5   r5   r#   r5   r   r   i  )	CRITBINOMr5   r5   r#   r5   r   r   i  )EVENr   r   r#   r   r   r   i  )	EXPONDISTr5   r5   r#   r5   r   r   i  )FDISTr5   r5   r#   r5   r   r   i  )FINVr5   r5   r#   r5   r   r   i  )FISHERr   r   r#   r   r   r   i  )	FISHERINVr   r   r#   r   r   r   i  )FLOORr#   r#   r#   r#   r   r   i  )	GAMMADISTr$   r$   r#   r$   r   r5  i  )GAMMAINVr5   r5   r#   r5   r   r   i   )CEILINGr#   r#   r#   r#   r   r   i!  )HYPGEOMDISTr$   r$   r#   r$   r   r5  i"  )LOGNORMDISTr5   r5   r#   r5   r   r   i#  )LOGINVr5   r5   r#   r5   r   r   i$  )NEGBINOMDISTr5   r5   r#   r5   r   r   i%  )NORMDISTr$   r$   r#   r$   r   r5  i&  )	NORMSDISTr   r   r#   r   r   r   i'  )NORMINVr5   r5   r#   r5   r   r   i(  )NORMSINVr   r   r#   r   r   r   i)  )STANDARDIZEr5   r5   r#   r5   r   r   i*  )ODDr   r   r#   r   r   r   i+  )PERMUTr#   r#   r#   r#   r   r   i,  )POISSONr5   r5   r#   r5   r   r   i-  )TDISTr5   r5   r#   r5   r   r   i.  )WEIBULLr$   r$   r#   r$   r   r5  i/  )SUMXMY2r#   r#   r#   r#   r   r]  i0  )SUMX2MY2r#   r#   r#   r#   r   r]  i1  )SUMX2PY2r#   r#   r#   r#   r   r]  i2  )CHITESTr#   r#   r#   r#   r   r]  i3  )CORRELr#   r#   r#   r#   r   r]  i4  )COVARr#   r#   r#   r#   r   r]  i5  )FORECASTr5   r5   r#   r5   r   VAAi6  )FTESTr#   r#   r#   r#   r   r]  i7  )	INTERCEPTr#   r#   r#   r#   r   r]  i8  )PEARSONr#   r#   r#   r#   r   r]  i9  )RSQr#   r#   r#   r#   r   r]  i:  )STEYXr#   r#   r#   r#   r   r]  i;  )SLOPEr#   r#   r#   r#   r   r]  i<  )TTESTr$   r$   r#   r$   r   AAVVi=  )PROBr5   r$   r$   r5   r   AAVi>  )DEVSQr   rB   r$   r   r   r   i?  )GEOMEANr   rB   r$   r   r   r   i@  )HARMEANr   rB   r$   r   r   r   iA  )SUMSQr   rB   r$   r   r   r   iB  )KURTr   rB   r$   r   r   r   iC  )SKEWr   rB   r$   r   r   r   iD  )ZTESTr#   r5   r$   r#   r   r   iE  )LARGEr#   r#   r#   r#   r   r   iF  )SMALLr#   r#   r#   r#   r   r   iG  )QUARTILEr#   r#   r#   r#   r   r   iH  )
PERCENTILEr#   r#   r#   r#   r   r   iI  )PERCENTRANKr#   r5   r$   r#   r   r   iJ  )MODEr   rB   r$   r   r   r   iK  )TRIMMEANr#   r#   r#   r#   r   r   iL  )TINVr#   r#   r#   r#   r   r   iP  )CONCATENATEr   rB   r$   r   r   r   iQ  )POWERr#   r#   r#   r#   r   r   iV  )RADIANSr   r   r#   r   r   r   iW  )DEGREESr   r   r#   r   r   r   iX  )SUBTOTALr#   rB   r$   r#   r   r   iY  )SUMIFr#   r5   r$   r5   r   RVRiZ  )COUNTIFr#   r#   r#   r#   r   r   i[  )
COUNTBLANKr   r   r#   r   r   r   i^  )ISPMTr$   r$   r#   r$   r   r5  i_  )DATEDIFr5   r5   r#   r5   r   r   i`  )
DATESTRINGr   r   r#   r   r   r   ia  )NUMBERSTRINGr#   r#   r#   r#   r   r   ib  )ROMANr   r#   r$   r#   r   r   if  )GETPIVOTDATAr#   r#   r#   r#   r   r   ig  )	HYPERLINKr   r#   r$   r#   r   r   ih  )PHONETICr   r   r#   r   r   r   ii  )AVERAGEAr   rB   r$   r   r   r   ij  )MAXAr   rB   r$   r   r   r   ik  )MINAr   rB   r$   r   r   r   il  )STDEVPAr   rB   r$   r   r   r   im  )VARPAr   rB   r$   r   r   r   in  )STDEVAr   rB   r$   r   r   r   io  )VARAr   rB   r$   r   r   r   ip  )BAHTTEXTr   r   r#   r   r   r   iq  )THAIDAYOFWEEKr   r   r#   r   r   r   ir  )	THAIDIGITr   r   r#   r   r   r   is  )THAIMONTHOFYEARr   r   r#   r   r   r   it  )THAINUMSOUNDr   r   r#   r   r   r   iu  )THAINUMSTRINGr   r   r#   r   r   r   iv  )THAISTRINGLENGTHr   r   r#   r   r   r   )ISTHAIDIGITr   r   r#   r   r   r   )ROUNDBAHTDOWNr   r   r#   r   r   r   )ROUNDBAHTUPr   r   r#   r   r   r   )THAIYEARr   r   r#   r   r   r   )RTDr#   r6   r$   r   r   r   )iw  ix  iy  iz  i{  zSkip??VolatileIfChooseSkipSumAssignSpaceSpaceVolatile)	r   r   r#   r$   r%   r&   r'   r   r   >   r<   r%   r   r=   r   r   r   c                 d    t        d t        | |j                  |j                        D              S )Nc              3   6   K   | ]  \  }}} |||        y wN ).0funcnumanumbs       u/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/excelrd/formula.py	<genexpr>zdo_box_funcs.<locals>.<genexpr>'  s     c&6dD$dD!cs   )tuplezipcoords)	box_funcsboxaboxbs      r.  do_box_funcsr6  &  s'    c#iVZVaVa:bccc    c                     |dz	  dz  }|dz	  dz  }| }|dz  }|r|r
|dk\  r|dz  }|r|dk\  r|dz  }n|r||z  }|r||z  }||||fS )	Nr-   r   r            rA     r)  	rowvalcolvalreldeltabrowxbcolxrow_relcol_relrowxcolxs	            r.  adjust_cell_addr_biff8rG  *  sz    |q G|q GDD=Dtu}EMDts{CKDEMDEMDw''r7  c                     | dz	  dz  }| dz	  dz  }| dz  }|}|r|r
|dk\  r|dz  }|r|dk\  r|dz  }n|r||z  }|r||z  }||||fS )	Nr-   r   r   i?  i    i @  rA  r<  r)  r=  s	            r.  adjust_cell_addr_biff_le7rI  <  sz    |q G|q GF?DDtt|EMDts{CKDEMDEMDw''r7  c                     |dk\  r$t        d| ||dz          \  }}t        |||||      S t        d| ||dz          \  }}t        |||||      S )NrF   <HHr$   z<HBr5   r   rG  rI  )dataposbvr@  rA  rB  r>  r?  s           r.  get_cell_addrrP  N  se    	RxtC#'':;%ffhuMMtC#'':;(5%PPr7  c                     |dk\  r9t        d| ||dz          \  }}}}	t        |||||      }
t        ||	|||      }|
|fS t        d| ||dz          \  }}}}	t        |||||      }
t        ||	|||      }|
|fS )NrF   z<HHHHr%   z<HHBBr   rL  )rM  rN  rO  r@  rA  rB  row1valrow2valcol1valcol2valres1res2s               r.  get_cell_range_addrrX  Y  s    	Rx-3GT#a=P-Q*'7 &gw%O%gw%OTz-3GT#a=P-Q*'7 )'8UER('8UERTzr7  c                 V   	 | j                   |   }|\  }}}|| j
                  k(  r/|rt        d||fz  | j                         |dcxk(  r|k(  sJ  J y|| j                  k7  r|rt        d||fz  | j                         y|dcxk(  r|k(  r"n n|rt        d	||fz  | j                         y
|dcxk(  r|k(  r!n n|rt        d|fz  | j                         yt        | j                        }d|cxk  r|cxk  r|k  s;n |r6t        d||fz  | j                         t        d|z  | j                         y| j                  |   }| j                  |   }	d|cxk  r|	k  sy y||	fS # t        $ r2 t        d|t        | j                         fz  | j                         Y yw xY w)Nz:!!! get_externsheet_local_range: refx=%d, not in range(%d)file)r\  z5/// get_externsheet_local_range(refx=%d) -> addins %ri  )r]  z7/// get_externsheet_local_range(refx=%d) -> external %rr_  z@/// get_externsheet_local_range(refx=%d) -> unspecified sheet %rr7   r7   i  z</// get_externsheet_local_range(refx=%d) -> deleted sheet(s)r8   r8   r   z./// get_externsheet_local_range(refx=%d) -> %r%--- first/last sheet not in range(%d))rc  re  )_externsheet_info
IndexErrorprintlenlogfile_supbook_addins_inx_supbook_locals_inx_all_sheets_map)
bkrefxblahinforef_recordxref_first_sheetxref_last_sheetxnsheetsxlrd_sheetx1xlrd_sheetx2s
             r.  get_externsheet_local_rangerx  j  s   ##D) 6:2K!?b,,,G4QU,VZZ  6<_<<<<<b,,,ITSWLXZZ 64_4RVZ\`UaaZZ 64_4NRVQXXZZ "$$%G!>_>w>BdD\QXZXbXbc9GC"**U%%&67L%%o6L-- .%%_  HS--./0	

 s   E- -8F('F(c                    |dkD  r|rt        d|z  | j                         y|dk(  r|dk(  ryt        | j                        }d|cxk  r|cxk  r|k  s<n |r7t        d|||fz  | j                         t        d|z  | j                         y	| j                  |   }| j                  |   }d|cxk  r|k  sy
 y
||fS )Nr   z?/// get_externsheet_local_range_b57(raw_extshtx=%d) -> externalrZ  r^  r7   ra  z6/// get_externsheet_local_range_b57(%d, %d, %d) -> ???rb  )rz  rd  )rh  rj  ri  rm  )rn  raw_extshtxrs  rt  rp  ru  rv  rw  s           r.  get_externsheet_local_range_b57r|    s    QQT__ZZ 2/R"7"$$%G!>_>w>H 0/BCZZ
 9GC"**U%%&67L%%o6L-- .%%r7  c                       e Zd Zy)FormulaErrorN)__name__
__module____qualname__r)  r7  r.  r~  r~    s    r7  r~  c                   *    e Zd ZdZdZeZdZddZd Z	y)r!   a  
    Used in evaluating formulas.
    The following table describes the kinds and how their values
    are represented.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Kind symbol</th>
        <th>Kind number</th>
        <th>Value representation</th>
        </tr>
        <tr>
        <td>oBOOL</td>
        <td align="center">3</td>
        <td>integer: 0 => False; 1 => True</td>
        </tr>
        <tr>
        <td>oERR</td>
        <td align="center">4</td>
        <td>None, or an int error code (same as XL_CELL_ERROR in the Cell class).
        </td>
        </tr>
        <tr>
        <td>oMSNG</td>
        <td align="center">5</td>
        <td>Used by Excel as a placeholder for a missing (not supplied) function
        argument. Should *not* appear as a final formula result. Value is None.</td>
        </tr>
        <tr>
        <td>oNUM</td>
        <td align="center">2</td>
        <td>A float. Note that there is no way of distinguishing dates.</td>
        </tr>
        <tr>
        <td>oREF</td>
        <td align="center">-1</td>
        <td>The value is either None or a non-empty list of
        absolute Ref3D instances.<br>
        </td>
        </tr>
        <tr>
        <td>oREL</td>
        <td align="center">-2</td>
        <td>The value is None or a non-empty list of
        fully or partially relative Ref3D instances.
        </td>
        </tr>
        <tr>
        <td>oSTRG</td>
        <td align="center">1</td>
        <td>A Unicode string.</td>
        </tr>
        <tr>
        <td>oUNK</td>
        <td align="center">0</td>
        <td>The kind is unknown or ambiguous. The value is None</td>
        </tr>
        </table>
    N?c                 D    ||| _         ||| _        || _        || _        y r(  )kindvalueranktext)selfakindavaluearankatexts        r.  __init__zOperand.__init__
  s,    DIDJ	 	r7  c                     t         j                  | j                  d      }d| d| j                  d| j                  dS )Nz?Unknown kind?zOperand(kind=z, value=z, text=))r   getr  r  r  )r  	kind_texts     r.  __repr__zOperand.__repr__  s;    NN499.>?	yk$**wtyymSTUUr7  )NNr   r  )
r  r  r  __doc__r  r   r  r  r  r  r)  r7  r.  r!   r!     s(    <@ E D DVr7  r!   c                       e Zd ZdZd Zd Zy)r"   a  
    Represents an absolute or relative 3-dimensional reference to a box
    of one or more cells.

    The ``coords`` attribute is a tuple of the form::

      (shtxlo, shtxhi, rowxlo, rowxhi, colxlo, colxhi)

    where ``0 <= thingxlo <= thingx < thingxhi``.

    .. note::
      It is quite possible to have ``thingx > nthings``; for example
      ``Print_Titles`` could have ``colxhi == 256`` and/or ``rowxhi == 65536``
      irrespective of how many columns/rows are actually used in the worksheet.
      The caller will need to decide how to handle this situation.
      Keyword: :class:`IndexError` :-)

    The components of the coords attribute are also available as individual
    attributes: ``shtxlo``, ``shtxhi``, ``rowxlo``, ``rowxhi``, ``colxlo``, and
    ``colxhi``.

    The ``relflags`` attribute is a 6-tuple of flags which indicate whether
    the corresponding (sheet|row|col)(lo|hi) is relative (1) or absolute (0).

    .. note::
      There is necessarily no information available as to what cell(s)
      the reference could possibly be relative to. The caller must decide what
      if any use to make of ``oREL`` operands.

    .. note:
      A partially relative reference may well be a typo.
      For example, define name ``A1Z10`` as ``$a$1:$z10`` (missing ``$`` after
      ``z``) while the cursor is on cell ``Sheet3!A27``.

      The resulting :class:`Ref3D` instance will have
      ``coords = (2, 3, 0, -16, 0, 26)``
      and ``relflags = (0, 0, 0, 1, 0, 0).<br>

      So far, only one possibility of a sheet-relative component in
      a reference has been noticed: a 2D reference located in the
      "current sheet".

      This will appear as ``coords = (0, 1, ...)`` and
      ``relflags = (1, 1, ...)``.

    .. versionadded:: 0.6.0
    c                     |dd | _         |dd | _        | j                  sd| _        | j                   \  | _        | _        | _        | _        | _        | _        y )Nr   r   r   r   r   r   r   r   r   )r2  relflagsshtxloshtxhirowxlorowxhicolxlocolxhi)r  atuples     r.  r  zRef3D.__init__J  sN    Qqkq}}.DMY]YdYdVdk4;T[$+r7  c                     | j                   r| j                   dk(  rd| j                  dS d| j                  d| j                   dS )Nr  zRef3D(coords=r  z, relflags=)r  r2  )r  s    r.  r  zRef3D.__repr__Q  sF    }}1C C"4;;/33"4;;/T]]<MQOOr7  N)r  r  r  r  r  r  r)  r7  r.  r"   r"     s    .`ePr7  r"   c                     | S r(  r)  xs    r.  nopr  a  s    Hr7  c                     | |z  S r(  r)  r  ys     r.  _opr_powr  e  s    a4Kr7  c                     | |k  S r(  r)  r  s     r.  _opr_ltr  i      q5Lr7  c                     | |k  S r(  r)  r  s     r.  _opr_ler  m      6Mr7  c                     | |k(  S r(  r)  r  s     r.  _opr_eqr  q  r  r7  c                     | |k\  S r(  r)  r  s     r.  _opr_ger  u  r  r7  c                     | |kD  S r(  r)  r  s     r.  _opr_gtr  y  r  r7  c                     | |k7  S r(  r)  r  s     r.  _opr_ner  }  r  r7  c                 H    t        |       }|j                  d      r|dd }|S )zN
    Attempt to emulate Excel's default conversion from number to string.
    z.0Nr8   )strendswith)numss     r.  num2strgr    s)     	CAzz$crFHr7  +-r
   /^&<z<==z>=>z<>c                     |  S r(  r)  r  s    r.  <lambda>r    s    aR r7  rw   c                     | S r(  r)  r  s    r.  r  r    s    Q r7  c                     | dz  S )Ng      Y@r)  r  s    r.  r  r    s
    QY r7  %)r   r?   rA   Z   c                 5   |t         kD  rd}|j                  }|j                  }| j                  }d}|rCt	        d||j
                  ||||fz  | j                         t        |d|| j                         |t        kD  rt        d      t        |   }	d}
g }d}d}d}t        t        d       }t        t        d       }|j                  }d }d }d	 }|dk(  r|g}d|
cxk  r|k  rn nt        ||
         }|d
z  }|dz  dz	  }|r|dz   }n|}t         |   }|	|   }|r8t	        d|
|||||fz  | j                         t	        d|| j                         |dk(  rd|||fz  }t#        |      |
sd|cxk  rdk  rn n |||       
n|d|cxk  rdk  rn n |||       
nc|dk(  r|rt	        d|| j                         t%        |      dk\  sJ |j'                         }|j'                         }d}d}dj)                  dd |j*                  |k   |j,                  dd |j*                  |k   |dd |j*                  |k   |j,                  dd |j*                  |k   g      } t        t.              }!| |!_        |j0                  t        k(  s|j0                  t        k(  rt        |!_        n|j0                  t        k(  s|j0                  t        k(  rn|j0                  t.        cxk(  r|j0                  k(  rn n|j2                  s|j2                  ft%        |j2                        dk(  sJ t%        |j2                        dk(  sJ t5        t6        |j2                  d   |j2                  d         }"t9        |"      g|!_        n|j0                  t:        cxk(  r|j0                  k(  rn nt:        |!_        |j2                  |j2                  t%        |j2                        dk(  sJ t%        |j2                        dk(  sJ t5        t6        |j2                  d   |j2                  d         }"|j2                  d   j<                  }#|j2                  d   j<                  }$|#|$k(  rt9        |"|#z         g|!_        n	  ||!       |rt	        d|| j                         ng|dk(  r|rt	        d|| j                         t%        |      dk\  sJ |j'                         }|j'                         }d}d}dj)                  dd |j*                  |k   |j,                  dd |j*                  |k   |dd |j*                  |k   |j,                  dd |j*                  |k   g      } t        t.        d ||       }!|j0                  t        k(  s|j0                  t        k(  rt        |!_        n|j0                  t.        t:        fv r|j0                  t.        t:        fv rt.        |!_        |j0                  t:        k(  s|j0                  t:        k(  rt:        |!_        |j2                  `|j2                  Tt%        |j2                        dk\  sJ t%        |j2                        dk(  sJ |j2                  |j2                  z   |!_        n	  ||!       |rt	        d || j                         nf|d!k(  r|rt	        d"|| j                         t%        |      dk\  sJ |j'                         }|j'                         }d#}d}dj)                  dd |j*                  |k   |j,                  dd |j*                  |k   |dd |j*                  |k   |j,                  dd |j*                  |k   g      } t        t.        d ||       }!|j0                  t        k(  s|j0                  t        k(  rt        }!n|j0                  t.        cxk(  r|j0                  k(  rn n|j2                  s|j2                  ft%        |j2                        dk(  sJ t%        |j2                        dk(  sJ t5        t>        |j2                  d   |j2                  d         }"t9        |"      g|!_        n|j0                  t:        cxk(  r|j0                  k(  rn nt:        |!_        |j2                  |j2                  t%        |j2                        dk(  sJ t%        |j2                        dk(  sJ t5        t>        |j2                  d   |j2                  d         }"|j2                  d   j<                  }#|j2                  d   j<                  }$|#|$k(  rt9        |"|#z         g|!_        n	  ||!       |rt	        d$|| j                         nd%|cxk  rd&k  rn n ||t@        |       n}|d'k(  rnv|d(k(  r |t        tB        d tD        d             nS|d)k(  r|d*k  r tG        ||
dz   | jH                  d+      \  }%}&ntK        ||
dz   d+      \  }%}&|&|
z
  }|rt	        d,||%fz  | j                         d-|%jM                  d-d.      z   d-z   }' |t        tN        |%tD        |'             n|d/k(  r|dk\  sJ t#        d0      |d1k(  rtQ        d2||
dz   |
d3z          \  }(})tR        jU                  |(d4      }*|(d3k(  r	|)dz  d5z   }na|(dk(  rZd3}|rt	        d6|| j                         t%        |      dk\  sJ |d7   }d8|j,                  z  } t        t@        d tV        |       |d7<   nd3}|r t	        d9|(|*||)fz  | j                         nd:|cxk  rd;k  rn n|d<k  sJ t#        d=      d>|cxk  rd
k  rn n|d>z
  }+g d?|+   },t        tX        t@        t@        g|+   }-tQ        d@dA|+   z   ||
dz   |
dz   |,z          \  }.|+dk(  rt[        |.      }.t]        |.      }'n+|+dk(  rt]        |.      }'n|+dk(  rdB|.   }'nd-t^        |.   z   d-z   }' |t        |-|.tD        |'             nt#        dC|z        |dk  rt#        dD|z        |
|z  }
G|dk(  r
 ||       n|dk(  rdta        |dEk\        z   },tQ        d@dF|,   z   ||
dz   |
dz   |,z          d   }/tb        jU                  |/d       }0|0s$t	        dG|/z  | j                          ||       n |0d d \  }1}2|rt	        dH|/|1|2fz  | j                         t%        |      |2k\  sJ |2r/td        j)                  dI ||2 d  D              }3|1 d|3 d} ||2 d = n|1dJz   } t        t        d tV        |       }! ||!       n|dk(  r#dta        |dEk\        z   },tQ        dKdF|,   z   ||
dz   |
dz   |,z          \  }2}/tg        |2dL      \  }4}2tg        |/dM      \  }5}/|rt	        dN|/|2|5|4fz  | j                         tb        jU                  |/d       }0|0s$t	        dO|/z  | j                          ||       n|0d d \  }1}6}7|rt	        dP|1|6|7fz  | j                         |6|2cxk  r|7k  sJ  J t%        |      |2k\  sJ t%        |      |2k\  sJ td        j)                  dQ ||2 d  D              }3|1 d|3 d} t        t        d tV        |       }!|/dk(  r/||2    }8|8j0                  t@        tX        fvr0|r|8j0                  t        k7  rt	        dR| j                         n}|8j2                  dSvr)|rl|8j2                  _t	        dT| j                         nF|2dk(  r |8j2                  stX        dc|!_        |!_        nk|2 dz   ta        |8j2                        z
  }9||9   }:|:j0                  tB        k(  rt@        dc|!_        |!_        n#|:j0                  |:j2                  c|!_        |!_        |rt	        dU| j                         n|/dVk(  r||2    }8|8j0                  t@        k(  r~d|8j2                  cxk  r|2k  rin nf||2 ta        |8j2                        z      }:|:j0                  tB        k(  rt@        dc|!_        |!_        n#|:j0                  |:j2                  c|!_        |!_        ||2 d =  ||!       	nj|dk(  rtQ        dW||
dz   |
dz          d   dz
  };|rt	        dX|;z  | j                         | jh                  |;   }<|<jj                  stm        | |<|;||dz          |<jn                  s|<jp                  s|<jr                  rm|r|<ju                  | j                  dYdZ[       t        t        d       }!|xs( |<jn                  xs |<jp                  xs |<jr                  }|xs |<jv                  }n<t%        |<jx                        dk(  sJ t{        j|                  |<jx                  d         }!tD        |!_        |<j~                  d7k(  r|<j
                  |!_        n-| j                  |<j~                      d\|<j
                   |!_        |r+t	        d]t        |!j,                        | j                          ||!       n|d3k(  rt        ||
dz   ||      }!|rt	        d^|!| j                         |!\  }=}>}?}@dx}A}Bd}|A|Bdz   |=|=dz   |>|>dz   f}"|rt	        d_|"| j                         t        t        d       }!|dk(  r%dd|?|?@|@f}Ct        t:        t9        |"|Cz         g      }! ||!       n|dk(  rt        ||
dz   ||      \  }D}E|rt	        d^DE| j                         D\  }F}G}H}IE\  }J}K}L}Mdx}A}Bd}|A|Bdz   |F|Jdz   |G|Kdz   f}"|rt	        d_|"| j                         t        t        d       }!|dk(  r%ddHLIMf}Ct        t:        t9        |"|Cz         g      }! ||!       n@|d5k(  r |||       n0|d`k(  r7tQ        dW||
dz   |
dz          d   },|rt	        da|,z  | j                         n|dbk(  r |||       n|dck(  r |||       n|d:k(  rm|dk\  r:t        ||
dz   ||      }!tQ        dW||
dz   |
dz          d   }Nt        | |N|      \  }A}BnXt        ||
dz   ||      }!tQ        dd||
dz   |
dz          \  }O}P}Q|rt	        deOPQ| j                         t        | OPQ|      \  }A}B|!\  }=}>}?}@|?xs @}R|xs R}ABdz   |=|=dz   |>|>dz   f}"||Ad7k  z  }|rt	        d_|"| j                         t        t        d       }!Rr5dd|?|?@|@f}Ct9        |"|Cz         }St:        |!_        t        | |Sdf      |!_        n't9        |"      }St.        |!_        t        | |S      |!_        tD        |!_        |dk(  rSg|!_         ||!       na|d;k(  r|dk\  r=t        ||
dz   ||      \  }D}EtQ        dW||
dz   |
dz          d   }Nt        | |N|      \  }A}Bn[t        ||
dz   ||      \  }D}EtQ        dd||
dz   |
dz          \  }O}P}Q|rt	        dgOPQ| j                         t        | OPQ|      \  }A}B|Ad7k  z  }D\  }F}G}H}IE\  }J}K}L}M|Hxs
 Ixs Lxs M}R|xs R}ABdz   FJdz   GKdz   f}"|rt	        d_|"| j                         t        t        d       }!Rr5ddHLIMf}Ct9        |"|Cz         }St:        |!_        t        | |Sdf      |!_        n't9        |"      }St.        |!_        t        | |S      |!_        tD        |!_        |dk(  rSg|!_         ||!       n|d1k(  rd}Tt        t        d       }!|dk\  r tQ        dh||
dz   |
dz          \  }N};|;dz  };|N}Un8tQ        di||
dz   |
dcz          \  }N};|;dz  };|N}U|NdkD  rNdz  }NnNdk  rN dz
  }Nnd}T|rt	        djUN|;Tfz  | j                         |;|k(  r|rt	        dk| j                         dx}T}Ts@|dk\  rt        | N|      \  }A}Bn*UdkD  rdl\  }A}Bn| j                  N   }V|Vd3k(  rdm\  }A}Bndn\  }A}BTsAd7k  rdo|;Ufz  } t        t        d tD        |       }!n| jh                  |;   }<|<jj                  stm        | |<|;||dz          |<jn                  s|<jp                  s|<jr                  rm|r|<ju                  | j                  dpdq[       t        t        d       }!|xs( |<jn                  xs |<jp                  xs |<jr                  }|xs |<jv                  }n<t%        |<jx                        dk(  sJ t{        j|                  |<jx                  d         }!tD        |!_        |<j~                  d7k(  r|<j
                  |!_        n-| j                  |<j~                      d\|<j
                   |!_        |r+t	        drt        |!j,                        | j                          ||!       n1|t        v rd} ||       n|rt	        ds|z   | j                         d}|dk  rt#        dt      |
|z  }
d|
cxk  r|k  rn |  }|rWt        | j                  du||  ||       t%        |      dk\  rt	        dv| j                         t	        | j                         ||_<        t%        |      dk7  rd |_K        n
|d   |_K        ||_;        ||_9        ||_L        d|_5        y )wNr   z1::: evaluate_name_formula %r %r %d %d %r level=%drZ  r   foutz-Excessive indirect references in NAME formulac                    t        |      dk\  sJ |j                         }|j                         }t        |    \  }}}}}dj                  dd |j                  |k   |j
                  dd |j                  |k   |dd |j                  |k   |j
                  dd |j                  |k   g      }	t        |d ||	      }
	 ||j                     }||j                     }|j                  |j                  |j                  |
       y  ||j                        } ||j                        } |||      }|t        k(  r|rdnd}||
_
        |j                  |
       y # t        $ r |j                  |
       Y y w xY w)Nr#   rw   (r  r   r   )ri  popbinop_rulesjoinr  r  r!   r  KeyErrorappendr  r   )opcdstkbopaopargdictresult_kindr+  r  symotextresopbconvaconvbvalavalresults                   r.  do_binopz'evaluate_name_formula.<locals>.do_binop  sp   3x1}}ggiggi0;D0A-dD#%chho&%chho&%chho&%chho&

 T47	CHH%ECHH%E 99		 1JJuSYYSYYdD!% QaF

5  	JJu	s   ;E E54E5c           	      F   t        |      dk\  sJ |j                         }|j                  }t        |    \  }}}}dj	                  |dd |j
                  |k   |j                  dd |j
                  |k   |g      }	| ||      }|j                  t        ||||	             y Nr   rw   r  r  )	ri  r  r  
unop_rulesr  r  r  r  r!   )
opcoder  r  r  valr+  r  sym1sym2r  s
             r.  
do_unaryopz)evaluate_name_formula.<locals>.do_unaryop  s    3x1}}ggiii!+F!3dD$%chho&%chho&
 ?s)C

7;T59:r7  c                 ,    d| dd| d}t        |      )NzERROR *** Token 0x02xz (z) found in NAME formula)r~  )op_arg	oname_argmsgs      r.  not_in_name_formulaz2evaluate_name_formula.<locals>.not_in_name_formula  s$    "6#,b;RS3r7  r   `   r6   r'   9Pos:%d Op:0x%02x Name:t%s Sz:%d opcode:%02xh optype:%02xhStack =r8   9ERROR *** Unexpected token 0x%02x ("%s"); biff_version=%dr#   r5   r   r-   
tIsect pre rF   rw   r  r  tIsect postr&   	tList prer:   
tList postr.   
tRange pre:tRange postr?   rA   r@   r   r   rE   lenlen   sz=%d strg=%r"""r   tExtended token not implementedr>   <BHr$   ??Unknown??r   tAttrSumr7   SUM(%s))   subop=%02xh subname=t%s sz=%d nc=%02xhr   r   rD   )tSheet & tEndsheet tokens not implementedr   r   r   r#   r%   r  BBHdr   r   Unhandled opcode: 0x%02xSize not set for opcode 0x%02xrC    BH#*** formula/tFunc unknown FuncID:%d    FuncID=%d name=%s nargs=%dc              3   4   K   | ]  }|j                     y wr(  r  r*  args     r.  r/  z(evaluate_name_formula.<locals>.<genexpr>       *N388*N   ()<BrA  r:  (   FuncID=%d nargs=%d macro=%d prompt=%d&*** formula/tFuncVar unknown FuncID:%d!    name: %r, min~max args: %d~%dc              3   4   K   | ]  }|j                     y wr(  r  r  s     r.  r/  z(evaluate_name_formula.<locals>.<genexpr>       &JCsxx&Jr  zIF testarg kind?)r   r   zIF testarg value?z$$$$$$ IF => constantr  <H   tgtnamex=%dz!!! tgtobj has problems!!!z-----------       --------)headerfooter!    tName: setting text to     r;     %d bytes of cell ref formular   r   <hxxxxxxxxhhtRef3d)r1c1tArea3drK  <hxxxxxxxxH+   origrefx=%d refx=%d tgtnamex=%d dodgy=%dz!!!! Self-referential !!!!r^  r`  fr/  $<<Name #%d in external(?) file #%d>>z!!! bad tgtobj !!!z------------------    tNameX: setting text toFORMULA: /// Not handled yet: t!Fatal: token size is not positivez8End of formula. level=%d any_rel=%d any_err=%d stack=%r
*** Stack has unprocessed args)MSTACK_ALARM_LEVELraw_formulabasic_formula_lenbiff_versionrh  namerj  r   STACK_PANIC_LEVELr   szdictr!   r   r   r  	BYTES_ORDonamesr~  ri  r  r  r  r  r   r  r  r6  tIsectFuncsr"   r   r  tRangeFuncsr   r9   	LEAF_RANKr   encodingr	   replacer   r   
tAttrNamesr  	FUNC_RANKr   floatr  r   int	func_defslistsepdivmodname_obj_list	evaluatedr   macrobinaryany_errdumpany_relstackcopydeepcopyscope_sheet_namesreprrP  rX  rx  r|  r   r   _externsheet_type_b57error_opcodesfprintfr  any_external)Wrn  nobjnamexrp  levelrM  fmlalenrO  r@  sztabrN  rQ  rP  rN  rZ  unk_opnd
error_opndspushr  r  r  opr  optypeopxonameszr  r  r  r  r  r  resr2  relfarelfbstrgnewposr  subopncsubnameinxnbr  r  funcx
func_attrs	func_namenargsargtextpromptrL  minargsmaxargstestargresposchosentgtnamextgtobjrE  rF  rC  rD  shx1shx2r  rV  rW  rowx1colx1row_rel1col_rel1rowx2colx2row_rel2col_rel2ro  r{  raw_shx1raw_shx2is_relref3ddodgyorigrefxextysW                                                                                          r.  r   r     sb     D$$G	BH?dii"dE:;	

 	dAwRZZ8  GHH2JE
CEGGLtT"Ht$JLLE D;$  !|

s
W
tCy!dt)!2+CCs3ZKE2vv67ZZ
 )U48MQSUZ\^P__Cs##v%%#B.'4' '4,BJJ?5zQ&iikiik-chho.-chho.-chho.-chho.
 dm 88t#sxx4'7#CHXX%T)9 XX11yy,1F"399~222"399~222!-k399Q<ST!V%*6]O	XX11#CHyy,1F"399~222"399~222!-k399Q<ST!V #		! 5 5 #		! 5 5 E>).v~)>(?CIc
-RZZ@4+u2::>5zQ&iikiik-chho.-chho.-chho.-chho.
 dD$688t#sxx4'7#CHXX$-#((tTl2J#CHxx4'388t+;#'yy,1F"399~222"399~222$'II		$9	c
,BJJ?4,BJJ?5zQ&iikiik-chho.-chho.-chho.-chho.
 dD$688t#sxx4'7CXX11yy,1F"399~222"399~222!-k399Q<ST!V%*6]O	XX11#CHyy,1F"399~222"399~222!-k399Q<ST!V #		! 5 5 #		! 5 5 E>).v~)>(?CIc
-RZZ@'4'64/44geT9b9:48#;D#'2;;_`#aLD&#<T37ST#ULD&c\,Dz9

KT\\#t44s:geT9d;<4Rxx"#DEE4"5$sQwq*AB	r$..>D=a!Bd]Bj%bjjAu:?*?)C%0E 'dIu EE"IBCugWY[]F^^ZZ '4'Bww"#NOO'4'tm!#&eT405!#s"3T#'C!GbL5QR!8!%LEu:DAXu:DAX,U3D!5e!<<sBDgdE9d;<"#=#FGGQw"#Cf#LMM2ICT>(Ot^Sr]"B3r?Dq37R<,HI!LE"ud3J;eC"**Uh#-bq> 	58E9e;TTZZ 5zU***%ll*NueVW~*NNG(k7)15Eufg%,EdD)U;c
t^Sr]"B!$r"2Dq37R<4PQLE5"5#.MFE!%/LE5>%PUW]A^^ #ud3J>FRZZXh.8!n+	7G;y'SZ>[[ZZ %27222225zU***5zU***!,,&J5%>&JJ$+Qwiq1dD)U;A:#UFmG||D%=8GLLD$8!"42::F f4GMM$=!"5BJJG A:gmm27/CHci&+VaZ#gmm2D%DF%*6]F%{{e36:A 3#)6<kk6<< 3#)!"9

Kc\#UFmG||t+55%*E6C4F+F%GF%{{e36:A 3#)6<kk6<< 3#)5&'Nc
t^dDq37$;<Q?!CH&1

C%%h/F##%b&(D%!)L||v}}KK

;;   
 dD)!TV\\TV]]Tfnn!3V^^6<<(A---mmFLLO4 CH||r!!;; oofll;<Afkk]K2DNT#Jt^cAgr8<CdCbjj1+.(D$OD4GD1HdD1HdD1HEFeV"**5$%C{q'7GWEdU6H+<%=$>?#Jt^,T37BIJD$dD$RZZ8/3,E5(H/3,E5(HOD4GD1HeUQYuqyIFeV"**5$%C{q(HhIdU6H+<%=$>?#Jt^E*t^d37S1W56q9B6;"**Mt^E* t^E*
 t^Rx#D#'2x@dDq37$;<Q?8T4H
d#D#(BA28cTUgX[^`X`Ia2b/Xx(K8"**U<Xx
d ,/(D$'F'GD1HdD1HdD1HEFtby GeV"**5$%Cq'7GWEfx/0)"e!<f&r51 CH{"G	#Jt^Rx0sQwHM
ddDq37$;<Q?8T4H
d0sRxXN
d28cTUgX[^`X`Ia2b/Xx)[(H2::V<Xx
d tby G/3,E5(H/3,E5(HAAXAF'GD1HeUQYuqyIFeV"**5$%Cq(HhIfx/0)"e!<f&r51 CH{"G	#Jt^E$%CRx!'tC!GcAg/F!GhA!'tC!GcBh7O!PhA!8AIDAX 519DEAx78
 5 6RZZH"##8!<Rt!LJD$\!)JD$33D9Dqy%-
d%1
dr	>(HAUUdD)U;))(3'')"fheaiP<<6==FNNJJ#7#7 $ 
 "$-C%XXX&..G%7Gv||,111--Q8C$<<2%%{{CH"$//&,,"?!@&++OCH7chhbjjY#J}$G*7%?bjjQG7BCCr	s s
W
t +oGJJGO	
 u:?2D2::DJ
5zQAhDLDL$DDNr7  c	                 )    |t         kD  rd}t        t        t        t        fv }	|}
 j
                  }|r:t        d||||	|
|fz   j                         t        |
d| j                         |t        kD  rt        d      t        |   }d}g }d}d}t        t        d       }t        t        d       }|j                  }d }d } fd	}|dk(  r|g}d|cxk  r|k  r]n nYt!        |
|         }|d
z  }|dz  dz	  }|r|dz   }n|}t"        |   }||   }|r8t        d||||||fz   j                         t        d| j                         |dk(  rd|||fz  }t%        |      t'        |d      z  r	 |||       |s|dk  rf|dk\  rd}nd}|dk(  r||k(  r|rJ t)        ||
      \  }} d|| fz  }! |t        t        d t*        |!             t,        t.        z  z  sP |||       nEd|cxk  rdk  rn n |||       n,|dk(  r|rt        d| j                         t1        |      dk\  sJ |j3                         }"|j3                         }#d}$d}%dj5                  dd |#j6                  |%k   |#j8                  dd |#j6                  |%k   |$dd |"j6                  |%k   |"j8                  dd |"j6                  |%k   g      }&t        t:              }'|&|'_        |"j<                  t        k(  s|#j<                  t        k(  rt        |'_        n|"j<                  t        k(  s|#j<                  t        k(  rnZ|"j<                  t:        cxk(  r|#j<                  k(  rn nn3|"j<                  t>        cxk(  r|#j<                  k(  rn nt>        |'_        n	  ||'       |rt        d | j                         n~|d!k(  r|rt        d"| j                         t1        |      dk\  sJ |j3                         }"|j3                         }#d#}$d}%dj5                  dd |#j6                  |%k   |#j8                  dd |#j6                  |%k   |$dd |"j6                  |%k   |"j8                  dd |"j6                  |%k   g      }&t        t:        d |%|&      }'|"j<                  t        k(  s|#j<                  t        k(  rt        |'_        nn|"j<                  t:        t>        fv rU|#j<                  t:        t>        fv r=t:        |'_        |#j<                  t>        k(  s|"j<                  t>        k(  rt>        |'_        n	  ||'       |rt        d$| j                         n|d%k(  rF|rt        d&| j                         t1        |      dk\  sJ |j3                         }"|j3                         }#d'}$d}%dj5                  dd |#j6                  |%k   |#j8                  dd |#j6                  |%k   |$dd |"j6                  |%k   |"j8                  dd |"j6                  |%k   g      }&t        t:        d |%|&      }'|"j<                  t        k(  s|#j<                  t        k(  rt        }'n(|"j<                  t:        cxk(  r|#j<                  k(  rn nn	  ||'       |rt        d(| j                         nd)|cxk  rd*k  rn n ||t@        |       n}|d+k(  rnv|d,k(  r |t        tB        d t*        d             nS|d-k(  r|d.k  r tE        |
|dz    jF                  d/      \  }(})ntI        |
|dz   d/      \  }(})|)|z
  }|rt        d0||(fz   j                         d1|(jK                  d1d2      z   d1z   }! |t        tL        d t*        |!             n|d3k(  r|dk\  sJ t%        d4      |d5k(  rt)        d6|
|dz   |d7z          \  }*}+tN        jQ                  |*d8      },|*d7k(  r	|+dz  d9z   }na|*d!k(  rZd7}|rt        d:| j                         t1        |      dk\  sJ |d;   }#d<|#j8                  z  }&t        t@        d tR        |&      |d;<   nd7}|r t        d=|*|,||+fz   j                         nd>|cxk  rd?k  rn n|d@k  sJ t%        dA      dB|cxk  rd
k  rn n|dBz
  }-g dC|-   }.t        tT        t@        t@        g|-   }/t)        dDdE|-   z   |
|dz   |dz   |.z          \  }0|-dk(  rtW        |0      }0tY        |0      }!n+|-dk(  rtY        |0      }!n|-dk(  rdF|0   }!nd1tZ        |0   z   d1z   }! |t        |/d t*        |!             nt%        dG|z        |dk  rt%        dH|z        ||z  }z|dk(  r
 ||       
n|dk(  rdt]        |dIk\        z   }.t)        dDdJ|.   z   |
|dz   |dz   |.z          d   }1t^        jQ                  |1d       }2|2s$t        dK|1z   j                          ||       
nI|2d d \  }3}4|rt        dL|1|3|4fz   j                         t1        |      |4k\  sJ |4r/t`        j5                  dM ||4 d  D              }5|3 d|5 d}&||4 d = n|3dNz   }&t        t        d tR        |&      }' ||'       	n|dk(  rZdt]        |dIk\        z   }.t)        dOdJ|.   z   |
|dz   |dz   |.z          \  }4}1tc        |4dP      \  }6}4tc        |1dQ      \  }7}1|rt        dR|1|4|7|6fz   j                         |1dSk(  rdT}2nt^        jQ                  |1d       }2|2s$t        dU|1z   j                          ||       	n|2d d \  }3}8}9|rt        dV|3|8|9fz   j                         |8|4cxk  r|9k  sJ  J t1        |      |4k\  sJ t1        |      |4k\  sJ t`        j5                  dW ||4 d  D              }5|3 d|5 d}&t        t        d tR        |&      }'||4 d =  ||'       n\|dk(  rt)        dX|
|dz   |dz          d   dz
  }:|rt        dY|:z   j                          jd                  |:   };|;jf                  d;k(  r|;jh                  }&n( jj                  |;jf                      dZ|;jh                   }&|r!t        d[tm        |&       j                         t        t        d t*        |&      }' ||'       n|d7k(  rvto        |
|dz   ||	||      }'|rt        d\|' j                         |'\  }} }<}=|<xs |=}>|>rt>        }?nt:        }?tq        || |<|=|||      }&t        |?d t*        |&      }' ||'       n|dk(  rts        |
|dz   ||	||      \  }@}A|rt        d\@A j                         @\  }B}C}D}EA\  }F}G}H}I|B|Fdz   |C|Gdz   f}J|D|H|E|If}Ktu        |K      rt>        }?nt:        }?|rt        d]JK j                         tw        JK|||      }&t        |?d t*        |&      }' ||'       n[|d9k(  rty        ||       nH|d^k(  r7t)        dX|
|dz   |dz          d   }.|r(t        d_|.z   j                         n|d`k(  rxto        |
|dz   ||	||      }'d}|rt        d]|' j                         |'\  }} }<}=|<xs |=}>|>rt>        }?nt:        }?tq        || |<|=|||      }&t        |?d t*        |&      }' ||'       n|dak(  rts        |
|dz   ||	||      \  }@}A|rt        d\@A j                         @\  }B}C}D}EA\  }F}G}H}I|B|Fdz   |C|Gdz   f}J|D|H|E|If}Ktu        |K      rt>        }?nt:        }?|rt        d]JK j                         tw        JK|||      }&t        |?d t*        |&      }' ||'       n|d>k(  rl|dk\  r<to        |
|dz   ||	||      }'t)        dX|
|dz   |dz          d   }Lt{         |L|      \  }M}NnZto        |
|dz   ||	||      }'t)        db|
|dz   |dz          \  }O}P}Q|rt        dcOPQ j                         t}         OPQ|      \  }M}N|'\  }} }<}=|<xs |=}>|xs |>}MNdz   ||dz   | | dz   f}J||Md;k  z  }|rt        d]J j                         t        t        d       }'|>r6dd|<|<|=|=f}Kt        J|Kz         }Rt>        |'_        t         |R|||      |'_        n't        J      }Rt:        |'_        t         |R      |'_        t*        |'_        d |'_B         ||'       ni|d?k(  rv|dk\  r=ts        |
|dz   ||	      \  }@}At)        dX|
|dz   |dz          d   }Lt{         |L|      \  }M}Nn[ts        |
|dz   ||	      \  }@}At)        db|
|dz   |dz          \  }O}P}Q|rt        ddOPQ j                         t}         OPQ|      \  }M}N|Md;k  z  }@\  }B}C}D}EA\  }F}G}H}I|Dxs
 Exs Hxs I}>|xs |>}MNdz   BFdz   CGdz   f}J|rt        d]J j                         t        t        d       }'|>r6ddDHEIf}Kt        J|Kz         }Rt>        |'_        t         |R|||      |'_        n't        J      }Rt:        |'_        t         |R      |'_        t*        |'_         ||'       n|d5k(  rd}St        t        d       }'|dk\  r t)        de|
|dz   |dz          \  }L}:|:dz  }:|L}Tn8t)        df|
|dz   |daz          \  }L}:|:dz  }:|L}T|LdkD  rLdz  }LnLdk  rL dz
  }Lnd}S|rt        dgTL|:Sfz   j                         Ss@|dk\  rt{         L|      \  }M}Nn*TdkD  rdh\  }M}Nn j                  L   }U|Ud7k(  rdi\  }M}Nndj\  }M}Nt        }?d }VMdkk(  r.tL        }? j                  |:   }Vd1|VjK                  d1d2      z   d1z   }&nSsMd;k  rdl|:Tfz  }&n jd                  |:   };|;jf                  d;k(  r|;jh                  }&n( jj                  |;jf                      dZ|;jh                   }&|r+t        dmtm        |'j8                         j                         t        |?Vt*        |&      }' ||'       n1|t        v rd} ||       n|rt        dn|z    j                         d}|dk  rt%        do      ||z  }d|cxk  r|k  rWn |  }|r[t        dp||  ||fz   j                         t1        |      dk\  rt        dq j                         t         j                         t1        |      dk7  rd }W|WS |d   j8                  }WWS )rNr   zR::: decompile_formula len=%d fmlatype=%r browx=%r bcolx=%r reldelta=%d %r level=%drZ  r   r  z(Excessive indirect references in formulac                    t        |      dk\  sJ |j                         }|j                         }t        |    \  }}}}}dj                  dd |j                  |k   |j
                  dd |j                  |k   |dd |j                  |k   |j
                  dd |j                  |k   g      }	t        |d ||	      }
|j                  |
       y )Nr#   rw   r  r  )ri  r  r  r  r  r  r!   r  )r  r  r  r  r  r  r+  r  r  r  r  s              r.  r  z#decompile_formula.<locals>.do_binopR  s    3x1}}ggiggi0;D0A-dD#%chho&%chho&%chho&%chho&

 T47

5r7  c           	         t        |      dk\  sJ |j                         }t        |    \  }}}}dj                  |dd |j                  |k   |j
                  dd |j                  |k   |g      }|j                  t        |d ||             y r  )ri  r  r  r  r  r  r  r!   )	r  r  r  r  r+  r  r  r  r  s	            r.  r  z%decompile_formula.<locals>.do_unaryope  s    3x1}}ggi!+F!3dD$%chho&%chho&
 	

7;dE:;r7  c                 h    dj                  | |t                 }t        |j                         y )NzAERROR *** Unexpected token 0x{:02x} ({}) found in formula type {}rZ  )formatFMLA_TYPEDESCR_MAPrh  rj  )r  r  r  rn  fmlatypes      r.  unexpected_opcodez,decompile_formula.<locals>.unexpected_opcodet  s1    QXXx(

 	c

#r7  r   r  r6   r'   z;Pos:%d Op:0x%02x opname:t%s Sz:%d opcode:%02xh optype:%02xhr  r8   r  rB   z<x2Hz<xHBzSHARED FMLA at rowx=%d colx=%dr5   r   r-   r  r#   r  rF   rw   r  r  r  r&   r  r:   r  r.   r  r  r  r?   rA   r@   r   r   rE   r  r   r  r  r   r  r>   r  r$   r  r   r  r7   r  r  r   r   rD   r	  r   r
  r  r  r  r  r  rC   r  r  r  c              3   4   K   | ]  }|j                     y wr(  r  r  s     r.  r/  z$decompile_formula.<locals>.<genexpr>_  r  r  r  r  rA  r:  r  r9  )
CALL_ADDINr   rB   r  r  c              3   4   K   | ]  }|j                     y wr(  r  r  s     r.  r/  z$decompile_formula.<locals>.<genexpr>  r  r  r  r   r#  r$  r%  r&  r;   r'  r   r   r(  r)  r+  rK  r,  r-  r^  r`  r.  r]  r0  r1  r2  r3  z7End of formula. level=%d any_rel=%d any_err=%d stack=%rr4  )Fr5  r   r    r   r   r8  rh  rj  r   r:  r   r;  r!   r   r   r  r<  r=  r~  _TOKEN_NOT_ALLOWEDr   r@  r   r   ri  r  r  r  r  r   r  r   r   r9   r   rA  r	   rB  r   rC  r  rD  r   rE  r  r   rF  rG  rH  rI  rJ  rT  r9  rU  rV  rP  cellnamerelrX  sumrangename2drelr  rx  r|  r"   r   r   r  rW  addin_func_namesrX  )Xrn  fmlar^  r  rA  rB  rp  r]  r*  r@  rM  rO  r_  rN  rQ  rP  rN  r`  ra  rb  r  r  r  rc  r  rd  re  rf  rg  r  fmtrE  rF  r  r  r  r  r  r  rh  rk  rl  rm  rn  ro  rp  rq  r  r  rr  rs  rt  ru  rv  rw  rL  rx  ry  r}  r~  rC  rD  r  okindrV  rW  r  r  r  r  r  r  r  r  r2  r  ro  r  r  r{  r  r  r  r  r  r  ovaluer  sX   `  `                                                                                    r.  r   r   3  sn      	 H D	B`%$FG	

 	dAwRZZ8  BCC2JE
CEGGtT"Ht$JLLE&<$ !|

s
W
tCy!dt)!2+CCs3ZME2vv67ZZ
 )U48MQSUZ\^P__Cs##c1%0b%(~8 C CaxGrM%??#C.
d74,FgdD)T:;>O#CD%b%0'4' '4,BJJ?5zQ&iikiik-chho.-chho.-chho.-chho.
 dm 88t#sxx4'7#CHXX%T)9 XX11XX11#CHc
-RZZ@4+u2::>5zQ&iikiik-chho.-chho.-chho.-chho.
 dD$688t#sxx4'7#CHXX$-#((tTl2J#CHxx4'388t+;#'c
,BJJ?4,BJJ?5zQ&iikiik-chho.-chho.-chho.-chho.
 dD$688t#sxx4'7CXX11c
-RZZ@'4'64/44geT9b9:48#;D#'2;;_`#aLD&#<T37ST#ULD&c\,Dz9

KT\\#t44s:geT9d;<4Rxx"#DEE4"5$sQwq*AB	r$..>D=a!Bd]Bj%bjjAu:?*?)C%0E 'dIu EE"IBCugWY[]F^^ZZ '4'Bww"#NOO'4'tm!#&eT405!#s"3T#'C!GbL5QR!8!%LEu:DAXu:DAX,U3D!5e!<<sBDgdD)T:;"#=#FGGQw"#Cf#LMM2ICT>(Ot^Sr]"B3r?Dq37R<,HI!LE"ud3J;eC"**Uh#-bq> 	58E9e;TTZZ 5zU***%ll*NueVW~*NNG(k7)15Eufg%,EdD)U;c
t^Sr]"B!$r"2Dq37R<4PQLE5"5#.MFE!%/LE5>%PUW]A^^
 |2
&]]5$7
>FRZZXh.8!n+	7G;y'SZ>[[ZZ %27222225zU***5zU***!,,&J5%>&JJ$+Qwiq1dD)U;5&'Nc
t^dDq37$;<Q?!CH&1

C%%h/F||r!??6<<896;;-H2DKbjjQ$i7C#Jt^cAgr8UEJCdCbjj1+.(D$'FdGWeUDQE%y%8C#Jt^,T37B%QVWJD$dD$RZZ8/3,E5(H/3,E5(HUQYuqy9F (Hh?H8}eVXBJJ?"68UE4HE%y%8C#Jt^E*t^d37S1W56q9B6;"**Mt^cAgr8UEJCGeSrzz2+.(D$'FdGWeUDQE%y%8C#Jt^
 -T37B%QVWJD$dD$RZZ8/3,E5(H/3,E5(HUQYuqy9F (Hh?H8}eVXBJJ?"68UE4HE%y%8C#Jt^Rx#D#'2xNdDq37$;<Q?8T4H
d#D#(B%O28cTUgX[^`X`Ia2b/Xx(K8"**U<Xx
d ,/(D$'F'GD1HdD1HdD1HEFtby GeV"**5$%Cq'7GWEfx/0)"eUE4Hf&r51 CHCI#Jt^Rx0sQwHM
ddDq37$;<Q?8T4H
d0sRxXN
d28cTUgX[^`X`Ia2b/Xx)[(H2::V<Xx
d tby G/3,E5(H/3,E5(HAAXAF'GD1HeUQYuqyIFeV"**5$%Cq(HhIfx/0)"eUE4Hf&r51 CH#Jt^E$%CRx!'tC!GcAg/F!GhA!'tC!GcBh7O!PhA!8AIDAX 519DEAx78 8!<Rt!LJD$\!)JD$33D9Dqy%-
d%1
dEFrz,,X6fnnS$77#=$)>(HAUU))(3<<2%"KKE!v||<=Qv{{mLE7chhbjjY%E:C#J}$G*7%?bjjQG7BCCr	A s
W
B +oGEg+ow67	

 u:?2D2::
5zQ M qMr7  c           	      `   |r<t        d||t        |      | j                         t        |d|| j                         |dk\  sJ t        |   }d}g }	d}
d}|	j
                  }d|cxk  r|k  rxn ntt        ||         }|dz  }|dz  dz	  }|r|d	z   }n|}t        |   }||   }|r t        d
||||||fz  | j                         |s d|cxk  rdk  r:n n7t        d||dz   |dz          \  }}|rt        d||f| j                         n|dk(  rr|rt        d|	| j                         t        |	      dk\  sJ |	j                         }|	j                         } |||z          |rWt        d|	| j                         n=|dk(  r|rt        d|	| j                         t        |	      dk\  sJ |	j                         }|	j                         }t        |      dk(  sJ t        |      dk(  sJ t        t        |d   |d         } ||       |rt        d|	| j                         n|dk(  r|rt        d|	| j                         t        |	      dk\  sJ |	j                         }|	j                         }t        |      dk(  sJ t        |      dk(  sJ t        t        |d   |d         } ||       |rt        d|	| j                         n|dk(  r_t        d||dz   |dz          \  }}t        j                  |d      }|dk(  r	|dz  dz   }nd}|rt        d||||fz  | j                         n|dk(  rb|dk  r%t        ||dz            }||dz   |dz   |z    }|dz   }nt        ||dz   d       \  }}||z
  }|r:t        d!||fz  | j                         n|dk  rt        d"| j                         y ||z  }h|dk(  rn|dk(  rNdt!        |d#k\        z   }t        d$d%|   z   ||dz   |dz   |z          }|rt        d&|z  | j                         n|dk(  rsdt!        |d#k\        z   }t        d'd%|   z   ||dz   |dz   |z          \  }}t#        |d(      \  } }t#        |d)      \  }!}|r9t        d*|||!| fz  | j                         n|d+k(  r4t        d,||dz   |d+z          }"|rt        d-|"z  | j                         n|dk(  r.t%        ||dz   ||      }#|rt        d|#| j                         n|dk(  r.t'        ||dz   ||      }#|rt        d|#| j                         nz|d.k(  r7t        d,||dz   |d+z          d   }|rZt        d/|z  | j                         n>|d0k(  r1t%        ||dz   |d1      }#d}
|r"t        d2|#| j                         n|d3k(  r1t'        ||dz   |d1      }#d}
|rt        d2|#| j                         n|d4k(  rt        d,||dz   |d+z          d   }$t%        ||d+z   ||      }#|rt        d|$|#| j                         |#\  }}}%}&|
xs |%xs |&}
t)        | |$|      \  }'}(||'d5k  z  }|'|(dz   ||dz   ||dz   f})|rt        d2|)| j                         |dk(  r/ ||)g       n$|d6k(  rt        d,||dz   |d+z          d   }$t'        ||d+z   ||      \  }*}+|rt        d|$|*|+| j                         |*\  },}-}.}/|+\  }0}1}2}3|
xs |.xs
 |/xs |2xs |3}
t)        | |$|      \  }'}(||'d5k  z  }|'|(dz   |,|0dz   |-|1dz   f})|rt        d2|)| j                         |dk(  ro ||)g       ne|dk(  r7t        d||dz   |dz          \  }$}"|rFt        d7|$|"fz  | j                         n)|t*        v rd}n|rt        d8|z   | j                         d}|dk  rt        d"| j                         y ||z  }d|cxk  r|k  rrn |rFt        d9|
  ||	fz  | j                         t        |	      dk\  rt        d:| j                         y y y );Nr   rZ  r   r  rF   r   r  r6   r'   r  r   r#   rK  r%  r&   r  z
tlist postr.   r  r  r-   r  r  r>   r  r$   r  r   r  r   rE   r  r   z**** Dud size; exiting ****rC   r  r  z   FuncID=%dr  rA  r:  r  r5   r  z   namex=%dr;   r'  r   )r@  r&  r   r   r7   r   z   refx=%d namex=%dr2  z.End of formula. any_rel=%d any_err=%d stack=%rr4  )rh  ri  rj  r   r;  r  r<  r=  r   r  r6  r?  r>  rC  r  r	   rF  rI  rP  rX  rx  rX  )4rn  rM  r^  rO  r@  rp  isnamer_  rN  rQ  rP  rN  rb  rc  r  rd  re  rf  rg  rE  rF  r  r  r  rm  rn  ro  rk  rl  rq  rr  ru  rw  rL  r\  rh  ro  rC  rD  r  r  r2  rV  rW  r  r  r  r  r  r  r  r  s4                                                       r.  r   r   t	  s   ngr3t92::FdAwRZZ88O82JE
CEGGLLE
s
W
tCy!dt)!2+CCs3ZKE2vv67ZZ
 v%%#E4a#'+BC
d$t2::>4+u2::>5zQ&iikiikcCi ,BJJ?4,BJJ?5zQ&iikiik3x1}$}3x1}$}%k3q63q6Bf-RZZ@4,BJJ?5zQ&iikiik3x1}$}3x1}$}%k3q63q6Bf-RZZ@4"5$sQwq*AB	r$..>D=a!BBCugWY[]F^^ZZ 48"4a=1Ba#'B,7DaB#<T37ST#ULD&#B,Dz9

K77bjjI2ICT>t^Sr]"B3r?Dq37R<,HIEnu,2::>t^Sr]"B!$r"2Dq37R<4PQLE5"5#.MFE!%/LE5>%PUW]A^^ t^4cAga!89Eme+"**=t^cAgr8<CdCbjj1t^%dC!GRBCdCbjj1t^d37S1W56q9B6;"**Mt^cAgrA>CGeSrzz2t^%dC!GR!DCGeSrzz2t^$S1WsQw 78;DcAgr8<CdD#BJJ7+.(D$33GG4RtDJD$tby GD1HdD1HdD1HEFeV"**5{vht^$S1WsQw 78;D,T37BIJD$dD$2::>/3,E5(H/3,E5(HMMXMMXG4RtDJD$tby GD1HeUQYuqyIFeV"**5{vht^ S1WsQw(?@KD%+tUm;"**M}$G7%?bjjQG7/bjjAr	Y s
W
Z <KQXZ_?``	
 u:?2D  r7  c                 b    |d}|s|rd| dz   z  S d| dz   z  S |r| rd| z  S yd|| z   dz  dz   z  S )	NTzR%dr   z$%dzR[%d]r   z%dr;  r)  )rE  rowxrelrA  r*  s       r.  
rownamerelr  >
  s\    }D1H%%q!!T>!EDLE)A-..r7  c                 t    |d}|s|rd| dz   z  S dt        |       z   S |r| rd| z  S yt        || z   dz        S )NTzC%dr   $zC[%d]Cr<  r   )rF  colxrelrB  r*  s       r.  
colnamerelr  M
  sW    }D1H%%WT]""T>!EDLC'((r7  c                 (    dt        |      | dz   fz  S )z(Utility function: ``(5, 7)`` => ``'H6'``z%s%dr   r  )rE  rF  s     r.  r   r   \
  s    WT]D1H---r7  c                 F    |rd| dz   |dz   fz  S dt        |      | dz   fz  S )z*Utility function: ``(5, 7)`` => ``'$H$6'``zR%dC%dr   z$%s$%dr  )rE  rF  r*  s      r.  r   r   a
  s5    4!8TAX...wt}dQh///r7  c                     |s|st        | ||      S |r||r|d}t        ||||      }t        | |||      }|r||z   S ||z   S )NT)r   r  r  )	rE  rF  r  r  rA  rB  r*  crs	            r.  r  r  h
  s]    74t,,EMw5=4%.A4%.A1uq5Lr7  c                 T    d}| dk  r||    S t        | d      \  }}||dz
     ||   z   S )z6Utility function: ``7`` => ``'H'``, ``27`` => ``'AB'``ABCDEFGHIJKLMNOPQRSTUVWXYZr>   r   r   )rI  )rF  alphabetxdiv26xmod26s       r.  r   r   u
  sA    +Hrz~b)
#hv&666r7  c                     |ry|| dz   k(  r||dz   k(  rt        | ||      S t        | ||       dt        |dz
  |dz
  |       S )z&``(5, 20, 7, 10)`` => ``'$H$6:$J$20'``Nr   r  )r   )rlorhiclochir*  s        r.  rangename2dr  
  sY    
cAg~#q.3T**#sD)*!Kaq$,O+PQQr7  c                     | \  }}}}|\  }	}
}}|	s|
r|d}|s|r|d}dj                  t        |||	||||      t        |dz
  |dz
  |
||||            S )NTz{}:{}r   )r  r  )rlo_rhi_clo_chirlorel_rhirel_clorel_chirelrA  rB  r*  r  r  r  r  rlorelrhirelclorelchirels                r.  r  r  
  s{    (Cc3%@"FFFF&em&em>>CffeUDAC!GS1WffeUDI r7  c                 T    |j                   }t        | g|dd   dt        |dd   S )z
    Utility function:
    ``Ref3D(1, 4, 5, 20, 7, 10)`` =>
    ``'Sheet2:Sheet3!$H$6:$J$20'``
    (assuming Excel's default sheetnames)
    Nr#   r#  r   )r2  
sheetranger  )bookr  r2  s      r.  r   r   
  s;     \\F+r
+,Ak6!A;.G-HIIr7  c                     |j                   }|j                  }t        | |dd |dd       }t        |dd |dd |||      }|s|S | d| S )z
    Utility function:
    ``Ref3D(coords=(0, 1, -32, -22, -13, 13), relflags=(0, 0, 1, 1, 1, 1))``

    In R1C1 mode => ``'Sheet1!R[-32]C[-13]:R[-23]C[12]'``

    In A1 mode => depends on base cell ``(browx, bcolx)``
    Nr#   r   r#  )r2  r  sheetrangerelr  )	r  r  rA  rB  r*  r2  r  shdescrngdescs	            r.  r   r   
  sg     \\F~~H4Xbq\:FVAa[(1Q-tLGXQwi  r7  c                     |dk\  r| |   }ndddddj                  |d|z        }d|v rd|j                  dd	      z   dz   S d
|v rd|z   dz   S |S )Nr   z?internal; any sheet?zinternal; deleted sheetzinternal; macro sheetz<<external>>)r7   r8   re  r_  z
?error %d?'z''r  )r  rB  )shnamesshxshnames      r.  quotedsheetnamer  
  s|    
ax ()'	

 #c<#%
& 	 f}V^^C..44
f}V|c!!Mr7  c                 x    | j                         }t        ||      }||dz
  k7  r|dt        ||dz
        z   z  }|S )Nr   r  )sheet_namesr  )r  sloshir  r  s        r.  r  r  
  sF     GWc*F
cAg~#q999Mr7  c                 j    |\  }}|\  }}|s|st        | ||      S |dcxk(  r|dz
  k(  rn J |r|sJ y)Nr   r   rw   )r  )r  srange	srangerelr  r  slorelshirels          r.  r  r  
  sL    HCNFF&$S))1a66V66r7  )NN)r   )r   r   )NNNr   r   r   )Nr   )NNr   )pr  rR  operatoroprstructr   biffhr   r   r   r   r	   timemachine__all__r   r   r   r   r   r    ALL_FMLA_TYPESr  r  r  r   r   r9   r   r   r   r   r   r   rH  sztab0sztab1sztab2sztab3sztab4r;  r=  rG  rC  rX  minmaxr?  r>  r6  rG  rI  rP  rX  rx  r|  	Exceptionr~  r!   r0  r"   tAddtSubtMultDivtPowertConcatrangetLTtLEtEQtGEtGTtNEr  r  r  r  r  r  r  r  r  rE  _arith_argdict_cmp_argdict_strg_argdictaddsubmultruedivr  r  r@  rD  r5  r:  r   r   r   r  r  r   r   r  r   r  r  r   r   r  r  r  r)  r7  r.  <module>r     s<  
     6       >
)
>
)
/
/2D
D
/
/2D
D
/
/2D
D
/
/2D
D

/
/2D
D
/
/2D
D
/
/2D
D
?
*
?
* #   	
				 		
 A
DA
DA
DA
DA
H 		
A
FF*F (F (	F
 +F (F ,F (F (F 'F *F &F *F +F +F  ,!F" (#F$ (%F& ('F( ))F* &+F, )-F. (/F0 '1F2 *3F4 (5F6 (7F8 )9F: +;F< ,=F> -?F@ *AFB *CFD (EFF *GFH (IFJ )KFL )MFN (OFP (QFR )SFT -UFV +WFX /YFZ +[F\ +]F^ -_F` )aFb +cFd *eFf .gFh -iFj .kFl .mFn +oFp +qFr -sFt ,uFv .wFx +yFz ){F| (}F~ ,F@ +AFB +CFD (EFF *GFH )IFJ -KFL )MFN +OFP +QFR 'SFT *UFV )WFX ,YFZ /[F\ -]F^ ._F` )aFb 1cFd +eFf )gFh )iFj 	.kFl 	0mFn 	0oFp 	+qFr 	*sFt 	*uFv 	+wFx 	+yFz 	,{F| 	+}F~ 	,F@ 	,AFB 	*CFD 	0EFF 	3GFH 	*IFJ 	,KFL 	+MFN 	+OFP 	,QFR 	.SFT 	-UFV 	'WFX 	'YFZ 	/[F\ 	/]F^ 	+_F` 	,aFb 	-cFd 	/eFf 	+gFh 	-iFj 	.kFl 	,mFn 	/oFp 	/qFr 	-sFt 	.uFv 	*wFx 	0yFz 	/{F| 	-}F~ 	+F@ 	/AFB 	-CFD 	,EFF 	/GFH 	/IFJ 	/KFL 	-MFN 	/OFP 	1QFR 	,SFT 	-UFV 	,WFX 	*YFZ 	.[F\ 	0]F^ 	)_F` 	*aFb 	,cFd 	1eFf 	/gFh 	*iFj 	/kFl 	-mFn 	1oFp 	*qFr 	*sFt 	*uFv 	+wFx 	+yFz 	+{F| 	,}F~ 	*F@ 	,AFB 	0CFD 	0EFF 	-GFH 	.IFJ 	-KFL 	-MFN 	2OFP 	.QFR 	-SFT 	-UFV 	2WFX 	1YFZ 	*[F\ 	1]F^ 	-_F` 	,aFb 	,cFd 	/eFf 	,gFh 	2iFj 	0kFl 	.mFn 	4oFp 	3qFr 	.sFt 	4uFv 	1wFx 	/yFz 	/{F| 	.}F~ 	3F@ 	)AFB 	-CFD 	/EFF 	-GFH 	0IFJ 	.KFL 	/MFN 	/OFP 	.QFR 	-SFT 	,UFV 	0WFX 	,YFZ 	0[F\ 	.]F^ 	*_F` 	,aFb 	,cFd 	.eFf 	,gFh 	,iFj 	.kFl 	.mFn 	,oFp 	+qFr 	+sFt 	,uFv 	,wFx 	,yFz 	/{F| 	1}F~ 	2F@ 	+AFB 	/CFD 	+EFF 	2GFH 	,IFJ 	-KFL 	-MFN 	0OFP 	-QFR 	.SFT 	0UFV 	.WFX 	/YFZ 	0[F\ 	3]F^ 	,_F` 	3aFb 	0cFd 	.eFf 	/gFh 	+iFj 	+kFl 	.mFn 	,oFp 	-qFr 	+sFt 	.uFv 	3wFx 	/yFz 	5{F| 	2}F~ 	3F@ 	6AFB 
2	3	1	.	)KF	R 









 ;Cc3,Cc3,d($($Q"2&j&6	9 	XV XVv<PE <P~ 	
$T40 S#sC UE*c5#&x,>4"c
2>4"c
2>4"c
2>4b#
6
^T8R5mUCGGR5,wC	0,wD	1,wC	0,wD	1,wC	0,wD	1  S"
%C
$B
,
 		  D
R UV}B~ET/).
0
7R
J!$"r7  