grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jD}ã @sn gd¢ZeZdZdZdZddlZddlZddl Z z ddl m Z e ddƒZ Wn ey3d d „Z Ynwd Zd Zd ZdZdZdZdZdZdZdZe jdkrTdZdZdZndZdZdZeedZGdd„deƒZGdd„deƒZ Gdd„deƒZ!Gd d!„d!e!ƒZ"Gd"d#„d#ee#ƒZ$Gd$d%„d%e!ƒZ%Gd&d'„d'e!e#ƒZ&Gd(d)„d)eƒZ'Gd*d+„d+e!ƒZ(Gd,d-„d-eƒZ)Gd.d/„d/eƒZ*Gd0d1„d1e'e)ƒZ+Gd2d3„d3e'e)e*ƒZ,Gd4d5„d5ee-ƒZ.e e$e'e+e)e,e!e*e.g Z/e"e!e%e!e&e!e(e!iZ0eeeeeeeefZ1ddl2Z2e2 3d6¡Z4d7d8„Z5d9d:„Z6[2dŒd;d<„Z7Gd=d>„d>e8ƒZ9d�d@dA„Z:ej; GdFdG„dGe8ƒZ?dŽdHdI„Z@eAjBZCdJdK„ZDdLdM„ZEdNdO„ZFdPdQ„ZGd�dSdT„ZHdUdV„ZIdWdX„ZJGdYdZ„dZe8ƒZKeKƒjLZMd�d[d\„ZNd]d^„ZOd_d`„ZPdadbdcdddedfdgdhdidjœ fdkdl„ZQd�dmdn„ZRd�dodp„ZSe>dqee$e+e!ggdrdsdddt�ZTe>duee$e+e!e e,ggdv�ZUe>dueggdv�ZVddlWZWeW XdweWjYeWjZB¡j[Z\eW Xdx¡j[Z]eW Xdy¡j[Z^eW XdzeWjYeWj_B¡Z`[WzddlaZbWn e�yéYnwdŒd{d|„Zcd}d~„Zddd€„Zed‘d�d‚„Zfdƒd„„Zgd…d†„Zhe9d‡ƒZie9dˆƒZje9d‰ƒZke9dƒZle9dƒZme9dŠƒZneiejfZoe jpjqZre jpjsZte jpjuZvewdherd‹erƒZx[ dS)’)%ÚDecimalÚContextÚ DecimalTupleÚDefaultContextÚ BasicContextÚExtendedContextÚDecimalExceptionÚClampedÚInvalidOperationÚDivisionByZeroÚInexactÚRoundedÚ SubnormalÚOverflowÚ UnderflowÚFloatOperationÚDivisionImpossibleÚInvalidContextÚConversionSyntaxÚDivisionUndefinedÚ ROUND_DOWNÚ ROUND_HALF_UPÚROUND_HALF_EVENÚ ROUND_CEILINGÚ ROUND_FLOORÚROUND_UPÚROUND_HALF_DOWNÚ ROUND_05UPÚ setcontextÚ getcontextÚ localcontextÚMAX_PRECÚMAX_EMAXÚMIN_EMINÚ MIN_ETINYÚ HAVE_THREADSÚHAVE_CONTEXTVARZdecimalz1.70z2.4.2éN)Ú namedtuplerzsign digits exponentcGó|S©N©)Úargsr*r*ú1/opt/alt/python310/lib64/python3.10/_pydecimal.pyÚ¤sr-rrrrrrrrTlÿÿÿÿlÿÇNÎZolüÿÿÿÿÇNÎZoi@üTiÀ«æéc@óeZdZ dd„ZdS)rcGsdSr)r*©ÚselfÚcontextr+r*r*r,ÚhandleÓózDecimalException.handleN©Ú__name__Ú __module__Ú __qualname__r3r*r*r*r,rÀs rc@ó eZdZdS)rN©r6r7r8r*r*r*r,r×órc@r/)r cGs,|rt|dj|djddƒ}| |¡StS)Nr&ÚnT)Ú_dec_from_tripleÚ_signÚ_intÚ_fix_nanÚ_NaN)r1r2r+Úansr*r*r,r3ús zInvalidOperation.handleNr5r*r*r*r,r ãs r c@r/)rcGótSr)©rAr0r*r*r,r3r4zConversionSyntax.handleNr5r*r*r*r,rs rc@r/)r cGst|Sr))Ú_SignedInfinity©r1r2Úsignr+r*r*r,r3szDivisionByZero.handleNr5r*r*r*r,r s r c@r/)rcGrCr)rDr0r*r*r,r3"r4zDivisionImpossible.handleNr5r*r*r*r,ró rc@r/)rcGrCr)rDr0r*r*r,r3-r4zDivisionUndefined.handleNr5r*r*r*r,r%rHrc@r9)r Nr:r*r*r*r,r 0r;r c@r/)rcGrCr)rDr0r*r*r,r3Gr4zInvalidContext.handleNr5r*r*r*r,r<s rc@r9)r Nr:r*r*r*r,r Jr;r c@r9)r Nr:r*r*r*r,r Vr;r c@r/)rcGsŽ|jttttfvr t|S|dkr)|jtkrt|St|d|j|j |jdƒS|dkrE|jt kr6t|St|d|j|j |jdƒSdS)Nr&Ú9r.) ÚroundingrrrrrErr=ÚprecÚEmaxrrFr*r*r,r3ws"ÿ  ÿ  ÿýzOverflow.handleNr5r*r*r*r,ras rc@r9)rNr:r*r*r*r,r‡r;rc@r9)rNr:r*r*r*r,r–r;rZdecimal_contextcCs4 zt ¡WStytƒ}t |¡|YSwr))Ú_current_context_varÚgetÚ LookupErrorrÚset©r2r*r*r,r¼s   ýrcCs. |tttfvr| ¡}| ¡t |¡dSr))rrrÚcopyÚ clear_flagsrMrPrQr*r*r,rÊs rcCs |durtƒ}t|ƒSr))rÚ_ContextManager)Úctxr*r*r,rÓs#rc @sleZdZ dZdñdd„Zedd„ƒZdd „Zd d „Zdòd d „Z dd„Z dd„Z dd„Z dódd„Z dódd„Zdódd„Zdódd„Zdódd„Zdódd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zdôd)d*„Zdód+d,„Zdód-d.„Zdód/d0„Zdõd2d3„Zdód4d5„ZeZdód6d7„Zdód8d9„Zdód:d;„Z e Z!dódd?„Z#dód@dA„Z$dódBdC„Z%dódDdE„Z&dódFdG„Z'dódHdI„Z(dódJdK„Z)dódLdM„Z*dódNdO„Z+dPdQ„Z,dRdS„Z-e-Z.e/dTdU„ƒZ0e/dVdW„ƒZ1dXdY„Z2dZd[„Z3d\d]„Z4d^d_„Z5d`da„Z6dbdc„Z7ddde„Z8dfdg„Z9dhdi„Z:djdk„Z;dldm„Ze6e7e8e9e:e;eÚ _is_specialÚ0Nc Cs~ t |¡}t|tƒr‘t| ¡ dd¡ƒ}|dur(|dur tƒ}| t d|¡S|  d¡dkr3d|_ nd|_ |  d¡}|durd|  d ¡pEd}t |  d ¡pMd ƒ}tt ||ƒƒ|_ |t|ƒ|_d |_|S|  d ¡}|dur†tt |prd ƒƒ d ¡|_ |  d¡r‚d|_n d|_nd |_ d|_d|_|St|t ƒr°|dkržd|_ nd|_ d|_tt|ƒƒ|_ d |_|St|tƒrÇ|j|_|j |_ |j |_ |j|_|St|tƒrá|j|_ t|j ƒ|_ t |jƒ|_d |_|St|ttfƒ�rŽt|ƒdkrótdƒ‚t|dt ƒ�r|ddv�stdƒ‚|d|_ |ddk�rd |_ |d|_d|_|Sg} |dD]+} t| t ƒ�rMd| k�r9dk�rMntdƒ‚| �sF| dk�rK|  | ¡�q%tdƒ‚|ddv�rkd tt| ƒ¡|_ |d|_d|_|St|dt ƒ�rŠd tt| �p|dgƒ¡|_ |d|_d |_|Stdƒ‚t|tƒ�r¹|du�rœtƒ}| td¡t |¡}|j|_|j |_ |j |_ |j|_|St d|ƒ‚)NÚ_ÚzInvalid literal for Decimal: %rrGú-r.r&ÚintZfracÚexprXFÚdiagÚsignalÚNr<ÚFTéztInvalid tuple size in creation of Decimal from list or tuple. The list or tuple should have exactly three elements.©r&r.z|Invalid sign. The first value in the tuple should be an integer; either 0 for a positive number or 1 for a negative number.éé zTThe second value in the tuple must be composed of integers in the range 0 through 9.©r<r`zUThe third value in the tuple must be an integer, or one of the strings 'F', 'n', 'N'.ú;strict semantics for mixing floats and Decimals are enabledzCannot convert %r to Decimal)!ÚobjectÚ__new__Ú isinstanceÚstrÚ_parserÚstripÚreplacerÚ _raise_errorrÚgroupr>r\r?ÚlenrVrWÚlstripÚabsrÚ_WorkReprGr]ÚlistÚtupleÚ ValueErrorÚappendÚjoinÚmapÚfloatrÚ from_floatÚ TypeError) ÚclsÚvaluer2r1ÚmÚintpartÚfracpartr]r^ÚdigitsZdigitr*r*r,ri s¼  ÿ  ó         è &ý €  ÷ ý  ÿ  zDecimal.__new__cCsÊ t|tƒr|dkr dnd}d}tt|ƒƒ}n=t|tƒrPt |¡s&t |¡r,|t|ƒƒSt  d|¡dkr7d}nd}t|ƒ  ¡\}}|  ¡d}t|d|ƒ}nt dƒ‚t ||| ƒ}|tura|S||ƒS)Nr&r.gð?ézargument must be int or float.)rjr\rkrsr{Ú_mathZisinfZisnanÚreprZcopysignÚas_integer_ratioÚ bit_lengthr}r=r)r~ÚfrGÚkÚcoeffr<ÚdÚresultr*r*r,r| s&    zDecimal.from_floatcCs* |jr|j}|dkr dS|dkrdSdS)Nr<r.r`rdr&)rWrV)r1r]r*r*r,Ú_isnanÍszDecimal._isnancCs |jdkr |jr dSdSdS)Nraéÿÿÿÿr.r&)rVr>©r1r*r*r,Ú _isinfinityÜs  zDecimal._isinfinitycCs~ | ¡}|dur d}n| ¡}|s|r=|durtƒ}|dkr&| td|¡S|dkr1| td|¡S|r8| |¡S| |¡SdS)NFrdÚsNaNr&)rŽrror r@)r1Úotherr2Ú self_is_nanÚ other_is_nanr*r*r,Ú _check_nansés( ÿÿ  zDecimal._check_nanscCsx |durtƒ}|js|jr:| ¡r| td|¡S| ¡r$| td|¡S| ¡r/| td|¡S| ¡r:| td|¡SdS)Nzcomparison involving sNaNzcomparison involving NaNr&)rrWÚis_snanror Úis_qnan©r1r“r2r*r*r,Ú_compare_check_nans s2  þþþþzDecimal._compare_check_nanscCs |jp|jdkS©NrX©rWr?r�r*r*r,Ú__bool__*szDecimal.__bool__cCs  |js|jr| ¡}| ¡}||krdS||krdSdS|s)|s#dSd|j S|s0d|jS|j|jkr8dS|j|jkr@dS| ¡}| ¡}||krw|jd|j|j}|jd|j|j}||krhdS||krrd|j Sd|jS||kr€d|jSd|j S)Nr&r�r.rX)rWr‘r>Úadjustedr?rV)r1r“Zself_infZ other_infÚ self_adjustedZother_adjustedÚ self_paddedZ other_paddedr*r*r,Ú_cmp1s@         z Decimal._cmpcCs<t||dd�\}}|tur|S| ||¡rdS| |¡dkS)NT)Ú equality_opFr&)Ú_convert_for_comparisonÚNotImplementedr–r¡r™r*r*r,Ú__eq__qs  zDecimal.__eq__cCs<t||ƒ\}}|tur |S| ||¡}|rdS| |¡dkS©NFr&©r£r¤ršr¡©r1r“r2rBr*r*r,Ú__lt__yó zDecimal.__lt__cCs<t||ƒ\}}|tur |S| ||¡}|rdS| |¡dkSr¦r§r¨r*r*r,Ú__le__‚rªzDecimal.__le__cCs<t||ƒ\}}|tur |S| ||¡}|rdS| |¡dkSr¦r§r¨r*r*r,Ú__gt__‹rªzDecimal.__gt__cCs<t||ƒ\}}|tur |S| ||¡}|rdS| |¡dkSr¦r§r¨r*r*r,Ú__ge__”rªzDecimal.__ge__cCs@ t|dd�}|js|r|jr| ||¡}|r|St| |¡ƒS©NT©Úraiseit)Ú_convert_otherrWr–rr¡r¨r*r*r,Úcompare�s  zDecimal.comparecCs˜ |jr| ¡r tdƒ‚| ¡rt |¡S|jrt StS|jdkr*t d|jt ƒ}nt t |j t ƒ}t |j ƒ|t }|dkrA|n| }|dkrJdS|S)Nz"Cannot hash a signaling NaN value.r&é r�éþÿÿÿ)rWr—r}Úis_nanrhÚ__hash__r>Ú _PyHASH_INFrVÚpowÚ_PyHASH_MODULUSÚ _PyHASH_10INVr\r?)r1Zexp_hashZhash_rBr*r*r,r¶¯s  zDecimal.__hash__cCs t|jttt|jƒƒ|jƒSr))rr>rvrzr\r?rVr�r*r*r,Úas_tupleÉszDecimal.as_tuplecCsæ |jr| ¡r tdƒ‚tdƒ‚|sdSt|jƒ}|jdkr)|d|jd}}n@|j }|dkrI|ddkrI|d}|d8}|dkrI|ddks7|j }t|| @ ¡d|ƒ}|rc||L}||8}d||>}|j ro| }||fS)Nz#cannot convert NaN to integer ratioz(cannot convert Infinity to integer ratiorcr&r³r.r„) rWrµrwÚ OverflowErrorr\r?rVÚminrˆr>)r1r<rŒZd5Zd2Zshift2r*r*r,r‡Ðs0   þ zDecimal.as_integer_ratiocCs dt|ƒS)Nz Decimal('%s'))rkr�r*r*r,Ú__repr__s zDecimal.__repr__Fc Cs` ddg|j}|jr'|jdkr|dS|jdkr |d|jS|d|jS|jt|jƒ}|jdkr;|d kr;|}n|s@d }n|jd krN|d d d }n|d d d }|dkrgd }d d | |j}n&|t|jƒkr}|jd |t|jƒ}d}n|jd|…}d |j|d…}||kr”d}n|dur›tƒ}ddg|jd||}||||S)NrZr[raZInfinityr<ÚNaNr’r&éúÿÿÿr.rXrbÚ.ÚeÚEz%+d)r>rWrVr?rqrÚcapitals) r1Úengr2rGÚ leftdigitsÚdotplacer�r‚r]r*r*r,Ú__str__s<   zDecimal.__str__cCs |jd|d�S)NT)rÅr2)rÈ©r1r2r*r*r,Ú to_eng_string;szDecimal.to_eng_stringcCsT |jr|j|d�}|r|S|durtƒ}|s!|jtkr!| ¡}n| ¡}| |¡S©NrQ)rWr–rrJrÚcopy_absÚ copy_negateÚ_fix©r1r2rBr*r*r,Ú__neg__Ds   zDecimal.__neg__cCsT |jr|j|d�}|r|S|durtƒ}|s!|jtkr!| ¡}nt|ƒ}| |¡SrË)rWr–rrJrrÌrrÎrÏr*r*r,Ú__pos__Zs   zDecimal.__pos__TcCsN |s| ¡S|jr|j|d�}|r|S|jr|j|d�}|S|j|d�}|SrË)rÌrWr–r>rÐrÑ)r1Úroundr2rBr*r*r,Ú__abs__os   þzDecimal.__abs__c Cs^ t|ƒ}|tur |S|durtƒ}|js|jrB| ||¡}|r"|S| ¡r:|j|jkr6| ¡r6| td¡St |ƒS| ¡rBt |ƒSt |j |j ƒ}d}|j t krX|j|jkrXd}|st|stt |j|jƒ}|rgd}t|d|ƒ}| |¡}|S|s�t||j |jdƒ}| ||j ¡}| |¡}|S|sªt||j |jdƒ}| ||j ¡}| |¡}|St|ƒ}t|ƒ}t|||jƒ\}}tƒ} |j|jkrø|j|jkr×t|d|ƒ}| |¡}|S|j|jkrâ||}}|jdkrôd| _|j|j|_|_nd| _n|jdk�rd| _d\|_|_nd| _|jdk�r|j|j| _n|j|j| _|j| _t | ƒ}| |¡}|S)Nz -INF + INFr&r.rX)r&r&)r±r¤rrWr–r‘r>ror rr½rVrJrr=rÎÚmaxrKÚ_rescalertÚ _normalizerGr\r]) r1r“r2rBr]Z negativezerorGÚop1Úop2r�r*r*r,Ú__add__…s~                 zDecimal.__add__cCsJ t|ƒ}|tur |S|js|jr|j||d�}|r|S|j| ¡|d�SrË)r±r¤rWr–rÙrÍr¨r*r*r,Ú__sub__Ýs zDecimal.__sub__cCó$ t|ƒ}|tur |S|j||d�SrË)r±r¤rÚr™r*r*r,Ú__rsub__ës zDecimal.__rsub__cCs@ t|ƒ}|tur |S|durtƒ}|j|jA}|js|jrH| ||¡}|r(|S| ¡r8|s4| td¡St |S| ¡rH|sD| td¡St |S|j |j }|rR|s_t |d|ƒ}|  |¡}|S|j dkrrt ||j |ƒ}|  |¡}|S|j dkr…t ||j |ƒ}|  |¡}|St|ƒ}t|ƒ}t |t|j|jƒ|ƒ}|  |¡}|S)Nz (+-)INF * 0z 0 * (+-)INFrXÚ1)r±r¤rr>rWr–r‘ror rErVr=rÎr?rtrkr\)r1r“r2Z resultsignrBZ resultexpr×rØr*r*r,Ú__mul__ósJ             zDecimal.__mul__c CsÎ t|ƒ}|tur tS|durtƒ}|j|jA}|js|jrP| ||¡}|r(|S| ¡r6| ¡r6| td¡S| ¡r>t |S| ¡rP| t d¡t |d|  ¡ƒS|sa|sZ| t d¡S| td|¡S|sl|j|j}d}nnt|jƒt|jƒ|jd}|j|j|}t|ƒ}t|ƒ} |dkr�t|jd|| jƒ\}} nt|j| jd| ƒ\}} | r¸|d dkr·|d7}n"|j|j} || krÚ|ddkrÚ|d}|d7}|| krÚ|ddksÈt |t|ƒ|ƒ}| |¡S) Nz(+-)INF/(+-)INFzDivision by infinityrXz0 / 0zx / 0r&r.r³r„)r±r¤rr>rWr–r‘ror rErr=ÚEtinyrr rVrqr?rKrtÚdivmodr\rkrÎ) r1r“r2rGrBr]r‹Úshiftr×rØÚ remainderÚ ideal_expr*r*r,Ú __truediv__,sV        € þ zDecimal.__truediv__c Cs |j|jA}| ¡r|j}nt|j|jƒ}| ¡| ¡}|r(| ¡s(|dkr5t|ddƒ| ||j¡fS||jkr„t |ƒ}t |ƒ}|j |j krV|j d|j |j 9_ n |j d|j |j 9_ t |j |j ƒ\}} |d|jkr„t|t |ƒdƒt|jt | ƒ|ƒfS| td¡} | | fS)Nr´rXr&r³z%quotient too large in //, % or divmod)r>r‘rVr½ržr=rÕrJrKrtr]r\ràrkror) r1r“r2rGrãÚexpdiffr×rØÚqÚrrBr*r*r,Ú_dividegs2   ÿ  ÿÿzDecimal._dividecCrÛrË)r±r¤rär™r*r*r,Ú __rtruediv__ˆó zDecimal.__rtruediv__cCsØ t|ƒ}|tur |S|durtƒ}| ||¡}|r||fS|j|jA}| ¡r@| ¡r6| td¡}||fSt|| td¡fS|s[|sN| t d¡}||fS| t d|¡| td¡fS|  ||¡\}}|  |¡}||fS)Nzdivmod(INF, INF)úINF % xz divmod(0, 0)úx // 0úx % 0) r±r¤rr–r>r‘ror rErr rèrÎ)r1r“r2rBrGZquotientrâr*r*r,Ú __divmod__�s6    ÿ   ÿ zDecimal.__divmod__cCrÛrË)r±r¤rîr™r*r*r,Ú __rdivmod__³rêzDecimal.__rdivmod__cCsŠ t|ƒ}|tur |S|durtƒ}| ||¡}|r|S| ¡r&| td¡S|s6|r0| td¡S| td¡S| ||¡d}|  |¡}|S)Nrëríz0 % 0r.) r±r¤rr–r‘ror rrèrÎ)r1r“r2rBrâr*r*r,Ú__mod__ºs$     zDecimal.__mod__cCrÛrË)r±r¤rðr™r*r*r,Ú__rmod__ÕrêzDecimal.__rmod__c CsÊ |durtƒ}t|dd�}| ||¡}|r|S| ¡r"| td¡S|s2|r,| td¡S| td¡S| ¡r?t|ƒ}| |¡St |j |j ƒ}|sTt |j d|ƒ}| |¡S|  ¡|  ¡}||jdkrh| t¡S|dkrx| ||j¡}| |¡St|ƒ}t|ƒ}|j|jkr”|jd |j|j9_n |jd |j|j9_t|j|jƒ\}} d | |d@|jkr¾| |j8} |d7}|d |jkrÊ| t¡S|j } | d krØd| } | } t | t| ƒ|ƒ}| |¡S) NTr¯zremainder_near(infinity, x)zremainder_near(x, 0)zremainder_near(0, 0)rXr.r´r³rdr&)rr±r–r‘ror rrrÎr½rVr=r>ržrKrrÕrJrtr]r\ràrk) r1r“r2rBÚideal_exponentrår×rØrærçrGr*r*r,Úremainder_nearÜsb  ÿÿÿ        zDecimal.remainder_nearcCsž t|ƒ}|tur |S|durtƒ}| ||¡}|r|S| ¡r2| ¡r*| td¡St|j|jAS|sG|rA| t d|j|jA¡S| t d¡S|  ||¡dS)Nz INF // INFrìz0 // 0r&) r±r¤rr–r‘ror rEr>r rrèr¨r*r*r,Ú __floordiv__'s(   ÿ zDecimal.__floordiv__cCrÛrË)r±r¤rôr™r*r*r,Ú __rfloordiv__CrêzDecimal.__rfloordiv__cCs@ | ¡r| ¡r tdƒ‚|jrdnd}t|ƒSt|ƒ}t|ƒS)Nz%Cannot convert signaling NaN to floatz-nanÚnan)rŽr—rwr>rkr{©r1Úsr*r*r,Ú __float__JsÿzDecimal.__float__cCsp |jr| ¡r tdƒ‚| ¡rtdƒ‚d|j}|jdkr*|t|jƒd|jS|t|jd|j…p5dƒS)NzCannot convert NaN to integerz"Cannot convert infinity to integerr�r&r³rX) rWrŽrwr‘r¼r>rVr\r?r÷r*r*r,Ú__int__Ts  zDecimal.__int__cCr(r)r*r�r*r*r,Úrealcsz Decimal.realcCstdƒS©Nr&©rr�r*r*r,Úimaggsz Decimal.imagcCr(r)r*r�r*r*r,Ú conjugatekr4zDecimal.conjugatecCs tt|ƒƒSr))Úcomplexr{r�r*r*r,Ú __complex__nó zDecimal.__complex__cCsT |j}|j|j}t|ƒ|kr&|t|ƒ|d… d¡}t|j||jdƒSt|ƒS)NrXT) r?rKÚclamprqrrr=r>rVr)r1r2ZpayloadZmax_payload_lenr*r*r,r@qs  zDecimal._fix_nancCsB |jr| ¡r | |¡St|ƒS| ¡}| ¡}|sA|j|g|j}tt |j |ƒ|ƒ}||j kr=|  t ¡t |jd|ƒSt|ƒSt|jƒ|j |j}||krd|  td|j¡}|  t¡|  t¡|S||k}|rl|}|j |krôt|jƒ|j |} | dkrŠt |jd|dƒ}d} |j|j} | || ƒ} |jd| …p�d} | dkr»tt| ƒdƒ} t| ƒ|jkr»| dd…} |d7}||krÈ|  td|j¡}nt |j| |ƒ}| rØ|rØ|  t¡|rß|  t¡| ræ|  t¡|  t¡|sò|  t ¡|S|rû|  t¡|jdk�r|j |k�r|  t ¡|jd|j |} t |j| |ƒSt|ƒS)NrXú above Emaxr&rÝr.r�)rWrŽr@rrßÚEtoprLrr½rÔrVrorr=r>rqr?rKrr r Ú_pick_rounding_functionrJrkr\rr )r1r2rßrÚexp_maxZnew_expZexp_minrBZself_is_subnormalrƒZrounding_methodÚchangedr‹r r*r*r,rÎ}sp                 z Decimal._fixcCs t|j|ƒr dSdS)Nr&r�)Ú _all_zerosr?©r1rKr*r*r,Ú _round_downãs zDecimal._round_downcCs | |¡ Sr))r r r*r*r,Ú _round_upês zDecimal._round_upcCs( |j|dvr dSt|j|ƒrdSdS)NZ56789r.r&r�)r?r r r*r*r,Ú_round_half_upîs  zDecimal._round_half_upcCs t|j|ƒr dS| |¡S)Nr�©Ú _exact_halfr?r r r*r*r,Ú_round_half_down÷s  zDecimal._round_half_downcCs6 t|j|ƒr|dks|j|ddvrdS| |¡S)Nr&r.Ú02468r�rr r*r*r,Ú_round_half_evenþs   zDecimal._round_half_evencCs |jr | |¡S| |¡ Sr)©r>r r r*r*r,Ú_round_ceilingó  zDecimal._round_ceilingcCs |js | |¡S| |¡ Sr)rr r*r*r,Ú _round_floor rzDecimal._round_floorcCs. |r|j|ddvr| |¡S| |¡ S)Nr.Z05)r?r r r*r*r,Ú _round_05ups  zDecimal._round_05up)rrrrrrrrcCsb |durt|tƒstdƒ‚tdd| ƒ}| |¡S|jr)| ¡r%tdƒ‚tdƒ‚t|  dt ¡ƒS)Nz+Second argument to round should be integralr&rÝúcannot round a NaNúcannot round an infinity) rjr\r}r=ÚquantizerWrµrwr¼rÕr)r1r<r]r*r*r,Ú __round__&s.  zDecimal.__round__cCó0 |jr| ¡r tdƒ‚tdƒ‚t| dt¡ƒS©Nrrr&)rWrµrwr¼r\rÕrr�r*r*r,Ú __floor__dó zDecimal.__floor__cCrr)rWrµrwr¼r\rÕrr�r*r*r,Ú__ceil__srzDecimal.__ceil__cCs t|dd�}t|dd�}|js|jrn|durtƒ}|jdkr&| td|¡S|jdkr2| td|¡S|jdkr:|}nL|jdkrB|}nD|jdkrX|sO| td¡St|j|jA}n.|jdkrm|se| td¡St|j|jA}nt|j|jAt t |j ƒt |j ƒƒ|j|jƒ}|  ||¡S) NTr¯r`r’r<razINF * 0 in fmaz0 * INF in fma) r±rWrrVror rEr>r=rkr\r?rÙ)r1r“Zthirdr2Úproductr*r*r,Úfma‚s@       ÿ ÿ€  þ z Decimal.fmac CsÈ t|ƒ}|tur |St|ƒ}|tur|S|durtƒ}| ¡}| ¡}| ¡}|s.|s.|rb|dkr9| td|¡S|dkrD| td|¡S|dkrO| td|¡S|rV| |¡S|r]| |¡S| |¡S| ¡rn| ¡rn| ¡st| td¡S|dkr~| td¡S|s†| td¡S| ¡|j kr“| td¡S|s�|s�| td¡S|  ¡r¤d}n|j }t t |ƒƒ}t| ¡ƒ}t| ¡ƒ} |j |td |j|ƒ|}t| jƒD]} t|d |ƒ}qÌt|| j |ƒ}t|t|ƒdƒS) Nrdr’z@pow() 3rd argument not allowed unless all arguments are integersr&zApow() 2nd argument cannot be negative when 3rd argument specifiedzpow() 3rd argument cannot be 0zSinsufficient precision: pow() 3rd argument must not have more than precision digitszXat least one of pow() 1st argument and 2nd argument must be nonzero; 0**0 is not definedr³)r±r¤rrŽror r@Ú _isintegerržrKÚ_isevenr>rsr\rtÚto_integral_valuer¸r]Úranger=rk) r1r“Úmodulor2r”r•Z modulo_is_nanrGÚbaseÚexponentÚir*r*r,Ú _power_modulo®s‚ ÿÿÿ   ÿþÿÿÿÿÿ   zDecimal._power_modulocCsT t|ƒ}|j|j}}|ddkr |d}|d7}|ddkst|ƒ}|j|j}}|ddkr?|d}|d7}|ddks1|dkr—||9}|ddkr[|d}|d7}|ddksM|dkradS|d|} |jdkro| } | ¡r‰|jdkr‰|jt|ƒ} t| | |dƒ} nd} tddd| | | ƒS|jdk�rg|d} | dvrç|| @|kr®dSt |ƒd} |dd}|t t |ƒƒkrÄdSt | ||ƒ} t |||ƒ}| dusÚ|durÜdS| |krâdSd | }nj| d k�rOt |ƒd d} t d | |ƒ\}}|�rdS|d dk�r|d }| d8} |d dk�s |dd }|t t |ƒƒk�r)dSt | ||ƒ} t |||ƒ}| du�sA|du�rCdS| |k�rJdSd | }ndS|d|k�rZdS| |}tdt |ƒ|ƒS|dk�rv|d|d}}nŒ|dk�r‹t t t||ƒƒƒ| k�r‹dSt |ƒ}|dk�r¤t t t|ƒ|ƒƒ| k�r¤dS|d| }}|d |d k�r¼dk�r×nn|d }|d }|d |d k�rÖdk�s¾n|d |d k�rçdk�rnn|d }|d }|d |d k�rdk�sén|dk�rW|dk�r||k�rdSt ||ƒ\}}|dk�r!dSdt |ƒ | >} t |||dƒ\}}||k�r=n ||d||}�q,||k�rS|dk�sUdS|}|dk�ri||dt|ƒk�ridS||}||9}|d|k�rzdSt |ƒ}| ¡�rœ|jdk�rœ|jt|ƒ} t|| |t |ƒƒ} nd} td|d| || ƒS)Nr³r&r.rÝrX)rdéééé]éAr„érbrdTéd)rtr\r]rGr#r>rVr½r=Ú_nbitsrqrkÚ_decimal_lshift_exactràrsÚ _log10_lb)r1r“ÚpÚxÚxcÚxeÚyÚycÚyer)ròZzerosZ last_digitrÂZemaxrâr€r<Zxc_bitsÚremÚarærçZstr_xcr*r*r,Ú _power_exactsâ9  þ  þ  þ       þ     &&$"þ$"þ   û zDecimal._power_exactcCs* |dur | |||¡St|ƒ}|tur|S|durtƒ}| ||¡}|r'|S|s3|s1| td¡StSd}|jdkrQ|  ¡rE|  ¡sDd}n|rM| td¡S|  ¡}|sb|jdkr^t |ddƒSt |S| ¡ru|jdkrot |St |ddƒS|tkrÃ|  ¡r©|jdkr…d}n ||jkrŽ|j}nt|ƒ}|j|}|d|jkr¨d|j}| t¡n| t¡| t¡d|j}t |dd| |ƒS| ¡}| ¡rÞ|jdk|dkkrÚt |ddƒSt |Sd}d} | ¡| ¡} |dk|jdkk�r| tt|jƒƒk�rt |d|jdƒ}n| ¡} | tt| ƒƒk�rt |d| dƒ}|du�r@| ||jd¡}|du�r@|dk�r>t d|j|jƒ}d} |du�r–|j} t|ƒ} | j| j}}t|ƒ}|j|j}}|jdk�rg| }d } t||||| |ƒ\}}|d d tt|ƒƒ| d�rˆn|d 7}�qjt |t|ƒ|ƒ}| �r|  ¡�st|jƒ|jk�rÀ|jdt|jƒ}t |j|jd||j|ƒ}|  ¡}| !¡t"D]}d|j#|<�qÊ| $|¡}| t¡|j%t&�rè| t'¡|j%t(�rö| t(d |j¡t't&ttt)fD]}|j%|�r | |¡�qý|S| $|¡}|S) Nz0 ** 0r&r.z+x ** y with x negative and y not an integerrXrÝFTrbr„r³r)*r+r±r¤rr–ror Ú_Oner>r#r$rÍr=rEr‘rKr\rVr r ržÚ_log10_exp_boundrqrkrLrßr?r?rtr]rGÚ_dpowerrRrSÚ_signalsÚtrapsrÎÚflagsr rrr)r1r“r'r2rBZ result_signZ multiplierr]Zself_adjÚexactZboundrßr6r7r8r9r:r;r<Úextrar‹råZ newcontextZ exceptionr*r*r,Ú__pow__ðsÜ   €ÿ         €    €     "üÿ       € þzDecimal.__pow__cCrÛrË)r±r¤rHr™r*r*r,Ú__rpow__È rêzDecimal.__rpow__cCsÒ |durtƒ}|jr|j|d�}|r|S| |¡}| ¡r |S|s)t|jddƒS|j| ¡g|j }t |j ƒ}|j }|j |ddkr]||kr]|d7}|d8}|j |ddkr]||ksHt|j|j d|…|ƒS)NrQrXr&r.) rrWr–rÎr‘r=r>rLrrrqr?rV)r1r2rBÚduprÚendr]r*r*r,Ú normalizeÏ s(   þzDecimal.normalizecCsš t|dd�}|durtƒ}|dur|j}|js|jr?| ||¡}|r%|S| ¡s-| ¡r?| ¡r9| ¡r9t|ƒS| td¡S|  ¡|j krM|j ksTn| td¡S|sct |j d|j ƒ}| |¡S| ¡}||j krr| td¡S||j d|jkr‚| td¡S| |j |¡}| ¡|j kr–| td¡St|jƒ|jkr¤| td¡S|r²| ¡|jkr²| t¡|j |j krÆ||krÁ| t¡| t¡| |¡}|S) NTr¯zquantize with one INFz)target exponent out of bounds in quantizerXz9exponent of quantize result too large for current contextr.z7quantize result has too many digits for current context)r±rrJrWr–r‘rror rßrVrLr=r>rÎržrKrÕrqr?ÚEminr r r )r1r]rJr2rBrŸr*r*r,rè sb   ÿÿ  ÿÿÿÿ     zDecimal.quantizecCsF t|dd�}|js |jr| ¡r| ¡p| ¡o| ¡S|j|jkSr®)r±rWrµÚ is_infiniterVr™r*r*r,Ú same_quantum% s  ÿ zDecimal.same_quantumcCsÈ |jrt|ƒS|st|jd|ƒS|j|kr%t|j|jd|j||ƒSt|jƒ|j|}|dkr>t|jd|dƒ}d}|j|}|||ƒ}|jd|…pPd}|dkr]tt |ƒdƒ}t|j||ƒS)NrXr&rÝr.) rWrr=r>rVr?rqrrkr\)r1r]rJrƒZ this_functionrr‹r*r*r,rÕ4 s&  ÿ  zDecimal._rescalecCsh |dkr tdƒ‚|js|st|ƒS| | ¡d||¡}| ¡| ¡kr2| | ¡d||¡}|S)Nr&z'argument should be at least 1 in _roundr.)rwrWrrÕrž)r1ÚplacesrJrBr*r*r,Ú_roundV s  zDecimal._roundcCs� |jr|j|d�}|r|St|ƒS|jdkrt|ƒS|s$t|jddƒS|dur+tƒ}|dur2|j}| d|¡}||krA|  t ¡|  t ¡|S)NrQr&rX) rWr–rrVr=r>rrJrÕror r ©r1rJr2rBr*r*r,Úto_integral_exactm s&     zDecimal.to_integral_exactcCs^ |durtƒ}|dur|j}|jr |j|d�}|r|St|ƒS|jdkr)t|ƒS| d|¡S)NrQr&)rrJrWr–rrVrÕrRr*r*r,r%Š s   zDecimal.to_integral_valuecCsÒ |durtƒ}|jr"|j|d�}|r|S| ¡r"|jdkr"t|ƒS|s3t|jd|jdƒ}| |¡S|jdkr>|  t d¡S|j d}t |ƒ}|j d?}|j d@r`|jd}t|jƒd?d}n |j}t|jƒdd?}||}|dkr}|d|9}d } n t|d| ƒ\}} | } ||8}d|} || } | | krœn| | d?} q“| oª| | |k} | rÄ|dkr¸| d|} n| d| 9} ||7}n | d dkrÎ| d7} tdt| ƒ|ƒ}| ¡}| t¡} | |¡}| |_|S) NrQr&rXrdr.zsqrt(-x), x > 0r³r2Tr„)rrWr–r‘r>rr=rVrÎror rKrtr]r\rqr?ràrkÚ _shallow_copyÚ _set_roundingrrJ)r1r2rBrKÚoprÂÚcÚlrárFrâr<rærJr*r*r,Úsqrt� sd          û    z Decimal.sqrtcCs¸ t|dd�}|durtƒ}|js|jr@| ¡}| ¡}|s |r@|dkr-|dkr-| |¡S|dkr:|dkr:| |¡S| ||¡S| |¡}|dkrN| |¡}|dkrU|}n|}| |¡S©NTr¯r.r&r�©r±rrWrŽrÎr–r¡Ú compare_total©r1r“r2ZsnZonrWrBr*r*r,rÔ s(        z Decimal.maxcCs¸ t|dd�}|durtƒ}|js|jr@| ¡}| ¡}|s |r@|dkr-|dkr-| |¡S|dkr:|dkr:| |¡S| ||¡S| |¡}|dkrN| |¡}|dkrU|}n|}| |¡SrZr[r]r*r*r,r½* s(        z Decimal.mincCs: |jrdS|jdkr dS|j|jd…}|dt|ƒkS)NFr&TrX)rWrVr?rq)r1Úrestr*r*r,r#L s zDecimal._isintegercCs( |r|jdkr dS|jd|jdvS)Nr&Tr�r)rVr?r�r*r*r,r$U szDecimal._isevencCs. z |jt|jƒdWStyYdSw)Nr.r&)rVrqr?r}r�r*r*r,rž[ s  ÿzDecimal.adjustedcCs |Sr)r*r�r*r*r,Ú canonicalc ózDecimal.canonicalcCs0 t|dd�}| ||¡}|r|S|j||d�S©NTr¯rQ)r±ršr²r¨r*r*r,Úcompare_signalk s   zDecimal.compare_signalcCsR t|dd�}|jr|jstS|js|jrtS|j}| ¡}| ¡}|s&|rƒ||krPt|jƒ|jf}t|jƒ|jf}||krD|rBtStS||krN|rLtStStS|rk|dkrXtS|dkr^tS|dkrdtS|dkrjtSn|dkrqtS|dkrwtS|dkr}tS|dkrƒtS||kr‰tS||kr�tS|j|jkr›|r™tStS|j|jkr§|r¥tStStS)NTr¯r.rd) r±r>Ú _NegativeOner@rŽrqr?Ú_ZerorV)r1r“r2rGZself_nanZ other_nanZself_keyZ other_keyr*r*r,r\w sj   ÿ  zDecimal.compare_totalcCs( t|dd�}| ¡}| ¡}| |¡Sr®)r±rÌr\)r1r“r2røÚor*r*r,Úcompare_total_magÀ s   zDecimal.compare_total_magcCs td|j|j|jƒSrü)r=r?rVrWr�r*r*r,rÌË ózDecimal.copy_abscCs0 |jrtd|j|j|jƒStd|j|j|jƒS)Nr&r.)r>r=r?rVrWr�r*r*r,rÍÏ szDecimal.copy_negatecCs$ t|dd�}t|j|j|j|jƒSr®)r±r=r>r?rVrWr™r*r*r,Ú copy_signÖ s   ÿzDecimal.copy_signc CsÞ |durtƒ}|j|d�}|r|S| ¡dkrtS|stS| ¡dkr(t|ƒS|j}| ¡}|jdkrK|t t |j ddƒƒkrKt dd|j dƒ}n‘|jdkrj|t t |  ¡ ddƒƒkrjt dd|  ¡dƒ}nr|jdkr„|| kr„t ddd|dd| ƒ}nX|jdkrž|| dkržt dd|d| dƒ}n>t|ƒ}|j|j}}|jdkr±| }d} t||||ƒ\} } | d d t t | ƒƒ|drÏn|d7}q´t dt | ƒ| ƒ}| ¡}| t¡} | |¡}| |_|S) NrQr�r.r&rbrÝrXrITr„r³)rr–r‘rdr@rrKržr>rqrkrLr=rßrtr\r]rGÚ_dexprTrUrrÎrJ) r1r2rBr6ÚadjrVrWrÂrGr‹r]rJr*r*r,r]Ü sN   $(   ü  z Decimal.expcCs dS)NTr*r�r*r*r,Ú is_canonical' r`zDecimal.is_canonicalcCs |j Sr))rWr�r*r*r,Ú is_finite/ ózDecimal.is_finitecCó |jdkS)Nra©rVr�r*r*r,rN7 ó zDecimal.is_infinitecCs |jdvS)Nrfror�r*r*r,rµ; rpzDecimal.is_nancCs, |js|sdS|durtƒ}|j| ¡kS©NF)rWrrMržrÉr*r*r,Ú is_normal? ó  zDecimal.is_normalcCrn)Nr<ror�r*r*r,r˜G rpzDecimal.is_qnancCrn©Nr.)r>r�r*r*r,Ú is_signedK rpzDecimal.is_signedcCrn)Nr`ror�r*r*r,r—O rpzDecimal.is_snancCs, |js|sdS|durtƒ}| ¡|jkSrq)rWrržrMrÉr*r*r,Ú is_subnormalS rszDecimal.is_subnormalcCs |j o |jdkSr›rœr�r*r*r,Úis_zero[ szDecimal.is_zerocCsÈ |jt|jƒd}|dkrtt|ddƒƒdS|dkr-ttd|ddƒƒdSt|ƒ}|j|j}}|dkrUt|d| ƒ}t|ƒ}t|ƒt|ƒ||kS|ttd| |ƒƒdS)Nr.ér³r´r�r&©rVrqr?rkrtr\r]©r1rjrVrWrÂÚnumZdenr*r*r,Ú _ln_exp_bound_ szDecimal._ln_exp_boundc Cs  |durtƒ}|j|d�}|r|S|stS| ¡dkrtS|tkr$tS|jdkr/| t d¡St |ƒ}|j |j }}|j }|| ¡d} t|||ƒ}|ddttt|ƒƒƒ|dr_n|d7}qFtt |d kƒtt|ƒƒ| ƒ}| ¡}| t¡} | |¡}| |_|S) NrQr.zln of a negative valuerdTr„r³rbr&)rr–Ú_NegativeInfinityr‘Ú _Infinityr@rdr>ror rtr\r]rKr|Ú_dlogrqrkrsr=rTrUrrÎrJ© r1r2rBrVrWrÂr6rPr‹rJr*r*r,Úlnx s@   ÿ $û  z Decimal.lncCsÌ |jt|jƒd}|dkrtt|ƒƒdS|dkr%ttd|ƒƒdSt|ƒ}|j|j}}|dkrQt|d| ƒ}td|ƒ}t|ƒt|ƒ||kdStd| |ƒ}t|ƒ||dkdS) Nr.r´r�r&r³éçrdZ231ryrzr*r*r,rAª s  zDecimal._log10_exp_boundc CsH |durtƒ}|j|d�}|r|S|stS| ¡dkrtS|jdkr)| td¡S|jddkrM|jdd…dt |jƒdkrMt |j t |jƒdƒ}nDt |ƒ}|j |j}}|j}|| ¡d} t|||ƒ}|d d t tt|ƒƒƒ|dr}n|d 7}qdtt |dkƒtt|ƒƒ| ƒ}| ¡}| t¡} | |¡}| |_|S) NrQr.zlog10 of a negative valuer&rÝrXrdTr„r³rb)rr–r}r‘r~r>ror r?rqrrVrtr\r]rKrAÚ_dlog10rkrsr=rTrUrrÎrJr€r*r*r,Úlog10È s@   ÿ. $û  z Decimal.log10cCsX |j|d�}|r |S|durtƒ}| ¡rtS|s!| tdd¡St| ¡ƒ}| |¡S)NrQzlogb(0)r.) r–rr‘r~ror rržrÎrÏr*r*r,Úlogbû s   z Decimal.logbcCs8 |jdks |jdkr dS|jD] }|dvrdSqdS)Nr&FZ01T)r>rVr?)r1Údigr*r*r,Ú _islogical s ÿzDecimal._islogicalcCs†|jt|ƒ}|dkrd||}n |dkr||j d…}|jt|ƒ}|dkr3d||}||fS|dkr?||j d…}||fS)Nr&rX)rKrq)r1r2ÚopaÚopbZdifr*r*r,Ú _fill_logical' s þzDecimal._fill_logicalcCó| |durtƒ}t|dd�}| ¡r| ¡s| t¡S| ||j|j¡\}}d dd„t||ƒDƒ¡}t d|  d¡p;ddƒS)NTr¯rZcSs$g|]\}}tt|ƒt|ƒ@ƒ‘qSr*©rkr\©Ú.0r>Úbr*r*r,Ú B ó$z'Decimal.logical_and..r&rX© rr±r‡ror rŠr?ryÚzipr=rr©r1r“r2rˆr‰r�r*r*r,Ú logical_and4 ó  zDecimal.logical_andcCs* |durtƒ}| tdd|jdƒ|¡S)Nr&rÝ)rÚ logical_xorr=rKrÉr*r*r,Úlogical_invertE s ÿzDecimal.logical_invertcCr‹)NTr¯rZcSs$g|]\}}tt|ƒt|ƒBƒ‘qSr*rŒr�r*r*r,r�Z r‘z&Decimal.logical_or..r&rXr’r”r*r*r,Ú logical_orL r–zDecimal.logical_orcCr‹)NTr¯rZcSs$g|]\}}tt|ƒt|ƒAƒ‘qSr*rŒr�r*r*r,r�k r‘z'Decimal.logical_xor..r&rXr’r”r*r*r,r—] r–zDecimal.logical_xorcCsÀ t|dd�}|durtƒ}|js|jr@| ¡}| ¡}|s |r@|dkr-|dkr-| |¡S|dkr:|dkr:| |¡S| ||¡S| ¡ | ¡¡}|dkrR| |¡}|dkrY|}n|}| |¡SrZ© r±rrWrŽrÎr–rÌr¡r\r]r*r*r,Úmax_magn ó(       zDecimal.max_magcCsÀ t|dd�}|durtƒ}|js|jr@| ¡}| ¡}|s |r@|dkr-|dkr-| |¡S|dkr:|dkr:| |¡S| ||¡S| ¡ | ¡¡}|dkrR| |¡}|dkrY|}n|}| |¡SrZršr]r*r*r,Úmin_magŒ rœzDecimal.min_magcCs¢ |durtƒ}|j|d�}|r|S| ¡dkrtS| ¡dkr+tdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||krC|S|  tdd|  ¡dƒ|¡S)NrQr�r.r&rIrÝ)rr–r‘r}r=rKrrRrUrÚ_ignore_all_flagsrÎrÚrß©r1r2rBZnew_selfr*r*r,Ú next_minusª ó&     ÿzDecimal.next_minuscCs¢ |durtƒ}|j|d�}|r|S| ¡dkrtS| ¡dkr+tdd|j| ¡ƒS| ¡}| t ¡|  ¡|  |¡}||krC|S|  tdd|  ¡dƒ|¡S)NrQr.r�rIr&rÝ)rr–r‘r~r=rKrrRrUrržrÎrÙrßrŸr*r*r,Ú next_plusÁ r¡zDecimal.next_pluscCsâ t|dd�}|durtƒ}| ||¡}|r|S| |¡}|dkr&| |¡S|dkr0| |¡}n| |¡}| ¡rM| t d|j ¡| t ¡| t ¡|S|  ¡|jkro| t¡| t¡| t ¡| t ¡|so| t¡|S)NTr¯r&r�z Infinite result from next_toward)r±rr–r¡rhr¢r r‘rorr>r r ržrMrr r)r1r“r2rBZ comparisonr*r*r,Ú next_towardØ s:      þ   ö     zDecimal.next_towardcCs† | ¡rdS| ¡r dS| ¡}|dkrdS|dkrdS| ¡r(|jr&dSdS|dur/tƒ}|j|d �r<|jr:d Sd S|jrAd Sd S)Nr’r¿r.z +Infinityr�z -Infinityz-Zeroz+ZerorQz -Subnormalz +Subnormalz-Normalz+Normal)r—r˜r‘rwr>rrv)r1r2Úinfr*r*r,Ú number_classs. zDecimal.number_classcCó tdƒS©Nr³rýr�r*r*r,Úradix0sz Decimal.radixcCsø |durtƒ}t|dd�}| ||¡}|r|S|jdkr"| t¡S|j t|ƒkr1|jks7n| t¡S| ¡r?t |ƒSt|ƒ}|j }|jt |ƒ}|dkrXd||}n |dkrc|| d…}||d…|d|…}t |j | d¡pxd|jƒS©NTr¯r&rX©rr±r–rVror rKr\r‘rr?rqr=r>rr)r1r“r2rBÚtorotÚrotdigÚtopadZrotatedr*r*r,Úrotate4s0      ÿzDecimal.rotatecCsÀ |durtƒ}t|dd�}| ||¡}|r|S|jdkr"| t¡Sd|j|j}d|j|j}|t|ƒkr>|ksDn| t¡S|  ¡rLt |ƒSt |j |j |jt|ƒƒ}| |¡}|S)NTr¯r&r´rd)rr±r–rVror rLrKr\r‘rr=r>r?rÎ)r1r“r2rBZliminfZlimsuprŒr*r*r,ÚscalebUs$      zDecimal.scalebcCs |durtƒ}t|dd�}| ||¡}|r|S|jdkr"| t¡S|j t|ƒkr1|jks7n| t¡S| ¡r?t |ƒSt|ƒ}|j }|jt |ƒ}|dkrXd||}n |dkrc|| d…}|dkrn|d|…}n|d|}||j d…}t |j | d¡p…d|jƒSr©rª)r1r“r2rBr«r¬r­Zshiftedr*r*r,ráns6       ÿz Decimal.shiftcCs|jt|ƒffSr))Ú __class__rkr�r*r*r,Ú __reduce__•szDecimal.__reduce__cCót|ƒtur|S| t|ƒ¡Sr)©Útyperr°rkr�r*r*r,Ú__copy__˜ó zDecimal.__copy__cCr²r)r³)r1Zmemor*r*r,Ú __deepcopy__�r¶zDecimal.__deepcopy__cCs. |durtƒ}t||d�}|jr-t|j|ƒ}t| ¡ƒ}|ddkr'|d7}t|||ƒS|ddurrkrÌÚ _format_alignrÄr=r?rVrJrQrÕrqÚ_format_number)r1Z specifierr2r¸ÚspecrGÚbodyrJr¼rÆrÇr�r‚r]r*r*r,Ú __format__¤s\                zDecimal.__format__)rXN)NNr))FN)TN)�r6r7r8Ú __slots__riÚ classmethodr|rŽr‘r–ršr�r¡r¥r©r«r¬r­r²r¶r»r‡r¾rÈrÊrÐrÑrÓrÙÚ__radd__rÚrÜrÞÚ__rmul__rärèrérîrïrðrñrórôrõrùrúÚ __trunc__Úpropertyrûrþrÿrr@rÎr r r rrrrrÚdictrrrr r"r+r?rHrIrLrrOrÕrQrSr%Ú to_integralrYrÔr½r#r$ržr_rbr\rfrÌrÍrhr]rkrlrNrµrrr˜rur—rvrwr|r�rAr„r…r‡rŠr•r˜r™r—r›r�r r¢r£r¥r¨r®r¯rár±rµr·rÄr*r*r*r,rs  ,  ! @  2  4   V   7 ; !  $    K      f ø >  ,U n Y   ="    c *"   I   K   2  3         .*  ! 'rFcCs( t t¡}||_||_||_||_|Sr))rhrirr>r?rVrW)rGZ coefficientr)Zspecialr1r*r*r,r=ös r=c@s&eZdZ dd„Zdd„Zdd„ZdS)rTcCs| ¡|_dSr))rRÚ new_context)r1rÍr*r*r,Ú__init__óz_ContextManager.__init__cCstƒ|_t|jƒ|jSr))rÚ saved_contextrrÍr�r*r*r,Ú __enter__s z_ContextManager.__enter__cCst|jƒdSr))rrÐ)r1ÚtÚvÚtbr*r*r,Ú__exit__rÏz_ContextManager.__exit__N)r6r7r8rÎrÑrÕr*r*r*r,rTs  rTc@s°eZdZ   d¥dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z e Zd¦dd„Zdd„Zdd„Zdd„ZdZd d!„Zd"d#„Zd$d%„Zd§d'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Z d;d<„Z!d=d>„Z"d?d@„Z#dAdB„Z$dCdD„Z%dEdF„Z&dGdH„Z'dIdJ„Z(dKdL„Z)dMdN„Z*dOdP„Z+dQdR„Z,dSdT„Z-dUdV„Z.dWdX„Z/dYdZ„Z0d[d\„Z1d]d^„Z2d_d`„Z3dadb„Z4dcdd„Z5dedf„Z6dgdh„Z7didj„Z8dkdl„Z9dmdn„Z:dodp„Z;dqdr„Zdwdx„Z?dydz„Z@d{d|„ZAd}d~„ZBdd€„ZCd�d‚„ZDdƒd„„ZEd…d†„ZFd¦d‡dˆ„ZGd‰dŠ„ZHd‹dŒ„ZId�dŽ„ZJd�d�„ZKd‘d’„ZLd“d”„ZMd•d–„ZNd—d˜„ZOd™dš„ZPd›dœ„ZQd�dž„ZRdŸd „ZSd¡d¢„ZTd£d¤„ZUeUZVdS)¨rNc s<zt} Wn ty Ynw|dur|n| j|_|dur|n| j|_|dur(|n| j|_|dur2|n| j|_|dur<|n| j|_|durF|n| j|_| durRg|_n| |_ˆdur`| j   ¡|_ nt ˆt ƒstt ‡fdd„t ˆDƒƒ|_ nˆ|_ ˆdur„t  t d¡|_dSt ˆt ƒs™t ‡fdd„t ˆDƒƒ|_dSˆ|_dS)Nc3ó �|] }|t|ˆvƒfVqdSr)©r\©rŽrø©rDr*r,Ú Ió€z#Context.__init__..r&c3rÖr)r×rØ©rEr*r,rÚPrÛ)rÚ NameErrorrKrJrMrLrÄrÚ_ignored_flagsrDrRrjrËrCÚfromkeysrE) r1rKrJrMrLrÄrrErDrÞZdcr*)rErDr,rÎ0s0 ÿ    zContext.__init__cCs”t|tƒs td|ƒ‚|dkr||krtd||||fƒ‚n%|dkr1||kr0td||||fƒ‚n||ks9||krCtd||||fƒ‚t |||¡S)Nz%s must be an integerú-infz%s must be in [%s, %d]. got: %sr¤z%s must be in [%d, %s]. got: %sz%s must be in [%d, %d]. got %s)rjr\r}rwrhÚ __setattr__)r1ÚnamerZvminZvmaxr*r*r,Ú_set_integer_checkTs  ÿÿzContext._set_integer_checkcCs`t|tƒs td|ƒ‚|D] }|tvrtd|ƒ‚q tD] }||vr(td|ƒ‚qt |||¡S)Nz%s must be a signal dictz%s is not a valid signal dict)rjrËr}rCÚKeyErrorrhrá)r1rârŒÚkeyr*r*r,Ú_set_signal_dictbs   ÿ ÿzContext._set_signal_dictcCsà|dkr | ||dd¡S|dkr| ||dd¡S|dkr$| ||dd¡S|dkr0| ||dd¡S|d kr<| ||dd¡S|d krQ|tvrJtd |ƒ‚t |||¡S|d ksY|d kr_| ||¡S|dkrjt |||¡Std|ƒ‚)NrKr.r¤rMràr&rLrÄrrJz%s: invalid rounding moderErDrÞz.'decimal.Context' object has no attribute '%s')rãÚ_rounding_modesr}rhráræÚAttributeError)r1rârr*r*r,ráms*  ÿzContext.__setattr__cCs td|ƒ‚)Nz%s cannot be deleted)rè)r1râr*r*r,Ú __delattr__†rzContext.__delattr__c CsNdd„|j ¡Dƒ}dd„|j ¡Dƒ}|j|j|j|j|j|j|j ||ffS)NcSóg|]\}}|r|‘qSr*r*©rŽZsigrÓr*r*r,r�‹óz&Context.__reduce__..cSrêr*r*rër*r*r,r�Œrì) rEÚitemsrDr°rKrJrMrLrÄr)r1rErDr*r*r,r±Šs ÿÿzContext.__reduce__cCs~ g}| dt|ƒ¡dd„|j ¡Dƒ}| dd |¡d¡dd„|j ¡Dƒ}| dd |¡d¡d |¡d S) NzrContext(prec=%(prec)d, rounding=%(rounding)s, Emin=%(Emin)d, Emax=%(Emax)d, capitals=%(capitals)d, clamp=%(clamp)dcSóg|] \}}|r|j‘qSr*©r6)rŽr‰rÓr*r*r,r�˜óz$Context.__repr__..zflags=[z, ú]cSrîr*rï)rŽrÒrÓr*r*r,r�šrðztraps=[ú))rxÚvarsrEríryrD)r1røÚnamesr*r*r,r¾‘sýzContext.__repr__cCó |jD]}d|j|<qdSrürÜ©r1Úflagr*r*r,rSžó  ÿzContext.clear_flagscCrõrürÙrör*r*r,Ú clear_traps£røzContext.clear_trapsc Cs0 t|j|j|j|j|j|j|j|j|j ƒ }|Sr)) rrKrJrMrLrÄrrErDrÞ©r1Zncr*r*r,rT¨s þzContext._shallow_copyc Cs8 t|j|j|j|j|j|j|j ¡|j  ¡|j ƒ }|Sr)) rrKrJrMrLrÄrrErRrDrÞrúr*r*r,rR¯sýz Context.copycGs\ t ||¡}||jvr|ƒj|g|¢RŽSd|j|<|j|s*|ƒj|g|¢RŽS||ƒ‚rt)Ú_condition_maprNrÞr3rErD)r1Z conditionZ explanationr+Úerrorr*r*r,ro¸s    zContext._raise_errorcCs |jtŽSr))Ú _ignore_flagsrCr�r*r*r,ržÎrpzContext._ignore_all_flagscGs |jt|ƒ|_t|ƒSr))rÞru)r1rEr*r*r,rýÒszContext._ignore_flagscGs: |rt|dttfƒr|d}|D]}|j |¡qdSrü)rjrvrurÞÚremove)r1rEr÷r*r*r,Ú _regard_flagsÙs ÿzContext._regard_flagscCó t|j|jdƒSrt)r\rMrKr�r*r*r,rßãrgz Context.EtinycCrrt)r\rLrKr�r*r*r,rçrgz Context.EtopcCs |j}||_|Sr))rJ)r1r´rJr*r*r,rUëszContext._set_roundingrXcCsl t|tƒr|| ¡ksd|vr| td¡St||d�}| ¡r1t|jƒ|j |j kr1| td¡S|  |¡S)NrYzAtrailing or leading whitespace and underscores are not permitted.rQzdiagnostic info too long in NaN) rjrkrmrorrrŽrqr?rKrrÎ)r1r{rŒr*r*r,Úcreate_decimalþsÿ ÿ zContext.create_decimalcCs t |¡}| |¡Sr))rr|rÎ)r1r‰rŒr*r*r,Úcreate_decimal_from_floats z!Context.create_decimal_from_floatcCó t|dd�}|j|d�Sra)r±rÓ©r1r>r*r*r,rs!s  z Context.abscCó4 t|dd�}|j||d�}|turtd|ƒ‚|S©NTr¯rQúUnable to convert %s to Decimal)r±rÙr¤r}©r1r>r�rçr*r*r,Úadd6ó   z Context.addcCst| |¡ƒSr))rkrÎrr*r*r,Ú_applyKrÏzContext._applycCó t|tƒs tdƒ‚| ¡S)Nz,canonical requires a Decimal as an argument.)rjrr}r_rr*r*r,r_Nó zContext.canonicalcCó t|dd�}|j||d�Sra)r±r²©r1r>r�r*r*r,r²[s zContext.comparecCrra)r±rbrr*r*r,rbó zContext.compare_signalcCó t|dd�}| |¡Sr®)r±r\rr*r*r,r\¢s  zContext.compare_totalcCrr®)r±rfrr*r*r,rf¿s  zContext.compare_total_magcCó t|dd�}| ¡Sr®)r±rÌrr*r*r,rÌÇó zContext.copy_abscCs t|dd�}t|ƒSr®)r±rrr*r*r,Ú copy_decimalÔrzContext.copy_decimalcCrr®)r±rÍrr*r*r,rÍárzContext.copy_negatecCrr®)r±rhrr*r*r,rhîó  zContext.copy_signcCrr)r±rär¤r}rr*r*r,Údivides   zContext.dividecCrr)r±rôr¤r}rr*r*r,Ú divide_int+ó   zContext.divide_intcCrr)r±rîr¤r}rr*r*r,ràBr zContext.divmodcCrra)r±r]rr*r*r,r]Wó  z Context.expcCs t|dd�}|j|||d�Sra)r±r")r1r>r�rWr*r*r,r"os z Context.fmacCr )Nz/is_canonical requires a Decimal as an argument.)rjrr}rkrr*r*r,rk†r zContext.is_canonicalcCrr®)r±rlrr*r*r,rl“s zContext.is_finitecCrr®)r±rNrr*r*r,rN©ó zContext.is_infinitecCrr®)r±rµrr*r*r,rµ¸ó zContext.is_nancCrra)r±rrrr*r*r,rrÈs  zContext.is_normalcCrr®)r±r˜rr*r*r,r˜ßrzContext.is_qnancCrr®)r±rurr*r*r,ruîó zContext.is_signedcCrr®)r±r—rr*r*r,r—ÿrzContext.is_snancCrra)r±rvrr*r*r,rvó  zContext.is_subnormalcCrr®)r±rwrr*r*r,rw%rzContext.is_zerocCrra)r±r�rr*r*r,r�6rz Context.lncCrra)r±r„rr*r*r,r„Ló  z Context.log10cCrra)r±r…rr*r*r,r…hs  z Context.logbcCrra)r±r•rr*r*r,r•‚ó zContext.logical_andcCrra)r±r˜rr*r*r,r˜�s  zContext.logical_invertcCrra)r±r™rr*r*r,r™°rzContext.logical_orcCrra)r±r—rr*r*r,r—ËrzContext.logical_xorcCrra)r±rÔrr*r*r,rÔærz Context.maxcCrra)r±r›rr*r*r,r›ó zContext.max_magcCrra)r±r½rr*r*r,r½rz Context.mincCrra)r±r�rr*r*r,r�-r zContext.min_magcCrra)r±rÐrr*r*r,Úminus>ó z Context.minuscCrr)r±rÞr¤r}rr*r*r,ÚmultiplyOs   zContext.multiplycCrra)r±r rr*r*r,r oó  zContext.next_minuscCrra)r±r¢rr*r*r,r¢ƒr$zContext.next_pluscCrra)r±r£rr*r*r,r£—rzContext.next_towardcCrra)r±rLrr*r*r,rLºrzContext.normalizecCrra)r±r¥rr*r*r,r¥Òs . zContext.number_classcCrra)r±rÑrr*r*r,Úplusr"z Context.pluscCs6 t|dd�}|j|||d�}|turtd|ƒ‚|Sr)r±rHr¤r})r1r>r�r'rçr*r*r,Úpowers  H z Context.powercCrra)r±rrr*r*r,res 6zContext.quantizecCr¦r§rýr�r*r*r,r¨Ÿrmz Context.radixcCrr)r±rðr¤r}rr*r*r,râ§s   zContext.remaindercCrra)r±rórr*r*r,róÍs zContext.remainder_nearcCrra)r±r®rr*r*r,r®ïs zContext.rotatecCrr®)r±rOrr*r*r,rO rzContext.same_quantumcCrra)r±r¯rr*r*r,r¯$s zContext.scalebcCrra)r±rárr*r*r,rá7s z Context.shiftcCrra)r±rYrr*r*r,rYUs  z Context.sqrtcCrr)r±rÚr¤r}rr*r*r,ÚsubtracturzContext.subtractcCrra)r±rÊrr*r*r,rÊŒrzContext.to_eng_stringcCrra)r±rÈrr*r*r,Ú to_sci_string¨s  zContext.to_sci_stringcCrra)r±rSrr*r*r,rS°s  zContext.to_integral_exactcCrra)r±r%rr*r*r,r%Îs  zContext.to_integral_value) NNNNNNNNNr))rX)Wr6r7r8rÎrãrærárér±r¾rSrùrTrRrµroržrýrÿr¶rßrrUrrrsr r r_r²rbr\rfrÌrrÍrhrrràr]r"rkrlrNrµrrr˜rur—rvrwr�r„r…r•r˜r™r—rÔr›r½r�r!r#r r¢r£rLr¥r%r&rr¨rârór®rOr¯rárYr'rÊr(rSr%rÌr*r*r*r,rs² þ$     $#   %  #2 P:&" rc@s"eZdZdZddd„Zdd„ZdS)rt©rGr\r]NcCsj|durd|_d|_d|_dSt|tƒr$|j|_t|jƒ|_|j|_dS|d|_|d|_|d|_dS)Nr&r.rd)rGr\r]rjrr>r?rV)r1rr*r*r,rÎôs      z_WorkRep.__init__cCsd|j|j|jfS)Nz (%r, %r, %r)r)r�r*r*r,r¾sz_WorkRep.__repr__r))r6r7r8rÅrÎr¾r*r*r*r,rtîs  rtcCsœ |j|jkr |}|}n|}|}tt|jƒƒ}tt|jƒƒ}|jtd||dƒ}||jd|kr9d|_||_|jd|j|j9_|j|_||fS)Nr�rdr.r³)r]rqrkr\r½)r×rØrKÚtmpr“Ztmp_lenZ other_lenr]r*r*r,rÖs rÖcCs` |dkrdS|dkr|d|Stt|ƒƒ}t|ƒt| d¡ƒ}|| kr)dS|d| S)Nr&r³rX)rkrsrqÚrstrip)r<rÂZstr_nZval_nr*r*r,r4(s   r4cCsJ |dks |dkr tdƒ‚d}||kr#||| |d?}}||ks|S)Nr&z3Both arguments to _sqrt_nearest should be positive.r.)rw)r<r>r�r*r*r,Ú _sqrt_nearest=sÿr,cCs4 d|>||?}}|d||d@|d@|kS)Nr.rdr*)r7rár�rær*r*r,Ú_rshift_nearestLs r-cCs( t||ƒ\}}|d||d@|kS)Nrdr.)rà)r>r�rærçr*r*r,Ú _div_nearestTsr.r.c Cs ||}d}||krt|ƒ||>|ks#||krXt|ƒ||?|krXt||d>|t||t||ƒ|ƒƒ}|d7}||krJt|ƒ||>|ks#||krXt|ƒ||?|ks#tdtt|ƒƒd|ƒ }t||ƒ}t||ƒ}t|dddƒD]}t||ƒt|||ƒ}qyt|||ƒS)Nr&r.éöÿÿÿrbr�)rsr.r,r-r\rqrkr&) r7ÚMÚLr:ÚRÚTZyshiftÚwrŠr*r*r,Ú_ilog\s" ÿü  r5c Cs¸ |d7}tt|ƒƒ}||||dk}|dkrKd|}|||}|dkr.|d|9}nt|d| ƒ}t||ƒ}t|ƒ}t|||ƒ}||} n d}t|d| ƒ} t| |dƒS©Nrdr.r&r³r2)rqrkr.r5Ú _log10_digits) rWrÂr6rXr‰r0rŠÚlog_dZlog_10Z log_tenpowerr*r*r,rƒŒs"    rƒc CsÐ |d7}tt|ƒƒ}||||dk}|dkr:|||}|dkr*|d|9}nt|d| ƒ}t|d|ƒ}nd}|r_ttt|ƒƒƒd}||dkr\t|t||ƒd|ƒ}nd}nd}t||dƒSr6)rqrkr.r5rsr7) rWrÂr6rXr‰rŠr8rGZ f_log_tenr*r*r,r®s$   rc@seZdZ dd„Zdd„ZdS)Ú _Log10MemoizecCs d|_dS)NZ/23025850929940456840179914546843642076011014886)rƒr�r*r*r,rÎÞs z_Log10Memoize.__init__cCsš |dkr tdƒ‚|t|jƒkrBd} d||d}tttd||ƒdƒƒ}|| d…d|kr3n|d7}q| d¡dd …|_t|jd|d …ƒS) Nr&zp should be nonnegativerbTr³rdr2rXr�r.)rwrqrƒrkr.r5r+r\)r1r6rGr0rƒr*r*r,Ú getdigitsású z_Log10Memoize.getdigitsN)r6r7r8rÎr:r*r*r*r,r9Ús r9c Csª t||>|ƒ}tdtt|ƒƒd|ƒ }t||ƒ}||>}t|dddƒD] }t|||||ƒ}q)t|dddƒD]}||d>}t||||ƒ}q?||S)Nr/rbr.r&r�rd)r3r\rqrkr.r&) r7r0r1r2r3r:ZMshiftr*rŠr*r*r,Ú_iexpÿs  r;c Cs˜ |d7}td|tt|ƒƒdƒ}||}||}|dkr%|d|}n|d| }t|t|ƒƒ\}}t|d|ƒ}tt|d|ƒdƒ||dfS)Nrdr&r.r³ièrb)rÔrqrkràr7r.r;) rWrÂr6rGræráZcshiftZquotr=r*r*r,ri$s ric Csö ttt|ƒƒƒ|}t||||dƒ}||}|dkr&||d|}n t||d| ƒ}|dkratt|ƒƒ|dk|dkkrSd|ddd|} } | | fSd|d| } } | | fSt||d |dƒ\} } t| dƒ} | d7} | | fS)Nr.r&r³)rqrkrsrr.ri) r8r9r;r<r6r�ZlxcráZpcr‹r]r*r*r,rBHs"úü rBr2éFé5é(érxér³r„) rÝÚ2Ú3Ú4Ú5Ú6Ú7Ú8rIcCs2 |dkr tdƒ‚t|ƒ}dt|ƒ||dS)Nr&z0The argument to _log10_lb should be nonnegative.r2)rwrkrq)rWZ correctionZstr_cr*r*r,r5rs r5cCsN t|tƒr|St|tƒrt|ƒS|rt|tƒrt |¡S|r%td|ƒ‚tS)Nr)rjrr\r{r|r}r¤)r“r°Z allow_floatr*r*r,r±}s    r±cCs¶ t|tƒr ||fSt|tjƒr*|js#t|jtt|j ƒ|j ƒ|j ƒ}|t|j ƒfS|r:t|tj ƒr:|jdkr:|j}t|tƒrWtƒ}|rJd|jt<n| td¡|t |¡fSttfS)Nr&r.rg)rjrÚ_numbersZRationalrWr=r>rkr\r?Ú denominatorrVÚ numeratorZComplexrþrûr{rrError|r¤)r1r“r¢r2r*r*r,r£�s*  þ  ÿr£r1i?BiÁ½ðÿ)rKrJrDrErLrMrÄrre)rKrJrDrEa· # A numeric string consists of: # \s* (?P[-+])? # an optional sign, followed by either... ( (?=\d|\.\d) # ...a number (with at least one digit) (?P\d*) # having a (possibly empty) integer part (\.(?P\d*))? # followed by an optional fractional part (E(?P[-+]?\d+))? # followed by an optional exponent, or... | Inf(inity)? # ...an infinity, or... | (?Ps)? # ...an (optionally signaling) NaN # NaN (?P\d*) # with (possibly empty) diagnostic info. ) # \s* \Z z0*$z50*$zÉ\A (?: (?P.)? (?P[<>=^]) )? (?P[-+ ])? (?P\#)? (?P0)? (?P(?!0)\d+)? (?P,)? (?:\.(?P0|(?!0)\d+))? (?P[eEfFgGn%])? \Z cCs� t |¡}|durtd|ƒ‚| ¡}|d}|d}|ddu|d<|dr<|dur2td|ƒ‚|durrGr[Ú minimumwidthrXr¼r&r´ZgGnr.r<rºÚ thousands_sepzJExplicit thousands separator conflicts with 'n' type in format specifier: ÚgroupingÚ decimal_pointrZrbrÁ)Ú_parse_format_specifier_regexÚmatchrwÚ groupdictr\Ú_localeÚ localeconv)Ú format_specr¸r€Z format_dictrKrLr*r*r,r¾sX  ÿÿ       ÿ    û r¾c Csº |d}|d}||t|ƒt|ƒ}|d}|dkr%|||}|S|dkr1|||}|S|dkr=|||}|S|dkrYt|ƒd}|d|…||||d…}|Std ƒ‚) NrPrKrLúslc#   ÿ         & ÿýÿ  .  ^  0",# %$ +þ *ù ýý ïï   ó ÿ P % )