Ë
    pPêjÞ=  ã                  ó¨  — U d Z ddlmZ ddlmZ ddl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 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! dd	l"m#Z# dd
l$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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= dZ>de?d<   dZ@de?d<   e G d„ d«      «       ZAe G d„ deA«      «       ZBd(d„ZCd)d„ZD G d„ de
«      ZEddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„ZFddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„ZG G d „ d!e(«      ZHd+d"„ZId,d#„ZJe	 	 	 	 	 	 	 	 	 	 d-d$„«       ZKe	 d.	 	 	 	 	 	 	 	 	 d/d%„«       ZK	 d.	 	 	 	 	 	 	 	 	 d0d&„ZKd1d'„ZLy)2z@Shared definitions used by different parts of semantic analysis.é    )Úannotations)Úabstractmethod)ÚCallable)ÚFinalÚLiteralÚProtocolÚoverload)Útrait)ÚLITERAL_REQÚ	ErrorCode)ÚCallExprÚClassDefÚContextÚDataclassTransformSpecÚ	DecoratorÚ
ExpressionÚFuncDefÚNameExprÚNodeÚOverloadedFuncDefÚRefExprÚ
SymbolNodeÚSymbolTableÚSymbolTableNodeÚ	TypeAliasÚTypeInfo)ÚSemanticAnalyzerPluginInterface)ÚTypeVarLikeScope)ÚANY_STRATEGYÚBoolTypeQuery)Úmake_simplified_union)ÚTPDICT_FB_NAMESÚAnyTypeÚFunctionLikeÚInstanceÚ
ParametersÚParamSpecFlavorÚParamSpecTypeÚPlaceholderTypeÚ
ProperTypeÚ	TupleTypeÚTypeÚ	TypeOfAnyÚ	TypeVarIdÚTypeVarLikeTypeÚTypeVarTupleTypeÚ
UnpackTypeÚflatten_nested_tuplesÚget_proper_type)Ú	__slots__Ú__deletable__Ú__match_args__r   ÚALLOW_INCOMPATIBLE_OVERRIDEé   ÚPRIORITY_FALLBACKSc                  óŠ  — e Zd ZdZe	 d	 	 	 	 	 	 	 dd„«       Zedd„«       Zedd„«       Zedd„«       Ze	 ddddœ	 	 	 	 	 	 	 	 	 	 	 dd	„«       Z	edd
œdd„«       Z
edd„«       Zedd„«       Zedd d„«       Zed!d„«       Zeed"d„«       «       Zed#d„«       Zeed"d„«       «       Zed"d„«       Zed"d„«       Zeed$d„«       «       Zy)%ÚSemanticAnalyzerCoreInterfacez�A core abstract interface to generic semantic analyzer functionality.

    This is implemented by both semantic analyzer passes 2 and 3.
    Fc                ó   — t         ‚©N©ÚNotImplementedError©ÚselfÚnameÚctxÚsuppress_errorss       úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/semanal_shared.pyÚlookup_qualifiedz.SemanticAnalyzerCoreInterface.lookup_qualifiedJ   ó
   € ô "Ð!ó    c               ó   — t         ‚r=   r>   ©rA   Úfullnames     rE   Úlookup_fully_qualifiedz4SemanticAnalyzerCoreInterface.lookup_fully_qualifiedP   ó   € ä!Ð!rH   c               ó   — t         ‚r=   r>   rJ   s     rE   Úlookup_fully_qualified_or_nonez<SemanticAnalyzerCoreInterface.lookup_fully_qualified_or_noneT   rM   rH   c                ó   — t         ‚r=   r>   )rA   Úfixeds     rE   Úrecord_fixed_typez/SemanticAnalyzerCoreInterface.record_fixed_typeX   rM   rH   N)ÚblockerÚcodec               ó   — t         ‚r=   r>   )rA   ÚmsgrC   ÚseriousrS   rT   s         rE   Úfailz"SemanticAnalyzerCoreInterface.fail\   s
   € ô "Ð!rH   ©rT   c               ó   — t         ‚r=   r>   )rA   rV   rC   rT   s       rE   Únotez"SemanticAnalyzerCoreInterface.noteh   rM   rH   c                ó   — t         ‚r=   r>   )rA   ÚfeaturerC   s      rE   Úincomplete_feature_enabledz8SemanticAnalyzerCoreInterface.incomplete_feature_enabledl   rM   rH   c                ó   — t         ‚r=   r>   ©rA   s    rE   Úrecord_incomplete_refz3SemanticAnalyzerCoreInterface.record_incomplete_refp   rM   rH   c                ó   — t         ‚r=   r>   )rA   Údebug_contextÚforce_progresss      rE   Údeferz#SemanticAnalyzerCoreInterface.defert   rM   rH   c                ó   — t         ‚)zDIs a module or class namespace potentially missing some definitions?r>   rJ   s     rE   Úis_incomplete_namespacez5SemanticAnalyzerCoreInterface.is_incomplete_namespacex   ó
   € ô "Ð!rH   c                ó   — t         ‚)z1Is this the final iteration of semantic analysis?r>   r`   s    rE   Úfinal_iterationz-SemanticAnalyzerCoreInterface.final_iteration}   rG   rH   c                ó   — t         ‚)z+Is the specific __future__ feature importedr>   )rA   Úflags     rE   Úis_future_flag_setz0SemanticAnalyzerCoreInterface.is_future_flag_setƒ   rh   rH   c                ó   — t         ‚r=   r>   r`   s    rE   Úis_stub_filez*SemanticAnalyzerCoreInterface.is_stub_fileˆ   rh   rH   c                ó   — t         ‚r=   r>   r`   s    rE   Úis_func_scopez+SemanticAnalyzerCoreInterface.is_func_scope�   rM   rH   c                ó   — t         ‚r=   r>   r`   s    rE   Úis_nested_within_func_scopez9SemanticAnalyzerCoreInterface.is_nested_within_func_scope‘   rM   rH   c                ó   — t         ‚r=   r>   r`   s    rE   Útypez"SemanticAnalyzerCoreInterface.type•   rh   rH   ©F©rB   ÚstrrC   r   rD   ÚboolÚreturnúSymbolTableNode | None)rK   rx   rz   r   )rK   rx   rz   r{   )rQ   zTypeInfo | TypeAliasrz   ÚNone)rV   rx   rC   r   rW   ry   rS   ry   rT   úErrorCode | Nonerz   r|   )rV   rx   rC   r   rT   r}   rz   r|   )r]   rx   rC   r   rz   ry   ©rz   r|   )NF)rc   zContext | Nonerd   ry   rz   r|   )rK   rx   rz   ry   ©rz   ry   )rl   rx   rz   ry   )rz   zTypeInfo | None)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rF   rL   rO   rR   rX   r[   r^   ra   re   rg   Úpropertyrj   rm   ro   rq   rs   ru   © rH   rE   r;   r;   C   sÑ  „ ñð
 à?Dð"Øð"Ø%ð"Ø8<ð"à	ò"ó ð"ð
 ò"ó ð"ð ò"ó ð"ð ò"ó ð"ð ð
 ð		"ð Ø!%ñ	"àð	"ð ð	"ð ð		"ð ð	"ð ð	"ð 
ò	"ó ð	"ð ØGKô "ó ð"ð ò"ó ð"ð ò"ó ð"ð ó"ó ð"ð ò"ó ð"ð Øò"ó ó ð"ð ò"ó ð"ð Øò"ó ó ð"ð ò"ó ð"ð ò"ó ð"ð Øò"ó ó ñ"rH   r;   c            
      óÎ  — e Zd ZU dZded<   e	 d	 	 	 	 	 	 	 dd„«       Zeddd„«       Zeddd„«       Zedd	„«       Z	edddddd
dddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Z
edd„«       Zed d„«       Zed!d„«       Zed"d„«       Zed#d„«       Ze	 	 	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 d%d„«       Zed&d„«       Zed'd„«       Zed(d„«       Zeed)d„«       «       Ze	 d	 	 	 	 	 	 	 	 	 d*d„«       Zy)+ÚSemanticAnalyzerInterfacezíA limited abstract interface to some generic semantic analyzer pass 2 functionality.

    We use this interface for various reasons:

    * Looser coupling
    * Cleaner import graph
    * Less need to pass around callback functions
    r   Ú
tvar_scopeFc                ó   — t         ‚r=   r>   r@   s       rE   Úlookupz SemanticAnalyzerInterface.lookup¨   rG   rH   Nc                ó   — t         ‚r=   r>   ©rA   rK   Úargss      rE   Ú
named_typez$SemanticAnalyzerInterface.named_type®   rM   rH   c                ó   — t         ‚r=   r>   rŒ   s      rE   Únamed_type_or_nonez,SemanticAnalyzerInterface.named_type_or_none²   rM   rH   c                ó   — t         ‚r=   r>   )rA   Únodes     rE   Úacceptz SemanticAnalyzerInterface.accept¶   rM   rH   T)rˆ   Úallow_tuple_literalÚallow_unbound_tvarsÚallow_typed_dict_special_formsÚallow_placeholderÚreport_invalid_typesÚprohibit_self_typeÚ"prohibit_special_class_field_typesc              ó   — t         ‚r=   r>   )
rA   Útyprˆ   r”   r•   r–   r—   r˜   r™   rš   s
             rE   Ú	anal_typez#SemanticAnalyzerInterface.anal_typeº   s
   € ô "Ð!rH   c                ó   — t         ‚r=   r>   )rA   Ú
type_exprss     rE   Úget_and_bind_all_tvarsz0SemanticAnalyzerInterface.get_and_bind_all_tvarsË   rM   rH   c                ó   — t         ‚r=   r>   )rA   rB   Úbasetype_or_fallbackÚlines       rE   Úbasic_new_typeinfoz,SemanticAnalyzerInterface.basic_new_typeinfoÏ   rM   rH   c                ó   — t         ‚r=   r>   )rA   ÚpriorityÚpatchs      rE   Úschedule_patchz(SemanticAnalyzerInterface.schedule_patchÓ   rM   rH   c                ó   — t         ‚)z%Add node to the current symbol table.r>   )rA   rB   Úsymbols      rE   Úadd_symbol_table_nodez/SemanticAnalyzerInterface.add_symbol_table_node×   rh   rH   c                ó   — t         ‚)z^Get currently active symbol table.

        May be module, class, or local namespace.
        r>   r`   s    rE   Úcurrent_symbol_tablez.SemanticAnalyzerInterface.current_symbol_tableÜ   s
   € ô "Ð!rH   c                ó   — t         ‚)z'Add symbol to the current symbol table.r>   )rA   rB   r’   ÚcontextÚmodule_publicÚmodule_hiddenÚ	can_defers          rE   Ú
add_symbolz$SemanticAnalyzerInterface.add_symbolä   s
   € ô "Ð!rH   c                ó   — t         ‚)z/Add symbol directly to the global symbol table.r>   )rA   rB   rC   r’   s       rE   Úadd_global_symbolz+SemanticAnalyzerInterface.add_global_symbolñ   rh   rH   c                ó   — t         ‚r=   r>   )rA   Úexprs     rE   Ú
parse_boolz$SemanticAnalyzerInterface.parse_boolö   rM   rH   c                ó   — t         ‚r=   r>   )rA   rB   s     rE   Úqualified_namez(SemanticAnalyzerInterface.qualified_nameú   rM   rH   c                ó   — t         ‚r=   r>   r`   s    rE   Úis_typeshed_stub_filez/SemanticAnalyzerInterface.is_typeshed_stub_fileþ   rh   rH   c                ó   — t         ‚r=   r>   )rA   rB   ÚkindrC   rd   s        rE   Úprocess_placeholderz-SemanticAnalyzerInterface.process_placeholder  rG   rH   rv   rw   r=   ©rK   rx   r�   úlist[Type] | Nonerz   r%   )rK   rx   r�   rÁ   rz   zInstance | None)r’   r   rz   r|   )rœ   r,   rˆ   zTypeVarLikeScope | Noner”   ry   r•   ry   r–   ry   r—   ry   r˜   ry   r™   ú
str | Nonerš   rÂ   rz   zType | None)rŸ   zlist[Expression]rz   zlist[TypeVarLikeType])rB   rx   r¢   r%   r£   Úintrz   r   )r¦   rÃ   r§   zCallable[[], None]rz   r|   )rB   rx   rª   r   rz   ry   )rz   r   )TFT)rB   rx   r’   r   r¯   r   r°   ry   r±   ry   r²   ry   rz   ry   )rB   rx   rC   r   r’   r   rz   r|   ©r·   r   rz   úbool | None)rB   rx   rz   rx   r   )
rB   rÂ   r¾   rx   rC   r   rd   ry   rz   r|   )r€   r�   r‚   rƒ   Ú__annotations__r   rŠ   rŽ   r�   r“   r�   r    r¤   r¨   r«   r­   r³   rµ   r¸   rº   r„   r¼   r¿   r…   rH   rE   r‡   r‡   ›   sn  … ñð !Ó àà?Dð"Øð"Ø%ð"Ø8<ð"à	ò"ó ð"ð
 ó"ó ð"ð ó"ó ð"ð ò"ó ð"ð ð /3Ø$)Ø$)Ø/4Ø"'Ø%)Ø)-Ø9=ñ"àð"ð
 ,ð"ð "ð"ð "ð"ð )-ð"ð  ð"ð #ð"ð 'ð"ð -7ð"ð 
ò"ó ð"ð  ò"ó ð"ð ò"ó ð"ð ò"ó ð"ð ò"ó ð"ð ò"ó ð"ð ð #Ø#Øð
"àð
"ð ð
"ð ð	
"ð
 ð
"ð ð
"ð ð
"ð 
ò
"ó ð
"ð ò"ó ð"ð ò"ó ð"ð ò"ó ð"ð Øò"ó ó ð"ð àPUð"Øð"Ø&)ð"Ø07ð"ØIMð"à	ò"ó ñ"rH   r‡   c                ó4  — t        | «      } t        | t        «      r||j                  rU|j                  j                  t
        v rd}n|j                  j                  }| j                  |j                  › d|› �«      S | j                  |j                  «      S | S )NÚ	TypedDictz of )r3   Ú
isinstancer$   ÚinforK   r"   rB   Ú	with_name)ÚsigÚfdefÚ
class_names      rE   Úset_callable_namerÏ   
  sw   € Ü
˜#Ó
€CÜ�#”|Ô$Ø�9Š9Ø�y‰y×!Ñ!¤_Ñ4à(‘
à!ŸY™YŸ^™^�
Ø—=‘= D§I¡I ;¨d°:°,Ð!?Ó@Ð@à—=‘= §¡Ó+Ð+àˆ
rH   c                óD  — | j                   }|j                  j                  dk(  sJ ‚g }t        | j                  «      D ]Î  }t        |t        «      r«t        |j                  «      }t        |t        «      rt        |j                  «      }t        |t        «      r8|j                  j                  dk(  r|j                  |j                  d   «       Œ•|j                  t        t        j                  «      «       Œ¾|j                  |«       ŒÐ t!        |«      f|_        y)a‡  Calculate a precise item type for the fallback of a tuple type.

    This must be called only after the main semantic analysis pass, since joins
    aren't available before that.

    Note that there is an apparent chicken and egg problem with respect
    to verifying type arguments against bounds. Verifying bounds might
    require fallbacks, but we might use the bounds to calculate the
    fallbacks. In practice this is not a problem, since the worst that
    can happen is that we have invalid type argument values, and these
    can happen in later stages as well (they will generate errors, but
    we don't prevent their existence).
    úbuiltins.tupler   N)Úpartial_fallbackru   rK   r2   ÚitemsrÉ   r1   r3   r0   Úupper_boundr%   Úappendr�   r#   r-   Ú
from_errorr!   )rœ   ÚfallbackrÓ   ÚitemÚunpacked_types        rE   Úcalculate_tuple_fallbackrÚ     sä   € ð ×#Ñ#€HØ�=‰=×!Ñ!Ð%5Ò5Ð5Ð5Ø€EÜ% c§i¡iÓ0ò ˆä�dœJÔ'Ü+¨D¯I©IÓ6ˆMÜ˜-Ô)9Ô:Ü /°×0IÑ0IÓ J�ä˜=¬(Ô3Ø!×&Ñ&×/Ñ/Ð3CÒCà—‘˜]×/Ñ/°Ñ2Õ3ð —‘œW¤Y×%9Ñ%9Ó:Õ;à�L‰L˜Õð!ô" +¨5Ó1Ð3€H…MrH   c                  ó   — e Zd Zddd„Zy)Ú_NamedTypeCallbackNc                 ó   — y r=   r…   rŒ   s      rE   Ú__call__z_NamedTypeCallback.__call__@  s   � rH   r=   rÀ   )r€   r�   r‚   rÞ   r…   rH   rE   rÜ   rÜ   ?  s   „ ÝVrH   rÜ   éÿÿÿÿN)r£   ÚcolumnÚprefixc               ó�   — t        | ||t        j                   |d |d«      g«      t        t        j
                  «      |||¬«	      S )NrÑ   úbuiltins.object©ÚflavorrÔ   Údefaultr£   rà   rá   )r(   r'   ÚARGSr#   r-   Úfrom_omitted_generics©rB   rK   ÚidÚnamed_type_funcr£   rà   rá   s          rE   Úparamspec_argsrì   C  sN   € ô ØØØ
Ü×#Ñ#Ù#Ð$4±ÐGXÓ7YÐ6ZÓ[Üœ	×7Ñ7Ó8ØØØô
ð 
rH   c               óž   — t        | ||t        j                   |d |d«       |d«      g«      t        t        j
                  «      |||¬«	      S )Nzbuiltins.dictzbuiltins.strrã   rä   )r(   r'   ÚKWARGSr#   r-   rè   ré   s          rE   Úparamspec_kwargsrï   Z  sY   € ô ØØØ
Ü×%Ñ%Ù#Ø™o¨nÓ=¹ÐO`Ó?aÐbó
ô œ	×7Ñ7Ó8ØØØôð rH   c                  ó(   ‡ — e Zd Zdˆ fd„Zdd„Zˆ xZS )ÚHasPlaceholdersc                ó,   •— t         ‰| �  t        «       y r=   )ÚsuperÚ__init__r   )rA   Ú	__class__s    €rE   rô   zHasPlaceholders.__init__t  s   ø€ Ü‰ÑœÕ&rH   c                 ó   — y)NTr…   )rA   Úts     rE   Úvisit_placeholder_typez&HasPlaceholders.visit_placeholder_typew  s   € ØrH   r~   )r÷   r)   rz   ry   )r€   r�   r‚   rô   rø   Ú__classcell__)rõ   s   @rE   rñ   rñ   s  s   ø„ õ'÷rH   rñ   c                ó4   — | j                  t        «       «      S )z=Check if a type contains any placeholder types (recursively).)r“   rñ   )rœ   s    rE   Úhas_placeholderrû   {  s   € à�:‰:”oÓ'Ó(Ð(rH   c                óš  — t        | t        «      r| j                  } t        | t        «      r| j                  } t        | t
        «      r| j                  } t        | t        «      r7| j                  D ]  }t        |«      }|€Œ|c S  t        | j                  «      S t        | t        «      r| j                  S t        | t        «      r| j                  } t        | t        «      rh| j                   dd D ]  }|j                  €Œ|j                  c S  | j"                  }|�,|j$                  j                  �|j$                  j                  S y)a^  
    Find the dataclass transform spec for the given node, if any exists.

    Per PEP 681 (https://peps.python.org/pep-0681/#the-dataclass-transform-decorator), dataclass
    transforms can be specified in multiple ways, including decorator functions and
    metaclasses/base classes. This function resolves the spec from any of these variants.
    Nr8   )rÉ   r   Úcalleer   r’   r   Úfuncr   rÓ   Úfind_dataclass_transform_specÚimplr   Údataclass_transform_specr   rÊ   r   ÚmroÚmetaclass_typeru   )r’   Ú	candidateÚspecÚbaser  s        rE   rÿ   rÿ   €  s&  € ô �$œÔ!ð �{‰{ˆä�$œÔ Ø�y‰yˆä�$œ	Ô"ð �y‰yˆä�$Ô)Ô*ð
 Ÿ™ò 	ˆIÜ0°Ó;ˆDØÑØ’ð	ô -¨T¯Y©YÓ7Ð7ô �$œÔ Ø×,Ñ,Ð,ä�$œÔ!Ø�y‰yˆÜ�$œÔ!à—H‘H˜Q˜R�Lò 	5ˆDØ×,Ñ,Ñ8Ø×4Ñ4Ò4ð	5ð  ×,Ñ,ˆØÐ%¨.×*=Ñ*=×*VÑ*VÐ*bØ!×&Ñ&×?Ñ?Ð?àrH   c                 ó   — y r=   r…   ©ÚapiÚ
expressionrB   ræ   s       rE   Úrequire_bool_literal_argumentr  Ê  s   € ð rH   c                 ó   — y r=   r…   r  s       rE   r  r  Ó  s   € ð rH   c                ó\   — t        |«      }|€| j                  d|› d�|t        ¬«       |S |S )zWAttempt to interpret an expression as a boolean literal, and fail analysis if we can't.ú"z*" argument must be a True or False literalrY   )r¸   rX   r   )r	  r
  rB   ræ   Úvalues        rE   r  r  Ü  sB   € ô �zÓ"€EØ€}Ø�‰Ø�ˆvÐ?Ð@À*ÔS^ð 	ô 	
ð ˆà€LrH   c                ód   — t        | t        «      r | j                  dk(  ry| j                  dk(  ryy )Nzbuiltins.TrueTzbuiltins.FalseF)rÉ   r   rK   )r·   s    rE   r¸   r¸   í  s.   € Ü�$œÔ!Ø�=‰=˜OÒ+ØØ�=‰=Ð,Ò,ØØrH   )rÌ   r,   rÍ   r   rz   r*   )rœ   r+   rz   r|   )rB   rx   rK   rx   rê   r.   rë   rÜ   r£   rÃ   rà   rÃ   rá   zParameters | Nonerz   r(   )rœ   r,   rz   ry   )r’   zNode | Nonerz   zDataclassTransformSpec | None)
r	  ú;SemanticAnalyzerInterface | SemanticAnalyzerPluginInterfacer
  r   rB   rx   ræ   zLiteral[True, False]rz   ry   r=   )
r	  r  r
  r   rB   rx   ræ   r|   rz   rÅ   )
r	  r  r
  r   rB   rx   ræ   rÅ   rz   rÅ   rÄ   )Mrƒ   Ú
__future__r   Úabcr   Úcollections.abcr   Útypingr   r   r   r	   Úmypy_extensionsr
   Úmypy.errorcodesr   r   Ú
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypy.pluginr   Úmypy.tvar_scoper   Úmypy.type_visitorr   r    Úmypy.typeopsr!   Ú
mypy.typesr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r7   rÆ   r9   r;   r‡   rÏ   rÚ   rÜ   rì   rï   rñ   rû   rÿ   r  r¸   r…   rH   rE   ú<module>r     sd  ðÚ Få "å Ý $ß 5Ó 5å !ç 2÷÷ ÷ ÷ ó õ$ 8Ý ,ß 9Ý .÷÷ ÷ ÷ ÷ ð. &VÐ ˜UÓ Uð Ð �EÓ ð ÷T"ð T"ó ðT"ðn ôk"Ð =ó k"ó ðk"ó\ó "4ôJW˜ô Wð ØØ $ñØ
ðàðð 	ðð
 (ðð ðð ðð ðð óð: ØØ $ñØ
ðàðð 	ðð
 (ðð ðð ðð ðð óô2�mô ó)ó
FðT 
ðØ	Dðàðð ðð "ð	ð
 
òó 
ðð 
ð
 ð	Ø	Dðàðð ðð ð	ð
 òó 
ðð  ð	Ø	Dðàðð ðð ð	ð
 óô"rH   