Ë
    |¾jÙ  ã                  óà  — d Z ddlmZ ddlZddlmZ ddl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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/m0Z0 dd
l1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlQmRZR ddlSmTZT ddlUmVZW ddlXmYZY ddlZm[Z[ 	 ddlEm\Z\ dZ^dZ_dZ`dZadZbdZcdZdd Zed!Zfh d"£Zg e[eW«      Zhehd#k\  rd$nd%Zid&ZVdKd'„Zj G d(„ d)e6«      Zk G d*„ d+«      ZldLd,„Zm G d-„ d.«      Zn G d/„ d0«      Zo G d1„ d2«      Zp G d3„ d4«      Zq ed5d6d7«      Zr ed8d9d7«      Zs ed:d;d7«      Zt ed<d=d7«      Zu ed>d?d7«      Zv ed>d@d7«      Zw ed>dAd7«      ZxdMdB„ZydNdC„ZzdOdD„Z{	 	 	 	 	 	 	 	 dPdE„Z|dOdF„Z}dQdG„Z~dQdH„Z	 	 	 dR	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSdI„Z€dTdJ„Z�y# e]$ r
 ddlEmNZ\ Y �Œw xY w)Uz^This module includes classes and functions designed specifically for use with the mypy plugin.é    )ÚannotationsN)ÚConfigParser)ÚAnyÚCallableÚIterator)Ú	ErrorCode)Úexpand_typeÚexpand_type_by_instance)Ú	ARG_NAMEDÚARG_NAMED_OPTÚARG_OPTÚARG_POSÚ	ARG_STAR2ÚMDEFÚArgumentÚAssignmentStmtÚBlockÚCallExprÚClassDefÚContextÚ	DecoratorÚDictExprÚEllipsisExprÚ
ExpressionÚFuncDefÚIfStmtÚJsonDictÚ
MemberExprÚNameExprÚPassStmtÚPlaceholderNodeÚRefExprÚ	StatementÚStrExprÚSymbolTableNodeÚTempNodeÚ	TypeAliasÚTypeInfoÚVar)ÚOptions)ÚCheckerPluginInterfaceÚClassDefContextÚFunctionContextÚMethodContextÚPluginÚReportConfigContextÚSemanticAnalyzerPluginInterface)Údataclasses)Údeserialize_and_fixup_type)Úset_callable_name)Úmake_wildcard_trigger)Ústate)Úmap_type_from_supertype)ÚAnyTypeÚCallableTypeÚInstanceÚNoneTypeÚ
OverloadedÚTypeÚ	TypeOfAnyÚTypeTypeÚTypeVarTypeÚ	UnionTypeÚget_proper_type)Úfill_typevars)Úget_unique_redefinition_name)Ú__version__)Ú_fields)Úparse_mypy_version)Ú
TypeVarDef)r@   úpydantic-mypyzpydantic-mypy-metadatazpydantic.main.BaseModelz#pydantic_settings.main.BaseSettingszpydantic.root_model.RootModelz5pydantic._internal._model_construction.ModelMetaclasszpydantic.fields.Fieldzpydantic.dataclasses.dataclassú.pydantic.functional_validators.model_validator>   ú*pydantic.functional_serializers.serializerú.pydantic.deprecated.class_validators.validatorú.pydantic.functional_validators.field_validatorú0pydantic.functional_serializers.model_serializerú3pydantic.deprecated.class_validators.root_validatorrJ   )r   i¢  ÚbuiltinsÚ__builtins__é   c                ó   — t         S )a!  `version` is the mypy version string.

    We might want to use this to print a warning if the mypy version being used is
    newer, or especially older, than we expect (or need).

    Args:
        version: The mypy version string.

    Return:
        The Pydantic mypy plugin type.
    )ÚPydanticPlugin)Úversions    úP/var/www/html/candidateportal/venv/lib/python3.12/site-packages/pydantic/mypy.pyÚpluginrW   r   s
   € ô Ðó    c                  ól   ‡ — e Zd ZdZdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zˆ xZS )rT   zThe Pydantic mypy plugin.c                ó‚   •— t        |«      | _        | j                  j                  «       | _        t        ‰| �  |«       y ©N)ÚPydanticPluginConfigÚplugin_configÚto_dataÚ_plugin_dataÚsuperÚ__init__)ÚselfÚoptionsÚ	__class__s     €rV   ra   zPydanticPlugin.__init__„   s4   ø€ Ü1°'Ó:ˆÔØ ×.Ñ.×6Ñ6Ó8ˆÔÜ‰Ñ˜Õ!rX   c                óÂ   — | j                  |«      }|rLt        |j                  t        «      r2t	        d„ |j                  j
                  D «       «      r| j                  S y)zUpdate Pydantic model class.c              3  óB   K  — | ]  }|j                   t        k(  –— Œ y ­wr[   )ÚfullnameÚBASEMODEL_FULLNAME©Ú.0Úbases     rV   ú	<genexpr>z5PydanticPlugin.get_base_class_hook.<locals>.<genexpr>Ž   s   è ø€ ÒP¸4�4—=‘=Ô$6Õ6ÑPùó   ‚N)Úlookup_fully_qualifiedÚ
isinstanceÚnoder(   ÚanyÚmroÚ$_pydantic_model_class_maker_callback©rb   rg   Úsyms      rV   Úget_base_class_hookz"PydanticPlugin.get_base_class_hook‰   sG   € à×)Ñ)¨(Ó3ˆÙ”:˜cŸh™h¬Ô1äÑPÀ3Ç8Á8Ç<Á<ÔPÔPØ×@Ñ@Ð@ØrX   c                ó.   — |t         k(  r| j                  S y)z,Update Pydantic `ModelMetaclass` definition.N)ÚMODEL_METACLASS_FULLNAMEÚ)_pydantic_model_metaclass_marker_callback©rb   rg   s     rV   Úget_metaclass_hookz!PydanticPlugin.get_metaclass_hook’   s   € àÔ/Ò/Ø×AÑAÐAØrX   c                óh   — | j                  |«      }|r|j                  t        k(  r| j                  S y)z/Adjust the return type of the `Field` function.N)rn   rg   ÚFIELD_FULLNAMEÚ_pydantic_field_callbackrt   s      rV   Úget_function_hookz PydanticPlugin.get_function_hook˜   s/   € à×)Ñ)¨(Ó3ˆÙ�3—<‘<¤>Ò1Ø×0Ñ0Ð0ØrX   c                ó2   — |j                  d«      rt        S y)z-Adjust return type of `from_orm` method call.z	.from_ormN)ÚendswithÚfrom_attributes_callbackrz   s     rV   Úget_method_hookzPydanticPlugin.get_method_hookŸ   s   € à×Ñ˜[Ô)Ü+Ð+ØrX   c                óH   — |t         k(  rt        dk  rt        j                  S y)z€Mark pydantic.dataclasses as dataclass.

        Mypy version 1.1.1 added support for `@dataclass_transform` decorator.
        )é   r…   N)ÚDATACLASS_FULLNAMEÚMYPY_VERSION_TUPLEr2   Údataclass_class_maker_callbackrz   s     rV   Úget_class_decorator_hookz'PydanticPlugin.get_class_decorator_hook¥   s$   € ð
 Ô)Ò)Ô.@À6Ò.IÜ×=Ñ=Ð=ØrX   c                ó   — | j                   S )zjReturn all plugin config data.

        Used by mypy to determine if cache needs to be discarded.
        )r_   )rb   Úctxs     rV   Úreport_config_dataz!PydanticPlugin.report_config_data®   s   € ð
 × Ñ Ð rX   c                óŽ   — t        |j                  |j                  |j                  | j                  «      }|j                  «       S r[   )ÚPydanticModelTransformerÚclsÚreasonÚapir]   Ú	transform)rb   r‹   Útransformers      rV   rs   z3PydanticPlugin._pydantic_model_class_maker_callbackµ   s3   € Ü.¨s¯w©w¸¿
¹
ÀCÇGÁGÈT×M_ÑM_Ó`ˆØ×$Ñ$Ó&Ð&rX   c                óÖ   — | j                   j                  ry|j                  j                  j                  }|sJ d«       ‚t        |j                  dd«      rd|j                  _        yy)zÓReset dataclass_transform_spec attribute of ModelMetaclass.

        Let the plugin handle it. This behavior can be disabled
        if 'debug_dataclass_transform' is set to True', for testing purposes.
        Nz-callback not passed from 'get_metaclass_hook'Údataclass_transform_spec)r]   Údebug_dataclass_transformr�   ÚinfoÚdeclared_metaclassÚgetattrÚtyper•   )rb   r‹   Úinfo_metaclasss      rV   ry   z8PydanticPlugin._pydantic_model_metaclass_marker_callback¹   s^   € ð ×Ñ×7Ò7ØØŸ™Ÿ™×8Ñ8ˆÙÐNÐNÓNˆ~Ü�>×&Ñ&Ð(BÀDÔIØ;?ˆN×ÑÕ8ð JrX   c                ó|  ‡	— |j                   Š	|j                  d   dk(  sJ d«       ‚|j                  d   dk(  sJ d«       ‚|j                  d   }|j                  d   }|r$|r"t        |j                  |j
                  «       ‰	S |r+|j                  d   d   }|d   }t        |t        «      s|S ‰	S |r‰|j                  d   d   }t        |t        «      r|j                  d   }t        |t        «      rH|j                  }t        |dd«      }|r+t        d	„ |D «       «      rt        ˆ	fd
„|D «       «      |_        |S ‰	S )ao  Extract the type of the `default` argument from the Field function, and use it as the return type.

        In particular:
        * Check whether the default and default_factory argument is specified.
        * Output an error if both are specified.
        * Retrieve the type of the argument which is specified, and use it as return type for the function.
        r   Údefaultz0"default" is no longer first argument in Field()r…   Údefault_factoryz9"default_factory" is no longer second argument in Field()ÚargsNc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr[   )ro   r@   )rj   Úargs     rV   rl   z:PydanticPlugin._pydantic_field_callback.<locals>.<genexpr>ï   s   è ø€ ÒH¸Cœ: c¬;×7ÑHùs   ‚c              3  ó"   •K  — | ]  }‰–— Œ y ­wr[   © )rj   Ú_Údefault_any_types     €rV   rl   z:PydanticPlugin._pydantic_field_callback.<locals>.<genexpr>ñ   s   øè ø€ Ò-MÀ1Ô.>Ñ-Mùs   ƒ)Údefault_return_typeÚcallee_arg_namesrŸ   Ú+error_default_and_default_factory_specifiedr‘   ÚcontextÚ	arg_typesro   r   r<   Úitemsr9   Úret_typer™   ÚallÚtuple)
rb   r‹   Údefault_argsÚdefault_factory_argsÚdefault_typeÚdefault_argÚdefault_factory_typer¬   rŸ   r¥   s
            @rV   r~   z'PydanticPlugin._pydantic_field_callbackÆ   sM  ø€ ð ×2Ñ2Ðà×#Ñ# AÑ&¨)Ò3ÐgÐ5gÓgÐ3Ø×#Ñ# AÑ&Ð*;Ò;ÐxÐ=xÓxÐ;Ø—x‘x ‘{ˆØ"Ÿx™x¨™{ÐáÑ0Ü7¸¿¹ÀÇÁÔMØ#Ð#áØŸ=™=¨Ñ+¨AÑ.ˆLØ& q™/ˆKô ˜k¬<Ô8Ø#Ð#ð*  Ðñ' "Ø#&§=¡=°Ñ#3°AÑ#6Ð ô Ð.´
Ô;Ø';×'AÑ'AÀ!Ñ'DÐ$äÐ.´Ô=Ø/×8Ñ8�ô ˜x¨°Ó6�ÙÜÑHÀ4ÔHÔHä(-Ó-MÈÔ-MÓ(M˜œØ�àÐrX   ©rc   r*   ÚreturnÚNone)rg   Ústrrµ   z(Callable[[ClassDefContext], bool] | None)rg   r·   rµ   z(Callable[[ClassDefContext], None] | None)rg   r·   rµ   z(Callable[[FunctionContext], Type] | None)rg   r·   rµ   z&Callable[[MethodContext], Type] | None)r‹   r0   rµ   údict[str, Any])r‹   r,   rµ   Úbool)r‹   r,   rµ   r¶   )r‹   r-   rµ   r=   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ra   rv   r{   r   rƒ   r‰   rŒ   rs   ry   r~   Ú__classcell__)rd   s   @rV   rT   rT   �   s9   ø„ Ù#õ"ó
óóóóó!ó'ó@÷. rX   rT   c                  óN   — e Zd ZU dZdZded<   ded<   ded<   ded<   dd„Zdd	„Zy
)r\   aÛ  A Pydantic mypy plugin config holder.

    Attributes:
        init_forbid_extra: Whether to add a `**kwargs` at the end of the generated `__init__` signature.
        init_typed: Whether to annotate fields in the generated `__init__`.
        warn_required_dynamic_aliases: Whether to raise required dynamic aliases error.
        debug_dataclass_transform: Whether to not reset `dataclass_transform_spec` attribute
            of `ModelMetaclass` for testing purposes.
    )Úinit_forbid_extraÚ
init_typedÚwarn_required_dynamic_aliasesr–   r¹   rÀ   rÁ   rÂ   r–   c                óä  — |j                   €y t        |j                   «      }|�q|j                  di «      j                  di «      }| j                  D ]?  }|j                  |d«      }t	        |t
        «      st        d|› �«      ‚t        | ||«       ŒA y t        «       }|j                  |j                   «       | j                  D ]'  }|j                  t        |d¬«      }t        | ||«       Œ) y )NÚtoolrI   Fz/Configuration value must be a boolean for key: )Úfallback)Úconfig_fileÚ
parse_tomlÚgetÚ	__slots__ro   r¹   Ú
ValueErrorÚsetattrr   ÚreadÚ
getbooleanÚCONFIGFILE_KEY)rb   rc   Útoml_configÚconfigÚkeyÚsettingr]   s          rV   ra   zPydanticPluginConfig.__init__  sæ   € Ø×ÑÐ&Øä  ×!4Ñ!4Ó5ˆØÐ"Ø —_‘_ V¨RÓ0×4Ñ4°_ÀbÓIˆFØ—~‘~ò ,�Ø Ÿ*™* S¨%Ó0�Ü! '¬4Ô0Ü$Ð'VÐWZÐV[Ð%\Ó]Ð]Ü˜˜c 7Õ+ñ	,ô )›NˆMØ×Ñ˜w×2Ñ2Ô3Ø—~‘~ò ,�Ø'×2Ñ2´>À3ÐQVÐ2ÓW�Ü˜˜c 7Õ+ñ,rX   c                óV   — | j                   D �ci c]  }|t        | |«      “Œ c}S c c}w )z/Returns a dict of config names to their values.)rÉ   r™   )rb   rÑ   s     rV   r^   zPydanticPluginConfig.to_data   s&   € à37·>±>ÖB¨C�”W˜T 3Ó'Ñ'ÒBÐBùÒBs   �&Nr´   ©rµ   r¸   )rº   r»   r¼   r½   rÉ   Ú__annotations__ra   r^   r£   rX   rV   r\   r\   ÷   s3   … ñð€Ið ÓØÓØ#'Ó'Ø#Ó#ó,ô&CrX   r\   c                ó´  — | j                   }t        |t        «      r|j                  }t        |t        «      r't        |j
                  t        «      r|j
                  }n]t        |t        «      r|}nJd|› d|j                  j                  › d�}t        || j                  | j                  «       | j                  S |j                   j                  j                  t        «      }|€| j                  S |j                  di «      j                  d«      }|dur5t!        |j                   j"                  | j                  | j                  «       | j                  S )z1Raise an error if from_attributes is not enabled.z
ctx.type: ú
 (of type ú)rÐ   Úfrom_attributesT)rš   ro   r?   Úitemr9   r¬   r:   rd   rº   Úerror_unexpected_behaviorr‘   r©   r¦   ÚmetadatarÈ   ÚMETADATA_KEYÚerror_from_attributesÚname)r‹   Úctx_typeÚ
model_typeÚdetailÚpydantic_metadatarÙ   s         rV   r‚   r‚   %  s  € ð �x‰x€HÜ�(œHÔ%Ø—=‘=ˆÜ�(œLÔ)¬j¸×9JÑ9JÌHÔ.UØ×&Ñ&‰
Ü	�HœhÔ	'Ø‰
à˜h˜Z z°(×2DÑ2D×2MÑ2MÐ1NÈaÐPˆÜ! &¨#¯'©'°3·;±;Ô?Ø×&Ñ&Ð&Ø"Ÿ™×0Ñ0×4Ñ4´\ÓBÐØÐ Ø×&Ñ&Ð&Ø'×+Ñ+¨H°bÓ9×=Ñ=Ð>OÓP€OØ˜dÑ"Ü˜jŸo™o×2Ñ2°C·G±G¸S¿[¹[ÔIØ×"Ñ"Ð"rX   c                  óŠ   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Ze	dd„«       Z
dd„Zy	)ÚPydanticModelFieldz5Based on mypy.plugins.dataclasses.DataclassAttribute.c	                ót   — || _         || _        || _        || _        || _        || _        || _        || _        y r[   )rß   ÚaliasÚhas_dynamic_aliasÚhas_defaultÚlineÚcolumnrš   r—   )	rb   rß   rç   rè   ré   rê   rë   rš   r—   s	            rV   ra   zPydanticModelField.__init__?  s>   € ð ˆŒ	ØˆŒ
Ø!2ˆÔØ&ˆÔØˆŒ	ØˆŒØˆŒ	Øˆ�	rX   c                óÚ   — | j                  |||«      }|r| j                  ||«      nt        t        j                  «      }t        ||d|s| j                  rt        ¬«      S t        ¬«      S )zABased on mypy.plugins.dataclasses.DataclassAttribute.to_argument.N)ÚvariableÚtype_annotationÚinitializerÚkind)	Úto_varr	   r8   r>   Úexplicitr   ré   r   r   )rb   Úcurrent_infoÚtypedÚforce_optionalÚ	use_aliasr‘   rí   rî   s           rV   Úto_argumentzPydanticModelField.to_argumentS  sl   € ð —;‘;˜|¨S°)Ó<ˆÙAF˜$×*Ñ*¨<¸Ô=ÌGÔT]×TfÑTfÓLgˆÜØØ+ØÙ"0°D×4DÒ4D”ô	
ð 	
ô KTô	
ð 	
rX   c                ór  — | j                   �‰t        | j                  dd«      �rt        j                  |j
                  j                  «      5  t        | j                   | j                  j                  j                  t        |«      i«      cddd«       S | j                   S # 1 sw Y   | j                   S xY w)zABased on mypy.plugins.dataclasses.DataclassAttribute.expand_type.NÚ	self_type)rš   r™   r—   r6   Ústrict_optional_setrc   Ústrict_optionalr	   rù   ÚidrC   )rb   ró   r‘   s      rV   r	   zPydanticModelField.expand_typee  s�   € ð �9‰9Ð ¤W¨T¯Y©Y¸ÀTÓ%JÐ%Vô
 ×*Ñ*¨3¯;©;×+FÑ+FÓGñ eÜ" 4§9¡9¨t¯y©y×/BÑ/B×/EÑ/EÄ}ÐUaÓGbÐ.cÓd÷eñ eà�y‰yÐ÷eà�y‰yÐús   Á?B"Â"B6c                óˆ   — |r| j                   �| j                   }n| j                  }t        || j                  ||«      «      S )z<Based on mypy.plugins.dataclasses.DataclassAttribute.to_var.)rç   rß   r)   r	   )rb   ró   r‘   rö   rß   s        rV   rñ   zPydanticModelField.to_varq  s:   € á˜Ÿ™Ð/Ø—:‘:‰Dà—9‘9ˆDä�4˜×)Ñ)¨,¸Ó<Ó=Ð=rX   c                óÚ   — | j                   sJ ‚| j                  | j                  | j                  | j                  | j
                  | j                  | j                   j                  «       dœS )ú?Based on mypy.plugins.dataclasses.DataclassAttribute.serialize.)rß   rç   rè   ré   rê   rë   rš   )rš   rß   rç   rè   ré   rê   rë   Ú	serialize©rb   s    rV   r   zPydanticModelField.serializez  sV   € à�yŠyÐˆyà—I‘IØ—Z‘ZØ!%×!7Ñ!7Ø×+Ñ+Ø—I‘IØ—k‘kØ—I‘I×'Ñ'Ó)ñ
ð 	
rX   c                ón   — |j                  «       }t        |j                  d«      |«      } | d||dœ|¤ŽS )úABased on mypy.plugins.dataclasses.DataclassAttribute.deserialize.rš   )rš   r—   r£   )Úcopyr3   Úpop)r�   r—   Údatar‘   Útyps        rV   ÚdeserializezPydanticModelField.deserialize‡  s9   € ð �y‰y‹{ˆÜ(¨¯©°&Ó)9¸3Ó?ˆÙÐ/˜ $Ñ/¨$Ñ/Ð/rX   c                óæ   — | j                   �Yt        j                  |j                  j                  «      5  t        | j                   || j                  «      | _         ddd«       yy# 1 sw Y   yxY w)zxExpands type vars in the context of a subtype when an attribute is inherited
        from a generic super type.
        N)rš   r6   rú   rc   rû   r7   r—   )rb   Úsub_typer‘   s      rV   Úexpand_typevar_from_subtypez.PydanticModelField.expand_typevar_from_subtypeŽ  sb   € ð �9‰9Ð Ü×*Ñ*¨3¯;©;×+FÑ+FÓGñ TÜ3°D·I±I¸xÈÏÉÓS�”	÷Tð Tð !÷Tð Tús   ¶'A'Á'A0N)rß   r·   rç   z
str | Nonerè   r¹   ré   r¹   rê   Úintrë   r  rš   úType | Noner—   r(   )ró   r(   rô   r¹   rõ   r¹   rö   r¹   r‘   r1   rµ   r   )ró   r(   r‘   r1   rµ   r  )ró   r(   r‘   r1   rö   r¹   rµ   r)   ©rµ   r   )r—   r(   r  r   r‘   r1   rµ   rå   )r
  r(   r‘   r1   rµ   r¶   )rº   r»   r¼   r½   ra   r÷   r	   rñ   r   Úclassmethodr  r  r£   rX   rV   rå   rå   <  sÀ   „ Ù?ðàðð ðð  ð	ð
 ðð ðð ðð ðð óð(
àð
ð ð
ð ð	
ð
 ð
ð -ð
ð 
ó
ó$
ó>ó
ð ò0ó ð0ôTrX   rå   c                  ó0   — e Zd ZdZd„ Zedd„«       Zdd„Zy)ÚPydanticModelClassVarz•Based on mypy.plugins.dataclasses.DataclassAttribute.

    ClassVars are ignored by subclasses.

    Attributes:
        name: the ClassVar name
    c                ó   — || _         y r[   ©rß   )rb   rß   s     rV   ra   zPydanticModelClassVar.__init__   s	   € Øˆ�	rX   c                ó2   — |j                  «       } | di |¤ŽS )r  r£   )r  )r�   r  s     rV   r  z!PydanticModelClassVar.deserialize£  s   € ð �y‰y‹{ˆÙ‰{�T‰{ÐrX   c                ó   — d| j                   iS )rÿ   rß   r  r  s    rV   r   zPydanticModelClassVar.serialize©  s   € ð �D—I‘Ið
ð 	
rX   N)r  r   rµ   r  r  )rº   r»   r¼   r½   ra   r  r  r   r£   rX   rV   r  r  —  s%   „ ñòð òó ðô

rX   r  c                  ó@  — e Zd ZU dZh d£Zded<   	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Z		 	 	 	 	 	 dd	„Z
dd
„Zdd„Z	 	 	 	 	 	 	 	 dd„Zd d„Z	 	 	 	 	 	 	 	 	 	 d!d„Z	 	 	 	 	 	 	 	 d"d„Zd#d„Zd$d%d„Zed&d„«       Zed'd„«       Z	 	 	 	 	 	 	 	 	 	 	 	 d(d„Zd)d„Zed*d„«       Zy)+rŽ   z¸Transform the BaseModel subclass according to the plugin settings.

    Attributes:
        tracked_config_fields: A set of field configs that the plugin has to track their value.
    >   ÚextraÚfrozenÚalias_generatorrÙ   Úpopulate_by_namezset[str]Útracked_config_fieldsc                ó<   — || _         || _        || _        || _        y r[   )Ú_clsÚ_reasonÚ_apir]   )rb   r�   r�   r‘   r]   s        rV   ra   z!PydanticModelTransformer.__init__¿  s!   € ð ˆŒ	ØˆŒØˆŒ	à*ˆÕrX   c                óæ  — | j                   j                  }t        d„ |j                  dd D «       «      }| j	                  «       }| j                  ||«      \  }}|�|€y|D ]  }|j                  �Œ y t        d„ |j                  dd D «       «      }| j                  ||||«       | j                  |||«       | j                  || j                  |j                  du ¬«       | j                  «        |D �ci c]  }|j                  |j                  «       “Œ c}|D �ci c]  }|j                  |j                  «       “Œ c}|j                  «       dœ|j                   t"        <   yc c}w c c}w )	a†  Configures the BaseModel subclass according to the plugin settings.

        In particular:

        * determines the model config and fields,
        * adds a fields-aware signature for the initializer and construct methods
        * freezes the class if frozen = True
        * stores the fields, config, and if the class is settings in the mypy metadata for access by subclasses
        c              3  ó@   K  — | ]  }t         |j                  v –— Œ y ­wr[   )ÚROOT_MODEL_FULLNAMErg   ri   s     rV   rl   z5PydanticModelTransformer.transform.<locals>.<genexpr>×  s   è ø€ Ò[ÀTÔ/°4·=±=Ô@Ñ[ùs   ‚NéÿÿÿÿFc              3  óB   K  — | ]  }|j                   t        k(  –— Œ y ­wr[   )rg   ÚBASESETTINGS_FULLNAMEri   s     rV   rl   z5PydanticModelTransformer.transform.<locals>.<genexpr>á  s   è ø€ Ò[ÀT˜$Ÿ-™-Ô+@Õ@Ñ[ùrm   T)r  )ÚfieldsÚ
class_varsrÐ   )r  r—   rq   rr   Úcollect_configÚcollect_fields_and_class_varsrš   Úadd_initializerÚadd_model_construct_methodÚ
set_frozenr  r  Úadjust_decorator_signaturesrß   r   Úget_values_dictrÜ   rÝ   )	rb   r—   Úis_root_modelrÐ   r&  r'  ÚfieldÚis_settingsÚ	class_vars	            rV   r’   z"PydanticModelTransformer.transformÌ  sV  € ð �y‰y�~‰~ˆÜÑ[ÈTÏXÉXÐVYÐWYÈ]Ô[Ó[ˆØ×$Ñ$Ó&ˆØ!×?Ñ?ÀÈÓVÑˆ�
Øˆ>˜ZÐ/àØò 	ˆEØ�z‰zÑ!Ùð	ô Ñ[ÈTÏXÉXÐVYÐWYÈ]Ô[Ó[ˆØ×Ñ˜V V¨[¸-ÔHØ×'Ñ'¨°¸ÔDØ�‰˜ §	¡	°&·-±-À4Ð2GˆÔHà×(Ñ(Ô*ð CIÖI¸�u—z‘z 5§?¡?Ó#4Ñ4ÒIØR\Ö]ÀY˜9Ÿ>™>¨9×+>Ñ+>Ó+@Ñ@Ò]Ø×,Ñ,Ó.ñ'
ˆ�‰”lÑ#ð ùò JùÚ]s   Ã9"E)Ä!"E.c                ó,  ‡— | j                   j                  j                  j                  «       D ]â  \  }}t	        |j
                  t        «      sŒ!|j
                  j                  d   Št	        ‰t        «      sŒKt	        ‰j                  t        «      sŒf‰j                  j                  t        v sŒƒ‰j                  j                  t        k(  r(t        ˆfd„t        ‰j                   «      D «       «      rŒÈd|j
                  j"                  _        Œä y)a¿  When we decorate a function `f` with `pydantic.validator(...)`, `pydantic.field_validator`
        or `pydantic.serializer(...)`, mypy sees `f` as a regular method taking a `self` instance,
        even though pydantic internally wraps `f` with `classmethod` if necessary.

        Teach mypy this by marking any function whose outermost decorator is a `validator()`,
        `field_validator()` or `serializer()` call as a `classmethod`.
        r   c              3  óŽ   •K  — | ]<  \  }}‰j                   |   d k(  xr! t        |t        «      xr |j                  dk(  –— Œ> y­w)ÚmodeÚafterN)Ú	arg_namesro   r$   Úvalue)rj   Úir¡   Ú	first_decs      €rV   rl   zGPydanticModelTransformer.adjust_decorator_signatures.<locals>.<genexpr>  sO   øè ø€ ò  á &  3ð &×/Ñ/°Ñ2°fÑ<ÒrÄÈCÔQXÓAYÒrÐ^a×^gÑ^gÐkrÑ^rÓrñ ùs   ƒAATN)r  r—   Únamesr«   ro   rp   r   Úoriginal_decoratorsr   Úcalleer   rg   ÚDECORATOR_FULLNAMESÚMODEL_VALIDATOR_FULLNAMErq   Ú	enumeraterŸ   ÚfuncÚis_class)rb   rß   ru   r:  s      @rV   r-  z4PydanticModelTransformer.adjust_decorator_signaturesð  sÇ   ø€ ð Ÿ™Ÿ™×-Ñ-×3Ñ3Ó5ò 	2‰IˆD�#Ü˜#Ÿ(™(¤IÕ.ØŸH™H×8Ñ8¸Ñ;�	ä˜y¬(Õ3Ü" 9×#3Ñ#3´XÕ>Ø!×(Ñ(×1Ñ1Ô5HÒHð "×(Ñ(×1Ñ1Ô5MÒMÜó  ä*3°I·N±NÓ*Cô õ ð .2�C—H‘H—M‘MÕ*ñ#	2rX   c           	     óö  — | j                   }t        «       }d}d}|j                  j                  «       D ]-  \  }}| j	                  ||«      }|sŒd}|j                  |«       Œ/ d}|j                  j                  D �]  }t        |t        t        f«      sŒt        |t        «      �r"|j                  d   }	t        |	t        «      r|	j                  dk7  rŒ[t        |j                  t        «      rdt!        |j                  j"                  |j                  j$                  «      D ]+  \  }
}|
€Œ	|j                  | j	                  |
|d¬«      «       Œ- �nt        |j                  t&        «      rý|j                  j                  D ]A  \  }}t        |t(        «      sŒ|j                  | j	                  |j*                  |«      «       ŒC n¢t        |t        «      r’|j                  dk7  r�Œo|j                  j                  D ]h  }t        |t        «      sŒ|j                  d   }	t        |	t        «      sŒ4|j                  | j	                  |	j                  |j                  «      «       Œj |r| j,                  j/                  d|«        nd}�Œ |s|rF|rD|j0                  r8|j2                  s,| j4                  j6                  rt9        | j,                  |«       |j:                  j<                  d	d D ]�  }t>        |j@                  vrŒ| j,                  jC                  tE        |jF                  «      «       |j@                  t>           d
   j                  «       D ]  \  }}|jI                  ||«       Œ Œƒ |S )zhCollects the values of the config attributes that are used by the plugin, accounting for parent classes.FTNr   Úmodel_config)Ú	lax_extraÚConfigzYSpecifying config in two places is ambiguous, use either Config attribute or class kwargsr…   rÐ   )%r  ÚModelConfigDataÚkeywordsr«   Úget_config_updateÚupdateÚdefsÚbodyro   r   r   Úlvaluesr   rß   Úrvaluer   Úzipr7  rŸ   r   r$   r8  r  ÚfailÚhas_alias_generatorr  r]   rÂ   Úerror_required_dynamic_aliasesr—   rr   rÝ   rÜ   Úadd_plugin_dependencyr5   rg   Ú
setdefault)rb   r�   rÐ   Úhas_config_kwargsÚhas_config_from_namespacerß   ÚexprÚconfig_dataÚstmtÚlhsÚarg_namer¡   Úkey_exprÚ
value_exprÚsubstmtr—   r8  s                    rV   r(  z'PydanticModelTransformer.collect_config  sò  € à�i‰iˆÜ Ó"ˆà!ÐØ$)Ð!ð Ÿ,™,×,Ñ,Ó.ò 	+‰JˆD�$Ø×0Ñ0°°tÓ<ˆKÚØ$(Ð!Ø—‘˜kÕ*ð		+ð "&ˆØ—H‘H—M‘Mó &	-ˆDÜ˜d¤^´XÐ$>Ô?Øä˜$¤Õ/Ø—l‘l 1‘o�Ü! #¤xÔ0°C·H±HÀÒ4NØä˜dŸk™k¬8Ô4Ü),¨T¯[©[×-BÑ-BÀDÇKÁK×DTÑDTÓ)Uò ]™˜ #Ø#Ð+Ø$ØŸ™ d×&<Ñ&<¸XÀsÐVZÐ&<Ó&[Õ\ò]ô   §¡¬XÔ6Ø04·±×0AÑ0Aò ZÑ,˜ *Ü)¨(´GÔ<Ø$ØŸ™ d×&<Ñ&<¸X¿^¹^ÈZÓ&XÕYñZô
 ˜D¤(Ô+Ø—9‘9 Ò(ÙØ#Ÿy™yŸ~™~ò T�GÜ% g¬~Ô>Ø Ø!Ÿ/™/¨!Ñ,�CÜ% c¬8Ô4Ø Ø—M‘M $×"8Ñ"8¸¿¹À7Ç>Á>Ó"RÕSðTñ !Ø—	‘	—‘ØoØôñ à(,Ò%ðM&	-ñP Ñ 9áØ×.Ò.Ø×/Ò/Ø×&Ñ&×DÒDä.¨t¯y©y¸$Ô?à—H‘H—L‘L  Ð$ò 	/ˆDÜ 4§=¡=Ñ0Øð �I‰I×+Ñ+Ô,AÀ$Ç-Á-Ó,PÔQØ#Ÿ}™}¬\Ñ:¸8ÑD×JÑJÓLò /‘��eØ×!Ñ! $¨Õ.ñ/ð	/ð ˆrX   c                óÄ  — | j                   }i }i }t        |j                  j                  dd «      D �]v  }t        |j
                  vrŒ| j                  j                  t        |j                  «      «       |j
                  t           d   j                  «       D ]Ç  \  }}t        j                  ||| j                  «      }	|	j                  |j                  | j                  «       |	||<   |j                  j                  j                  |«      }
|
sŒz|
j                   sŒ‡t#        |
j                   t$        «      rŒ¢| j                  j'                  d|
j                   «       ŒÉ |j
                  t           d   j                  «       D ]  \  }}t(        j                  |«      ||<   Œ �Œy t+        «       }t+        «       }| j-                  |j.                  «      D ]Ñ  }| j1                  |||«      }t#        |t        «      rb|j2                  d   }|r&|j4                  dk7  rt7        | j                  |«       Œ]|j9                  |j4                  «       |||j4                  <   Œˆt#        |t(        «      sŒ™|j2                  d   }|j9                  |j4                  «       |||j4                  <   ŒÓ t;        |j=                  «       «      t;        |j=                  «       «      fS )zACollects the fields for the model, accounting for parent classes.r…   r#  r&  z7BaseModel field may only be overridden by another fieldr'  r   Úroot)r  Úreversedr—   rr   rÝ   rÜ   r  rS  r5   rg   r«   rå   r  r  r;  rÈ   rp   ro   r)   rP  r  ÚsetÚ%_get_assignment_statements_from_blockrK  Ú$collect_field_or_class_var_from_stmtrM  rß   Ú error_extra_fields_on_root_modelÚaddÚlistÚvalues)rb   rD  r/  r�   Úfound_fieldsÚfound_class_varsr—   rß   r  r0  Úsym_nodeÚcurrent_field_namesÚcurrent_class_vars_namesrY  Úmaybe_fieldrZ  s                   rV   r)  z6PydanticModelTransformer.collect_fields_and_class_varsW  s]  € ð �i‰iˆð 79ˆØ=?ÐÜ˜SŸX™XŸ\™\¨!¨BÐ/Ó0ó 	QˆDô  4§=¡=Ñ0Øð �I‰I×+Ñ+Ô,AÀ$Ç-Á-Ó,PÔQà"Ÿm™m¬LÑ9¸(ÑC×IÑIÓKò ‘
��dÜ*×6Ñ6°t¸TÀ4Ç9Á9ÓM�ð
 ×1Ñ1°#·(±(¸D¿I¹IÔFØ%*�˜TÑ"àŸ8™8Ÿ>™>×-Ñ-¨dÓ3�Ú §£´jÀÇÁÔPSÕ6TØ—I‘I—N‘NØQØ Ÿ™õðð  #Ÿm™m¬LÑ9¸,ÑG×MÑMÓOò Q‘
��dÜ)>×)JÑ)JÈ4Ó)PÐ  Ò&òQð5	Qô< ),«ÐÜ-0«UÐ Ø×>Ñ>¸s¿x¹xÓHò 	9ˆDØ×CÑCÀDÈ,ÐXhÓiˆKÜ˜+Ô'9Ô:Ø—l‘l 1‘o�Ù  S§X¡X°Ò%7Ü4°T·Y±YÀÕEà'×+Ñ+¨C¯H©HÔ5Ø-8�L §¡Ò*Ü˜KÔ)>Õ?Ø—l‘l 1‘o�Ø(×,Ñ,¨S¯X©XÔ6Ø-8Ð  §¡Ò*ð	9ô �L×'Ñ'Ó)Ó*¬DÐ1A×1HÑ1HÓ1JÓ,KÐKÐKrX   c              #  ó  K  — |j                   D ](  }|j                  rŒ| j                  |«      E d {  –—†  Œ* |j                  �;|j                  j                  s$| j                  |j                  «      E d {  –—†  y y y 7 ŒN7 Œ	­wr[   )rL  Úis_unreachablerc  Ú	else_body)rb   rY  rL  s      rV   Ú,_get_assignment_statements_from_if_statementzEPydanticModelTransformer._get_assignment_statements_from_if_statement˜  s{   è ø€ Ø—I‘Iò 	LˆDØ×&Ó&Ø×EÑEÀdÓK×KÑKð	Lð �>‰>Ð%¨d¯n©n×.KÒ.KØ×AÑAÀ$Ç.Á.ÓQ×QÑQð /LÐ%ð LøàQús'   ‚BŸB³B´ABÁ:BÁ;BÂBc              #  ó°   K  — |j                   D ]A  }t        |t        «      r|–— Œt        |t        «      sŒ)| j	                  |«      E d {  –—†  ŒC y 7 Œ­wr[   )rL  ro   r   r   rr  )rb   ÚblockrY  s      rV   rc  z>PydanticModelTransformer._get_assignment_statements_from_blockŸ  sN   è ø€ Ø—J‘Jò 	SˆDÜ˜$¤Ô/Ø“
Ü˜D¤&Õ)Ø×LÑLÈTÓR×RÑRñ		Sð Sús   ‚5A¸AÁAÁAc           
     óŽ  — | j                   }|j                  d   }t        |t        «      r.t	        j
                  |j                  «      r|j                  dk(  ry|j                  sÃt        |j                  t        «      rƒt        |j                  j                  t        «      r_t        |j                  j                  j                  t        «      r1|j                  j                  j                  j                  t        v ry|j                  |v ryt        | j                  |«       y|j                  d   }t        |t        «      syt	        j
                  |j                  «      r|j                  dk(  ry|j                  j                   j#                  |j                  «      }|€y|j$                  }t        |t&        «      ryt        |t(        «      r| j                  j+                  d|«       yt        |t,        «      sy|j.                  rt1        |j                  «      S t3        |j4                  «      }t        |t6        «      r5|j4                  j                  dk(  r| j                  j+                  d|«       | j9                  |«      }	|j4                  €ƒ|j:                  rw|j<                  rk| j                  j?                  |j                  d¬«      }
|
r|
|_        n:| j                  j+                  d	|«       tA        tB        jD                  «      |_        | jG                  |«      \  }}|r8|jH                  s,| jJ                  jL                  rtO        | j                  |«       | jQ                  ||j                  |«      }tS        |j                  ||	||jT                  |jV                  ||j                  ¬
«      S )a^  Get pydantic model field from statement.

        Args:
            stmt: The statement.
            model_config: Configuration settings for the model.
            class_vars: ClassVars already known to be defined on the model.

        Returns:
            A pydantic model field if it could find the field in statement. Otherwise, `None`.
        r   rD  NzFType aliases inside BaseModel definitions are not supported at runtimezdataclasses.InitVarz%InitVar is not supported in BaseModelT)Úis_finalzGNeed type argument for Final[...] with non-literal default in BaseModel)rß   rè   ré   rç   rê   rë   rš   r—   ),r  rM  ro   r   rF   Úis_valid_field_namerß   Ú
new_syntaxrN  r   r=  rg   r>  Úerror_untyped_fieldsr  r—   r;  rÈ   rp   r!   r'   rP  r)   Úis_classvarr  rB   rš   r:   Úget_has_defaultrv  Úis_inferredÚanalyze_simple_literal_typer8   r>   Ú
from_errorÚget_alias_infor  r]   rÂ   rR  Ú_infer_dataclass_attr_init_typerå   rê   rë   )rb   rY  rD  r'  r�   rZ  ru   rp   Ú	node_typeré   r  rç   rè   Ú	init_types                 rV   rd  z=PydanticModelTransformer.collect_field_or_class_var_from_stmt¦  sß  € ð �i‰iˆà�l‰l˜1‰oˆÜ˜#œxÔ(´×0KÑ0KÈCÏHÉHÔ0UÐY\×YaÑYaÐesÒYsØà�Šä˜4Ÿ;™;¬Ô1Ü˜tŸ{™{×1Ñ1´8Ô<Ü˜tŸ{™{×1Ñ1×8Ñ8¼(ÔCØ—K‘K×&Ñ&×-Ñ-×6Ñ6Ô:MÑMð
 à�x‰x˜:Ñ%àô ! §¡¨DÔ1Øà�l‰l˜1‰oˆÜ˜#œxÔ(Øä×*Ñ*¨3¯8©8Ô4¸¿¹ÀNÒ8RØà�h‰h�n‰n× Ñ  §¡Ó*ˆØˆ;ð à�x‰xˆÜ�dœOÔ,ð
 ä�dœIÔ&Ø�I‰I�N‰NØXØôð ä˜$¤Ô$ð
 ð ×ÒÜ(¨¯©Ó2Ð2ô $ D§I¡IÓ.ˆ	Ü�i¤Ô*¨y¯~©~×/FÑ/FÐJ_Ò/_Ø�I‰I�N‰NØ7Øôð
 ×*Ñ*¨4Ó0ˆà�8‰8Ð §¢°$×2BÒ2Bð —)‘)×7Ñ7¸¿¹ÈdÐ7ÓSˆCÙØ�•	à—	‘	—‘Ø]Øôô $¤I×$8Ñ$8Ó9�”	à#'×#6Ñ#6°tÓ#<Ñ ˆÐ Ù \×%BÒ%BÀt×GYÑGY×GwÒGwÜ*¨4¯9©9°dÔ;à×8Ñ8¸¸c¿h¹hÈÓMˆ	Ü!Ø—‘Ø/Ø#ØØ—‘Ø—;‘;ØØ—‘ô	
ð 		
rX   c                ó8  — |j                   }|j                  r|S t        |j                   «      }t        |t        «      s|S |j                   j                  d«      }|�r:t        |j                  t        «      rì|j                   j                  d«      }|sJ ‚|j                   r+t        t        |j                   |j                   |«      «      }nt        t        j                  «      S t        |t        «      r7|j                  t        t        t        gk(  rt!        |j"                  d   |«      S | j$                  j'                  d|j                   j(                  › d�|«       |S | j$                  j'                  d|j                   j(                  › d�|«       |S )zvInfer __init__ argument type for an attribute.

        In particular, possibly use the signature of __set__.
        Ú__set__rR   z(Unsupported signature for "__set__" in "ú"zUnsupported "__set__" in ")rš   ÚimplicitrB   ro   r:   rÈ   rp   r   Úget_containing_type_infor7   r8   r>   Úunannotatedr9   Ú	arg_kindsr   r
   rª   r  rP  rß   )	rb   ru   rß   r©   r�   ÚtÚsetterÚ
super_infoÚsetter_types	            rV   r€  z8PydanticModelTransformer._infer_dataclass_attr_init_type#  sG  € ð
 —(‘(ˆØ�<Š<ØˆNÜ˜CŸH™HÓ%ˆô ˜!œXÔ&ØˆNØ—‘—‘˜IÓ&ˆÚÜ˜&Ÿ+™+¤wÔ/ØŸV™V×<Ñ<¸YÓG�
Ù!Ð!�zØ—;’;Ü"1Ô2IÈ&Ï+É+ÐWX×W]ÑW]Ð_iÓ2jÓ"k‘Kä"¤9×#8Ñ#8Ó9Ð9Ü˜k¬<Ô8¸[×=RÑ=RÜÜÜðWò >ô
 3°;×3HÑ3HÈÑ3KÈQÓOÐOà—I‘I—N‘NÐ%MÈaÏfÉfÏkÉkÈ]ÐZ[Ð#\Ð^eÔfð ˆð —	‘	—‘Ð!;¸A¿F¹F¿K¹K¸=ÈÐJÈGÔTàˆrX   c           	     óÎ  — d| j                   j                  j                  v r.| j                   j                  j                  d   j                  sy| j                  j
                  }|j                  du}t        |j                  xr |j                   «      }| j                  |||||¬«      }|r3t        dk  r*|d   j                  t        k(  rt        nt        |d   _        |rÿ| j                  j!                  t"        «      j$                  }	d|	j                  v rÈ|	j                  d   j$                  }
|
�­|
j&                  �¡|
j&                  }t)        |j*                  «      D ]}  \  }}|j-                  d«      s|j-                  d«      sŒ)| j                  j/                  |j0                  |   «      }t3        ||«      }|j5                  t7        ||dt        «      «       Œ | j9                  ||«      sCt3        d	«      }|j5                  t7        |t;        t<        j>                  «      dt@        «      «       tC        | j                  | j                   d|tE        «       ¬
«       y)z§Adds a fields-aware `__init__` method to the class.

        The added `__init__` will be annotated with types vs. all `Any` depending on the plugin settings.
        ra   NT©rô   Úrequires_dynamic_aliasesrö   r1  )r…   r   r…   r   Ú__r¤   Úkwargs)rŸ   Úreturn_type)#r  r—   r;  Úplugin_generatedr]   rÁ   r  r¹   rQ  Úget_field_argumentsr‡   rð   r   r   r   r  rn   r%  rp   rš   r@  r7  Ú
startswithÚ	anal_typerª   r)   Úappendr   Úshould_init_forbid_extrar8   r>   rò   r   Ú
add_methodr;   )rb   r&  rÐ   r1  r/  rô   rö   r�  rŸ   Úbase_settings_nodeÚbase_settings_init_nodeÚ	func_typeÚarg_idxr[  Úanalyzed_variable_typerí   Úvars                    rV   r*  z(PydanticModelTransformer.add_initializerI  s  € ð ˜Ÿ™Ÿ™×-Ñ-Ñ-°d·i±i·n±n×6JÑ6JÈ:Ñ6V×6gÒ6gØà×"Ñ"×-Ñ-ˆØ×+Ñ+°4Ð7ˆ	Ü#'¨×(BÑ(BÒ(bÈ6×KbÑKbÐGbÓ#cÐ Ø×'Ñ'ØØØ%=ØØ#ð (ó 
ˆñ Ô/°9Ò<ð '+¨1¡g§l¡l´iÒ&?�7ÄWˆD�‰GŒLáØ!%§¡×!AÑ!AÔBWÓ!X×!]Ñ!]ÐØÐ/×5Ñ5Ñ5Ø*<×*BÑ*BÀ:Ñ*N×*SÑ*SÐ'Ø*Ð6Ð;R×;WÑ;WÐ;cØ 7× <Ñ <�IÜ-6°y×7JÑ7JÓ-Kò _Ñ)˜ Ø#×.Ñ.¨tÔ4¸H×<OÑ<OÐPSÔ<TØ$Ø15·±×1DÑ1DÀY×EXÑEXÐY`ÑEaÓ1bÐ.Ü#& xÐ1GÓ#H˜ØŸ™¤H¨XÐ7MÈtÔU\Ó$]Õ^ð_ð ×,Ñ,¨V°VÔ<Ü�h“-ˆCØ�K‰Kœ ¤g¬i×.@Ñ.@Ó&AÀ4ÌÓSÔTä�4—9‘9˜dŸi™i¨¸$ÌHËJÖWrX   c           	     óä  — | j                   j                  t        › d�| j                   j                  t        › d�«      g«      }t        |t	        «       g«      }t        t        d|«      |dt        «      }t        j                  | j                   j                  j                  «      5  | j                  |ddd|¬«      }ddd«       | j                  ||«      sCt        d«      }j                  t        |t        t         j"                  «      dt$        «      «       |gz   }t'        | j                   | j(                  d	|t+        | j(                  j,                  «      d¬
«       y# 1 sw Y   Œ§xY w)zäAdds a fully typed `model_construct` classmethod to the class.

        Similar to the fields-aware __init__ method, but always uses the field names (not aliases),
        and does not treat settings fields as optional.
        z.setz.strÚ_fields_setNTFr�  r’  Úmodel_construct)rŸ   r“  Úis_classmethod)r  Ú
named_typeÚBUILTINS_NAMErA   r;   r   r)   r   r6   rú   rc   rû   r•  r™  r˜  r8   r>   rò   r   rš  r  rC   r—   )	rb   r&  rÐ   r1  Úset_strÚoptional_set_strÚfields_set_argumentrŸ   r   s	            rV   r+  z3PydanticModelTransformer.add_model_construct_methodv  s8  € ð —)‘)×&Ñ&¬-¨¸Ð'=ÀÇ	Á	×@TÑ@TÔXeÐWfÐfjÐUkÓ@lÐ?mÓnˆÜ$ g¬x«zÐ%:Ó;ÐÜ&¤s¨=Ð:JÓ'KÐM]Ð_cÔelÓmÐÜ×&Ñ& t§y¡y×'8Ñ'8×'HÑ'HÓIñ 	Ø×+Ñ+Ø˜d¸UÈeÐalð ,ó ˆD÷	ð ×,Ñ,¨V°VÔ<Ü�h“-ˆCØ�K‰Kœ ¤g¬i×.@Ñ.@Ó&AÀ4ÌÓSÔTà#Ð$ tÑ+ˆäØ�I‰IØ�I‰IØØÜ% d§i¡i§n¡nÓ5Øö	
÷	ð 	ús   Â)E&Å&E/c                óä  — | j                   j                  }|D �]:  }|j                  j                  |j                  «      }|�¦|j
                  }t        |t        «      r||_        ŒOt        |t        «      r1| j                  j                  s| j                  j                  «        Œ�	 t        |«      }d|› d|j                   › d�}	t#        |	| j                  | j                   «       ŒÑ|j%                  ||d¬«      }||_        ||_        |j&                  dz   |j                  z   |_        t+        t,        |«      |j                  |j                  <   �Œ= y# t        $ r t        |«      }Y Œ¹w xY w)z§Marks all fields as properties so that attempts to set them trigger mypy errors.

        This is the same approach used by the attrs and dataclasses plugins.
        Nzsym_node.node: r×   rØ   F)rö   ú.)r  r—   r;  rÈ   rß   rp   ro   r)   Úis_propertyr!   r  Úfinal_iterationÚdeferr·   Ú	TypeErrorÚreprrd   rÛ   rñ   rg   Ú	_fullnamer%   r   )
rb   r&  r‘   r  r—   r0  rk  r   Úvar_strrâ   s
             rV   r,  z#PydanticModelTransformer.set_frozen”  s'  € ð
 �y‰y�~‰~ˆØó 	BˆEØ—z‘z—~‘~ e§j¡jÓ1ˆHØÐ#Ø—m‘m�Ü˜c¤3Ô'Ø&,�C•OÜ ¤_Ô5¸d¿i¹i×>WÒ>Wà—I‘I—O‘OÕ%ð,Ü"% c£(˜ð  /¨w¨i°zÀ#Ç-Á-ÀÐPQÐR�FÜ-¨f°d·i±iÀÇÁÕKà—l‘l 4¨¸�lÓ>�Ø�”Ø"(�”Ø $§¡°Ñ 3°c·h±hÑ >�”Ü'6´t¸SÓ'A�—
‘
˜3Ÿ8™8Ó$ñ/	Bøô %ò ,ä"& s£)šð,ús   Â*EÅE/Å.E/c                óþ  — || j                   vry|dk(  rft        |t        «      r|j                  dk(  }n:t        |t        «      r|j
                  dk(  }n|st        || j                  |«       yt        |¬«      S |dk(  r/d}t        |t        «      r|j                  dk(  rd}t        |¬	«      S t        |t        «      r(|j                  d
v rt        di ||j                  dk(  i¤ŽS t        || j                  |«       y)zÐDetermines the config update due to a single kwarg in the ConfigDict definition.

        Warns if a tracked config attribute is set to a value the plugin doesn't know how to interpret (e.g., an int)
        Nr  Úforbid)Úforbid_extrar  Túbuiltins.NoneF)rQ  )úbuiltins.Truezbuiltins.Falser·  r£   )r  ro   r$   r8  r   rß   Úerror_invalid_config_valuer  rG  r   rg   )rb   rß   r¡   rE  rµ  rQ  s         rV   rI  z*PydanticModelTransformer.get_config_update³  sê   € ð
 �t×1Ñ1Ñ1ØØ�7Š?Ü˜#œwÔ'Ø"Ÿy™y¨HÑ4‘Ü˜C¤Ô,Ø"Ÿx™x¨8Ñ3‘á ô /¨t°T·Y±YÀÔDØÜ"°Ô=Ð=ØÐ$Ò$Ø"&ÐÜ˜#œxÔ(¨S¯\©\¸_Ò-LØ&+Ð#Ü"Ð7JÔKÐKÜ�cœ8Ô$¨¯©Ð9\Ñ)\Ü"ÑM d¨C¯L©L¸OÑ,KÐ%LÑMÐMÜ" 4¨¯©°CÔ8ØrX   c                óÆ  — | j                   }t        |t        «      ryt        |t        «      r¤t        |j                  t
        «      rŠ|j                  j                  t        k(  rmt        |j                  |j                  «      D ]I  \  }}|�|dk(  r|j                  t        uc S |dk(  sŒ't        |t        «      xr |j                  dk(   c S  yt        |t        «       S )zUReturns a boolean indicating whether the field defined in `stmt` is a required field.Fr�   rž   r¶  )rN  ro   r&   r   r=  r"   rg   r}   rO  rŸ   r7  rd   r   r   )rY  rW  r¡   rß   s       rV   r{  z(PydanticModelTransformer.get_has_defaultÖ  sÀ   € ð �{‰{ˆÜ�dœHÔ%àÜ�dœHÔ%¬*°T·[±[Ä'Ô*JÈtÏ{É{×OcÑOcÔguÒOuô
 ! §¡¨D¯N©NÓ;ò _‘	��Tà�< 4¨9Ò#4ØŸ=™=´Ð<Ò<ØÐ,Ó,Ü *¨3´Ó 9Ò ]¸c¿l¹lÈoÑ>]Ð^Ò^ð_ð ä˜d¤LÓ1Ð1Ð1rX   c                ót  — | j                   }t        |t        «      ryt        |t        «      r7t        |j                  t
        «      r|j                  j                  t        k(  syt        |j                  «      D ];  \  }}|dk7  rŒ|j                  |   }t        |t        «      r|j                  dfc S  y y)a  Returns a pair (alias, has_dynamic_alias), extracted from the declaration of the field defined in `stmt`.

        `has_dynamic_alias` is True if and only if an alias is provided, but not as a string literal.
        If `has_dynamic_alias` is True, `alias` will be None.
        )NFrç   F)NT)rN  ro   r&   r   r=  r"   rg   r}   r@  r7  rŸ   r$   r8  )rY  rW  r9  r[  r¡   s        rV   r  z'PydanticModelTransformer.get_alias_infoì  s¢   € ð �{‰{ˆÜ�dœHÔ%àô �tœXÔ&¬:°d·k±kÄ7Ô+KÐPT×P[ÑP[×PdÑPdÔhvÒPvð ä$ T§^¡^Ó4ò 	"‰KˆAˆxØ˜7Ò"ØØ—)‘)˜A‘,ˆCÜ˜#œwÔ'Ø—y‘y %Ð'Ò'á!ð	"ð rX   c           
     óº   — | j                   j                  }|D �cg c]4  }|r|j                  s$|j                  |||xs ||| j                  ¬«      ‘Œ6 }}|S c c}w )zÈHelper function used during the construction of the `__init__` and `model_construct` method signatures.

        Returns a list of mypy Argument instances for use in the generated signatures.
        )rô   rõ   rö   r‘   )r  r—   rè   r÷   r  )	rb   r&  rô   rö   r�  r1  r—   r0  Ú	argumentss	            rV   r•  z,PydanticModelTransformer.get_field_arguments  sr   € ð �y‰y�~‰~ˆð  ö

ð Ù %×"9Ò"9ð ×ÑØØØ7ÒF¸;Ø#Ø—I‘Ið õ ð

ˆ	ð 

ð Ðùò

s   ›9Ac                ó¬   — |j                   s&| j                  |t        |j                  «      «      ry|j                  ry| j
                  j                  S )a@  Indicates whether the generated `__init__` should get a `**kwargs` at the end of its signature.

        We disallow arbitrary kwargs if the extra config setting is "forbid", or if the plugin config says to,
        *unless* a required dynamic alias is present (since then we can't determine a valid signature).
        FT)r  Úis_dynamic_alias_presentr¹   rQ  rµ  r]   rÀ   )rb   r&  rÐ   s      rV   r™  z1PydanticModelTransformer.should_init_forbid_extra"  sI   € ð ×&Ò&Ø×,Ñ,¨V´T¸&×:TÑ:TÓ5UÔVØØ×ÒØØ×!Ñ!×3Ñ3Ð3rX   c                ó\   — | D ]  }|j                   sŒ y |r| D ]  }|j                  �Œ y y)z‘Returns whether any fields on the model have a "dynamic alias", i.e., an alias that cannot be
        determined during static analysis.
        TF)rè   rç   )r&  rQ  r0  s      rV   r¾  z1PydanticModelTransformer.is_dynamic_alias_present/  sE   € ð
 ò 	ˆEØ×&Ó&Ùð	ñ Øò  �Ø—;‘;Ñ&Ùð ð rX   N)
r�   r   r�   zExpression | Statementr‘   r1   r]   r\   rµ   r¶   )rµ   r¹   )rµ   r¶   )rµ   rG  )rD  rG  r/  r¹   rµ   zJtuple[list[PydanticModelField] | None, list[PydanticModelClassVar] | None])rY  r   rµ   úIterator[AssignmentStmt])rt  r   rµ   rÀ  )rY  r   rD  rG  r'  z dict[str, PydanticModelClassVar]rµ   z1PydanticModelField | PydanticModelClassVar | None)ru   r%   rß   r·   r©   r   rµ   r  )
r&  úlist[PydanticModelField]rÐ   rG  r1  r¹   r/  r¹   rµ   r¶   )r&  rÁ  rÐ   rG  r1  r¹   rµ   r¶   )r&  rÁ  r‘   r1   r  r¹   rµ   r¶   )F)rß   r·   r¡   r   rE  r¹   rµ   úModelConfigData | None)rY  r   rµ   r¹   )rY  r   rµ   ztuple[str | None, bool])r&  rÁ  rô   r¹   rö   r¹   r�  r¹   r1  r¹   rµ   úlist[Argument])r&  rÁ  rÐ   rG  rµ   r¹   )r&  rÁ  rQ  r¹   rµ   r¹   )rº   r»   r¼   r½   r  rÕ   ra   r’   r-  r(  r)  rr  rc  rd  r€  r*  r+  r,  rI  Ústaticmethodr{  r  r•  r™  r¾  r£   rX   rV   rŽ   rŽ   °  s¡  … ñò'Ð˜8ó ð+àð+ð 'ð+ð -ð	+ð
 ,ð+ð 
ó+ó"óH2ó6JðX?LØ+ð?LØ<@ð?Là	Só?LóBRóSð{
Ø"ð{
Ø2Að{
ØOoð{
à	:ó{
óz$ðL+XØ.ð+XØ8Gð+XØVZð+XØkoð+Xà	ó+XðZ
Ø.ð
Ø8Gð
ØVZð
à	ó
ó<Bô>!ðF ò2ó ð2ð* òó ðð6à(ðð ðð ð	ð
 #'ðð ðð 
óó44ð òó ñrX   rŽ   c                  óN   — e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd
d„Zdd„Zy)rG  z(Pydantic mypy plugin model config class.Nc                óJ   — || _         || _        || _        || _        || _        y r[   )rµ  r  rÙ   r  rQ  )rb   rµ  r  rÙ   r  rQ  s         rV   ra   zModelConfigData.__init__A  s+   € ð )ˆÔØˆŒØ.ˆÔØ 0ˆÔØ#6ˆÕ rX   c                óp   — | j                   j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}S c c}}w )z†Returns a dict of Pydantic model config names to their values.

        It includes the config if config value is not `None`.
        )Ú__dict__r«   )rb   ÚkÚvs      rV   r.  zModelConfigData.get_values_dictO  s1   € ð
 "&§¡×!4Ñ!4Ó!6×H™˜˜A¸!¹-��1‘ÓHÐHùÓHs   ž
2©2c                óp   — |€y|j                  «       j                  «       D ]  \  }}t        | ||«       Œ y)z$Update Pydantic model config values.N)r.  r«   rË   )rb   rÐ   rÉ  rÊ  s       rV   rJ  zModelConfigData.updateV  s;   € àˆ>ØØ×*Ñ*Ó,×2Ñ2Ó4ò 	 ‰DˆAˆqÜ�D˜!˜QÕñ	 rX   c                ó8   — t        | |«      €t        | ||«       yy)zFSet default value for Pydantic model config if config value is `None`.N)r™   rË   )rb   rÑ   r8  s      rV   rT  zModelConfigData.setdefault]  s    € ä�4˜ÓÐ%Ü�D˜#˜uÕ%ð &rX   )NNNNN)
rµ  úbool | Noner  rÍ  rÙ   rÍ  r  rÍ  rQ  rÍ  rÔ   )rÐ   rÂ  rµ   r¶   )rÑ   r·   r8  r   rµ   r¶   )rº   r»   r¼   r½   ra   r.  rJ  rT  r£   rX   rV   rG  rG  >  s[   „ Ù2ð %)Ø"Ø'+Ø(,Ø+/ð7à!ð7ð ð7ð %ð	7ð
 &ð7ð )ó7óIó ô&rX   rG  zpydantic-ormzInvalid from_attributes callÚPydanticzpydantic-configzInvalid config valuezpydantic-aliaszDynamic alias disallowedzpydantic-unexpectedzUnexpected behaviorzpydantic-fieldzUntyped field disallowedzInvalid Field defaultsz!Extra field on RootModel subclassc                ó<   — |j                  d| › d�|t        ¬«       y)zCEmits an error when the model does not have `from_attributes=True`.r…  z$" does not have from_attributes=True©ÚcodeN)rP  Ú	ERROR_ORM)Ú
model_namer‘   r©   s      rV   rÞ   rÞ   l  s   € à‡H�Hˆq��Ð@ÐAÀ7ÔQZ€HÕ[rX   c                ó<   — |j                  d| › d�|t        ¬«       y)z0Emits an error when the config value is invalid.zInvalid value for "Config.r…  rÐ  N)rP  ÚERROR_CONFIG)rß   r‘   r©   s      rV   r¸  r¸  q  s   € à‡H�HÐ)¨$¨¨qÐ1°7Ä€HÕNrX   c                ó4   — | j                  d|t        ¬«       y)znEmits required dynamic aliases error.

    This will be called when `warn_required_dynamic_aliases=True`.
    z#Required dynamic aliases disallowedrÐ  N)rP  ÚERROR_ALIAS©r‘   r©   s     rV   rR  rR  v  s   € ð
 ‡H�HÐ2°GÄ+€HÕNrX   c                óV   — d}d| › d�}|d|› d�z  }|j                  ||t        ¬«       y)z Emits unexpected behavior error.z6https://github.com/pydantic/pydantic/issues/new/choosez7The pydantic mypy plugin ran into unexpected behavior: ú
z&Please consider reporting this bug at z so we can try to fix it!rÐ  N)rP  ÚERROR_UNEXPECTED)râ   r‘   r©   ÚlinkÚfull_messages        rV   rÛ   rÛ   ~  sA   € ð
 D€DØLÈVÈHÐTVÐW€LØÐ<¸T¸FÐB[Ð\Ñ\€LØ‡H�Hˆ\˜7Ô)9€HÕ:rX   c                ó4   — | j                  d|t        ¬«       y)z;Emits an error when there is an untyped field in the model.zUntyped fields disallowedrÐ  N)rP  ÚERROR_UNTYPEDrØ  s     rV   ry  ry  ‰  s   € à‡H�HÐ(¨'¼€HÕFrX   c                ó4   — | j                  d|t        ¬«       y)z]Emits an error when there is more than just a root field defined for a subclass of RootModel.z2Only `root` is allowed as a field of a `RootModel`rÐ  N)rP  ÚERROR_EXTRA_FIELD_ROOT_MODELrØ  s     rV   re  re  Ž  s   € à‡H�HÐAÀ7ÔQm€HÕnrX   c                ó4   — | j                  d|t        ¬«       y)zNEmits an error when `Field` has both `default` and `default_factory` together.z>Field default and default_factory cannot be specified togetherrÐ  N)rP  ÚERROR_FIELD_DEFAULTSrØ  s     rV   r¨   r¨   “  s   € à‡H�HÐMÈwÔ]q€HÕrrX   c                óD  — |j                   }||j                  v rd|j                  |   }	|	j                  rIt        |	j                  t
        «      r/|j                  j                  j                  |	j                  «       t        | t        «      r| j                  d«      }
n| j                  dg «      }
|r6|xs t        t        |«      «      }t        t        d«      |dt         d«      g}n+|xs t        |«      }t        t        d«      |dt         «      g}||z   }g g g }}}|D ]p  }|j"                  sJ d«       ‚|j%                  |j"                  «       |j%                  |j&                  j(                  «       |j%                  |j*                  «       Œr t-        |||||
«      }|r|g|_        t        ||t1        t3        «       g«      «      }||_         t5        ||«      |_        ||_        |j:                  dz   |z   |_        |j>                  |_        ||j                  v r2tA        ||j                  «      }|j                  |   |j                  |<   |rud|_!        t        ||j6                  «      }||_         |j<                  |_        d|_"        tG        |tI        d«      g|«      }|j>                  |_        tK        tL        |«      }	ntK        tL        |«      }	d|	_        |	|j                  |<   |jN                  j                  j                  j%                  |«       y)	zhVery closely related to `mypy.plugins.common.add_method_to_class`, with a few pydantic-specific changes.zbuiltins.functionr  NTÚ__pydantic_self__z"All arguments must be fully typed.r«  r  )(r—   r;  r”  ro   rp   r   rK  rL  Úremover1   r¥  Únamed_generic_typer?   rC   r   r)   r   rî   r˜  rí   rß   rð   r9   Ú	variablesr   r    r4   rš   rB  rg   r±  rê   rD   Úis_decoratedr¤  r   r   r%   r   Údefn)r‘   r�   rß   rŸ   r“  rù   Útvar_defr¤  r—   ru   Úfunction_typeÚfirstrª   r7  r‰  r¡   Ú	signaturerA  Úr_namerÊ  Údecs                        rV   rš  rš  ˜  s£  € ð �8‰8€Dð ˆt�z‰zÑØ�j‰j˜ÑˆØ×Ò¤J¨s¯x©x¼Ô$AØ�H‰H�M‰M× Ñ  §¡Ô*ä�#Ô6Ô7ØŸ™Ð':Ó;‰à×.Ñ.Ð/BÀBÓGˆáØÒ>¤¬-¸Ó*=Ó!>ˆ	Üœ#˜f›+ y°$¼ÀÓFÐG‰àÒ4¤¨tÓ!4ˆ	ô œ#Ð1Ó2°I¸tÄWÓMÐNˆØ�4‰<€Dà&(¨"¨b˜)ˆy€IØò #ˆØ×"Ò"ÐHÐ$HÓHÐ"Ø×Ñ˜×,Ñ,Ô-Ø×Ñ˜Ÿ™×*Ñ*Ô+Ø×Ñ˜Ÿ™Õ"ð	#ô ˜Y¨	°9¸kÈ=ÓY€IÙØ'˜jˆ	Ôä�4˜œu¤h£j \Ó2Ó3€DØ€D„IÜ! )¨TÓ2€D„IØ"€D„MØ—]‘] SÑ(¨4Ñ/€D„NØ—	‘	€D„Ið ˆt�z‰zÑä-¨d°D·J±JÓ?ˆØ!ŸZ™Z¨Ñ-ˆ�
‰
�6Ññ
 Ø ˆÔÜ��d—i‘iÓ ˆØˆŒØ—n‘nˆŒØˆÔÜ˜œx¨Ó6Ð7¸Ó;ˆØ—9‘9ˆŒÜœd CÓ(‰äœd DÓ)ˆØ€CÔØ€D‡J�JˆtÑà‡I�I‡N�N×Ñ×Ñ˜tÕ$rX   c                ó  — | j                  d«      syt        j                  dk\  rddl}n	 ddl}t        | d«      5 }|j                  |«      cddd«       S # t
        $ r ddl}|j                  d«       Y yw xY w# 1 sw Y   yxY w)z…Returns a dict of config keys to values.

    It reads configs from toml file and returns `None` if the file is not a toml file.
    z.tomlN)é   é   r   zJNo TOML parser installed, cannot read configuration from `pyproject.toml`.Úrb)
r�   ÚsysÚversion_infoÚtomllibÚtomliÚImportErrorÚwarningsÚwarnÚopenÚload)rÆ   Útoml_rú  Úrfs       rV   rÇ   rÇ   ð  s…   € ð
 ×Ñ Ô(Øä
×Ñ˜7Ò"Üð	Û!ô 
ˆk˜4Ó	 ð  BØ�z‰z˜"‹~÷ñ øô ò 	Ûà�M‰MÐfÔgÙð		ú÷ð ús   ¬A ¼A;ÁA8Á7A8Á;B)rU   r·   rµ   ztype[Plugin])r‹   r.   rµ   r=   )rÓ  r·   r‘   r+   r©   r   rµ   r¶   )rß   r·   r‘   r1   r©   r   rµ   r¶   )r‘   r1   r©   r   rµ   r¶   )râ   r·   r‘   z8CheckerPluginInterface | SemanticAnalyzerPluginInterfacer©   r   rµ   r¶   )r‘   r+   r©   r   rµ   r¶   )NNF)r‘   z8SemanticAnalyzerPluginInterface | CheckerPluginInterfacer�   r   rß   r·   rŸ   rÃ  r“  r=   rù   r  rë  zTypeVarDef | Noner¤  r¹   rµ   r¶   )rÆ   r·   rµ   zdict[str, Any] | None)‚r½   Ú
__future__r   rõ  Úconfigparserr   Útypingr   r   r   Úmypy.errorcodesr   Úmypy.expandtyper	   r
   Ú
mypy.nodesr   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%   r&   r'   r(   r)   Úmypy.optionsr*   Úmypy.pluginr+   r,   r-   r.   r/   r0   r1   Úmypy.pluginsr2   Úmypy.plugins.commonr3   Úmypy.semanalr4   Úmypy.server.triggerr5   Ú
mypy.stater6   Úmypy.typeopsr7   Ú
mypy.typesr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   Úmypy.typevarsrC   Ú	mypy.utilrD   Úmypy.versionrE   Úmypy_versionÚpydantic._internalrF   Úpydantic.versionrG   rH   rù  rÎ   rÝ   rh   r%  r"  rx   r}   r†   r?  r>  r‡   r¦  rW   rT   r\   r‚   rå   r  rŽ   rG  rÒ  rÕ  r×  rÛ  rß  rã  rá  rÞ   r¸  rR  rÛ   ry  re  r¨   rš  rÇ   r£   rX   rV   ú<module>r     s¦  ðÙ då "ã 
Ý %ß *Ñ *å %ß @÷ ÷  ÷  ÷  ÷  ÷  ÷  ÷  ñ  õB !÷÷ ñ õ %õõ +Ý 5Ý Ý 0÷÷ ÷ ñ õ (Ý 2Ý 4å &Ý /ð5Ý%ð
 !€Ø'€Ø.Ð Ø=Ð Ø5Ð ØRÐ Ø(€Ø5Ð ØKÐ òÐ ñ (¨Ó5Ð Ø0°HÒ<‘
À.€ð €óôs �Vô s ÷l+Cñ +Có\#÷.XTñ XT÷v
ñ 
÷2K
ñ K
÷\"&ñ "&ñJ �nÐ&DÀjÓQ€	ÙÐ*Ð,BÀJÓO€ÙÐ(Ð*DÀjÓQ€ÙÐ2Ð4IÈ:ÓVÐ ÙÐ*Ð,FÈ
ÓS€Ù Ð!1Ð3KÈZÓXÐ Ù(Ð)9Ð;^Ð`jÓkÐ ó\ó
Oó
Oð;Øð;ØNð;ØY`ð;à	ó;óGó
oó
sð "Ø"&Ø ðU%Ø	AðU%à	ðU%ð ðU%ð ð	U%ð
 ðU%ð ðU%ð  ðU%ð ðU%ð 
óU%ôpøðy$ ò 5ç4Ð4ð5ús   Ã"G ÇG-Ç,G-