§
    eŠtj×ý  ã                  óH	  — U d Z ddlmZ ddlZddlZddlmZ ddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddl#Z#ddl$m%Z% ddl$m&Z& ddl'm(Z( ddlm)Z) ddl$m*Z*  e!d¦  «        Z+ e!d d!¬"¦  «        Z, e!d#ed$ef         ¬%¦  «        Z- e!d&d'¬%¦  «        Z. e!d(d)¬%¦  «        Z/ e!d*d+¬%¦  «        Z0 e!d,d-¬%¦  «        Z1�dd2„Z2 G d3„ d4¦  «        Z3�dd8„Z4�dd:„Z5	 �d�dd>„Z6�ddD„Z7�ddH„Z8�ddM„Z9�ddS„Z: e!dTdB¬%¦  «        Z;�ddW„Z<�dd]„Z= e!d^¦  «        Z> e!d_¦  «        Z? G d`„ da¦  «        Z@db„ ZAedd$dcœ�ddj„¦   «         ZBeddkdcœ�ddl„¦   «         ZBddkdcœ�ddm„ZB�ddp„ZC	 �d �d!dt„ZD	 �d"�d#dx„ZE�d"dy„ZF	 	 	 	 �d$�d%dƒ„ZGd„„ ZHd…„ ZI	 	 	 �d&�d'dŒ„ZJ G d�„ dŽ¦  «        ZKd�„ ZLd�„ ZM	 	 	 	 �d(d’„ZNd“„ ZO�d)d”„ZP e!d•d–¬%¦  «        ZQ G d—„ d˜ee,         ¦  «        ZR G d™„ dšeRe,         ¦  «        ZS G d›„ dœeRe,         ¦  «        ZTe r	eRZUeRZVeWZXeWZYneTxZUZXeSxZVZY�d*d�„ZZ G dž„ dŸ¦  «        Z[e reWZ\ne[j]        Z\ G d „ d¡¦  «        Z^�d+d¢„Z_�d,d¥„Z`�d-d¨„Za	 	 �d.�d/d°„Zb�d0d±„Zc�d1d³„Zd�d2dµ„Ze	 �d�d3d¹„Zf�d4d¾„Zgd¿„ Zh G dÀ„ dÁeW¦  «        Zi G dÂ„ dÃee+         ¦  «        Zj G dÄ„ dÅee+         ¦  «        Zk G dÆ„ dÇee+         ¦  «        Zl G dÈ„ dÉem¦  «        Zn G dÊ„ dËeo¦  «        Zp G dÌ„ dÍep¬Î¦  «        Zqe r	ddÏlmrZr erZsneqZs e!dÐejt        ¬%¦  «        Zu	 �d5�d6dÕ„Zvdaw�d7d×„Zx�d8dÙ„Zy�d9dÛ„Zz G dÜ„ dÝe{¦  «        Z|�d�d:dß„Z}�d;dá„Z~i Zdâe€dã<   �d<dè„Z� e
j‚        dé¦  «        Zƒ	 	 �d=�d>dí„Z„�d?dñ„Z… e
j‚        dò¦  «        Z† e
j‚        dó¦  «        Z‡e‡e†f�d@dø„Zˆ eod¦  «        Z‰dù„ ZŠ e
j‚        dú¦  «        Z‹ G dû„ dü¦  «        ZŒ G dý„ dþ¦  «        Z�dÿ„ ZŽ�d „ Z��dA�d„Z��dB�d„Z‘�dC�d„Z’ e
j‚        �d¦  «        Z“�dD�d„Z”�dE�d„Z•�d5�d„Z– G �d„ �dejt        ¦  «        Z—e—j˜        Z˜e"e+e)e—j˜                 f         Z™dS (F  z…Routines to help with the creation, loading and introspection of
modules, classes, hierarchies, attributes, functions, and methods.

é    )ÚannotationsN©Úupdate_wrapper)ÚCodeType)ÚAny)ÚCallable)Úcast)ÚDict)Ú	FrozenSet)ÚGeneric)ÚIterator)ÚList)ÚNoReturn)ÚOptional)Úoverload)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Ú_collections)Úcompat)ÚHAS_CYEXTENSION)ÚLiteralé   )ÚexcÚ_TÚ_T_coT)Ú	covariantÚ_F.)ÚboundÚ_MPzmemoized_property[Any]Ú_MAz#HasMemoized.memoized_attribute[Any]Ú_HPzhybridproperty[Any]Ú_HMzhybridmethod[Any]Úxr   ÚreturnÚstrc                óÊ   — |                       d¦  «        } t          j        ¦   «         }|                     | ¦  «         t	          t
          |                     ¦   «         ¦  «        S )Nzutf-8)Úencoder   Úmd5_not_for_securityÚupdater	   r+   Ú	hexdigest)r)   Úms     úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.pyÚmd5_hexr3   ?   sH   € Ø	�Š�ÑÔ€AÝÔ#Ñ%Ô%€AØ‡H‚HˆQ�K„K€KÝ•�Q—[’[‘]”]Ñ#Ô#Ð#ó    c                  ó2   — e Zd ZU dZdZded<   dd„Zdd„ZdS )Úsafe_reraisea  Reraise an exception after invoking some
    handler code.

    Stores the existing exception info before
    invoking so that it is maintained across a potential
    coroutine context switch.

    e.g.::

        try:
            sess.commit()
        except:
            with safe_reraise():
                sess.rollback()

    TODO: we should at some point evaluate current behaviors in this regard
    based on current greenlet, gevent/eventlet implementations in Python 3, and
    also see the degree to which our own asyncio (based on greenlet also) is
    impacted by this. .rollback() will cause IO / context switch to occur in
    all these scenarios; what happens to the exception context from an
    "except:" block if we don't explicitly store it? Original issue was #2703.

    )Ú	_exc_infozdUnion[None, Tuple[Type[BaseException], BaseException, types.TracebackType], Tuple[None, None, None]]r7   r*   ÚNonec                ó6   — t          j        ¦   «         | _        d S ©N)ÚsysÚexc_infor7   ©Úselfs    r2   Ú	__enter__zsafe_reraise.__enter__k   s   € Ýœ™œˆŒˆˆr4   Útype_úOptional[Type[BaseException]]ÚvalueúOptional[BaseException]Ú	tracebackúOptional[types.TracebackType]r   c                ó®   — | j         €J ‚|€+| j         \  }}}|€J ‚d | _         |                     |¦  «        ‚d | _         |€J ‚|                     |¦  «        ‚r:   )r7   Úwith_traceback)r>   r@   rB   rD   Úexc_typeÚ	exc_valueÚexc_tbs          r2   Ú__exit__zsafe_reraise.__exit__n   ss   € ð Œ~Ð)Ð)Ð)àˆ=Ø*.¬.Ñ'ˆH�i ØÐ(Ð(Ð(Ø!ˆDŒNØ×*Ò*¨6Ñ2Ô2Ð2à!ˆDŒNØÐ$Ð$Ð$Ø×&Ò& yÑ1Ô1Ð1r4   N©r*   r8   )r@   rA   rB   rC   rD   rE   r*   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ú__annotations__r?   rK   © r4   r2   r6   r6   F   sc   € € € € € € ðð ð0 €Iðð ð ñ ð(ð (ð (ð (ð2ð 2ð 2ð 2ð 2ð 2r4   r6   ÚclsúType[_T]úIterator[Type[_T]]c              #  óê   K  — t          ¦   «         }| g}|r]|                     ¦   «         } | |v rŒ|                     | ¦  «         |                     |                      ¦   «         ¦  «         | V — |°[d S d S r:   )ÚsetÚpopÚaddÚextendÚ__subclasses__)rT   ÚseenÚstacks      r2   Úwalk_subclassesr_   �   s‹   è è € Ý‘U”U€DàˆE€EØ
ð Ø�iŠi‰kŒkˆØ�$ˆ;ˆ;Øà�HŠH�S‰MŒMˆMØ�Š�S×'Ò'Ñ)Ô)Ñ*Ô*Ð*Øˆ	ˆ	ˆ	ð ð ð ð ð ð r4   Úelementc                óz   — t          | t          ¦  «        r| S 	 t          | ¦  «        S # t          $ r d| z  cY S w xY w)Nzunprintable element %r)Ú
isinstancer+   Ú	Exception)r`   s    r2   Ústring_or_unprintablerd   �   sV   € Ý�'�3ÑÔð 6Øˆð	6Ý�w‘<”<ÐøÝð 	6ð 	6ð 	6Ø+¨gÑ5Ð5Ð5Ð5ð	6øøøs   ™( ¨:¹:ú	Type[Any]Úuse_nameúOptional[str]c                óx   — |p| j         }d                     d„ t          j        d|¦  «        D ¦   «         ¦  «        S )Nú c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r:   )Úlower)Ú.0Úns     r2   ú	<genexpr>z(clsname_as_plain_name.<locals>.<genexpr>�   s*   è è € ÐNÐN !�A—G’G‘I”IÐNÐNÐNÐNÐNÐNr4   z([A-Z][a-z]+|SQL))rM   ÚjoinÚreÚfindall)rT   rf   Únames      r2   Úclsname_as_plain_namers   ™   s>   € ð Ð#�s”|€DØ�8Š8ÐNÐN¥r¤zÐ2FÈÑ'MÔ'MÐNÑNÔNÑNÔNÐNr4   Úinstance_or_clsúUnion[Type[Any], object]Úagainst_methodúCallable[..., Any]Úboolc                óz   — t          | t          ¦  «        s| j        }n| }|j        }t	          ||¦  «        }||k    S )z1Return True if the two class methods don't match.)rb   ÚtypeÚ	__class__rM   Úgetattr)rt   rv   Úcurrent_clsÚmethod_nameÚcurrent_methods        r2   Úmethod_is_overriddenr€       sG   € õ �o¥tÑ,Ô,ð &Ø%Ô/ˆˆà%ˆà Ô)€Kå'.¨{¸KÑ'HÔ'H€Nà˜^Ò+Ð+r4   ÚslcÚsliceúTuple[Any, ...]c                óÄ   — g }| j         | j        | j        fD ];}t          |d¦  «        r|                     ¦   «         }|                     |¦  «         Œ<t          |¦  «        S )zrdecode a slice object as sent to __getitem__.

    takes into account the 2.5 __index__() method, basically.

    Ú	__index__)ÚstartÚstopÚstepÚhasattrr…   ÚappendÚtuple)r�   Úretr)   s      r2   Údecode_slicer�   ²   sa   € ð €CØŒY˜œ #¤(Ð*ð ð ˆÝ�1�kÑ"Ô"ð 	Ø—’‘”ˆAØ�
Š
�1‰ŒˆˆÝ�‰:Œ:Ðr4   ÚusedúSequence[str]ÚbasesúIterator[str]c           
   '  ó  ‡K  — t          | ¦  «        }|D ]lŠt          j        ‰ft          ˆfd„t	          d¦  «        ¦  «        ¦  «        }|D ]!}||vr|                     |¦  «         |V —  nŒ"t          d‰z  ¦  «        ‚Œmd S )Nc                ó(   •— ‰t          | ¦  «        z   S r:   ©r+   )ÚiÚbases    €r2   ú<lambda>z!_unique_symbols.<locals>.<lambda>Å   s   ø€ ˜$¥ Q¡¤™-€ r4   iè  z&exhausted namespace for symbol base %s)rX   Ú	itertoolsÚchainÚmapÚrangerZ   Ú	NameError)rŽ   r�   Úused_setÚpoolÚsymr–   s        @r2   Ú_unique_symbolsr    À   sÀ   øè è € Ý�4‰yŒy€HØð Mð MˆÝŒØˆGÝÐ'Ð'Ð'Ð'­¨t©¬Ñ5Ô5ñ
ô 
ˆð ð 	Mð 	MˆCØ˜(Ð"Ð"Ø—’˜SÑ!Ô!Ð!Ø�	�	�	Ø�ð #õ
 ÐDÀtÑKÑLÔLÐLð ðMð Mr4   ÚfnúCallable[[int], Any]rm   ÚintúIterator[Any]c              #  óL   K  — |r|| dz   z  } | |¦  «        V — ||z  }|°dS dS )z6Call the given function given each nonzero bit from n.r   NrS   )r¡   rm   Úbs      r2   Úmap_bitsr§   Ð   sW   è è € ð ð Ø�!��a‘‰LˆØˆb�‰eŒeˆˆˆØ	ˆQ‰ˆð ð ð ð ð ð r4   Ú_FnÚtargetúCallable[[_Fn], _Fn]c                ó0   ‡ — dˆ fd„}t          |‰ ¦  «        S )z'A signature-matching decorator factory.r¡   r¨   r*   c                óP  •— t          j        | ¦  «        s#t          j        | ¦  «        st          d¦  «        ‚t	          | dd ¦  «        }|�0d | _        	 t          j        | ¦  «        }|| _        n # || _        w xY wt          j        | ¦  «        }dt          |j	        pd¦  «        z  }t                               |j        pd¦  «        }|                     i ||¬¦  «        }t          t          d|d         ¦  «        ¦  «        t          d|dd	…         ¦  «        z   | j        fz   }t#          |d
d¦  «        \  }}t          ||¬¦  «        }|                     t'          |d¬¦  «        ¦  «         | j        |d<   t          j        | ¦  «        rd|d<   d|d<   n
d|d<   d|d<   dt+          |d         ¦  «        v rd|z  }	nd|z  }	|‰|| d| j        i}
t          t.          j        t3          |	|
| j        ¦  «        ¦  «        }| j        |_        | j        |_        t9          || ¦  «        S )Nznot a decoratable functionÚ__annotate__r:   rS   )r   ÚdefaultsÚkwonlydefaultszTuple[str, ...]r   r   é   r©   r¡   )r©   r¡   F©Úgroupedrr   zasync Úprefixzawait Útarget_prefixÚ Ú__zf%(prefix)sdef %(name)s%(grouped_args)s:
    return %(target_prefix)s%(target)s(%(fn)s, %(apply_pos)s)
ze%(prefix)sdef %(name)s%(grouped_args)s:
    return %(target_prefix)s%(target)s(%(fn)s, %(apply_kw)s)
rM   )ÚinspectÚ
isfunctionÚismethodrc   r|   r­   r   Úinspect_getfullargspecÚlenr®   ÚdictÚfromkeysr¯   Ú_replacer‹   r	   rM   r    r/   Úformat_argspec_plusÚiscoroutinefunctionÚreprrN   ÚtypesÚFunctionTypeÚ_exec_code_in_envÚ__defaults__Ú__kwdefaults__r   )r¡   ÚannofuncÚspecÚempty_defaultsÚempty_kwdefaultsÚnamesÚ	targ_nameÚfn_nameÚmetadataÚcodeÚenvÚ	decoratedr©   s               €r2   Údecoratezdecorator.<locals>.decorateá   sn  ø€ ÝÔ! "Ñ%Ô%ð 	:­gÔ.>¸rÑ.BÔ.Bð 	:ÝÐ8Ñ9Ô9Ð9õ ˜2˜~¨tÑ4Ô4ˆØÐØ"ˆBŒOð+ÝÔ4°RÑ8Ô8�à"*�”�ø (�”Ð*Ð*Ð*Ð*åÔ0°Ñ4Ô4ˆDð !¥3 t¤}Ð':¸Ñ#;Ô#;Ñ;ˆÝŸ=š=¨Ô)<Ð)BÀÑCÔCÐØ�}Š}ØØ#Ø+ð ñ 
ô 
ˆõ •$Ð(¨$¨q¬'Ñ2Ô2Ñ3Ô3ÝÐ$ d¨1¨Q¨3¤iÑ0Ô0ñ1àŒ{ˆnñð 	õ
 -¨U°H¸dÑCÔCÑˆ	�7å-1¸ÀwÐ-OÑ-OÔ-OˆØ�ŠÕ+¨D¸%Ð@Ñ@Ô@ÑAÔAÐAØœ;ˆ�ÑåÔ& rÑ*Ô*ð 	+Ø!)ˆH�XÑØ(0ˆH�_Ñ%Ð%à!#ˆH�XÑØ(*ˆH�_Ñ%ð •4˜˜Qœ‘=”=Ð Ð ðð ñˆDˆDð
ð ñˆDð �vØ�RØ˜œð
ˆõ ÝÔÝ˜d C¨¬Ñ5Ô5ñ
ô 
ˆ	ð "$¤ˆ	ÔØ#%Ô#4ˆ	Ô Ý˜i¨Ñ,Ô,Ð,s   ÁA0 Á0	A9)r¡   r¨   r*   r¨   r   )r©   rÒ   s   ` r2   Ú	decoratorrÓ   Þ   s:   ø€ ðN-ð N-ð N-ð N-ð N-ð N-õ` ˜( FÑ+Ô+Ð+r4   rÏ   úUnion[str, types.CodeType]rÐ   úDict[str, Any]rÍ   c                ó2   — t          | |¦  «         ||         S r:   )Úexec)rÏ   rÐ   rÍ   s      r2   rÄ   rÄ   4  s   € õ 	ˆˆs�O„O€OØˆwŒ<Ðr4   Ú_PFÚ_TEc                  ó8   — e Zd Z	 ddd„Zd„ Zdd„Zdd„Zdd„ZdS )ÚPluginLoaderNÚgroupr+   Úauto_fnúOptional[Callable[..., Any]]c                ó0   — || _         i | _        || _        d S r:   )rÜ   ÚimplsrÝ   )r>   rÜ   rÝ   s      r2   Ú__init__zPluginLoader.__init__@  s   € ð ˆŒ
Ø%'ˆŒ
ØˆŒˆˆr4   c                ó8   — | j                              ¦   «          d S r:   )rà   Úclearr=   s    r2   rã   zPluginLoader.clearG  s   € ØŒ
×ÒÑÔÐÐÐr4   rr   r*   r   c                óx  — || j         v r | j         |         ¦   «         S | j        r+|                      |¦  «        }|r|| j         |<    |¦   «         S t          j        | j        ¦  «        D ]2}|j        |k    r%|j        | j         |<   |                     ¦   «         c S Œ3t          j        d| j        ›d|›�¦  «        ‚)NzCan't load plugin: ú:)	rà   rÝ   r   Úimportlib_metadata_getrÜ   rr   Úloadr   ÚNoSuchModuleError)r>   rr   ÚloaderÚimpls       r2   rç   zPluginLoader.loadJ  sØ   € Ø�4”:ÐÐØ#�4”:˜dÔ#Ñ%Ô%Ð%àŒ<ð 	 Ø—\’\ $Ñ'Ô'ˆFØð  Ø#)�”
˜4Ñ Ø�v‘x”x�åÔ1°$´*Ñ=Ô=ð 	#ð 	#ˆDØŒy˜DÒ Ð Ø#'¤9�”
˜4Ñ Ø—y’y‘{”{Ð"Ð"Ð"ð !õ Ô#Ð#Ø*.¬*¨*¨*°d°dÐ;ñ
ô 
ð 	
r4   Ú
modulepathÚobjnamer8   c                ó*   ‡‡— ˆˆfd„}|| j         |<   d S )Nc                 ó¢   •— t          ‰¦  «        } ‰                     d¦  «        dd …         D ]}t          | |¦  «        } Œt          | ‰¦  «        S )Nú.r   )Ú
__import__Úsplitr|   )ÚmodÚtokenrë   rì   s     €€r2   rç   z#PluginLoader.register.<locals>.load^  sW   ø€ Ý˜ZÑ(Ô(ˆCØ#×)Ò)¨#Ñ.Ô.¨q¨r¨rÔ2ð *ð *�Ý˜c 5Ñ)Ô)��Ý˜3 Ñ(Ô(Ð(r4   ©rà   )r>   rr   rë   rì   rç   s     `` r2   ÚregisterzPluginLoader.register]  s6   øø€ ð	)ð 	)ð 	)ð 	)ð 	)ð 	)ð  ˆŒ
�4ÑÐÐr4   c                ó   — | j         |= d S r:   rô   )r>   rr   s     r2   Ú
deregisterzPluginLoader.deregisterf  s   € ØŒJ�tÐÐÐr4   r:   )rÜ   r+   rÝ   rÞ   )rr   r+   r*   r   )rr   r+   rë   r+   rì   r+   r*   r8   )rr   r+   r*   r8   )rM   rN   rO   rá   rã   rç   rõ   r÷   rS   r4   r2   rÛ   rÛ   ?  s{   € € € € € àBFðð ð ð ð ðð ð ð
ð 
ð 
ð 
ð& ð  ð  ð  ðð ð ð ð ð r4   rÛ   c                ó   — 	 t           j        }| j        }|j        }t	          |j        d |…         ¦  «        t          |j        |z  ¦  «        fS # t          $ r4 t          j
        | ¦  «        }|d         t          |d         ¦  «        fcY S w xY w)Nr   r   )r·   ÚCO_VARKEYWORDSÚ__code__Úco_argcountÚlistÚco_varnamesrx   Úco_flagsÚAttributeErrorr   rº   )r¡   Úco_varkeywordsÚcoÚnargsrÈ   s        r2   Ú_inspect_func_argsr  j  sŸ   € ð
Ý Ô/ˆð Œ[ˆØ”ˆå�”   Ô'Ñ(Ô(Ý�”˜~Ñ-Ñ.Ô.ð
ð 	
øõ ð &ð &ð &õ
 Ô,¨RÑ0Ô0ˆØ�AŒw�˜T !œW™œÐ%Ð%Ð%Ð%ð&øøøs   ‚A Á;BÂB)Ú_setÚraiseerrrz   r  úOptional[Set[str]]r  úLiteral[True]úSet[str]c               ó   — d S r:   rS   ©rT   r  r  s      r2   Úget_cls_kwargsr  ~  s	   € ð ˆsr4   Fc               ó   — d S r:   rS   r
  s      r2   r  r  ‡  s	   € ð ˜r4   c               óÜ  — |du }|rt          ¦   «         }|€J ‚| j                             dd¦  «        }|o8t          |t          j        ¦  «        ot          |j        t          j        ¦  «        }|rCt          |¦  «        \  }}| 	                    |¦  «         |s|s|rt          d| › d�¦  «        ‚dS nd}|r|r| j        D ]}t          ||¬¦  «        € nŒ|                     d¦  «         |S )ae  Return the full set of inherited kwargs for the given `cls`.

    Probes a class's __init__ method, collecting all named arguments.  If the
    __init__ defines a \**kwargs catch-all, then the constructor is presumed
    to pass along unrecognized keywords to its base classes, and the
    collection process is repeated recursively on each of the bases.

    Uses a subset of inspect.getfullargspec() to cut down on method overhead,
    as this is used within the Core typing system to create copies of type
    objects which is a performance-sensitive operation.

    No anonymous tuple arguments please !

    Nrá   Fz
given cls z  doesn't have an __init__ method)r  r>   )rX   Ú__dict__Úgetrb   rÂ   rÃ   rú   r   r  r/   Ú	TypeErrorÚ	__bases__r  Údiscard)	rT   r  r  ÚtoplevelÚctrÚhas_initrË   Úhas_kwÚcs	            r2   r  r  �  s=  € ð" �tˆ|€HØð Ý‰uŒuˆØÐÐÐà
Œ,×
Ò
˜: uÑ
-Ô
-€Cð 	ð 	5Ý�s�EÔ.Ñ/Ô/ð	5å�s”|¥U¤^Ñ4Ô4ð ð ð Ý*¨3Ñ/Ô/‰ˆˆvØ�Š�EÑÔÐàð 	˜hð 	Øð ÝØF ÐFÐFÐFñô ð ð �tøàˆàð �vð Ø”ð 	ð 	ˆAÝ˜a dÐ+Ñ+Ô+Ð3Ø�ð 4ð 	‡L‚L�ÑÔÐØ€Kr4   Úfuncú	List[str]c                ó6   — t          j        | ¦  «        d         S )zƒReturn the set of legal kwargs for the given `func`.

    Uses getargspec so is safe to call for methods, functions,
    etc.

    r   )r   rº   )r  s    r2   Úget_func_kwargsr  Â  s   € õ Ô(¨Ñ.Ô.¨qÔ1Ð1r4   Úno_selfÚ_is_initúcompat.FullArgSpecc           	     ób  — t          j        | ¦  «        rt          d| z  ¦  «        ‚t          j        | ¦  «        s8t	          | d¦  «        r™t          j        | ¦  «        s…t          j        | ¦  «        sq|r[|rYt          j        | ¦  «        }t          j	        |j
        dd…         |j        |j        |j        |j        |j        |j        ¦  «        S t          j        | ¦  «        S t          j        | ¦  «        r‚|rg|s| j        r^t          j        | j        ¦  «        }t          j	        |j
        dd…         |j        |j        |j        |j        |j        |j        ¦  «        S t          j        | j        ¦  «        S t          j        | ¦  «        rt'          | j        |d¬¦  «        S t	          | d¦  «        rt          j        | j        ¦  «        S t	          | d¦  «        rAt          j        | j        ¦  «        rt'          | j        |¬	¦  «        S t          d
| z  ¦  «        ‚t          d
| z  ¦  «        ‚)zþReturn the argument signature for any callable.

    All pure-Python callables are accepted, including
    functions, methods, classes, objects with __call__;
    builtins and other edge cases like functools.partial() objects
    raise a TypeError.

    zCan't inspect builtin: %srú   r   NT)r  r  Ú__func__Ú__call__)r  zCan't inspect callable: %s)r·   Ú	isbuiltinr  r¸   r‰   Úisclassr¹   r   rº   ÚFullArgSpecÚargsÚvarargsÚvarkwr®   Ú
kwonlyargsr¯   r   Ú__self__r   Úget_callable_argspecrá   r!  )r¡   r  r  rÈ   s       r2   r*  r*  Í  s>  € õ Ô˜ÑÔð .;ÝÐ3°bÑ8Ñ9Ô9Ð9Ý	Ô	˜BÑ	Ô	ð ,;Ý��JÑÔð,;å” Ñ#Ô#ð,;õ Ô  Ñ$Ô$ð,;ð
 ð 	5˜ð 	5ÝÔ0°Ñ4Ô4ˆDÝÔ%Ø”	˜!˜"˜"”Ø”Ø”
Ø”Ø”ØÔ#ØÔ ñô ð õ Ô0°Ñ4Ô4Ð4Ý	Ô	˜"Ñ	Ô	ð ;Øð 	>˜ð 	> B¤Kð 	>ÝÔ0°´Ñ=Ô=ˆDÝÔ%Ø”	˜!˜"˜"”Ø”Ø”
Ø”Ø”ØÔ#ØÔ ñô ð õ Ô0°´Ñ=Ô=Ð=Ý	Œ˜Ñ	Ô	ð ;Ý#ØŒK °4ð
ñ 
ô 
ð 	
õ 
��ZÑ	 Ô	 ð ;ÝÔ,¨R¬[Ñ9Ô9Ð9Ý	��ZÑ	 Ô	 ð ;ÝÔ˜BœKÑ(Ô(ð 	?Ý'¨¬¸WÐEÑEÔEÐEåÐ8¸2Ñ=Ñ>Ô>Ð>åÐ4°rÑ9Ñ:Ô:Ð:r4   ú-Union[Callable[..., Any], compat.FullArgSpec]r²   úDict[str, Optional[str]]c           
     óø  — t          | ¦  «        rt          j        | ¦  «        }n| }t          j        |Ž }t          j        |d         |d         |d         d|d         ¦  «        }|d         rG|d         d         }t          j        |d         dd…         |d         |d         d|d         ¦  «        }n|d         rd|d         z  }|}nd}|}d}|d         r6|t	          t          t          t                   |d         ¦  «        ¦  «        z  }|d         r|t	          |d         ¦  «        z  }|d         |d         z   }|r|d|z
  d…         }	nd}	t          j        ||d         |d         |	d	„ ¬
¦  «        }
|d         r/t          j        |dd…         |d         |d         |	d„ ¬
¦  «        }n|
}|rt          ||||
||¬¦  «        S t          |||dd…         |
dd…         |dd…         |dd…         ¬¦  «        S )a  Returns a dictionary of formatted, introspected function arguments.

    A enhanced variant of inspect.formatargspec to support code generation.

    fn
       An inspectable callable or tuple of inspect getargspec() results.
    grouped
      Defaults to True; include (parens, around, argument) lists

    Returns:

    args
      Full inspect.formatargspec for fn
    self_arg
      The name of the first positional argument, varargs[0], or None
      if the function defines no positional arguments.
    apply_pos
      args, re-written in calling rather than receiving syntax.  Arguments are
      passed positionally.
    apply_kw
      Like apply_pos, except keyword-ish args are passed as keywords.
    apply_pos_proxied
      Like apply_pos but omits the self/cls argument

    Example::

      >>> format_argspec_plus(lambda self, a, b, c=3, **d: 123)
      {'grouped_args': '(self, a, b, c=3, **d)',
       'self_arg': 'self',
       'apply_kw': '(self, a, b, c=c, **d)',
       'apply_pos': '(self, a, b, c, **d)'}

    r   r   r   Né   z%s[0]r°   rS   c                ó&   — dt          | ¦  «        z   S ©Nú=r”   ©r)   s    r2   r—   z%format_argspec_plus.<locals>.<lambda>\  s   € ˜c¥C¨¡F¤F™l€ r4   )Úformatvaluec                ó&   — dt          | ¦  «        z   S r0  r”   r2  s    r2   r—   z%format_argspec_plus.<locals>.<lambda>e  s   €  #­¨A©¬¡,€ r4   )Úgrouped_argsÚself_argÚ	apply_posÚapply_kwÚapply_pos_proxiedÚapply_kw_proxiedéÿÿÿÿ)	Úcallabler   rº   Úinspect_formatargspecr»   r	   r   r   r¼   )r¡   r²   rÈ   r%  r7  r6  r9  Únum_defaultsÚ	name_argsÚdefaulted_valsr8  r:  s               r2   r¿   r¿   	  sw  € õH ��|„|ð ÝÔ,¨RÑ0Ô0ˆˆàˆåÔ'¨Ð.€DåÔ,ØˆQŒ��a”˜$˜qœ' 4¨¨a¬ñô €Ið ˆA„wð &Ø˜”7˜1”:ˆå"Ô8Ø�ŒG�A�B�BŒK˜˜aœ $ q¤'¨4°°a´ñ
ô 
ÐÐð 
ˆaŒð &à˜T !œWÑ$ˆà%ÐÐàˆØ%Ðà€LØˆA„wð 7Ø��D¥¥s¤¨T°!¬WÑ5Ô5Ñ6Ô6Ñ6ˆØˆA„wð %Ø�˜D œG™œÑ$ˆà�Q”˜$˜qœ'Ñ!€Ið ð Ø" 1 |Ñ#3Ð#5Ð#5Ô6ˆˆàˆåÔ+ØØˆQŒØˆQŒØØ*Ð*ðñ ô €Hð ˆA„wð 	$Ý!Ô7Ø�a�b�bŒMØ�ŒGØ�ŒGØØ.Ð.ð
ñ 
ô 
ÐÐð $Ðàð 
ÝØØØØØ/Ø-ð
ñ 
ô 
ð 	
õ ØØØ  " ”oØ˜a ˜d”^Ø/°°"°Ô5Ø-¨a°¨dÔ3ð
ñ 
ô 
ð 	
r4   c                óÆ   — | t           j        u rd}|rdnd}|rdnd}n0	 t          | |¬¦  «        S # t          $ r d}|r|nd}|rdnd	}Y nw xY wt	          d|||||¬
¦  «        S )a$  format_argspec_plus with considerations for typical __init__ methods

    Wraps format_argspec_plus with error handling strategies for typical
    __init__ cases:

    .. sourcecode:: text

      object.__init__ -> (self)
      other unreflectable (usually C) -> (self, *args, **kwargs)

    z(self)r>   z()rµ   r±   z(self, *args, **kwargs)zself, *args, **kwargsz(*args, **kwargs)z*args, **kwargs)r6  r5  r7  r8  r9  r:  )Úobjectrá   r¿   r  r¼   )Úmethodr²   r5  r%  Úproxieds        r2   Úformat_argspec_initrE  ~  sÀ   € ð •”Ð Ð ØˆØ"Ð.ˆxˆx¨ˆØ!Ð)�$�$ rˆˆð	LÝ& v°wÐ?Ñ?Ô?Ð?øÝð 	Lð 	Lð 	LØ4ˆLØ#*ÐG�<�<Ð0GˆDØ-4ÐKÐ)Ð)Ð:KˆGˆGˆGð	Løøøõ ØØ!ØØØ!Ø ðñ ô ð s   Ÿ0 °AÁ
ArS   Ú
target_clsÚtarget_cls_sphinx_nameÚproxy_cls_sphinx_nameÚclassmethodsÚmethodsÚ
attributesÚuse_intermediate_variableúCallable[[_T], _T]c                ó   — d„ }|S )aS  A class decorator indicating attributes should refer to a proxy
    class.

    This decorator is now a "marker" that does nothing at runtime.  Instead,
    it is consumed by the tools/generate_proxy_methods.py script to
    statically generate proxy methods and attributes that are fully
    recognized by typing tools such as mypy.

    c                ó   — | S r:   rS   )rT   s    r2   rÒ   z&create_proxy_methods.<locals>.decorate²  s   € Øˆ
r4   rS   )rF  rG  rH  rI  rJ  rK  rL  rÒ   s           r2   Úcreate_proxy_methodsrP  Ÿ  s   € ð&ð ð ð €Or4   c                óˆ   — 	 t          j        | ¦  «        S # t          $ r! | t          j        u r	dgdddfcY S dgdddfcY S w xY w)a  inspect.getargspec with considerations for typical __init__ methods

    Wraps inspect.getargspec with error handling for typical __init__ cases:

    .. sourcecode:: text

      object.__init__ -> (self)
      other unreflectable (usually C) -> (self, *args, **kwargs)

    r>   Nr%  Úkwargs)r   rº   r  rB  rá   )rC  s    r2   Úgetargspec_initrS  ¸  sn   € ð6ÝÔ,¨VÑ4Ô4Ð4øÝð 6ð 6ð 6Ø•V”_Ð$Ð$Ø�H˜d D¨$Ð/Ð/Ð/Ð/à�H˜f h°Ð5Ð5Ð5Ð5ð	6øøøs   ‚ –A·AÁ Ac                óV   — t          | t          j        ¦  «        r| j        s| j        S | S )zSAdjust the incoming callable such that a 'self' argument is not
    required.

    )rb   rÂ   Ú
MethodTyper)  r   )Úfunc_or_clss    r2   Úunbound_method_to_callablerW  Ì  s2   € õ �+�uÔ/Ñ0Ô0ð ¸Ô9Mð ØÔ#Ð#àÐr4   ÚobjÚadditional_kwúSequence[Tuple[str, Any]]Ú
to_inspectú%Optional[Union[object, List[object]]]Ú
omit_kwargc           	     óh  ‡ ‡— |€‰ g}nt          j        |¦  «        }t          ¦   «         Šg }t          j        ¦   «         }d}t	          |¦  «        D �]%\  }}	 t          j        |j        ¦  «        }	|	j        rt          |	j        ¦  «        nd}
|dk    rW|	j
        r|	j
        }|
r$|                     |	j        d|
 …         ¦  «         nR|                     |	j        dd…         ¦  «         n/|                     ˆfd„|	j        d|
 …         D ¦   «         ¦  «         |
rI|	j        sJ ‚|                     d„ t          |	j        |
 d…         |	j        ¦  «        D ¦   «         ¦  «         �Œ# t          $ r Y �Œ#w xY wg }|                     ˆ fd„|D ¦   «         ¦  «         |�=t!          ‰ |¦  «        r-|                     d„ t#          ‰ |¦  «        D ¦   «         ¦  «         |                     ¦   «         D ]P\  }}||v rŒ
	 t#          ‰ |‰¦  «        }|‰ur ||k    r|                     |›d|›�¦  «         ŒA# t(          $ r Y ŒMw xY w|rN|D ]K\  }}	 t#          ‰ |‰¦  «        }|‰ur ||k    r|                     |›d|›�¦  «         Œ<# t(          $ r Y ŒHw xY w‰ j        j        ›d	d
                     |¦  «        ›d�S )z}Produce a __repr__() based on direct association of the __init__()
    specification vs. same-named attributes present.

    Nr   r   c                ó   •— g | ]}|‰f‘ŒS rS   rS   )rl   ÚargÚmissings     €r2   ú
<listcomp>z generic_repr.<locals>.<listcomp>ü  s   ø€ ÐIÐIÐI¨�c˜7�^ÐIÐIÐIr4   c                ó   — g | ]	\  }}||f‘Œ
S rS   rS   )rl   r`  Údefaults      r2   rb  z generic_repr.<locals>.<listcomp>  s0   € ð ð ð á(˜C ð ˜g˜ðð ð r4   c              3  óT   •K  — | ]"}t          t          ‰|d ¦  «        ¦  «        V — Œ#d S r:   )rÁ   r|   )rl   r`  rX  s     €r2   rn   zgeneric_repr.<locals>.<genexpr>  s7   øè è € ÐDÐD°C•$•w˜s C¨Ñ.Ô.Ñ/Ô/ÐDÐDÐDÐDÐDÐDr4   c                ó,   — g | ]}t          |¦  «        ‘ŒS rS   ©rÁ   )rl   Úvals     r2   rb  z generic_repr.<locals>.<listcomp>  s   € Ð@Ð@Ð@ S•t˜C‘y”yÐ@Ð@Ð@r4   r1  ú(ú, ú))r   Úto_listrB  ÚOrderedDictÚ	enumerater   rº   rá   r®   r»   r&  r[   r%  r/   Úzipr  r‰   r|   ÚitemsrŠ   rc   r{   rM   ro   )rX  rY  r[  r]  Úpos_argsÚkw_argsÚvargsr•   ÚinsprÈ   Údefault_lenÚoutputr`  Údefvalrh  ra  s   `              @r2   Úgeneric_reprrx  Ø  sh  øø€ ð ÐØ�Uˆ
ˆ
å!Ô)¨*Ñ5Ô5ˆ
å‰hŒh€Gà€HÝ2>Ô2JÑ2LÔ2L€GØ€EÝ˜ZÑ(Ô(ð ñ ‰ˆˆ4ð	ÝÔ0°´Ñ?Ô?ˆDð 15´ÐD�#˜dœmÑ,Ô,Ð,À1ˆKØ�AŠvˆvØ”<ð )Ø œL�EØð 3Ø—O’O D¤I¨a°°¨nÔ$=Ñ>Ô>Ð>Ð>à—O’O D¤I¨a¨b¨b¤MÑ2Ô2Ð2Ð2à—’ØIÐIÐIÐI¨t¬y¸¸K¸<¸Ô/HÐIÑIÔIñô ð ð ð 	Ø”}Ð$Ð$�}Ø—’ðð å,/Ø œI { l m mÔ4°d´mñ-ô -ðñ ô ñô ð ùøõ% ð 	ð 	ð 	Ø‰Hð	øøøð4 €Fà
‡M‚MÐDÐDÐDÐD¸8ÐDÑDÔDÑDÔDÐDàÐ�W S¨%Ñ0Ô0ÐØ�ŠÐ@Ð@­G°C¸Ñ,?Ô,?Ð@Ñ@Ô@ÑAÔAÐAà—}’}‘”ð ð ‰ˆˆVØ�*ÐÐØð	Ý˜#˜s GÑ,Ô,ˆCØ˜'Ð!Ð! c¨V¢m mØ—’¨¨¨¨c¨cÐ2Ñ3Ô3Ð3øøÝð 	ð 	ð 	ØˆDð	øøøð ð Ø(ð 	ð 	‰KˆC�ðÝ˜c 3¨Ñ0Ô0�Ø˜gÐ%Ð%¨#°ª-¨-Ø—M’M¨S¨S¨S°#°#Ð"6Ñ7Ô7Ð7øøÝð ð ð Ø�ðøøøð ”}Ô-Ð-Ð-¨t¯yªy¸Ñ/@Ô/@Ð/@Ð/@ÐAÐAs6   ÁE'Å'
E5Å4E5Ç95H/È/
H<È;H<É	5I?É?
JÊJc                  ó0   — e Zd ZdZdZd„ Zd„ Zd	d„Zd„ ZdS )
Úportable_instancemethodz_Turn an instancemethod into a (parent, name) pair
    to produce a serializable callable.

    )r©   rr   rR  Ú__weakref__c                ó,   — | j         | j        | j        dœS )N©r©   rr   rR  r}  r=   s    r2   Ú__getstate__z$portable_instancemethod.__getstate__.  s    € à”kØ”IØ”kð
ð 
ð 	
r4   c                óp   — |d         | _         |d         | _        |                     dd¦  «        | _        d S )Nr©   rr   rR  rS   )r©   rr   r  rR  )r>   Ústates     r2   Ú__setstate__z$portable_instancemethod.__setstate__5  s1   € Ø˜H”oˆŒØ˜&”MˆŒ	Ø—i’i ¨"Ñ-Ô-ˆŒˆˆr4   rS   c                óD   — |j         | _        |j        | _        || _        d S r:   )r)  r©   rM   rr   rR  )r>   ÚmethrR  s      r2   rá   z portable_instancemethod.__init__:  s   € Ø”mˆŒØ”MˆŒ	ØˆŒˆˆr4   c                óv   — |                      | j        ¦  «          t          | j        | j        ¦  «        |i |¤ŽS r:   )r/   rR  r|   r©   rr   )r>   r`  Úkws      r2   r!  z portable_instancemethod.__call__?  s9   € Ø
�	Š	�$”+ÑÔÐØ.�w�t”{ D¤IÑ.Ô.°Ð:°rÐ:Ð:Ð:r4   N)rS   )	rM   rN   rO   rP   rQ   r~  r�  rá   r!  rS   r4   r2   rz  rz  &  sf   € € € € € ðð ð
 :€Ið
ð 
ð 
ð.ð .ð .ð
ð ð ð ð
;ð ;ð ;ð ;ð ;r4   rz  c                ó*  ‡— | hŠt          | j        ¦  «        }|rë|                     ¦   «         }ˆfd„|j        D ¦   «         }|D ],}|                     |¦  «         ‰                     |¦  «         Œ-|j        dk    st          |d¦  «        sŒtˆfd„t          |t          ¦  «        s| 
                    ¦   «         n| 
                    |¦  «        D ¦   «         D ],}|                     |¦  «         ‰                     |¦  «         Œ-|°ët          ‰¦  «        S )a'  Return an unordered sequence of all classes related to cls.

    Traverses diamond hierarchies.

    Fibs slightly: subclasses of builtin types are not returned.  Thus
    class_hierarchy(class A(object)) returns (A, object), not A plus every
    class systemwide that derives from object.

    c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S r:   rS   ©rl   Ú_Úhiers     €r2   rn   z"class_hierarchy.<locals>.<genexpr>S  s'   øè è € Ð9Ð9�q¨1°D¨=¨=�¨=¨=¨=¨=Ð9Ð9r4   Úbuiltinsr\   c                ó   •— g | ]}|‰v¯|‘Œ	S rS   rS   rˆ  s     €r2   rb  z#class_hierarchy.<locals>.<listcomp>\  s.   ø€ ð 
ð 
ð 
àð
 ˜ˆ}ˆ}ð ð ˆ}ˆ}r4   )rü   Ú__mro__rY   r  rŠ   rZ   rN   r‰   Ú
issubclassrz   r\   )rT   Úprocessr  r�   r¦   ÚsrŠ  s         @r2   Úclass_hierarchyr‘  D  s?  ø€ ð ˆ5€DÝ�3”;ÑÔ€GØ
ð Ø�KŠK‰MŒMˆØ9Ð9Ð9Ð9˜AœKÐ9Ñ9Ô9ˆàð 	ð 	ˆAØ�NŠN˜1ÑÔÐØ�HŠH�Q‰KŒKˆKˆKàŒ<˜:Ò%Ð%­W°QÐ8HÑ-IÔ-IÐ%Øð
ð 
ð 
ð 
õ " !¥TÑ*Ô*ð)�× Ò Ñ"Ô"Ð"à×%Ò% aÑ(Ô(ð
ñ 
ô 
ð 
	ð 
	ˆAð �NŠN˜1ÑÔÐØ�HŠH�Q‰KŒKˆKˆKð+ ð õ, �‰:Œ:Ðr4   c              #  ó~   K  — t          | ¦  «        }|D ](}| j        D ]}||j        v r||j        |         fV —  nŒŒ)dS )zÍiterate all the keys and attributes associated
    with a class, without using getattr().

    Does not use getattr() so that class-sensitive
    descriptors (i.e. property.__get__()) are not called.

    N)Údirr�  r  )rT   ÚkeysÚkeyr  s       r2   Úiterate_attributesr–  j  sl   è è € õ ˆs‰8Œ8€DØð ð ˆØ”ð 	ð 	ˆAØ�a”jÐ Ð Ø˜AœJ sœOÐ,Ð,Ð,Ð,Ø�ð !øðð r4   ú
self.proxyc                ó¶  ‡ ‡— |r|}n ‰€dŠˆ ˆfd„t          |¦  «        D ¦   «         }|D �]-}	 t          ||¦  «        }t          |d¦  «        sŒ%t          |d|¦  «        }t          t          j        |¦  «        }	n# t          $ r Y Œ]w xY w	 t          j        |	¦  «        }
t          j	        |
d         ¦  «        }t          j	        |
d         dd…         ¦  «        }n# t          $ r d}d	}Y nw xY wd
t          ¦   «         z  }|dur||ipi }t          ||¦  «         	 |	j        ||         _        n# t          $ r Y nw xY wt          ‰ |||         ¦  «         �Œ/dS )z9Automates delegation of __specials__ for a proxying type.N)rQ   Ú__del__Ú__getattribute__Ú__metaclass__r~  r�  c                ó�   •— g | ]B}|                      d ¦  «        r+|                     d ¦  «        rt          ‰|¦  «        s|‰v¯@|‘ŒCS )r¶   )Ú
startswithÚendswithr‰   )rl   r1   Úinto_clsÚskips     €€r2   rb  z0monkeypatch_proxied_specials.<locals>.<listcomp>�  sl   ø€ ð 	
ð 	
ð 	
àà—’˜TÑ"Ô"ð		
ð
 —J’J˜tÑ$Ô$ð	
õ   ¨!Ñ,Ô,ð	
ð ˜T�M�Mð ð "�M�Mr4   r!  r   r   r   z(self, *args, **kw)z(*args, **kw)z?def %(method)s%(fn_args)s: return %(name)s.%(method)s%(d_args)s)r“  r|   r‰   r	   rÂ   rÃ   rÿ   r   rº   r=  r  Úlocalsr×   rÅ   Úsetattr)rŸ  Úfrom_clsr   Úonlyrr   Úfrom_instanceÚdundersrC  Úmaybe_fnr¡   rÈ   Úfn_argsÚd_argsÚpyrÐ   s   ` `            r2   Úmonkeypatch_proxied_specialsr«  z  sß  øø€ ð ð 
Øˆˆàˆ<ðˆDð	
ð 	
ð 	
ð 	
ð 	
å˜‘]”]ð	
ñ 	
ô 	
ˆð ð /ñ /ˆð	Ý˜x¨Ñ0Ô0ˆHÝ˜8 ZÑ0Ô0ð ØÝ˜x¨°XÑ>Ô>ˆHÝ•eÔ(¨(Ñ3Ô3ˆBˆBøåð 	ð 	ð 	ØˆHð	øøøð	%ÝÔ0°Ñ4Ô4ˆDÝÔ2°4¸´7Ñ;Ô;ˆGÝÔ1°$°q´'¸!¸"¸"´+Ñ>Ô>ˆFˆFøÝð 	%ð 	%ð 	%Ø+ˆGØ$ˆFˆFˆFð	%øøøð
3Ý5;±X´Xñ>ð 	ð  Ð%Ð?¨4°Ð*?ÐEÀ2ð 	õ 	ˆR�‰Œˆð	Ø')¤ˆC�ŒKÔ$Ð$øÝð 	ð 	ð 	ØˆDð	øøøå�˜& # f¤+Ñ.Ô.Ð.Ñ.ð?/ð /s<   ® A;Á+A;Á;
BÂBÂACÃC.Ã-C.ÄD0Ä0
D=Ä<D=c                óF   — t          | d| ¦  «        t          |d|¦  «        u S )z;Return True if the two methods are the same implementation.r   )r|   )Úmeth1Úmeth2s     r2   Úmethods_equivalentr¯  ½  s0   € õ �5˜* eÑ,Ô,µØˆz˜5ñ1ô 1ð ð r4   c           	     óJ  — |s|st          d¦  «        ‚t          |t          ¦  «        rt          | |¦  «        r| S t          |pd„ t	          |¦  «        D ¦   «         ¦  «        }t          t	          | ¦  «        ¦  «        }t
          j        }t          |t          ¦  «        r|}n,|st          ¦   «         }t
          j        }nt          |¦  «        } ||                     |¦  «        |¦  «        r| S t          | t          ¦  «        s<|t
          j        u rdpd}t          | ›d|›dd 
                    |¦  «        ›�¦  «        ‚ G d„ d	¦  «        }|rd
|j        z   |_        t          ¦   «         }	t          | ¦  «        D ]r\  }
}|
|vrt          d|
z  ¦  «        ‚t          |¦  «        st          |
›d|›d�¦  «        ‚t          ||
t          |¦  «        ¦  «         |	                     |
¦  «         Œs ||	|¦  «        r|S t          dd 
                    ||	z
  ¦  «        z  ¦  «        ‚)aŽ  Ensure basic interface compliance for an instance or dict of callables.

    Checks that ``obj`` implements public methods of ``cls`` or has members
    listed in ``methods``. If ``required`` is not supplied, implementing at
    least one interface method is sufficient. Methods present on ``obj`` that
    are not in the interface are ignored.

    If ``obj`` is a dict and ``dict`` does not meet the interface
    requirements, the keys of the dictionary are inspected. Keys present in
    ``obj`` that are not in the interface will raise TypeErrors.

    Raises TypeError if ``obj`` does not meet the interface criteria.

    In all passing cases, an object with callable members is returned.  In the
    simple case, ``obj`` is returned as-is; if dict processing kicks in then
    an anonymous class is returned.

    obj
      A type, instance, or dictionary of callables.
    cls
      Optional, a type.  All public methods of cls are considered the
      interface.  An ``obj`` instance of cls will always pass, ignoring
      ``required``..
    methods
      Optional, a sequence of method names to consider as the interface.
    required
      Optional, a sequence of mandatory implementations. If omitted, an
      ``obj`` that provides at least one interface method is considered
      sufficient.  As a convenience, required may be a type, in which case
      all public methods of the type are required.

    z2a class or collection of method names are requiredc                ó<   — g | ]}|                      d ¦  «        °|‘ŒS )r‰  )r�  )rl   r1   s     r2   rb  z as_interface.<locals>.<listcomp>ì  s)   € ÐMÐMÐM a¸1¿<º<ÈÑ;LÔ;LÐM ÐMÐMÐMr4   zany ofzall ofz does not implement z: rj  c                  ó   — e Zd ZdZdS )ú(as_interface.<locals>.AnonymousInterfacezA callable-holding shell.N©rM   rN   rO   rP   rS   r4   r2   ÚAnonymousInterfacer³    s   € € € € € Ø'Ð'Ð'Ð'r4   rµ  Ú	Anonymousz%r: unknown in this interfacer1  z is not callablez,dictionary does not contain required keys %s)r  rb   rz   rX   r“  ÚoperatorÚgeÚgtÚintersectionr¼   ro   rM   Údictlike_iteritemsr<  r¢  ÚstaticmethodrZ   )rX  rT   rJ  ÚrequiredÚ	interfaceÚimplementedÚcompliesÚ	qualifierrµ  ÚfoundrC  rê   s               r2   Úas_interfacerÃ  Å  sx  € ðB ð N�wð NÝÐLÑMÔMÐMå�#•tÑÔð ¥¨C°Ñ!5Ô!5ð Øˆ
å�GÐMÐMÐM­3¨s©8¬8ÐMÑMÔMÑNÔN€IÝ•c˜#‘h”h‘-”-€KåŒ{€HÝ�(�DÑ!Ô!ð !ØˆˆØð !Ý‘5”5ˆÝ”;ˆˆå�x‘=”=ˆà€x�×(Ò(¨Ñ3Ô3°XÑ>Ô>ð Øˆ
õ �c�4Ñ Ô ð 
Ø¥¤Ð+Ð8°ÐD¸Hˆ	Ýàˆsˆs�I�I�I˜tŸyšy¨Ñ3Ô3Ð3ð5ñ
ô 
ð 	
ð
(ð (ð (ð (ð (ñ (ô (ð (ð ð AØ&1°C´LÑ&@ÐÔ#Ý‰EŒE€Eå*¨3Ñ/Ô/ð ð ‰ˆ�Ø˜Ð"Ð"ÝÐ;¸fÑDÑEÔEÐEÝ˜‰~Œ~ð 	FÝ°v°v°v¸t¸t¸tÐDÑEÔEÐEÝÐ" F­L¸Ñ,>Ô,>Ñ?Ô?Ð?Ø�	Š	�&ÑÔÐÐà€x��xÑ Ô ð "Ø!Ð!å
Ø6Ø
�)Š)�H˜uÑ$Ñ
%Ô
%ñ	&ñô ð r4   Ú_GFDzgeneric_fn_descriptor[Any]c                  ó¨   — e Zd ZU dZded<   ded<   ded<   dd d
„Zed!d„¦   «         Zed"d„¦   «         Zd#d„Zerd$d„Z	d%d„Z
d&d„Zed'd„¦   «         ZdS )(Úgeneric_fn_descriptorag  Descriptor which proxies a function when the attribute is not
    present in dict

    This superclass is organized in a particular way with "memoized" and
    "non-memoized" implementation classes that are hidden from type checkers,
    as Mypy seems to not be able to handle seeing multiple kinds of descriptor
    classes used for the same attribute.

    úCallable[..., _T_co]Úfgetrg   rP   r+   rM   NÚdocc                óH   — || _         |p|j        | _        |j        | _        d S r:   ©rÈ  rP   rM   ©r>   rÈ  rÉ  s      r2   rá   zgeneric_fn_descriptor.__init__-  s$   € ØˆŒ	ØÐ*˜dœlˆŒØœˆŒˆˆr4   r>   rÄ  rX  r8   rT   r   r*   c                ó   — d S r:   rS   ©r>   rX  rT   s      r2   Ú__get__zgeneric_fn_descriptor.__get__2  s   € Ø:=¸#r4   rB  r!   c                ó   — d S r:   rS   rÎ  s      r2   rÏ  zgeneric_fn_descriptor.__get__5  s   € Ø7:°sr4   úUnion[_GFD, _T_co]c                ó   — t          ¦   «         ‚r:   ©ÚNotImplementedErrorrÎ  s      r2   rÏ  zgeneric_fn_descriptor.__get__8  ó   € Ý!Ñ#Ô#Ð#r4   ÚinstancerB   c                ó   — d S r:   rS   ©r>   rÖ  rB   s      r2   Ú__set__zgeneric_fn_descriptor.__set__=  ó   € € € r4   c                ó   — d S r:   rS   )r>   rÖ  s     r2   Ú
__delete__z generic_fn_descriptor.__delete__?  rÚ  r4   c                ó   — t          ¦   «         ‚r:   rÓ  ©r>   rX  s     r2   Ú_resetzgeneric_fn_descriptor._resetA  rÕ  r4   rr   c                ó   — t          ¦   «         ‚r:   rÓ  ©rT   rX  rr   s      r2   Úresetzgeneric_fn_descriptor.resetD  s   € å!Ñ#Ô#Ð#r4   r:   )rÈ  rÇ  rÉ  rg   )r>   rÄ  rX  r8   rT   r   r*   rÄ  )rX  rB  rT   r   r*   r!   )r>   rÄ  rX  r   rT   r   r*   rÑ  ©rÖ  r   rB   r   r*   r8   ©rÖ  r   r*   r8   )rX  r   r*   r8   )rX  r   rr   r+   r*   r8   )rM   rN   rO   rP   rR   rá   r   rÏ  r   rÙ  rÜ  rß  Úclassmethodrâ  rS   r4   r2   rÆ  rÆ    sô   € € € € € € ðð ð ÐÐÑØÐÐÑØ€M€M�Mð&ð &ð &ð &ð &ð
 Ø=Ð=Ð=ñ „XØ=àØ:Ð:Ð:ñ „XØ:ð$ð $ð $ð $ð ð 9àAÐAÐAÐAà8Ð8Ð8Ð8ð$ð $ð $ð $ð ð$ð $ð $ñ „[ð$ð $ð $r4   rÆ  c                  ó    — e Zd ZdZesd„ ZdS dS )Ú_non_memoized_propertyzÉa plain descriptor that proxies a function.

    primary rationale is to provide a plain attribute that's
    compatible with memoized_property which is also recognized as equivalent
    by mypy.

    c                ó4   — |€| S |                       |¦  «        S r:   ©rÈ  rÎ  s      r2   rÏ  z_non_memoized_property.__get__T  s   € Øˆ{Ø�Ø—9’9˜S‘>”>Ð!r4   N)rM   rN   rO   rP   r   rÏ  rS   r4   r2   rç  rç  I  sA   € € € € € ðð ð ð "ð	"ð 	"ð 	"ð 	"ð 	"ð"ð "r4   rç  c                  ó8   — e Zd ZdZesd„ Zd„ Zed„ ¦   «         ZdS )Ú_memoized_propertyz2A read-only @property that is only evaluated once.c                óV   — |€| S |                       |¦  «        x|j        | j        <   }|S r:   )rÈ  r  rM   ©r>   rX  rT   Úresults       r2   rÏ  z_memoized_property.__get___  s.   € Øˆ{Ø�Ø37·9²9¸S±>´>ÐAˆCŒL˜œÑ'¨&ØˆMr4   c                óF   — t                                || j        ¦  «         d S r:   )rë  râ  rM   rÞ  s     r2   rß  z_memoized_property._resete  s    € Ý× Ò   d¤mÑ4Ô4Ð4Ð4Ð4r4   c                ó<   — |j                              |d ¦  «         d S r:   )r  rY   rá  s      r2   râ  z_memoized_property.reseth  s    € àŒ×Ò˜˜tÑ$Ô$Ð$Ð$Ð$r4   N)	rM   rN   rO   rP   r   rÏ  rß  rå  râ  rS   r4   r2   rë  rë  Z  s[   € € € € € Ø<Ð<àð ð	ð 	ð 	ð5ð 5ð 5ð ð%ð %ñ „[ð%ð %ð %r4   rë  c                ó.   ‡ — ˆ fd„}t          |‰ ¦  «        S )zàDecorate a method memoize its return value.

    Best applied to no-arg methods: memoization is not sensitive to
    argument values, and will always return the same value even when
    called with different arguments.

    c                óz   •‡—  ‰| g|¢R i |¤ŽŠˆfd„}‰j         |_         ‰j        |_        || j        ‰j         <   ‰S )Nc                 ó   •— ‰S r:   rS   ©Úar…  rî  s     €r2   Úmemoz6memoized_instancemethod.<locals>.oneshot.<locals>.memo•  s   ø€ ØˆMr4   )rM   rP   r  ©r>   r%  r…  rö  rî  r¡   s       @€r2   Úoneshotz(memoized_instancemethod.<locals>.oneshot’  sc   øø€ Ø��DÐ&˜4Ð&Ð&Ð& 2Ð&Ð&ˆð	ð 	ð 	ð 	ð 	ð œˆŒØ”zˆŒØ%)ˆŒ�b”kÑ"Øˆr4   r   )r¡   rø  s   ` r2   Úmemoized_instancemethodrù  ‰  s.   ø€ ð	ð 	ð 	ð 	ð 	õ ˜' 2Ñ&Ô&Ð&r4   c                  ó’   — e Zd ZU dZesdZ e¦   «         Zded<   dd„Z	dd„Z
dd„Z G d„ dee         ¦  «        Zedd„¦   «         ZdS )ÚHasMemoizedzA mixin class that maintains the names of memoized elements in a
    collection for easy cache clearing, generative, etc.

    rS   zFrozenSet[str]Ú_memoized_keysr*   r8   c                óP   — | j         D ]}| j                             |d ¦  «         Œd S r:   )rü  r  rY   ©r>   Úelems     r2   Ú_reset_memoizationszHasMemoized._reset_memoizations­  s9   € ØÔ'ð 	*ð 	*ˆDØŒM×Ò˜d DÑ)Ô)Ð)Ð)ð	*ð 	*r4   c                ó0   — | j         D ]}|| j        vsJ ‚Œd S r:   )rü  r  rþ  s     r2   Ú_assert_no_memoizationsz#HasMemoized._assert_no_memoizations±  s4   € ØÔ'ð 	-ð 	-ˆDØ˜tœ}Ð,Ð,Ð,Ð,Ð,ð	-ð 	-r4   r•  r+   rB   r   c                ó<   — || j         |<   | xj        |hz  c_        d S r:   )r  rü  )r>   r•  rB   s      r2   Ú_set_memoized_attributez#HasMemoized._set_memoized_attributeµ  s*   € Ø"ˆŒ�cÑØÐÔ ˜uÑ$ÐÔÐÐr4   c                  ór   — e Zd ZU dZded<   ded<   ded<   ddd
„Zedd„¦   «         Zedd„¦   «         Zd„ ZdS )úHasMemoized.memoized_attributezTA read-only @property that is only evaluated once.

        :meta private:

        úCallable[..., _T]rÈ  rg   rP   r+   rM   NrÉ  c                óH   — || _         |p|j        | _        |j        | _        d S r:   rË  rÌ  s      r2   rá   z'HasMemoized.memoized_attribute.__init__Ä  s$   € ØˆDŒIØÐ. $¤,ˆDŒLØ œMˆDŒMˆMˆMr4   r>   r&   rX  r8   rT   r   r*   c                ó   — d S r:   rS   rÎ  s      r2   rÏ  z&HasMemoized.memoized_attribute.__get__É  s   € Ø<?¸Cr4   r    c                ó   — d S r:   rS   rÎ  s      r2   rÏ  z&HasMemoized.memoized_attribute.__get__Ì  s   € Ø58°Sr4   c                ó‚   — |€| S |                       |¦  «        x|j        | j        <   }|xj        | j        hz  c_        |S r:   )rÈ  r  rM   rü  rí  s       r2   rÏ  z&HasMemoized.memoized_attribute.__get__Ï  sF   € Øˆ{Ø�Ø37·9²9¸S±>´>ÐAˆCŒL˜œÑ'¨&ØÐÔ 4¤= /Ñ1ÐÔØˆMr4   r:   )rÈ  r  rÉ  rg   )r>   r&   rX  r8   rT   r   r*   r&   )rX  r   rT   r   r*   r    )rM   rN   rO   rP   rR   rá   r   rÏ  rS   r4   r2   Úmemoized_attributer  ¹  s™   € € € € € € ð	ð 	ð 	 ÐÐÑØÐÐÑØˆˆ‰ð	*ð 	*ð 	*ð 	*ð 	*ð
 
Ø?Ð?Ð?ñ 
ŒØ?à	Ø8Ð8Ð8ñ 
ŒØ8ð	ð 	ð 	ð 	ð 	r4   r  r¡   r#   c                ó0   ‡— dˆfd„}t          |‰¦  «        S )zMDecorate a method memoize its return value.

        :meta private:

        r>   r   r%  r…  r*   c                ó¦   •‡—  ‰| g|¢R i |¤ŽŠˆfd„}‰j         |_         ‰j        |_        || j        ‰j         <   | xj        ‰j         hz  c_        ‰S )Nc                 ó   •— ‰S r:   rS   rô  s     €r2   rö  zBHasMemoized.memoized_instancemethod.<locals>.oneshot.<locals>.memoá  s   ø€ Ø�r4   )rM   rP   r  rü  r÷  s       @€r2   rø  z4HasMemoized.memoized_instancemethod.<locals>.oneshotÞ  s{   øø€ Ø�R˜Ð*˜tÐ*Ð*Ð* rÐ*Ð*ˆFðð ð ð ð ð œKˆDŒMØœ:ˆDŒLØ)-ˆDŒM˜"œ+Ñ&ØÐÔ B¤K =Ñ0ÐÔØˆMr4   )r>   r   r%  r   r…  r   r*   r   r   )rT   r¡   rø  s    ` r2   rù  z#HasMemoized.memoized_instancemethodÖ  s3   ø€ ð
	ð 
	ð 
	ð 
	ð 
	ð 
	õ ˜g rÑ*Ô*Ð*r4   NrL   )r•  r+   rB   r   r*   r8   ©r¡   r#   r*   r#   )rM   rN   rO   rP   r   rQ   Ú	frozensetrü  rR   r   r  r  Úmemoized_propertyr    r  rå  rù  rS   r4   r2   rû  rû     sÔ   € € € € € € ðð ð
 ð ð ˆ	à%. Y¡[¤[€NÐ0Ð0Ð0Ñ0ð*ð *ð *ð *ð-ð -ð -ð -ð%ð %ð %ð %ðð ð ð ð Ð.¨rÔ2ñ ô ð ð: ð+ð +ð +ñ „[ð+ð +ð +r4   rû  c                  ó$   — e Zd ZdZdZd„ Zd
d„Zd	S )ÚMemoizedSlotsaT  Apply memoized items to an object using a __getattr__ scheme.

    This allows the functionality of memoized_property and
    memoized_instancemethod to be available to a class using __slots__.

    The memoized get is not threadsafe under freethreading and the
    creator method may in extremely rare cases be called more than once.

    rS   c                ó    — t          |¦  «        ‚r:   )rÿ   )r>   r•  s     r2   Ú_fallback_getattrzMemoizedSlots._fallback_getattr   s   € Ý˜SÑ!Ô!Ð!r4   r•  r+   r*   r   c                ó°  ‡ ‡‡— ‰                      d¦  «        s‰                      d¦  «        rt          ‰¦  «        ‚t          ‰ j        d‰› �¦  «        r. t	          ‰ d‰› �¦  «        ¦   «         }t          ‰ ‰|¦  «         |S t          ‰ j        d‰› �¦  «        r(t	          ‰ d‰› �¦  «        Šˆˆˆ fd„}‰j        |_        |S ‰                      ‰¦  «        S )NÚ_memoized_attr_Ú_memoized_method_c                 óv   •‡—  ‰| i |¤ŽŠˆfd„}‰j         |_         ‰j        |_        t          ‰‰|¦  «         ‰S )Nc                 ó   •— ‰S r:   rS   rô  s     €r2   rö  z8MemoizedSlots.__getattr__.<locals>.oneshot.<locals>.memo  s   ø€ Ø!�Mr4   )rM   rP   r¢  )r%  r…  rö  rî  r•  rƒ  r>   s      @€€€r2   rø  z*MemoizedSlots.__getattr__.<locals>.oneshot  s\   øø€ Ø˜˜tÐ* rÐ*Ð*�ð"ð "ð "ð "ð "ð !%¤�”Ø#œ|�”Ý˜˜c 4Ñ(Ô(Ð(Ø�r4   )r�  rÿ   r‰   r{   r|   r¢  rP   r  )r>   r•  rB   rø  rƒ  s   ``  @r2   Ú__getattr__zMemoizedSlots.__getattr__  s  øøø€ Ø�>Š>Ð+Ñ,Ô,ð 	/°·²Øñ1
ô 1
ð 	/õ ! Ñ%Ô%Ð%õ �T”^Ð%<°sÐ%<Ð%<Ñ=Ô=ð 	/Ø:•G˜DÐ"9°CÐ"9Ð"9Ñ:Ô:Ñ<Ô<ˆEÝ�D˜#˜uÑ%Ô%Ð%ØˆLÝ�T”^Ð%>¸Ð%>Ð%>Ñ?Ô?ð 	/Ý˜4Ð!:°SÐ!:Ð!:Ñ;Ô;ˆDð	ð 	ð 	ð 	ð 	ð 	ð 	ð #œlˆGŒOØˆNà×)Ò)¨#Ñ.Ô.Ð.r4   N)r•  r+   r*   r   )rM   rN   rO   rP   rQ   r  r  rS   r4   r2   r  r  ó  sH   € € € € € ðð ð €Ið"ð "ð "ð/ð /ð /ð /ð /ð /r4   r  c                óÒ   — t          | t          ¦  «        rD|                      ¦   «                              ¦   «         } | dv rdS | dv rdS t	          d| z  ¦  «        ‚t          | ¦  «        S )N)ÚtrueÚyesÚonÚyÚtÚ1T)ÚfalseÚnoÚoffrm   ÚfÚ0FzString is not true/false: %r)rb   r+   Ústriprk   Ú
ValueErrorrx   )rX  s    r2   Úasboolr+  $  sp   € Ý�#•sÑÔð CØ�iŠi‰kŒk×ÒÑ!Ô!ˆØÐ6Ð6Ð6Ø�4ØÐ9Ð9Ð9Ø�5åÐ;¸cÑAÑBÔBÐBÝ�‰9Œ9Ðr4   Útextú!Callable[[str], Union[str, bool]]c                 ó   ‡ — dˆ fd„}|S )zqReturn a callable that will evaluate a string as
    boolean, or one of a set of "alternate" string values.

    rX  r+   r*   úUnion[str, bool]c                ó.   •— | ‰v r| S t          | ¦  «        S r:   )r+  )rX  r,  s    €r2   Úbool_or_valuez"bool_or_str.<locals>.bool_or_value6  s   ø€ Ø�$ˆ;ˆ;ØˆJå˜#‘;”;Ðr4   )rX  r+   r*   r/  rS   )r,  r1  s   ` r2   Úbool_or_strr2  0  s)   ø€ ðð ð ð ð ð ð Ðr4   rB   úOptional[int]c                ó(   — | €| S t          | ¦  «        S )zCoerce to integer.)r£   )rB   s    r2   Úasintr5  ?  s   € ð €}ØˆÝˆu‰:Œ:Ðr4   r…  r•  r@   Ú
flexi_boolÚdestúOptional[Dict[str, Any]]r8   c                óú   — |€| }|| v rnt          |t          ¦  «        rt          | |         |¦  «        sG| |         �=|t          u r|rt          | |         ¦  «        ||<   dS  || |         ¦  «        ||<   dS dS dS dS )zµIf 'key' is present in dict 'kw', coerce its value to type 'type\_' if
    necessary.  If 'flexi_bool' is True, the string '0' is considered false
    when coercing to boolean.
    N)rb   rz   rx   r+  )r…  r•  r@   r6  r7  s        r2   Úcoerce_kw_typer:  G  sœ   € ð €|Øˆð 	ˆrˆ	ˆ	Ý˜E¥4Ñ(Ô(ð 	Ý0:¸2¸c¼7ÀEÑ0JÔ0Jð 	àˆsŒGÐà•Dˆ=ˆ=˜Zˆ=Ý˜r #œw™œˆD�‰IˆIˆIà˜˜b œg™œˆD�‰IˆIˆIð 	ˆ	àÐð 	ˆ	r4   c                ó`   ‡ — t          |¦  «        }|ft          ˆ fd„|D ¦   «         ¦  «        z   S )zbProduce a tuple structure that is cacheable using the __dict__ of
    obj to retrieve values

    c              3  óH   •K  — | ]}|‰j         v ¯|‰j         |         fV — Œd S r:   ©r  ©rl   ÚkrX  s     €r2   rn   z"constructor_key.<locals>.<genexpr>g  sC   øè è € ð ð Ø!"¨q°C´LÐ/@Ð/@ˆˆCŒL˜ŒOÐÐ/@Ð/@Ð/@Ð/@ðð r4   )r  r‹   )rX  rT   rË   s   `  r2   Úconstructor_keyr@  a  sS   ø€ õ
 ˜3ÑÔ€EØˆ6•Eð ð ð ð Ø&+ðñ ô ñ ô ñ ð r4   r%  c                óš   ‡ — t          |¦  «        }|                     ˆ fd„|                     |¦  «        D ¦   «         ¦  «          ||i |¤ŽS )z„Instantiate cls using the __dict__ of obj as constructor arguments.

    Uses inspect to match the named arguments of ``cls``.

    c              3  óH   •K  — | ]}|‰j         v ¯|‰j         |         fV — Œd S r:   r=  r>  s     €r2   rn   z#constructor_copy.<locals>.<genexpr>t  sC   øè è € ð ð Ø!"¸aÀ3Ä<Ð>OÐ>OˆˆCŒL˜ŒOÐÐ>OÐ>OÐ>OÐ>Oðð r4   )r  r/   Ú
difference)rX  rT   r%  r…  rË   s   `    r2   Úconstructor_copyrD  l  ss   ø€ õ ˜3ÑÔ€EØ‡I‚Ið ð ð ð Ø&+×&6Ò&6°rÑ&:Ô&:ðñ ô ñ ô ð ð ˆ3�Ð˜ÐÐÐr4   úCallable[[], int]c                 ód   ‡‡— t          j        ¦   «         Št          j        d¦  «        Šˆˆfd„} | S )z%Return a threadsafe counter function.r   c                 óZ   •— ‰5  t          ‰ ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r:   )Únext)ÚcounterÚlocks   €€r2   Ú_nextzcounter.<locals>._next�  sv   ø€ Øð 	!ð 	!Ý˜‘=”=ð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s   „  $§$)Ú	threadingÚLockr˜   Úcount)rK  rI  rJ  s    @@r2   rI  rI  z  sG   øø€ õ Œ>ÑÔ€DÝŒo˜aÑ Ô €Gð!ð !ð !ð !ð !ð !ð €Lr4   Úspecimenrd  úOptional[Type[Any]]c                óä  — t          | d¦  «        r/| j        �!t          | j        t          ¦  «        rt          S | j        S t	          | t
          ¦  «        rt          nt          } || t          ¦  «        rt          S  || t          ¦  «        rt          S  || t          ¦  «        rt          S t          | d¦  «        rt          S t          | d¦  «        rt          S t          | d¦  «        rt          S |S )zÄGiven an instance or class, guess if it is or is acting as one of
    the basic collection types: list, set and dict.  If the __emulates__
    property is present, return that preferentially.
    Ú__emulates__NrŠ   rZ   rX   )r‰   rR  rŽ  rX   rb   rz   rü   r¼   )rO  rd  Úisas      r2   Úduck_type_collectionrT  ˆ  só   € õ ˆx˜Ñ(Ô(ð )àÔ Ð,µØÔ!¥3ñ2
ô 2
Ð,õ ˆJàÔ(Ð(å" 8­TÑ2Ô2Ð
B�*ˆ*½
€CØ
€sˆ8•TÑÔð ÝˆØ	ˆˆX•sÑ	Ô	ð Ýˆ
Ø	ˆˆX•tÑ	Ô	ð Ýˆåˆx˜Ñ"Ô"ð ÝˆÝ	�˜5Ñ	!Ô	!ð Ýˆ
Ý	�˜5Ñ	!Ô	!ð Ýˆàˆr4   r`  Úargtypeú'Union[Tuple[Type[Any], ...], Type[Any]]rr   c           
     ó6  — t          | |¦  «        r| S t          |t          ¦  «        rHt          j        d|›dd                     d„ |D ¦   «         ¦  «        ›dt          | ¦  «        ›d�¦  «        ‚t          j        d|›d|›dt          | ¦  «        ›d�¦  «        ‚)	Nz
Argument 'z ' is expected to be one of type z or c              3  ó    K  — | ]	}d |z  V — Œ
dS )z'%s'NrS   )rl   rõ  s     r2   rn   z"assert_arg_type.<locals>.<genexpr>´  s&   è è € Ð$AÐ$A°A V¨a¡ZÐ$AÐ$AÐ$AÐ$AÐ$AÐ$Ar4   z, got 'ú'z' is expected to be of type 'z', got ')rb   r‹   r   ÚArgumentErrorro   rz   )r`  rU  rr   s      r2   Úassert_arg_typer[  «  s¹   € õ �#�wÑÔð Øˆ
å�g�uÑ%Ô%ð 		ÝÔ#Ð#à�4�4˜ŸšÐ$AÐ$A¸Ð$AÑ$AÔ$AÑAÔAÐAÐAÅ4ÈÁ9Ä9À9À9ðNñô ð õ
 Ô#Ð#à�4�4˜˜˜¥$ s¡)¤) ) )ð-ñô ð r4   c           	     ó®  ‡ ‡— t          ‰ d¦  «        r!t          ‰                      ¦   «         ¦  «        S t          ‰ dt          ‰ dd¦  «        ¦  «        Š‰€t	          d‰ z  ¦  «        ‚t          ‰ d¦  «        rˆ ˆfd„} |¦   «         S t          ‰ d¦  «        r-t          ˆfd	„‰                      ¦   «         D ¦   «         ¦  «        S t	          d‰ z  ¦  «        ‚)
z?Return a (key, value) iterator for almost any dict-like object.rp  Ú__getitem__r  NzObject '%r' is not dict-likeÚiterkeysc               3  ó`   •K  — ‰                      ¦   «         D ]} ‰€J ‚|  ‰| ¦  «        fV — Œd S r:   )r^  )r•  ÚdictlikeÚgetters    €€r2   Úiteratorz$dictlike_iteritems.<locals>.iteratorÉ  sT   øè è € Ø×(Ò(Ñ*Ô*ð 'ð '�ØÐ)Ð)Ð)Ø˜6˜6 #™;œ;Ð&Ð&Ð&Ð&Ð&ð'ð 'r4   r”  c              3  ó2   •K  — | ]}| ‰|¦  «        fV — Œd S r:   rS   )rl   r•  ra  s     €r2   rn   z%dictlike_iteritems.<locals>.<genexpr>Ð  s0   øè è € ÐBÐB¨3�S˜&˜& ™+œ+Ð&ÐBÐBÐBÐBÐBÐBr4   )r‰   rü   rp  r|   r  Úiterr”  )r`  rb  ra  s   ` @r2   r»  r»  ½  s÷   øø€ õ ˆx˜Ñ!Ô!ð &Ý�H—N’NÑ$Ô$Ñ%Ô%Ð%å�X˜}­g°hÀÀtÑ.LÔ.LÑMÔM€FØ€~ÝÐ6¸ÑAÑBÔBÐBåˆx˜Ñ$Ô$ð Cð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð
 ˆx‰zŒzÐÝ	�˜6Ñ	"Ô	"ð CÝÐBÐBÐBÐB°(·-²-±/´/ÐBÑBÔBÑBÔBÐBåÐ6¸ÑAÑBÔBÐBr4   c                  ó:   ‡ — e Zd ZU dZded<   dˆ fd„Zddd„Zˆ xZS )ÚclasspropertyaA  A decorator that behaves like @property except that operates
    on classes rather than instances.

    The decorator is currently special when using the declarative
    module, but note that the
    :class:`~.sqlalchemy.ext.declarative.declared_attr`
    decorator should be used for this purpose with declarative.

    úCallable[[Any], Any]rÈ  r`  r   r…  c                óZ   •—  t          ¦   «         j        |g|¢R i |¤Ž |j        | _        d S r:   )Úsuperrá   rP   )r>   rÈ  r`  r…  r{   s       €r2   rá   zclassproperty.__init__â  s7   ø€ Ø�‰ŒÔ˜Ð* Ð*Ð*Ð* rÐ*Ð*Ð*Ø”|ˆŒˆˆr4   NrX  rT   úOptional[type]r*   c                ó,   — |                       |¦  «        S r:   ré  rÎ  s      r2   rÏ  zclassproperty.__get__æ  s   € Ø�yŠy˜‰~Œ~Ðr4   )rÈ  rg  r`  r   r…  r   r:   )rX  r   rT   rj  r*   r   )rM   rN   rO   rP   rR   rá   rÏ  Ú__classcell__©r{   s   @r2   rf  rf  Õ  sp   ø€ € € € € € ðð ð ÐÐÑð$ð $ð $ð $ð $ð $ðð ð ð ð ð ð ð ð r4   rf  c                  ó&   — e Zd Zdd„Zdd	„Zdd„ZdS )Úhybridpropertyr  r  c                ó"   — || _         || _        d S r:   )r  Úclslevel©r>   r  s     r2   rá   zhybridproperty.__init__ë  s   € ØˆŒ	ØˆŒˆˆr4   rÖ  r   Úownerr*   r    c                ó^   — |€|                       |¦  «        }|S |                      |¦  «        S r:   ©rq  r  ©r>   rÖ  rs  Úclsvals       r2   rÏ  zhybridproperty.__get__ï  ó0   € ØÐØ—]’] 5Ñ)Ô)ˆFØˆMà—9’9˜XÑ&Ô&Ð&r4   rw   úhybridproperty[_T]c                ó   — || _         | S r:   ©rq  rr  s     r2   Ú
classlevelzhybridproperty.classlevelö  ó   € ØˆŒØˆr4   N©r  r  ©rÖ  r   rs  r   r*   r    )r  rw   r*   ry  )rM   rN   rO   rá   rÏ  r|  rS   r4   r2   ro  ro  ê  sP   € € € € € ðð ð ð ð'ð 'ð 'ð 'ðð ð ð ð ð r4   ro  c                  ó6   — e Zd Zdd„Zdd	„Zdd„Zdd„Zdd„ZdS )Úrw_hybridpropertyr  r  c                ó0   — || _         || _        d | _        d S r:   )r  rq  Úsetfnrr  s     r2   rá   zrw_hybridproperty.__init__ü  s   € ØˆŒ	ØˆŒØ37ˆŒ
ˆ
ˆ
r4   rÖ  r   rs  r*   r    c                ó^   — |€|                       |¦  «        }|S |                      |¦  «        S r:   ru  rv  s       r2   rÏ  zrw_hybridproperty.__get__  rx  r4   rB   r8   c                óD   — | j         €J ‚|                       ||¦  «         d S r:   ©rƒ  rØ  s      r2   rÙ  zrw_hybridproperty.__set__  s*   € ØŒzÐ%Ð%Ð%Ø�
Š
�8˜UÑ#Ô#Ð#Ð#Ð#r4   rw   úrw_hybridproperty[_T]c                ó   — || _         | S r:   r†  rr  s     r2   Úsetterzrw_hybridproperty.setter  s   € ØˆŒ
Øˆr4   c                ó   — || _         | S r:   r{  rr  s     r2   r|  zrw_hybridproperty.classlevel  r}  r4   Nr~  r  rã  )r  rw   r*   r‡  )rM   rN   rO   rá   rÏ  rÙ  r‰  r|  rS   r4   r2   r�  r�  û  sx   € € € € € ð8ð 8ð 8ð 8ð
'ð 'ð 'ð 'ð$ð $ð $ð $ðð ð ð ðð ð ð ð ð r4   r�  c                  ó*   — e Zd ZdZdd„Zdd	„Zdd„ZdS )Úhybridmethodz/Decorate a function as cls- or instance- level.r  r  c                ó0   — |x| _         | _        || _        d S r:   )r  r   rq  rr  s     r2   rá   zhybridmethod.__init__  s   € Ø$(Ð(ˆŒ	�D”MØˆŒˆˆr4   rÖ  r   rs  r*   c                ó|   — |€ | j                              ||j        ¦  «        S | j                             ||¦  «        S r:   )rq  rÏ  r{   r  )r>   rÖ  rs  s      r2   rÏ  zhybridmethod.__get__  sJ   € ØÐØ”=×(Ò(Ø�u”ñô ð ð ”9×$Ò$Ø˜%ñô ð r4   rw   úhybridmethod[_T]c                ó   — || _         | S r:   r{  rr  s     r2   r|  zhybridmethod.classlevel&  r}  r4   Nr~  )rÖ  r   rs  r   r*   r  )r  rw   r*   r�  )rM   rN   rO   rP   rá   rÏ  r|  rS   r4   r2   rŒ  rŒ    sV   € € € € € Ø9Ð9ðð ð ð ðð ð ð ðð ð ð ð ð r4   rŒ  c                  ój   — e Zd ZU dZded<   i Zded<    ej        ¦   «         Z	 	 ddd„Z	d„ Z
d„ Zd„ ZdS )ÚsymbolaI  A constant symbol.

    >>> symbol("foo") is symbol("foo")
    True
    >>> symbol("foo")
    <symbol 'foo>

    A slight refinement of the MAGICCOOKIE=object() pattern.  The primary
    advantage of symbol() is its repr().  They are also singletons.

    Repeated calls of symbol('name') will all return the same instance.

    r+   rr   zDict[str, symbol]ÚsymbolsNrÉ  rg   Ú	canonicalr3  r*   c                ó€  — | j         5  | j                             |¦  «        }|€ct          |t          ¦  «        sJ ‚|€t          |¦  «        }t                               t          |¦  «        }||_	        |r||_
        || j        |<   n|r||k    rt          d|›d|› �¦  «        ‚|cd d d ¦  «         S # 1 swxY w Y   d S )Nz#Can't replace canonical symbol for z with new int value )Ú_lockr“  r  rb   r+   Úhashr£   Ú__new__r’  rr   rP   r  )rT   rr   rÉ  r”  rŸ   s        r2   r˜  zsymbol.__new__?  s0  € ð ŒYð 	ð 	Ø”+—/’/ $Ñ'Ô'ˆCØˆ{Ý! $­Ñ,Ô,Ð,Ð,Ð,ØÐ$Ý $ T¡
¤
�IÝ—k’k¥&¨)Ñ4Ô4�Ø�”Øð &Ø"%�C”Kð %(�”˜DÑ!Ð!àð  ¨cÒ!1Ð!1Ý#ð:¸dð :ð :Ø.7ð:ð :ñô ð ð ð-	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆBB3Â3B7Â:B7c                ó>   — t           | j        dt          | ¦  «        ffS )Nr)   )r’  rr   r£   r=   s    r2   Ú
__reduce__zsymbol.__reduce__]  s   € Ý˜œ	 3­¨D©	¬	Ð2Ð2Ð2r4   c                ó    — t          | ¦  «        S r:   rg  r=   s    r2   Ú__str__zsymbol.__str__`  s   € Ý�D‰zŒzÐr4   c                ó   — d| j         ›d�S )Nzsymbol(rk  ©rr   r=   s    r2   Ú__repr__zsymbol.__repr__c  s   € Ø'˜œÐ'Ð'Ð'Ð'r4   )NN)rr   r+   rÉ  rg   r”  r3  r*   r’  )rM   rN   rO   rP   rR   r“  rL  rM  r–  r˜  rš  rœ  rŸ  rS   r4   r2   r’  r’  +  s™   € € € € € € ðð ð €I€I�Ià!#€GÐ#Ð#Ð#Ñ#ØˆIŒNÑÔ€Eð
 "Ø#'ð	ð ð ð ð ð<3ð 3ð 3ðð ð ð(ð (ð (ð (ð (r4   r’  c                  ó   — e Zd Zdd„Zdd„ZdS )Ú_IntFlagMetaÚ	classnamer+   r�   úTuple[Type[Any], ...]Údict_rÕ   r…  r   r*   r8   c                ó¢  — g x| _         }|                     ¦   «         D ]�\  }}t          j        d|¦  «        rŒt	          |t
          ¦  «        rt          ||¬¦  «        }n%|                     d¦  «        st          d¦  «        ‚Œgt          | ||¦  «         | 
                    |¦  «         ŒŽt          j        d„ |D ¦   «         ¦  «        | _        d S )Nz^__.*__$)r”  r‰  z#Expected integer values for IntFlagc                ó   — i | ]
}|j         |“ŒS rS   rž  )rl   rŸ   s     r2   ú
<dictcomp>z)_IntFlagMeta.__init__.<locals>.<dictcomp>~  s   € Ð,Ð,Ð,˜sˆSŒX�sÐ,Ð,Ð,r4   )Ú_itemsrp  rp   Úmatchrb   r£   r’  r�  r  r¢  rŠ   r   ÚimmutabledictÚ__members__)	rT   r¢  r�   r¤  r…  rp  r?  ÚvrŸ   s	            r2   rá   z_IntFlagMeta.__init__h  sÞ   € ð  ÐˆŒ
�UØ—K’K‘M”Mð 
	ð 
	‰DˆAˆqÝŒx˜ QÑ'Ô'ð ØÝ˜!�SÑ!Ô!ð Ý˜Q¨!Ð,Ñ,Ô,��Ø—\’\ #Ñ&Ô&ð ÝÐ EÑFÔFÐFàÝ�C˜˜CÑ Ô Ð Ø�LŠL˜ÑÔÐÐå&Ô4Ø,Ð, eÐ,Ñ,Ô,ñ
ô 
ˆŒˆˆr4   úIterator[symbol]c                ó    — t          d¦  «        ‚)Nz“iter not implemented to ensure compatibility with Python 3.11 IntFlag.  Please use __members__.  See https://github.com/python/cpython/issues/99304rÓ  r=   s    r2   Ú__iter__z_IntFlagMeta.__iter__�  s   € Ý!ð=ñ
ô 
ð 	
r4   N)
r¢  r+   r�   r£  r¤  rÕ   r…  r   r*   r8   )r*   r­  )rM   rN   rO   rá   r¯  rS   r4   r2   r¡  r¡  g  s<   € € € € € ð
ð 
ð 
ð 
ð2
ð 
ð 
ð 
ð 
ð 
r4   r¡  c                  ó   — e Zd ZdZdS )Ú_FastIntFlagzÆAn 'IntFlag' copycat that isn't slow when performing bitwise
    operations.

    the ``FastIntFlag`` class will return ``enum.IntFlag`` under TYPE_CHECKING
    and ``_FastIntFlag`` otherwise.

    Nr´  rS   r4   r2   r±  r±  ‰  s   € € € € € ðð ð ð r4   r±  )Ú	metaclass)ÚIntFlagÚ_EÚchoicesúDict[_E, List[Any]]Úresolve_symbol_namesúOptional[_E]c                ó´   — |                      ¦   «         D ]&\  }}| |u r|c S |r| |j        k    r|c S | |v r|c S Œ'| €dS t          j        d|› d| ›�¦  «        ‚)aO  Given a user parameter, parse the parameter into a chosen value
    from a list of choice objects, typically Enum values.

    The user argument can be a string name that matches the name of a
    symbol, or the symbol object itself, or any number of alternate choices
    such as True/False/ None etc.

    :param arg: the user argument.
    :param choices: dictionary of enum values to lists of possible
        entries for each.
    :param name: name of the argument.   Used in an :class:`.ArgumentError`
        that is raised if the parameter doesn't match any available argument.

    NzInvalid value for 'z': )rp  rr   r   rZ  )r`  rµ  rr   r·  Ú
enum_valueÚchoices         r2   Úparse_user_argument_for_enumr¼  ž  sŸ   € ð( &Ÿmšm™oœoð ð Ñˆ
�FØ�*ÐÐØÐÐÐØ!ð 	 c¨Z¬_Ò&<Ð&<ØÐÐÐØ�Fˆ]ˆ]ØÐÐÐð ð €{Øˆtå
Ô
ÐB°$ÐBÐB¸3ÐBÐBÑ
CÔ
CÐCr4   rÖ  c                ó2   — t           | _         t           dz  a dS )zÞAssign a '_creation_order' sequence to the given instance.

    This allows multiple instances to be sorted in order of creation
    (typically within a single thread; the counter is not particularly
    threadsafe).

    r   N)Ú_creation_order)rÖ  s    r2   Úset_creation_orderr¿  Ã  s   € õ  /€HÔÝ�qÑ€O€O€Or4   rR  c                óŒ   — 	  | |i |¤ŽS # t           $ r/ t          dt          j        ¦   «         dd…         z  ¦  «         Y dS w xY w)zXexecutes the given function, catches all exceptions and converts to
    a warning.

    z%s('%s') ignoredr   r   N)rc   Úwarnr;   r<   )r  r%  rR  s      r2   Úwarn_exceptionrÂ  Ð  sc   € ð
7Øˆt�TÐ$˜VÐ$Ð$Ð$øÝð 7ð 7ð 7ÝÐ¥#¤,¡.¤.°°1°Ô"5Ñ5Ñ6Ô6Ð6Ð6Ð6Ð6ð7øøøs   ‚
 Š5AÁAé   c                ól   — 	 t          | ¦  «        |k    rd| d|…         z  S | S # t          $ r | cY S w xY w)Nz%s...r   )r»   r  )rB   Úlen_s     r2   Úellipses_stringrÆ  Û  sT   € ðÝˆu‰:Œ:˜ÒÐØ˜U 1 T 6œ]Ñ*Ð*àˆLøÝð ð ð Øˆˆˆðøøøs   ‚$ ¢$ ¤3²3c                  ó@   ‡ — e Zd ZU dZded<   dˆ fd
„Zdd„Zdd„Zˆ xZS )Ú_hash_limit_stringa/  A string subclass that can only be hashed on a maximum amount
    of unique values.

    This is used for warnings so that we can send out parameterized warnings
    without the __warningregistry__ of the module,  or the non-overridable
    "once" registry within warnings.py, overloading memory,


    r£   Ú_hashrB   r+   Únumr%  úSequence[Any]r*   c                ó´   •— ||z  d|z  z   }t          ¦   «                              | |¦  «        }t          d|t          |¦  «        |z  fz  ¦  «        |_        |S )Nz6 (this warning may be suppressed after %d occurrences)z%s_%d)ri  r˜  r—  rÉ  )rT   rB   rÊ  r%  Úinterpolatedr>   r{   s         €r2   r˜  z_hash_limit_string.__new__ò  s_   ø€ ð  ™ØDÀsÑJñ
ˆõ ‰wŒw�Š˜s LÑ1Ô1ˆÝ˜' U­D°Ñ,>Ô,>ÀÑ,DÐ$EÑEÑFÔFˆŒ
Øˆr4   c                ó   — | j         S r:   )rÉ  r=   s    r2   Ú__hash__z_hash_limit_string.__hash__ü  s
   € ØŒzÐr4   Úotherr   rx   c                óB   — t          | ¦  «        t          |¦  «        k    S r:   )r—  )r>   rÐ  s     r2   Ú__eq__z_hash_limit_string.__eq__ÿ  s   € Ý�D‰zŒz�T %™[œ[Ò(Ð(r4   )rB   r+   rÊ  r£   r%  rË  r*   rÈ  )r*   r£   )rÐ  r   r*   rx   )	rM   rN   rO   rP   rR   r˜  rÏ  rÒ  rl  rm  s   @r2   rÈ  rÈ  å  s|   ø€ € € € € € ðð ð €J€J�Jðð ð ð ð ð ðð ð ð ð)ð )ð )ð )ð )ð )ð )ð )r4   rÈ  Úmsgc                óˆ   — |r%t          t          j        | |¬¦  «        ¦  «         dS t          | t          j        ¦  «         dS )zdIssue a warning.

    If msg is a string, :class:`.exc.SAWarning` is used as
    the category.

    )rÏ   N)Ú_warnings_warnr   Ú	SAWarning)rÓ  rÏ   s     r2   rÁ  rÁ    sG   € ð ð +Ý•s”} S¨tÐ4Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5å�s�CœMÑ*Ô*Ð*Ð*Ð*r4   rË  c                ó`   — |rt          | d|¦  «        } t          | t          j        ¦  «         dS )z\Issue a warning with a parameterized string, limiting the number
    of registrations.

    é
   N)rÈ  rÕ  r   rÖ  )rÓ  r%  s     r2   Úwarn_limitedrÙ    s5   € ð
 ð 0Ý   b¨$Ñ/Ô/ˆÝ�3�œÑ&Ô&Ð&Ð&Ð&r4   z)Dict[CodeType, Tuple[str, Type[Warning]]]Ú_warning_tagsÚmessageÚcategoryúType[Warning]úCallable[[_F], _F]c                ó   ‡ ‡— ˆˆ fd„}|S )Nc                ó*   •— ‰‰ft           | j        <   | S r:   )rÚ  rú   )r¡   rÜ  rÛ  s    €€r2   Úgoz#tag_method_for_warnings.<locals>.go   s   ø€ Ø&-¨xÐ%8��b”kÑ"Øˆ	r4   rS   )rÛ  rÜ  rá  s   `` r2   Útag_method_for_warningsrâ    s)   øø€ ðð ð ð ð ð ð €Ir4   z&^(?:sqlalchemy\.(?!testing)|alembic\.)úUnion[str, Warning]úOptional[Type[Warning]]Ú
stacklevelc                óÔ  — 	 t          j        |¦  «        }dx}}|�~|s5t          j        t          |j                             dd¦  «        ¦  «        sd}|j        t          v r#d}t          |j                 \  }}|p|}| › d|› d�} |j	        }|s|dz  }n|r|rn|­~n# t          $ r d}Y n d}Y nxY w|�t          j        | ||dz   ¬	¦  «         d S t          j        | |dz   ¬	¦  «         d S )
NFrM   rµ   Tz (rk  r   r   )rå  )r;   Ú	_getframerp   r©  Ú_not_sa_patternÚ	f_globalsr  Úf_coderÚ  Úf_backr*  ÚwarningsrÁ  )rÛ  rÜ  rå  ÚframeÚstacklevel_foundÚwarning_tag_foundÚ_suffixÚ	_categorys           r2   rÕ  rÕ  *  s]  € ð%Ý”˜jÑ)Ô)ˆð 05Ð4ÐÐ,ØÐð $ð (­B¬HÝ ¤×!4Ò!4°ZÀÑ!DÔ!Dñ-ô -ð (ð
 $(Ð ð
 Œ|�}Ð,Ð,Ø$(Ð!Ý%2°5´<Ô%@Ñ"�˜Ø#Ð0 y�Ø$Ð2Ð2¨Ð2Ð2Ð2�à”LˆEà#ð Ø˜a‘�
�
Ø!ð Ð&7ð Øð3 Ðøøõ ð ð ð ð ˆ
ˆ
ˆ
ðð ˆ
ˆ
ˆ
øøøð< ÐÝŒ�g˜x°JÀ±NÐCÑCÔCÐCÐCÐCåŒ�g¨*°q©.Ð9Ñ9Ô9Ð9Ð9Ð9s   ‚B ÂB.Â)B.r  Úretry_on_exceptionúCallable[..., Optional[_T]]c                ó"   ‡ ‡‡— ‰ gŠdˆ ˆˆfd„}|S )zNDecorate the given function to be a no-op after it is called exactly
    once.r`  r   r…  r*   úOptional[_T]c                 ó†   •— ‰}‰r;‰                      ¦   «         }	  || i |¤ŽS #  ‰r‰                     d|¦  «         ‚ xY wd S )Nr   )rY   Úinsert)r`  r…  Ú	strong_fnÚonce_fnr¡   Úoncerò  s       €€€r2   rá  zonly_once.<locals>.goe  sf   ø€ ð ˆ	Øð 	Ø—h’h‘j”jˆGðØ�w Ð* rÐ*Ð*Ð*øðØ%ð ,Ø—K’K  7Ñ+Ô+Ð+Øøøøàˆts   ›# £>)r`  r   r…  r   r*   rõ  rS   )r¡   rò  rá  rú  s   `` @r2   Ú	only_oncerû  ]  s=   øøø€ ð ˆ4€Dðð ð ð ð ð ð ð ð €Ir4   z%sqlalchemy/([a-z_]+/){0,2}[a-z_]+\.pyzunit(?:2|test2?/)ÚtbÚexclude_prefixúre.Pattern[str]Úexclude_suffixc                ó`  — d}t          | ¦  «        dz
  }||k    rA|                     | |         ¦  «        r&|dz  }||k    r|                     | |         ¦  «        °&||k    rA|                     | |         ¦  «        r&|dz  }||k    r|                     | |         ¦  «        °&| ||dz   …         S )at  Chop extraneous lines off beginning and end of a traceback.

    :param tb:
      a list of traceback lines as returned by ``traceback.format_stack()``

    :param exclude_prefix:
      a regular expression object matching lines to skip at beginning of
      ``tb``

    :param exclude_suffix:
      a regular expression object matching lines to skip at end of ``tb``
    r   r   )r»   Úsearch)rü  rý  rÿ  r†   Úends        r2   Úchop_tracebackr  {  s½   € ð" €EÝ
ˆb‰'Œ'�A‰+€CØ
�3Š,ˆ,˜>×0Ò0°°E´Ñ;Ô;ˆ,Ø�‰
ˆð �3Š,ˆ,˜>×0Ò0°°E´Ñ;Ô;ˆ,à
�3Š,ˆ,˜>×0Ò0°°C´Ñ9Ô9ˆ,Øˆq‰ˆð �3Š,ˆ,˜>×0Ò0°°C´Ñ9Ô9ˆ,àˆe�c˜A‘gˆoÔÐr4   c                ó|   — d| z  }t          ¦   «                              ¦   «         }t          ||¦  «         |d         S )Nz&def set(obj, value):    obj.%s = valuerX   )r¡  Úcopyr×   )ÚattrnamerÏ   rÐ   s      r2   Ú
attrsetterr  ˜  s4   € Ø3°hÑ>€DÝ
‰(Œ(�-Š-‰/Œ/€CÝˆˆs�O„O€OØˆuŒ:Ðr4   z^__.+__$c                  ó(   ‡ — e Zd ZdZdZdˆ fd„Zˆ xZS )Ú
TypingOnlyz“A mixin class that marks a class as 'typing only', meaning it has
    absolutely no methods, attributes, or runtime functionality whatsoever.

    rS   r*   r8   c                ó¶   •— t           | j        v r)d„ | j        D ¦   «         }|rt          d| › d|› d�¦  «        ‚t	          ¦   «                              ¦   «          d S )Nc                óF   — h | ]}t                                |¦  «        °|’ŒS rS   )Ú_dundersr©  ©rl   rr   s     r2   ú	<setcomp>z/TypingOnly.__init_subclass__.<locals>.<setcomp>¬  s9   € ð ð ð ØµX·^²^ÀDÑ5IÔ5IðØðð ð r4   zClass z< directly inherits TypingOnly but has additional attributes rï   )r	  r  r  ÚAssertionErrorri  Ú__init_subclass__)rT   Ú	remainingr{   s     €r2   r  zTypingOnly.__init_subclass__ª  s�   ø€ Ý˜œÐ&Ð&ðð Ø!$¤ðñ ô ˆIð ð Ý$ð:˜Sð :ð :Ø-6ð:ð :ð :ñô ð õ 	‰Œ×!Ò!Ñ#Ô#Ð#Ð#Ð#r4   rL   )rM   rN   rO   rP   rQ   r  rl  rm  s   @r2   r	  r	  ¢  sN   ø€ € € € € ðð ð
 €Ið
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$ð 
$r4   r	  c                  óJ   ‡ — e Zd ZU dZded<   	 d
ˆ fd„Zedd	„¦   «         Zˆ xZS )ÚEnsureKWArga6  Apply translation of functions to accept \**kw arguments if they
    don't already.

    Used to ensure cross-compatibility with third party legacy code, for things
    like compiler visit methods that need to accept ``**kw`` arguments,
    but may have been copied from old code that didn't accept them.

    r+   Úensure_kwargr*   r8   c                ó2  •— | j         }| j        }|re|D ]b}t          j        ||¦  «        }|rI||         }t	          j        |¦  «        }|j        s&|                      |¦  «        }t          | ||¦  «         Œct          ¦   «          
                    ¦   «          d S r:   )r  r  rp   r©  r   rº   r'  Ú
_wrap_w_kwr¢  ri  r  )	rT   Úfn_regÚclsdictr•  r1   r¡   rÈ   Úwrappedr{   s	           €r2   r  zEnsureKWArg.__init_subclass__Ê  s¥   ø€ ØÔ!ˆØ”,ˆØð 	3Øð 3ð 3�Ý”H˜V SÑ)Ô)�Øð 3Ø  œ�BÝ!Ô8¸Ñ<Ô<�DØœ:ð 3Ø"%§.¢.°Ñ"4Ô"4˜Ý  S¨'Ñ2Ô2Ð2øÝ‰Œ×!Ò!Ñ#Ô#Ð#Ð#Ð#r4   r¡   rw   c                ó0   ‡— dˆfd„}t          |‰¦  «        S )Nr`  r   r…  r*   c                 ó   •—  ‰| Ž S r:   rS   )r`  r…  r¡   s     €r2   Úwrapz$EnsureKWArg._wrap_w_kw.<locals>.wrapÚ  s   ø€ Ø�2�s�8ˆOr4   )r`  r   r…  r   r*   r   r   )rT   r¡   r  s    ` r2   r  zEnsureKWArg._wrap_w_kwØ  s3   ø€ ð	ð 	ð 	ð 	ð 	ð 	õ ˜d BÑ'Ô'Ð'r4   rL   )r¡   rw   r*   rw   )	rM   rN   rO   rP   rR   r  rå  r  rl  rm  s   @r2   r  r  ·  s|   ø€ € € € € € ðð ð ÐÐÑðð$ð $ð $ð $ð $ð $ð ð(ð (ð (ñ „[ð(ð (ð (ð (ð (r4   r  c                ó0  — t          |d¦  «        rt          | |¦  «        S | }|j        j        |_        t          |d¦  «        r|j        |_        t          |j        d¦  «        r|j        j        r|j        j        |_        n|j        r|j        |_        |S )z‘Augment functools.update_wrapper() to work with objects with
    a ``__call__()`` method.

    :param fn:
      object with __call__ method

    rM   rN   rP   )r‰   r   r{   rM   rN   r!  rP   )Úwrapperr¡   Ú_fs      r2   Úwrap_callabler   à  s˜   € õ ˆr�:ÑÔð Ý˜g rÑ*Ô*Ð*àˆØ”lÔ+ˆŒÝ�2�|Ñ$Ô$ð 	*ØœMˆBŒMå�2”; 	Ñ*Ô*ð 	$¨r¬{Ô/Bð 	$ØœÔ,ˆBŒJˆJØŒZð 	$ØœˆBŒJàˆ	r4   c                óº  — d| vr|                       d¦  «        S d}g g}d}t          | ¦  «        }||k     r›| |         }|dk    rE|dk    r9||dz
  k     r0| |dz            dk    r!|d                              d¦  «         |dz  }nC|dz  }n=|dk    r|dk    r|                     g ¦  «         n|d                              |¦  «         |dz  }||k     °›d„ |D ¦   «         S )aÄ  Parse a dotted identifier with accommodation for quoted names.

    Includes support for SQL-style double quotes as a literal character.

    E.g.::

        >>> quoted_token_parser("name")
        ["name"]
        >>> quoted_token_parser("schema.name")
        ["schema", "name"]
        >>> quoted_token_parser('"Schema"."Name"')
        ['Schema', 'Name']
        >>> quoted_token_parser('"Schema"."Name""Foo"')
        ['Schema', 'Name""Foo']

    ú"rï   r   r   r;  c                ó8   — g | ]}d                       |¦  «        ‘ŒS )rµ   )ro   )rl   ró   s     r2   rb  z'quoted_token_parser.<locals>.<listcomp>!  s"   € Ð/Ð/Ð/˜uˆB�GŠG�E‰NŒNÐ/Ð/Ð/r4   )rñ   r»   rŠ   )rB   r€  rî  ÚidxÚlvÚchars         r2   Úquoted_token_parserr'  ø  s  € ð$ �%ÐÐØ�{Š{˜3ÑÔÐð €EØ!˜d€FØ
€CÝ	ˆU‰Œ€BØ
�Š(ˆ(Ø�SŒzˆØ�3Š;ˆ;Ø˜Šzˆz˜c B¨¡Fšl˜l¨u°S¸1±W¬~ÀÒ/DÐ/DØ�r”
×!Ò! #Ñ&Ô&Ð&Ø�q‘��à˜‘
��Ø�SŠ[ˆ[˜U ašZ˜ZØ�MŠM˜"ÑÔÐÐà�2ŒJ×Ò˜dÑ#Ô#Ð#Øˆq‰ˆð �Š(ˆ(ð 0Ð/¨Ð/Ñ/Ô/Ð/r4   Úparamsc                ó>   ‡ ‡— t          j        ‰ ¦  «        Š ˆ ˆfd„}|S )Nc                óv   •— | j         d ur| j         pd}|rt          |ˆfd„‰D ¦   «         ¦  «        }|| _         | S )Nrµ   c                ó   •— i | ]}|‰“ŒS rS   rS   )rl   Úparamr,  s     €r2   r§  z8add_parameter_text.<locals>.decorate.<locals>.<dictcomp>*  s   ø€ Ð)JÐ)JÐ)J¸%¨%°Ð)JÐ)JÐ)Jr4   )rP   Úinject_param_text)r¡   rÉ  r(  r,  s     €€r2   rÒ   z$add_parameter_text.<locals>.decorate'  sT   ø€ ØŒj Ð$Ð3¨¬Ð9°rˆØð 	LÝ# CÐ)JÐ)JÐ)JÐ)JÀ6Ð)JÑ)JÔ)JÑKÔKˆCØˆŒ
Øˆ	r4   )r   rl  )r(  r,  rÒ   s   `` r2   Úadd_parameter_textr.  $  s9   øø€ ÝÔ! &Ñ)Ô)€Fðð ð ð ð ð ð €Or4   c                óè   — |                       dd¦  «        }t          |¦  «        dk    r| S |\  }}|                     d¦  «        s|dz   t          j        |¦  «        z   S t          j        | ¦  «        S )Nú
r   ri   )rñ   r»   r�  ÚtextwrapÚdedent)r,  Ú
split_textÚ	firstliner  s       r2   Ú_dedent_docstringr5  1  su   € Ø—’˜D !Ñ$Ô$€JÝ
ˆ:�„˜!ÒÐØˆà)Ñˆ	�9Ø×Ò Ñ$Ô$ð %Ø˜4Ñ¥(¤/°)Ñ"<Ô"<Ñ<Ð<åŒ˜tÑ$Ô$Ð$r4   Úgiven_doctextÚ
injecttextÚposc                ó,  — t          | pd¦  «        }|                     d¦  «        }t          |¦  «        dk    r|                     d¦  «         t	          j        |¦  «                             d¦  «        }|d         r|                     dd¦  «         d„ t          |¦  «        D ¦   «         }|                     dd¦  «         |t          |t          |¦  «        dz
  ¦  «                 }|d|…         |z   ||d …         z   }d 	                    |¦  «        S )Nrµ   r0  r   r   c                ó@   — g | ]\  }}|                      ¦   «         °|‘ŒS rS   )r)  )rl   rÊ  Úlines      r2   rb  z)inject_docstring_text.<locals>.<listcomp>H  s)   € ÐHÐHÐH‘i�c˜4¸4¿:º:¹<¼<ÐHˆcÐHÐHÐHr4   )
r5  rñ   r»   rŠ   r1  r2  r÷  rn  Úminro   )r6  r7  r8  ÚdoctextÚlinesÚinjectlinesÚblanksÚ
inject_poss           r2   Úinject_docstring_textrB  =  s  € õ % ]Ð%8°bÑ9Ô9€GØ�MŠM˜$ÑÔ€EÝ
ˆ5�z„z�Q‚€Ø�Š�RÑÔÐÝ”/ *Ñ-Ô-×3Ò3°DÑ9Ô9€KØ�1„~ð "Ø×Ò˜1˜bÑ!Ô!Ð!àHÐH¥9¨UÑ#3Ô#3ÐHÑHÔH€FØ
‡M‚M�!�QÑÔÐà�˜C¥ V¡¤¨q¡Ñ1Ô1Ô2€Jà�!�J�,Ô +Ñ-°°j°k°kÔ0BÑB€EØ�9Š9�UÑÔÐr4   z(\s+):param (.+?):r=  Úinject_paramsúDict[str, str]c                óz  — t          j        |                      ¦   «         ¦  «        }g }d }|�rz|                     ¦   «         }t                               |¦  «        }|€¦|r£|                     d¦  «                             d¦  «        }||v rwdt          |                     d¦  «        ¦  «        z  dz   }|rBt          j        d|d         ¦  «        }	|	r%dt          |	                     d¦  «        ¦  «        z  }|||         z   }nŒ|r| 
                    d|dg¦  «         d }no|                     ¦   «         s| 
                    ||dg¦  «         d }n@|                     d¦  «        r+| 
                    ||                     ¦   «         g¦  «         �Œe|                     |¦  «         |�°zd                     |¦  «        S )	Nr   Ú*ri   r   z(\s+)\Sr   r0  z::)ÚcollectionsÚdequeÚ
splitlinesÚpopleftÚ
_param_regr©  rÜ   Úlstripr»   rp   r[   Úrstriprž  rŠ   ro   )
r=  rC  Údoclinesr>  Ú	to_injectr;  r1   r,  ÚindentÚm2s
             r2   r-  r-  T  sÃ  € ÝÔ  ×!3Ò!3Ñ!5Ô!5Ñ6Ô6€HØ€Eð €IØ
ñ Ø×ÒÑ!Ô!ˆå×Ò˜TÑ"Ô"ˆàÐØð >ØŸš ™
œ
×)Ò)¨#Ñ.Ô.�Ø˜MÐ)Ð)à ¥3 q§w¢w¨q¡z¤z¡?¤?Ñ2°SÑ8�Fð  ð <ÝœX j°(¸1´+Ñ>Ô>˜Øð <Ø%(­3¨r¯xªx¸©{¬{Ñ+;Ô+;Ñ%;˜Fà &¨°uÔ)=Ñ =�IøØð 
	Ø�LŠL˜$ 	¨4Ð0Ñ1Ô1Ð1ØˆIˆIØ—’‘”ð 	Ø�LŠL˜$ 	¨4Ð0Ñ1Ô1Ð1ØˆIˆIØ�]Š]˜4Ñ Ô ð 	ð �LŠL˜$ × 0Ò 0Ñ 2Ô 2Ð3Ñ4Ô4Ð4ÙØ�Š�TÑÔÐð? ñ ðB �9Š9�UÑÔÐr4   rË   c                ó*  — t          | ¦  «        dk    rdS t          | ¦  «        dk    }|r
| dd…         n| dd…         | dd…         z   } d„ | D ¦   «         }|rd                     |¦  «        S d                     |dd…         ¦  «        ›d|d         ›�S )	zŒTrims a list of strings from the middle and return a string of up to
    four elements. Strings greater than 11 characters will be truncatedr   Nr.  r°   r;  c                óR   — g | ]$}t          |¦  «        d k    rd|dd …         z  n|‘Œ%S )é   z%s..N)r»   r  s     r2   rb  z$repr_tuple_names.<locals>.<listcomp>†  s8   € Ð
LÐ
LÐ
L¸d¥ T¡¤¨R¢ ˆ6�D˜˜"˜”IÑÐ°TÐ
LÐ
LÐ
Lr4   rj  z, ..., )r»   ro   )rË   ÚflagÚress      r2   Úrepr_tuple_namesrW    s¨   € õ ˆ5�z„z�Q‚€ØˆtÝˆu‰:Œ:˜Š?€DØÐ;ˆE�!�A�#ŒJˆJ E¨!¨A¨#¤J°°r°s°s´Ñ$;€EØ
LÐ
LÀeÐ
LÑ
LÔ
L€CØð >Ø�yŠy˜‰~Œ~Ðà $§	¢	¨#¨a°¨c¬(Ñ 3Ô 3Ð 3Ð 3°S¸´W°WÐ=Ð=r4   c                ó:   — t           rdS | rt          d¦  «        ‚dS )NTzDcython extensions were expected to be installed, but are not presentF)r   ÚImportError)Úraise_s    r2   Úhas_compiled_extr[  �  s5   € Ýð ØˆtØ	ð Ýð"ñ
ô 
ð 	
ð
 ˆur4   c                  ó,   — e Zd Z ej        ¦   «         ZdS )Ú_MissingN)rM   rN   rO   ÚenumÚautoÚMissingrS   r4   r2   r]  r]  ™  s   € € € € € ØˆdŒi‰kŒk€G€G€Gr4   r]  )r)   r   r*   r+   )rT   rU   r*   rV   )r`   r   r*   r+   r:   )rT   re   rf   rg   r*   r+   )rt   ru   rv   rw   r*   rx   )r�   r‚   r*   rƒ   )rŽ   r�   r�   r+   r*   r‘   )r¡   r¢   rm   r£   r*   r¤   )r©   rw   r*   rª   )rÏ   rÔ   rÐ   rÕ   rÍ   r+   r*   rw   )rT   rz   r  r  r  r  r*   r  )rT   rz   r  r  r  rx   r*   r  )r  rw   r*   r  )FF)r¡   rw   r  rx   r  rx   r*   r  )T)r¡   r+  r²   rx   r*   r,  )rS   rS   rS   rS   )rF  re   rG  r+   rH  r+   rI  r�   rJ  r�   rK  r�   rL  r�   r*   rM  )rS   NrS   )
rX  r   rY  rZ  r[  r\  r]  r�   r*   r+   )NNr—  N)NNNr  )rX  r   r*   rx   )r,  r+   r*   r-  )rB   r   r*   r3  )TN)r…  rÕ   r•  r+   r@   re   r6  rx   r7  r8  r*   r8   )rX  r   rT   re   r*   rƒ   )
rX  r    rT   rU   r%  r   r…  r   r*   r    )r*   rE  )rO  r   rd  rP  r*   rP  )r`  r   rU  rV  rr   r+   r*   r   )F)
r`  r   rµ  r¶  rr   r+   r·  rx   r*   r¸  rä  )r  rw   r%  r   rR  r   r*   r   )rÃ  )rÓ  r+   rÏ   rg   r*   r8   )rÓ  r+   r%  rË  r*   r8   )rÛ  r+   rÜ  rÝ  r*   rÞ  )Nr   )rÛ  rã  rÜ  rä  rå  r£   r*   r8   )r¡   r  rò  rx   r*   ró  )rü  r  rý  rþ  rÿ  rþ  r*   r  )r(  r   r,  r+   r*   rÞ  )r,  r+   r*   r+   )r6  rg   r7  r+   r8  r£   r*   r+   )r=  r+   rC  rD  r*   r+   )rË   r  r*   rg   )šrP   Ú
__future__r   rG  r^  Ú	functoolsr   r·   r˜   r·  rp   r;   r1  rL  rÂ   r   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rì  rµ   r   r   Ú_has_cyr   r   r   r    r!   r#   r%   r&   r'   r(   r3   r6   r_   rd   rs   r€   r�   r    r§   r¨   rÓ   rÄ   rØ   rÙ   rÛ   r  r  r  r*  r¿   rE  rP  rS  rW  rx  rz  r‘  r–  r«  r¯  rÃ  rÄ  rÆ  rç  rë  r  Únon_memoized_propertyÚpropertyÚro_memoized_propertyÚro_non_memoized_propertyrù  rû  Ú!HasMemoized_ro_memoized_attributer  r  r+  r2  r5  r:  r@  rD  rI  rT  r[  r»  rf  ro  r�  rŒ  r£   r’  rz   r¡  r±  r³  ÚFastIntFlagÚEnumr´  r¼  r¾  r¿  rÂ  rÆ  r+   rÈ  rÁ  rÙ  rÚ  rR   râ  Úcompilerè  rÕ  rû  Ú_SQLA_REÚ_UNITTEST_REr  ÚNoneTyper  r  r	  r  r   r'  r.  r5  rB  rK  r-  rW  r[  r]  r`  Ú	MissingOrrS   r4   r2   ú<module>rq     s  ððð ð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à€WˆT�]„]€Øˆ� 4Ð(Ñ(Ô(€Ø€WˆT˜ # s (Ô+Ð,Ñ,Ô,€Ø€gˆeÐ3Ð4Ñ4Ô4€Ø€gˆeÐ@ÐAÑAÔA€Ø€gˆeÐ0Ð1Ñ1Ô1€Ø€gˆeÐ.Ð/Ñ/Ô/€ñ$ð $ð $ð $ð82ð 82ð 82ð 82ð 82ñ 82ô 82ð 82ñvð ð ð ñ6ð 6ð 6ð 6ð /3ñOñ Oð Oð Oð Oñ,ð ,ð ,ð ,ñ$ð ð ð ñMð Mð Mð Mñ ð ð ð ð €gˆeÐ/Ð0Ñ0Ô0€ñ
S,ð S,ð S,ð S,ñlð ð ð ð €gˆe�n„n€Ø€gˆe�n„n€ð(ð (ð (ð (ð (ñ (ô (ð (ðV
ð 
ð 
ð( 
ð  $Ø!ð	ð ñ ð ð ñ 
„ðð 
à-1ÀEðð ñ ð ð ñ 
„ðð .2ÀEð2ð 2ñ 2ð 2ð 2ð 2ñj2ð 2ð 2ð 2ð EJñ9;ñ 9;ð 9;ð 9;ð 9;ðz HLñr
ñ r
ð r
ð r
ð r
ñjð ð ð ðJ #%ØØ "Ø/1ññ ð ð ð ð26ð 6ð 6ð(	ð 	ð 	ð 02Ø8<Ø "ñ	KBñ KBð KBð KBð KBð\;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð<#ð #ð #ðLð ð ð& 
Ø	Ø	Øñ@/ð @/ð @/ð @/ðFð ð ñSð Sð Sð Sðl €wˆvÐ9Ð:Ñ:Ô:€ð($ð ($ð ($ð ($ð ($˜G EœNñ ($ô ($ð ($ðV"ð "ð "ð "ð "Ð2°5Ô9ñ "ô "ð "ð"%ð %ð %ð %ð %Ð.¨uÔ5ñ %ô %ð %ð< ð Nð .ÐØ1Ðð
 $ÐØ'ÐÐð 0BÐAÐÐ,Ø7MÐMÐÐ4ñ'ð 'ð 'ð 'ð.J+ð J+ð J+ð J+ð J+ñ J+ô J+ð J+ðZ ð GØ(0Ð%Ð%à(3Ô(FÐ%ð-/ð -/ð -/ð -/ð -/ñ -/ô -/ð -/ñb	ð 	ð 	ð 	ñð ð ð ñð ð ð ð Ø%)ñ'ñ 'ð 'ð 'ð 'ñ4ð ð ð ñð ð ð ñð ð ð ð 37ñ ñ  ð  ð  ð  ñFð ð ð ð$Cð Cð Cð0ð ð ð ð �Hñ ô ð ð*ð ð ð ð �W˜R”[ñ ô ð ð"ð ð ð ð ˜ œñ ô ð ð4ð ð ð ð �7˜2”;ñ ô ð ð,9(ð 9(ð 9(ð 9(ð 9(ˆSñ 9(ô 9(ð 9(ðx
ð 
ð 
ð 
ð 
�4ñ 
ô 
ð 
ðDð ð ð ð ˜\ð ñ ô ð ð ð ØÐÐÐÐÐà€K€Kà€Kð €WˆT˜œÐ#Ñ#Ô#€ð "'ñ	Dñ Dð Dð Dð DðD €ñ
ð 
ð 
ð 
ñ7ð 7ð 7ð 7ñð ð ð ð)ð )ð )ð )ð )˜ñ )ô )ð )ñ<
+ñ 
+ð 
+ð 
+ð 
+ñ'ð 'ð 'ð 'ð <>€Ð =Ð =Ð =Ñ =ñð ð ð ð �"”*ÐFÑGÔG€ð
 )-Øñ0:ñ 0:ð 0:ð 0:ð 0:ñfð ð ð ð4 ˆ2Œ:Ð>Ñ?Ô?€ØˆrŒzÐ.Ñ/Ô/€ð
 '3Ø&.ðñ ð ð ð ð4 ˆ4�‰:Œ:€ðð ð ð ˆ2Œ:�jÑ!Ô!€ð$ð $ð $ð $ð $ñ $ô $ð $ð*&(ð &(ð &(ð &(ð &(ñ &(ô &(ð &(ðRð ð ñ0)0ð )0ð )0ñX
ñ 
ð 
ð 
ñ	%ñ 	%ð 	%ð 	%ññ ð ð ð( ˆRŒZÑ-Ñ.Ô.€
ñ(ñ (ð (ð (ñV>ñ >ð >ð >ñ	ñ 	ð 	ð 	ðð ñ ð ñ ˆtŒyñ ô ð ð Ô
€Ø�"�g˜hÔ.Ô/Ð/Ô0€	€	€	r4   