§
    ñyIf	j  ã                  ó  — d Z ddlmZ ddlZddlZddlmZmZ ddlmZm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZmZmZmZ dd	lmZmZmZmZ dd
lmZ ddlmZmZmZ ddl m!Z!m"Z"m#Z# erddl$m%Z% ddhZ&ere& '                    d¦  «         h d£Z(	 d5d6d„Z) G d„ d¦  «        Z*	 d5d7d „Z+d8d'„Z, G d(„ d)e*¦  «        Z- G d*„ d"e-¦  «        Z. G d+„ d,e*¦  «        Z/ G d-„ d.e/¦  «        Z0 G d/„ d0e-¦  «        Z1 G d1„ d2e1¦  «        Z2 G d3„ d4e-¦  «        Z3dS )9zXThis module contains base classes and functions for the nodes and some
inference utils.
é    )ÚannotationsN)ÚIterableÚIterator)ÚTYPE_CHECKINGÚAnyÚLiteral)Ú
decoratorsÚnodes)Ú
PY310_PLUS)ÚCallContextÚInferenceContextÚbind_context_to_nodeÚcopy_context)ÚAstroidTypeErrorÚAttributeInferenceErrorÚInferenceErrorÚNameInferenceError)Úobjectmodel)ÚInferenceErrorInfoÚInferenceResultÚSuccessfulInferenceResult)ÚUninferableÚUninferableBaseÚ
safe_infer)Ú
Constraintzbuiltins.propertyzabc.abstractpropertyzenum.property>   ÚlazyÚreifyÚLazyPropertyÚlazypropertyÚlazy_propertyÚlazyattributeÚcache_readonlyÚcachedpropertyÚlazy_attributeÚcached_propertyÚDynamicClassAttributeÚmethú!nodes.FunctionDef | UnboundMethodÚcontextúInferenceContext | NoneÚreturnÚboolc                ón  ‡— |                       |¬¦  «        }t                               |¦  «        rdS d„ |D ¦   «         Št          ˆfd„t          D ¦   «         ¦  «        rdS | j        sdS | j        j        pdD ]»}t          ||¬¦  «        }|�t          |t          ¦  «        rŒ+t          |t          j
        ¦  «        rv|j        D ]n}t          |t          j        ¦  «        sŒ|                     |j        ¦  «        \  }}t          |t          j        ¦  «        r|j        dk    r|j        dk    r  dS ŒoŒ¼dS )	N©r)   Tc                ón   — h | ]2}t          |t          ¦  «        °|                     d ¦  «        d         ’Œ3S )ú.éÿÿÿÿ)Ú
isinstancer   Úsplit)Ú.0Únames     úA/var/www/piapp/venv/lib/python3.11/site-packages/astroid/bases.pyú	<setcomp>z_is_property.<locals>.<setcomp>J   sG   € ð ð ð àÝ˜$¥Ñ0Ô0ðØ�
Š
�3‰Œ˜Ôðð ð ó    c              3  ó    •K  — | ]}|‰v V — Œ	d S ©N© )r4   r5   Ústrippeds     €r6   ú	<genexpr>z_is_property.<locals>.<genexpr>O   s(   øè è € Ð
<Ð
< ˆ4�8ÐÐ
<Ð
<Ð
<Ð
<Ð
<Ð
<r8   Fr;   ÚbuiltinsÚproperty)ÚdecoratornamesÚ
PROPERTIESÚintersectionÚanyÚPOSSIBLE_PROPERTIESr	   r
   r   r2   r   ÚClassDefÚbasesÚNameÚlookupr5   ÚModule)	r'   r)   r@   Ú	decoratorÚinferredÚ
base_classÚmoduleÚ_r<   s	           @r6   Ú_is_propertyrO   D   sh  ø€ ð ×(Ò(°Ð(Ñ9Ô9€NÝ×Ò˜~Ñ.Ô.ð Øˆtðð à"ðñ ô €Hõ
 Ð
<Ð
<Ð
<Ð
<Õ(;Ð
<Ñ
<Ô
<Ñ<Ô<ð Øˆtð Œ?ð ØˆuØ”_Ô*Ð0¨bð  ð  ˆ	Ý˜i°Ð9Ñ9Ô9ˆØÐ�z¨(µOÑDÔDÐØÝ�h¥¤Ñ/Ô/ð 
	 Ø&œnð 	 ð 	 �
Ý! *­e¬jÑ9Ô9ð ØØ&×-Ò-¨j¬oÑ>Ô>‘	�˜å˜v¥u¤|Ñ4Ô4ð àœ zÒ1Ð1Ø"œ¨:Ò5Ð5à˜4˜4˜4øøàˆ5r8   c                  ó>   — e Zd ZU dZded<   	 ddd	„Zdd„Z	 ddd„ZdS )ÚProxyz¤A simple proxy object.

    Note:

    Subclasses of this object will need a custom __getattr__
    if new instance attributes are created. See the Const class
    zAnodes.ClassDef | nodes.FunctionDef | nodes.Lambda | UnboundMethodÚ_proxiedNÚproxiedúHnodes.ClassDef | nodes.FunctionDef | nodes.Lambda | UnboundMethod | Noner+   ÚNonec                ón   — |€+t          | t          j        t          t          f¦  «        sJ ‚d S || _        d S r:   )r2   r
   ÚConstÚ	GeneratorÚ	UnionTyperR   )ÚselfrS   s     r6   Ú__init__zProxy.__init__s   s;   € ð ˆ?õ ˜d¥U¤[µ)½YÐ$GÑHÔHÐHÐHÐHÐHÐHà#ˆDŒMˆMˆMr8   r5   Ústrr   c                ó|   — |dk    r| j         j        S || j        v r| j        |         S t          | j        |¦  «        S )NrR   )Ú	__class__rR   Ú__dict__Úgetattr)rZ   r5   s     r6   Ú__getattr__zProxy.__getattr__…   sD   € Ø�:ÒÐØ”>Ô*Ð*Ø�4”=Ð Ð Ø”= Ô&Ð&Ý�t”} dÑ+Ô+Ð+r8   r)   r*   ÚkwargsúKcollections.abc.Generator[InferenceResult, None, InferenceErrorInfo | None]c              +  ó   K  — | V — d S r:   r;   )rZ   r)   rb   s      r6   ÚinferzProxy.inferŒ   s   è è € ð ˆ
ˆ
ˆ
ˆ
ˆ
r8   r:   )rS   rT   r+   rU   )r5   r\   r+   r   )r)   r*   rb   r   r+   rc   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r[   ra   re   r;   r8   r6   rQ   rQ   h   s   € € € € € € ðð ð PÐOÐOÑOð ð	$ð $ð $ð $ð $ð$,ð ,ð ,ð ,ð 26ðð ð ð ð ð ð r8   rQ   ÚstmtsúIterable[InferenceResult]Úframeú"nodes.NodeNG | BaseInstance | Noneú6collections.abc.Generator[InferenceResult, None, None]c              #  óà  ‡K  — d}d}|�<|j         }|                     ¦   «         }|�|j                             |i ¦  «        }ni }nd}i }t	          ¦   «         }| D ]ï}t          |t          ¦  «        r|V — d}Œ|                     ||¦  «        |_         	 t          ¦   «         }| 	                    ¦   «         D ]/\  }	}
|	 
                    |¦  «        s|                     |
¦  «         Œ0|                     |¬¦  «        D ]&Št          ˆfd„|D ¦   «         ¦  «        r‰V — d}Œ$d}Œ'ŒÊ# t          $ r Y ŒÖt          $ r t           V — d}Y Œìw xY w|s|rt           V — dS |st          d| ||¬¦  «        ‚dS )zGReturn an iterator on statements inferred by each statement in *stmts*.FNTr.   c              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r:   )Úsatisfied_by)r4   Ú
constraintÚinfs     €r6   r=   z_infer_stmts.<locals>.<genexpr>²   s1   øè è € ÐWÐW¸
�z×.Ò.¨sÑ3Ô3ÐWÐWÐWÐWÐWÐWr8   z.Inference failed for all members of {stmts!r}.)rk   rm   r)   )Ú
lookupnameÚcloneÚconstraintsÚgetr   r2   r   Ú_infer_nameÚsetÚitemsÚ	parent_ofÚupdatere   Úallr   r   r   )rk   r)   rm   rK   Úconstraint_failedr5   rw   ÚstmtÚstmt_constraintsÚconstraint_stmtÚpotential_constraintsrt   s              @r6   Ú_infer_stmtsr„   ’   s  øè è € ð €HØÐØÐØÔ!ˆØ—-’-‘/”/ˆØÐØ!Ô-×1Ò1°$¸Ñ;Ô;ˆKˆKàˆKˆKàˆØˆÝ"Ñ$Ô$ˆàð ð ˆÝ�d�OÑ,Ô,ð 	ØˆJˆJˆJØˆHØØ!×-Ò-¨e°TÑ:Ô:ˆÔð	Ý03±´ÐØ:E×:KÒ:KÑ:MÔ:Mð Cð CÑ6�Ð!6Ø&×0Ò0°Ñ6Ô6ð CØ$×+Ò+Ð,AÑBÔBÐBøØ—z’z¨'�zÑ2Ô2ð -ð -�ÝÐWÐWÐWÐWÐFVÐWÑWÔWÑWÔWð -Ø�I�I�IØ#�H�Hà(,Ð%Ð%ð-øõ "ð 	ð 	ð 	ØˆHÝð 	ð 	ð 	ÝÐÐÐØˆHˆHˆHð	øøøð ð 
Ð)ð 
ÝÐÐÐÐÐØð 
ÝØ<ØØØð	
ñ 
ô 
ð 	
ð
ð 
s   ÂBD$Ä$
EÄ0EÅEÚinstanceÚInstanceÚmethod_namer\   r   úbool | UninferableBasec                ó$  — t          |                      ||¬¦  «        d ¦  «        }|rãt          |d¦  «        rÓ|                     ¦   «         st          S 	 t          g |¬¦  «        |_        |                     | |¬¦  «        D ]x}t          |t          ¦  «        r|c S 	 t          | 
                    |¬¦  «        ¦  «        }n## t          $ r}t          |¬¦  «        |‚d }~ww xY w|                     ¦   «         c S n# t          $ r Y nw xY wt          S )Nr.   Úinfer_call_result©ÚargsÚcallee)ÚnextÚigetattrÚhasattrÚcallabler   r   ÚcallcontextrŠ   r2   r   re   ÚStopIterationr   Ú
bool_value)r…   r‡   r)   r'   ÚvaluerK   Úes          r6   Ú_infer_method_result_truthr—   È   sK  € õ
 �×!Ò! +°wÐ!Ñ?Ô?ÀÑFÔF€DØð •˜Ð1Ñ2Ô2ð Ø�}Š}‰Œð 	ÝÐð	Ý"-°2¸dÐ"CÑ"CÔ"CˆGÔØ×/Ò/°À'Ð/ÑJÔJð -ð -�Ý˜e¥_Ñ5Ô5ð !Ø �L�L�LðAÝ# E§K¢K¸ KÑ$@Ô$@ÑAÔA�H�HøÝ$ð Að Að AÝ(°Ð9Ñ9Ô9¸qÐ@øøøøðAøøøà×*Ò*Ñ,Ô,Ð,Ð,Ð,ð-øõ ð 	ð 	ð 	ØˆDð	øøøåÐs7   ÁAC; Â#CÃ C; Ã
C!ÃCÃC!Ã!C; Ã;
DÄDc                  ób   — e Zd ZU dZded<   ded<   dd„Z	 	 ddd„Z	 ddd„Z	 ddd„Z	 dd d„Z	d	S )!ÚBaseInstancezWAn instance base class, which provides lookup methods for potential
    instances.
    znodes.ClassDefrR   zobjectmodel.ObjectModelÚspecial_attributesr+   r\   c                ó   — dS ©NzInstance ofr;   ©rZ   s    r6   Údisplay_typezBaseInstance.display_typeé   ó   € Øˆ}r8   NTr5   r)   r*   Úlookupclassr,   úlist[InferenceResult]c                ó˜  — 	 | j                              ||¦  «        }ny# t          $ rl}| j        r)|| j        v r | j                             |¦  «        gcY d }~S |r"| j                              ||d¬¦  «        cY d }~S t          | ||¬¦  «        |‚d }~ww xY w|r1	 || j                              ||d¬¦  «        z   S # t          $ r Y nw xY w|S )NF©Úclass_context)ÚtargetÚ	attributer)   )rR   Úinstance_attrr   rš   rH   r`   )rZ   r5   r)   r    ÚvaluesÚexcs         r6   r`   zBaseInstance.getattrì   s;  € ð	Ø”]×0Ò0°°wÑ?Ô?ˆFˆFøÝ&ð 	ð 	ð 	ØÔ&ð >¨4°4Ô3JÐ+JÐ+JØÔ/×6Ò6°tÑ<Ô<Ð=Ð=Ð=Ð=Ð=Ð=Ð=àð Qð ”}×,Ò,¨T°7È%Ð,ÑPÔPÐPÐPÐPÐPÐPÐPå)Ø t°Wðñ ô àðøøøøð	øøøð ð 	ðØ ¤× 5Ò 5Ø˜'°ð !6ñ !ô !ñ ð øõ +ð ð ð Ø�ðøøøàˆs>   ‚ ž
B¨*BÁBÁBÁ6BÁ<BÂBÂB: Â:
CÃCúIterator[InferenceResult]c           	   #  óÜ  K  — |st          ¦   «         }	 ||_        |                      ||d¬¦  «        }t          |                      ||¦  «        || ¬¦  «        E d{V —† dS # t
          $ r€ 	 | j        j        j        dk    r‚ | j         	                    ||d¬¦  «        }|                      ||¦  «        E d{V —† Y dS # t
          $ r}t          di t          |¦  «        ¤Ž|‚d}~ww xY ww xY w)zInferred getattr.F)r    )rm   NrE   r£   r;   )r   ru   r`   r„   Ú
_wrap_attrr   rR   r^   rf   r�   r   Úvars)rZ   r5   r)   Úget_attrÚattrsÚerrors         r6   r�   zBaseInstance.igetattr  sS  è è € ð ð 	)Ý&Ñ(Ô(ˆGð	?Ø!%ˆGÔà—|’| D¨'¸u�|ÑEÔEˆHÝ#Ø—’ ¨'Ñ2Ô2°GÀ4ðñ ô ð ð ð ð ð ð ð ð ð øõ 'ð 
	?ð 
	?ð 
	?ð	?ð ”=Ô*Ô3°zÒAÐAØØœ×.Ò.¨t°WÈEÐ.ÑRÔR�ØŸ?š?¨5°'Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:øÝ*ð ?ð ?ð ?Ý$Ð3Ð3¥t¨E¡{¤{Ð3Ð3¸Ð>øøøøð?øøøð
	?øøøs+   ”AA! Á!
C+Á,AB>Â>
C'ÃC"Ã"C'Ã'C+r¯   rl   c              #  óv  K  — |D ]³}t          |t          ¦  «        r?t          |¦  «        r|                     | |¦  «        E d{V —† ŒCt	          || ¦  «        V — ŒVt          |t
          j        ¦  «        r?|j        j        r.|j        j        d         j	        dk    rt	          || ¦  «        V — Œª|V — Œ¯|V — Œ´dS )z8Wrap bound methods of attrs in a InstanceMethod proxies.Nr   rZ   )
r2   ÚUnboundMethodrO   rŠ   ÚBoundMethodr
   ÚLambdarŒ   Ú	argumentsr5   )rZ   r¯   r)   Úattrs       r6   r¬   zBaseInstance._wrap_attr$  sî   è è € ð ð 	ð 	ˆDÝ˜$¥Ñ.Ô.ð Ý Ñ%Ô%ð 2Ø#×5Ò5°d¸GÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDå% d¨DÑ1Ô1Ð1Ð1Ð1Ð1Ý˜D¥%¤,Ñ/Ô/ð Ø”9Ô&ð ¨4¬9Ô+>¸qÔ+AÔ+FÈ&Ò+PÐ+PÝ% d¨DÑ1Ô1Ð1Ð1Ð1ØØ�
�
�
�
à�
�
�
�
ð	ð 	r8   Úcallerú SuccessfulInferenceResult | Nonec              #  óè  K  — t          || ¦  «        }d}t          |t          j        ¦  «        rHt          |j        t          j        ¦  «        r)|                      |j        j        |¦  «        D ]}d}|V — Œ	| j                             d|¦  «        D ]K}t          |t          ¦  «        s| 
                    ¦   «         sŒ,|                     ||¦  «        D ]}d}|V — Œ	ŒL|st          | ||¬¦  «        ‚dS )z5Infer what a class instance is returning when called.FTÚ__call__)Únoder·   r)   N)r   r2   r
   ÚCallÚfuncÚ	Attributer�   ÚattrnamerR   r   r‘   rŠ   r   )rZ   r·   r)   rK   Úresr»   s         r6   rŠ   zBaseInstance.infer_call_result6  s   è è € õ ' w°Ñ5Ô5ˆØˆõ �f�eœjÑ)Ô)ð 	­j¸¼ÅeÄoÑ.VÔ.Vð 	Ø—}’} V¤[Ô%9¸7ÑCÔCð ð �Ø�Ø�	�	�	�	ð ”M×*Ò*¨:°wÑ?Ô?ð 	ð 	ˆDÝ˜$¥Ñ0Ô0ð ¸¿º¹¼ð ØØ×-Ò-¨f°gÑ>Ô>ð ð �Ø�Ø�	�	�	�	ðð ð 	LÝ  d°6À7ÐKÑKÔKÐKð	Lð 	Lr8   ©r+   r\   ©NT)r5   r\   r)   r*   r    r,   r+   r¡   r:   ©r5   r\   r)   r*   r+   rª   )r¯   rl   r)   r*   r+   rª   ©r·   r¸   r)   r*   r+   rª   )
rf   rg   rh   ri   rj   rž   r`   r�   r¬   rŠ   r;   r8   r6   r™   r™   à   sÔ   € € € € € € ðð ð ÐÐÑà/Ð/Ð/Ñ/ðð ð ð ð ,0Ø ð	ð ð ð ð ð@ =Að?ð ?ð ?ð ?ð ?ð4 TXðð ð ð ð ð* ,0ðLð Lð Lð Lð Lð Lð Lr8   r™   c                  ó¤   ‡ — e Zd ZdZ ej        ¦   «         Zd!ˆ fd„Zej	        d"d„¦   «         Z
d#d„Zd#d„Zd$d„Zd#d„Zd#d„Z	 d%d&d„Z	 d%d'd „Zˆ xZS )(r†   z-A special node representing a class instance.rS   únodes.ClassDef | Noner+   rU   c                óJ   •— t          ¦   «                              |¦  «         d S r:   )Úsuperr[   )rZ   rS   r^   s     €r6   r[   zInstance.__init__U  s!   ø€ Ý‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!r8   Úopnodeúnodes.AugAssign | nodes.BinOpÚoperatorr\   Úotherr   r)   r   Úmethodr   ú&Generator[InferenceResult, None, None]c                ó.   — |                      | |¦  «        S r:   )rŠ   )rZ   rÉ   rË   rÌ   r)   rÍ   s         r6   Úinfer_binary_opzInstance.infer_binary_opX  s   € ð ×'Ò'¨¨gÑ6Ô6Ð6r8   c                ó–   — d                      | j                             ¦   «         j        | j        j        t	          | ¦  «        ¦  «        S )Nz<Instance of {}.{} at 0x{}>)ÚformatrR   Úrootr5   Úidr�   s    r6   Ú__repr__zInstance.__repr__c  s=   € Ø,×3Ò3ØŒM×ÒÑ Ô Ô% t¤}Ô'9½2¸d¹8¼8ñ
ô 
ð 	
r8   c                ó^   — d| j                              ¦   «         j        › d| j         j        › �S )NzInstance of r0   )rR   rÓ   r5   r�   s    r6   Ú__str__zInstance.__str__h  s.   € ØN˜dœm×0Ò0Ñ2Ô2Ô7ÐNÐN¸$¼-Ô:LÐNÐNÐNr8   r,   c                ób   — 	 | j                              dd¬¦  «         dS # t          $ r Y dS w xY w)Nrº   Fr£   T)rR   r`   r   r�   s    r6   r‘   zInstance.callablek  sI   € ð	ØŒM×!Ò! *¸EÐ!ÑBÔBÐBØ�4øÝ&ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚   
.­.c                ó4   — | j                              ¦   «         S r:   )rR   Úqnamer�   s    r6   ÚpytypezInstance.pytyper  s   € ØŒ}×"Ò"Ñ$Ô$Ð$r8   c                ó   — dS rœ   r;   r�   s    r6   rž   zInstance.display_typeu  rŸ   r8   Nr*   rˆ   c                óà   — |pt          ¦   «         }| |_        	 t          | d|¦  «        }nC# t          t          f$ r/ 	 t          | d|¦  «        }n# t          t          f$ r Y Y dS w xY wY nw xY w|S )aW  Infer the truth value for an Instance.

        The truth value of an instance is determined by these conditions:

           * if it implements __bool__ on Python 3 or __nonzero__
             on Python 2, then its bool value will be determined by
             calling this special method and checking its result.
           * when this method is not defined, __len__() is called, if it
             is defined, and the object is considered true if its result is
             nonzero. If a class defines neither __len__() nor __bool__(),
             all its instances are considered true.
        Ú__bool__Ú__len__T)r   Ú	boundnoder—   r   r   )rZ   r)   Úresults      r6   r”   zInstance.bool_valuex  s¥   € ð Ð/Õ-Ñ/Ô/ˆØ ˆÔð	Ý/°°jÀ'ÑJÔJˆFˆFøÝÕ 7Ð8ð 	ð 	ð 	ðÝ3°D¸)ÀWÑMÔM��øÝ+­^Ð<ð ð ð Ø�t�t�tðøøøð �ð	øøøð ˆs2   ™+ «A+½AÁA+ÁA%Á A+Á$A%Á%A+Á*A+Úindexúnodes.ConstúInferenceResult | Nonec                ó–  — t          || ¦  «        }|s|}t          |                      d|¬¦  «        d ¦  «        }t          |g|¬¦  «        |_        t          |t          ¦  «        st          d| |¬¦  «        ‚t          |j	        j
        ¦  «        dk    rt          d| |¬¦  «        ‚t          |                     | |¦  «        d ¦  «        S )NÚ__getitem__r.   r‹   z(Could not find __getitem__ for {node!r}.)r»   r)   é   z8__getitem__ for {node!r} does not have correct signature)r   rŽ   r�   r   r’   r2   r³   r   ÚlenrŒ   rµ   r   rŠ   )rZ   râ   r)   Únew_contextrÍ   s        r6   ÚgetitemzInstance.getitem”  sâ   € õ +¨7°DÑ9Ô9ˆØð 	"Ø!ˆGÝ�d—m’m M¸7�mÑCÔCÀTÑJÔJˆå"-°E°7À6Ð"JÑ"JÔ"JˆÔÝ˜&¥+Ñ.Ô.ð 	Ý Ø:ÀÈwðñ ô ð õ ˆvŒ{Ô$Ñ%Ô%¨Ò*Ð*Ý"ØJØØðñ ô ð õ
 �F×,Ò,¨T°;Ñ?Ô?ÀÑFÔFÐFr8   )rS   rÆ   r+   rU   )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+   rä   )rf   rg   rh   ri   r   ÚInstanceModelrš   r[   r	   Úyes_if_nothing_inferredrÐ   rÕ   r×   r‘   rÛ   rž   r”   rê   Ú__classcell__©r^   s   @r6   r†   r†   P  s'  ø€ € € € € Ø7Ð7à2˜Ô2Ñ4Ô4Ðð"ð "ð "ð "ð "ð "ð Ô'ð7ð 7ð 7ñ (Ô'ð7ð
ð 
ð 
ð 
ð
Oð Oð Oð Oðð ð ð ð%ð %ð %ð %ðð ð ð ð 26ðð ð ð ð ð: FJðGð Gð Gð Gð Gð Gð Gð Gð Gr8   c                  ó’   — e Zd ZU dZded<    ej        ¦   «         Zded<   dd„Zdd
„Z	dd„Z
dd d„Z	 dd!d„Z	 dd"d„Zd#d„Zdd$d„ZdS )%r²   z>A special node representing a method not bound to an instance.r(   rR   z=objectmodel.BoundMethodModel | objectmodel.UnboundMethodModelrš   r+   r\   c                ó   — | j         j        s
J d¦   «         ‚| j         j                             ¦   «         }d                     | j        j        | j         j        |                     ¦   «         t          | ¦  «        ¦  «        S )NúExpected a parent nodez<{} {} of {} at 0x{})	rR   Úparentrm   rÒ   r^   rf   r5   rÚ   rÔ   )rZ   rm   s     r6   rÕ   zUnboundMethod.__repr__³  sk   € ØŒ}Ô#Ð=Ð=Ð%=Ñ=Ô=Ð=Ø”Ô$×*Ò*Ñ,Ô,ˆØ%×,Ò,ØŒNÔ# T¤]Ô%7¸¿º¹¼ÍÈ4ÉÌñ
ô 
ð 	
r8   úLiteral[0, 1]c                ó   — dS )Nr   r;   r�   s    r6   Úimplicit_parametersz!UnboundMethod.implicit_parametersº  s   € Øˆqr8   r,   c                ó   — dS ©NFr;   r�   s    r6   Úis_boundzUnboundMethod.is_bound½  ó   € Øˆur8   Nr5   r)   r*   c                ó€   — || j         v r| j                              |¦  «        gS | j                             ||¦  «        S r:   )rš   rH   rR   r`   ©rZ   r5   r)   s      r6   r`   zUnboundMethod.getattrÀ  sB   € Ø�4Ô*Ð*Ð*ØÔ+×2Ò2°4Ñ8Ô8Ð9Ð9ØŒ}×$Ò$ T¨7Ñ3Ô3Ð3r8   rª   c                óš   — || j         v r(t          | j                              |¦  «        f¦  «        S | j                             ||¦  «        S r:   )rš   ÚiterrH   rR   r�   rü   s      r6   r�   zUnboundMethod.igetattrÅ  sL   € ð �4Ô*Ð*Ð*Ý˜Ô0×7Ò7¸Ñ=Ô=Ð?Ñ@Ô@Ð@ØŒ}×%Ò% d¨GÑ4Ô4Ð4r8   r·   r¸   c                ób  — | j         j        dk    r…| j         j        s
J d¦   «         ‚| j         j                             ¦   «                              ¦   «         }|                     d¦  «        r*|dk    r$|                      ||pt          ¦   «         ¦  «        S | j                              ||¦  «        S )aÒ  
        The boundnode of the regular context with a function called
        on ``object.__new__`` will be of type ``object``,
        which is incorrect for the argument in general.
        If no context is given the ``object.__new__`` call argument will
        be correctly inferred except when inside a call that requires
        the additional context (such as a classmethod) of the boundnode
        to determine which class the method was called from
        Ú__new__rò   z	builtins.úbuiltins.type)	rR   r5   ró   rm   rÚ   Ú
startswithÚ_infer_builtin_newr   rŠ   )rZ   r·   r)   rÚ   s       r6   rŠ   zUnboundMethod.infer_call_resultÌ  s«   € ð" Œ=Ô Ò*Ð*Ø”=Ô'ÐAÐAÐ)AÑAÔAÐAØ”MÔ(×.Ò.Ñ0Ô0×6Ò6Ñ8Ô8ˆEà×Ò Ñ,Ô,ð V°¸/Ò1IÐ1IØ×.Ò.¨v°wÐ7TÕBRÑBTÔBTÑUÔUÐUØŒ}×.Ò.¨v°wÑ?Ô?Ð?r8   r   úOcollections.abc.Generator[nodes.Const | Instance | UninferableBase, None, None]c              #  ó*  K  — t          |t          j        ¦  «        sd S |j        sd S t	          |j        ¦  «        dk    rÀd }t          |j        d         t          j        ¦  «        r|j        d         j        }nNt          |j        d                              ¦   «         d ¦  «        }t          |t          j        ¦  «        r|j        }|�6t          j	        |¦  «        }t          |t          j
        ¦  «        rJ ‚|V — d S |j                             |j        d         ¦  «        }|j        d                              |¬¦  «        D ]L}t          |t          ¦  «        r|V — t          |t          j        ¦  «        rt          |¦  «        V — t           ‚d S )Né   r   r.   )r2   r
   r¼   rŒ   rè   rW   r•   rŽ   re   Úconst_factoryÚ	EmptyNodeÚextra_contextrx   r   rE   r†   r   )rZ   r·   r)   r•   Úinferred_argÚconstÚnode_contextrK   s           r6   r  z UnboundMethod._infer_builtin_newå  s‚  è è € õ ˜&¥%¤*Ñ-Ô-ð 	ØˆFØŒ{ð 	ØˆFåˆvŒ{ÑÔ˜aÒÐØˆEÝ˜&œ+ aœ.­%¬+Ñ6Ô6ð /Øœ AœÔ,��å# F¤K°¤N×$8Ò$8Ñ$:Ô$:¸DÑAÔA�Ý˜l­E¬KÑ8Ô8ð /Ø(Ô.�EØÐ ÝÔ+¨EÑ2Ô2�Ý% e­U¬_Ñ=Ô=Ð=Ð=Ð=Ø���Ø�àÔ,×0Ò0°´¸Q´Ñ@Ô@ˆØœ Aœ×,Ò,°\Ð,ÑBÔBð 	!ð 	!ˆHÝ˜(¥OÑ4Ô4ð Ø���Ý˜(¥E¤NÑ3Ô3ð )Ý˜xÑ(Ô(Ð(Ð(Ð(Ý Ð ð	!ð 	!r8   úLiteral[True]c                ó   — dS rÂ   r;   ©rZ   r)   s     r6   r”   zUnboundMethod.bool_value  ó   € Øˆtr8   rÁ   ©r+   rô   rë   r:   )r5   r\   r)   r*   rÃ   rÄ   )r·   r¸   r)   r   r+   r  ©r)   r*   r+   r  )rf   rg   rh   ri   rj   r   ÚUnboundMethodModelrš   rÕ   rö   rù   r`   r�   rŠ   r  r”   r;   r8   r6   r²   r²   ª  s  € € € € € € ØHÐHà/Ð/Ð/Ñ/ð 	'ˆÔ&Ñ(Ô(ð ð )ð )ð )ñ )ð
ð 
ð 
ð 
ðð ð ð ðð ð ð ð4ð 4ð 4ð 4ð 4ð =Að5ð 5ð 5ð 5ð 5ð ,0ð@ð @ð @ð @ð @ð2 !ð  !ð  !ð  !ðDð ð ð ð ð ð r8   r²   c                  ót   ‡ — e Zd ZdZ ej        ¦   «         Zdˆ fd„Zdd
„Zdd„Z	dd„Z
	 ddˆ fd„Zddd„Zˆ xZS ) r³   z:A special node representing a method bound to an instance.Úproxyú0nodes.FunctionDef | nodes.Lambda | UnboundMethodÚboundr   r+   rU   c                óX   •— t          ¦   «                              |¦  «         || _        d S r:   )rÈ   r[   r  )rZ   r  r  r^   s      €r6   r[   zBoundMethod.__init__  s(   ø€ õ
 	‰Œ×Ò˜ÑÔÐØˆŒ
ˆ
ˆ
r8   rô   c                ó    — | j         dk    rdS dS )Nr   r   r  )r5   r�   s    r6   rö   zBoundMethod.implicit_parameters  s   € ØŒ9˜	Ò!Ð!à�1Øˆqr8   r  c                ó   — dS rÂ   r;   r�   s    r6   rù   zBoundMethod.is_bound  r  r8   r·   ú
nodes.Callr)   r   rÆ   c                ó´  ‡— ddl m} 	 t          |j        d                              ‰¬¦  «        ¦  «        }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt          |t          j	        ¦  «        sdS | 
                    d¦  «        sdS 	 t          |j        d                              ‰¬¦  «        ¦  «        }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt          |t          j        ¦  «        sdS t          |j        t          ¦  «        sdS 	 t          |j        d                              ‰¬¦  «        ¦  «        }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt          |t          j        ¦  «        sdS 	 ˆfd„|j        D ¦   «         }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt!          d	„ |D ¦   «         ¦  «        rdS 	 t          |j        d
                              ‰¬¦  «        ¦  «        }	n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt          |	t          j        ¦  «        sdS t%          j        t(          ¦  «        }
|	j        D ]é\  }}	 t          |                     ‰¬¦  «        ¦  «        }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY w	 t          |                     ‰¬¦  «        ¦  «        }n## t
          $ r}t          ‰¬¦  «        |‚d}~ww xY wt          |t          j        ¦  «        r:t          |j        t          ¦  «        r |
|j                                      |¦  «         Œê|                     |j        |j        pd|j        pd||j        |j        ¬¦  «        } |||j        |j        |j        |j        ¬¦  «        }|                     |j        |gdd|g ¬¦  «         |
|_        |S )zÿTry to infer what type.__new__(mcs, name, bases, attrs) returns.

        In order for such call to be valid, the metaclass needs to be
        a subtype of ``type``, the name needs to be a string, the bases
        needs to be a tuple of classes
        r   )ÚPassr.   Nr  r  rç   c                óV   •— g | ]%}t          |                     ‰¬ ¦  «        ¦  «        ‘Œ&S )r.   )rŽ   re   )r4   Úeltr)   s     €r6   ú
<listcomp>z4BoundMethod._infer_type_new_call.<locals>.<listcomp>N  s/   ø€ ÐUÐUÐUÀ3�d 3§9¢9°W 9Ñ#=Ô#=Ñ>Ô>ÐUÐUÐUr8   c              3  óL   K  — | ]}t          |t          j        ¦  «         V — Œ d S r:   )r2   r
   rE   )r4   Úbases     r6   r=   z3BoundMethod._infer_type_new_call.<locals>.<genexpr>Q  s1   è è € ÐOÐO¸•:˜d¥E¤NÑ3Ô3Ð3ÐOÐOÐOÐOÐOÐOr8   é   )r5   ÚlinenoÚ
col_offsetró   Ú
end_linenoÚend_col_offset)ró   r$  r%  r&  r'  T)rF   Úbodyr	   ÚnewstyleÚ	metaclassÚkeywords)Úastroid.nodesr  rŽ   rŒ   re   r“   r   r2   r
   rE   Úis_subtype_ofrW   r•   r\   ÚTupleÚeltsrC   ÚDictÚcollectionsÚdefaultdictÚlistr{   Úappendr^   r$  r%  r&  r'  ÚpostinitÚlocals)rZ   r·   r)   r  Úmcsr–   r5   rF   Úinferred_basesr¯   Ú
cls_localsÚkeyr•   ÚclsÚemptys     `            r6   Ú_infer_type_new_callz BoundMethod._infer_type_new_call!  sc  ø€ ð 	'Ð&Ð&Ð&Ð&Ð&ð	9Ý�v”{ 1”~×+Ò+°GÐ+Ñ<Ô<Ñ=Ô=ˆCˆCøÝð 	9ð 	9ð 	9Ý ¨Ð1Ñ1Ô1°qÐ8øøøøð	9øøøå˜#�uœ~Ñ.Ô.ð 	à�4Ø× Ò  Ñ1Ô1ð 	à�4ð	9Ý˜œ Aœ×,Ò,°WÐ,Ñ=Ô=Ñ>Ô>ˆDˆDøÝð 	9ð 	9ð 	9Ý ¨Ð1Ñ1Ô1°qÐ8øøøøð	9øøøå˜$¥¤Ñ,Ô,ð 	à�4Ý˜$œ*¥cÑ*Ô*ð 	à�4ð	9Ý˜œ Qœ×-Ò-°gÐ-Ñ>Ô>Ñ?Ô?ˆEˆEøÝð 	9ð 	9ð 	9Ý ¨Ð1Ñ1Ô1°qÐ8øøøøð	9øøøå˜%¥¤Ñ-Ô-ð 	à�4ð	9ØUÐUÐUÐUÈ%Ì*ÐUÑUÔUˆNˆNøÝð 	9ð 	9ð 	9Ý ¨Ð1Ñ1Ô1°qÐ8øøøøð	9øøøåÐOÐOÀÐOÑOÔOÑOÔOð 	à�4ð	9Ý˜œ Qœ×-Ò-°gÐ-Ñ>Ô>Ñ?Ô?ˆEˆEøÝð 	9ð 	9ð 	9Ý ¨Ð1Ñ1Ô1°qÐ8øøøøð	9øøøå˜%¥¤Ñ,Ô,ð 	à�4Ý7BÔ7NÍtÑ7TÔ7Tˆ
Øœ+ð 	4ð 	4‰JˆC�ð=Ý˜3Ÿ9š9¨W˜9Ñ5Ô5Ñ6Ô6��øÝ ð =ð =ð =Ý$¨WÐ5Ñ5Ô5¸1Ð<øøøøð=øøøð=Ý˜UŸ[š[°˜[Ñ9Ô9Ñ:Ô:��øÝ ð =ð =ð =Ý$¨WÐ5Ñ5Ô5¸1Ð<øøøøð=øøøõ ˜#�uœ{Ñ+Ô+ð 4µ
¸3¼9ÅcÑ0JÔ0Jð 4Ø˜3œ9Ô%×,Ò,¨UÑ3Ô3Ð3øð �mŠmØ”Ø”=Ð% AØÔ(Ð-¨AØØÔ(Ø!Ô0ð ñ 
ô 
ˆð �ØØ”=ØÔ(ØÔ(Ø!Ô0ð
ñ 
ô 
ˆð 	�ŠØ”*Ø�ØØØØð 	ñ 	
ô 	
ð 	
ð  ˆŒ
Øˆ
s¥   ‰.8 ¸
AÁAÁAÂ.B> Â>
CÃCÃCÄ.E	 Å	
E)ÅE$Å$E)Æ	F Æ
F=Æ'F8Æ8F=Ç.H È
H+ÈH&È&H+É0#JÊ
J4ÊJ/Ê/J4Ê8#KË
K<Ë&K7Ë7K<Nr¸   r*   rª   c                óš  •— t          || j        ¦  «        }t          | j        t          j        ¦  «        ru| j        j        dk    re| j        dk    rZt          |t          j        ¦  «        r@t          |j        ¦  «        dk    r(|  	                    ||¦  «        }|rt          |f¦  «        S t          ¦   «                              ||¦  «        S )NÚtyper   é   )r   r  r2   r
   rE   r5   r¼   rè   rŒ   r=  rþ   rÈ   rŠ   )rZ   r·   r)   Únew_clsr^   s       €r6   rŠ   zBoundMethod.infer_call_result†  sº   ø€ õ
 ' w°´
Ñ;Ô;ˆå�t”z¥5¤>Ñ2Ô2ð
	(à”
” 6Ò)Ð)Ø”	˜YÒ&Ð&Ý˜6¥5¤:Ñ.Ô.ð 'å�F”KÑ Ô  AÒ%Ð%ð ×/Ò/°¸Ñ@Ô@ˆGØð (Ý˜W˜JÑ'Ô'Ð'å‰wŒw×(Ò(¨°Ñ9Ô9Ð9r8   c                ó   — dS rÂ   r;   r  s     r6   r”   zBoundMethod.bool_valueš  r  r8   )r  r  r  r   r+   rU   r  )r+   r  )r·   r  r)   r   r+   rÆ   r:   rÄ   r  )rf   rg   rh   ri   r   ÚBoundMethodModelrš   r[   rö   rù   r=  rŠ   r”   rî   rï   s   @r6   r³   r³     sÖ   ø€ € € € € ØDÐDà5˜Ô5Ñ7Ô7Ððð ð ð ð ð ðð ð ð ðð ð ð ðcð cð cð cðP ,0ð:ð :ð :ð :ð :ð :ð :ð(ð ð ð ð ð ð ð ð r8   r³   c                  ón   ‡ — e Zd ZU dZded<   	 ddˆ fd„Zdd„Zdd„Zdd„Zdd„Z	ddd„Z
dd„Zdd„Zˆ xZS )rX   zeA special node representing a generator.

    Proxied class is set once for all in raw_building.
    zobjectmodel.GeneratorModelrš   Nró   únodes.FunctionDefÚgenerator_initial_contextr*   r+   rU   c                ó¸   •— t          ¦   «                              ¦   «          || _        t          |¦  «        | _        t          j        ¦   «         t          _        d S r:   )	rÈ   r[   ró   r   Ú_call_contextr   ÚGeneratorModelrX   rš   )rZ   ró   rF  r^   s      €r6   r[   zGenerator.__init__©  sL   ø€ õ
 	‰Œ×ÒÑÔÐØˆŒÝ)Ð*CÑDÔDˆÔõ (3Ô'AÑ'CÔ'C�	Ô$Ð$Ð$r8   rª   c              #  óT   K  — | j                              | j        ¦  «        E d {V —† d S r:   )ró   Úinfer_yield_resultrH  r�   s    r6   Úinfer_yield_typeszGenerator.infer_yield_typesµ  s7   è è € Ø”;×1Ò1°$Ô2DÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEr8   úLiteral[False]c                ó   — dS rø   r;   r�   s    r6   r‘   zGenerator.callable¸  rú   r8   r\   c                ó   — dS )Nzbuiltins.generatorr;   r�   s    r6   rÛ   zGenerator.pytype»  s   € Ø#Ð#r8   c                ó   — dS )NrX   r;   r�   s    r6   rž   zGenerator.display_type¾  ó   € Øˆ{r8   r)   r  c                ó   — dS rÂ   r;   r  s     r6   r”   zGenerator.bool_valueÁ  r  r8   c                óR   — d| j         j        › d| j        › dt          | ¦  «        › d�S )Nz<Generator(ú) l.ú at 0xú>©rR   r5   r$  rÔ   r�   s    r6   rÕ   zGenerator.__repr__Ä  ó0   € ØS˜Tœ]Ô/ÐSÐS°T´[ÐSÐSÍÈ4ÉÌÐSÐSÐSÐSr8   c                ó"   — d| j         j        › d�S )Nz
Generator(ú)©rR   r5   r�   s    r6   r×   zGenerator.__str__Ç  ó   € Ø1˜DœMÔ.Ð1Ð1Ð1Ð1r8   r:   )ró   rE  rF  r*   r+   rU   )r+   rª   ©r+   rM  rÁ   r  )rf   rg   rh   ri   rj   r[   rL  r‘   rÛ   rž   r”   rÕ   r×   rî   rï   s   @r6   rX   rX   ž  s  ø€ € € € € € ðð ð 3Ð2Ð2Ñ2ð
 >Bð
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
DðFð Fð Fð Fðð ð ð ð$ð $ð $ð $ðð ð ð ðð ð ð ð ðTð Tð Tð Tð2ð 2ð 2ð 2ð 2ð 2ð 2ð 2r8   rX   c                  ó2   — e Zd ZdZd
d„Zdd„Zdd„Zdd„Zd	S )ÚAsyncGeneratorz-Special node representing an async generator.r+   ú#Literal['builtins.async_generator']c                ó   — dS )Nzbuiltins.async_generatorr;   r�   s    r6   rÛ   zAsyncGenerator.pytypeÎ  s   € Ø)Ð)r8   r\   c                ó   — dS )Nr_  r;   r�   s    r6   rž   zAsyncGenerator.display_typeÑ  s   € ØÐr8   c                óR   — d| j         j        › d| j        › dt          | ¦  «        › d�S )Nz<AsyncGenerator(rT  rU  rV  rW  r�   s    r6   rÕ   zAsyncGenerator.__repr__Ô  s1   € ØX $¤-Ô"4ÐXÐX¸$¼+ÐXÐXÍRÐPTÉXÌXÐXÐXÐXÐXr8   c                ó"   — d| j         j        › d�S )NzAsyncGenerator(rZ  r[  r�   s    r6   r×   zAsyncGenerator.__str__×  s   € Ø6 ¤Ô!3Ð6Ð6Ð6Ð6r8   N)r+   r`  rÁ   )rf   rg   rh   ri   rÛ   rž   rÕ   r×   r;   r8   r6   r_  r_  Ë  sn   € € € € € Ø7Ð7ð*ð *ð *ð *ð ð  ð  ð  ðYð Yð Yð Yð7ð 7ð 7ð 7ð 7ð 7r8   r_  c                  óZ   ‡ — e Zd ZdZ	 ddˆ fd
„Zdd„Zddd„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS )rY   zoSpecial node representing new style typing unions.

    Proxied class is set once for all in raw_building.
    NÚleftú(UnionType | nodes.ClassDef | nodes.ConstÚrightró   únodes.NodeNG | Noner+   rU   c                ór   •— t          ¦   «                              ¦   «          || _        || _        || _        d S r:   )rÈ   r[   ró   rf  rh  )rZ   rf  rh  ró   r^   s       €r6   r[   zUnionType.__init__á  s4   ø€ õ 	‰Œ×ÒÑÔÐØˆŒØˆŒ	ØˆŒ
ˆ
ˆ
r8   rM  c                ó   — dS rø   r;   r�   s    r6   r‘   zUnionType.callableì  rú   r8   r)   r*   r  c                ó   — dS rÂ   r;   r  s     r6   r”   zUnionType.bool_valueï  r  r8   úLiteral['types.UnionType']c                ó   — dS )Nztypes.UnionTyper;   r�   s    r6   rÛ   zUnionType.pytypeò  s   € Ø Ð r8   r\   c                ó   — dS )NrY   r;   r�   s    r6   rž   zUnionType.display_typeõ  rQ  r8   c                óR   — d| j         j        › d| j        › dt          | ¦  «        › d�S )Nz<UnionType(rT  rU  rV  rW  r�   s    r6   rÕ   zUnionType.__repr__ø  rX  r8   c                ó"   — d| j         j        › d�S )Nz
UnionType(rZ  r[  r�   s    r6   r×   zUnionType.__str__û  r\  r8   r:   )rf  rg  rh  rg  ró   ri  r+   rU   r]  r  )r+   rm  rÁ   )rf   rg   rh   ri   r[   r‘   r”   rÛ   rž   rÕ   r×   rî   rï   s   @r6   rY   rY   Û  sÒ   ø€ € € € € ðð ð '+ð		ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ðð ð ð ð ð!ð !ð !ð !ðð ð ð ðTð Tð Tð Tð2ð 2ð 2ð 2ð 2ð 2ð 2ð 2r8   rY   r:   )r'   r(   r)   r*   r+   r,   )rk   rl   r)   r*   rm   rn   r+   ro   )r…   r†   r‡   r\   r)   r   r+   rˆ   )4ri   Ú
__future__r   r1  Úcollections.abcr   r   Útypingr   r   r   Úastroidr	   r
   Úastroid.constr   Úastroid.contextr   r   r   r   Úastroid.exceptionsr   r   r   r   Úastroid.interpreterr   Úastroid.typingr   r   r   Úastroid.utilr   r   r   Úastroid.constraintr   rA   ÚaddrD   rO   rQ   r„   r—   r™   r†   r²   r³   rX   r_  rY   r;   r8   r6   ú<module>r~     s¯  ðð
ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð
 BÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aàð .Ø-Ð-Ð-Ð-Ð-Ð-ð "Ð#9Ð:€
Øð $Ø‡N‚N�?Ñ#Ô#Ð#ðð ð Ð ð  QUð!ð !ð !ð !ð !ðH'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðZ 15ð3
ð 3
ð 3
ð 3
ð 3
ðlð ð ð ð0mLð mLð mLð mLð mL�5ñ mLô mLð mLð`WGð WGð WGð WGð WGˆ|ñ WGô WGð WGðt^ð ^ð ^ð ^ð ^�Eñ ^ô ^ð ^ðBPð Pð Pð Pð P�-ñ Pô Pð Pðf*2ð *2ð *2ð *2ð *2�ñ *2ô *2ð *2ðZ7ð 7ð 7ð 7ð 7�Yñ 7ô 7ð 7ð !2ð !2ð !2ð !2ð !2�ñ !2ô !2ð !2ð !2ð !2r8   