ó
    [h�3  ã                  ó   • S SK Jr  S SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
  S SKJr  S SKJrJr  SSKJrJrJrJrJr  SS	KJrJr  SS
KJrJrJrJr  \R<                  S:¼  a	  S SKJrJ r   OS SK!JrJ r   \" S5      r"\" S5      r#\$\$\%\%4   S4   r&\$\&S4   r' " S S\5      r(\
" SS9 " S S\5      5       r)\
" SS9 " S S\\)   5      5       r*g)é    )ÚannotationsN)ÚCallableÚMapping)Ú	dataclass)Úwraps)ÚAnyÚTypeVaré   )ÚBrokenResourceErrorÚEndOfStreamÚaclose_forcefullyÚget_cancelled_exc_classÚ	to_thread)ÚTypedAttributeSetÚtyped_attribute)ÚAnyByteStreamÚ
ByteStreamÚListenerÚ	TaskGroup)é   é   )ÚTypeVarTupleÚUnpackÚT_RetvalÚPosArgsT.c                  ó
  • \ rS rSr% Sr\" 5       rS\S'   \" 5       rS\S'   \" 5       r	S\S'   \" 5       r
S	\S
'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   \" 5       rS\S'   Srg)ÚTLSAttributeé!   z5Contains Transport Layer Security related attributes.ú
str | NoneÚalpn_protocolÚbytesÚchannel_binding_tls_uniqueztuple[str, str, int]Úcipherz*None | dict[str, str | _PCTRTTT | _PCTRTT]Úpeer_certificatezbytes | NoneÚpeer_certificate_binaryÚboolÚserver_sidez!list[tuple[str, str, int]] | NoneÚshared_ciphersússl.SSLObjectÚ
ssl_objectÚstandard_compatibleÚstrÚtls_version© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r    Ú__annotations__r"   r#   r$   r%   r'   r(   r*   r+   r-   Ú__static_attributes__r.   ó    Ú^/home/gothic/public_html/Fooocus/fooocus_env/lib/python3.13/site-packages/anyio/streams/tls.pyr   r   !   s™   ‡ Ù?ñ !0Ó 1€M�:Ó1á(7Ó(9Ð Ó9á#2Ó#4€FÐ Ó4ñ FUÓEVÐÐBÓVá,;Ó,=Ð˜\Ó=á'Ó)€K�Ó)ñ 9HÓ8I€NÐ5ÓIá /Ó 1€J�Ó1ñ !0Ó 1Ð˜Ó1á&Ó(€K�Ö(r6   r   F)Úeqc                  óä   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S	\S'   \SSSSS.           SS jj5       r      SS jrSS jr	SS jr
SSS jjrSS jrSS jr\SS j5       rSrg) Ú	TLSStreamé=   a  
A stream wrapper that encrypts all sent data and decrypts received data.

This class has no public initializer; use :meth:`wrap` instead.
All extra attributes from :class:`~TLSAttribute` are supported.

:var AnyByteStream transport_stream: the wrapped stream

r   Útransport_streamr&   r+   r)   Ú_ssl_objectzssl.MemoryBIOÚ	_read_bioÚ
_write_bioNT)r'   ÚhostnameÚssl_contextr+   c             ƒ  ó®  #   • Uc  U(       + nU(       dŠ  U(       a  [         R                  R                  O[         R                  R                  n[         R                  " U5      n[        [         S5      (       a$  U=R                  [         R                  ) -  sl        [         R                  " 5       n[         R                  " 5       n[        U5      [         R                  L a  UR                  XxX#S9n	O-[        R                  " UR                  UUUUS5      I Sh  v•N n	U " UUU	UUS9n
U
R                  U	R                  5      I Sh  v•N   U
$  N3 N7f)a\  
Wrap an existing stream with Transport Layer Security.

This performs a TLS handshake with the peer.

:param transport_stream: a bytes-transporting stream to wrap
:param server_side: ``True`` if this is the server side of the connection,
    ``False`` if this is the client side (if omitted, will be set to ``False``
    if ``hostname`` has been provided, ``False`` otherwise). Used only to create
    a default context when an explicit context has not been provided.
:param hostname: host name of the peer (if host name checking is desired)
:param ssl_context: the SSLContext object to use (if not provided, a secure
    default will be created)
:param standard_compatible: if ``False``, skip the closing handshake when
    closing the connection, and don't raise an exception if the peer does the
    same
:raises ~ssl.SSLError: if the TLS handshake fails

NÚOP_IGNORE_UNEXPECTED_EOF)r'   Úserver_hostname)r<   r+   r=   r>   r?   )ÚsslÚPurposeÚCLIENT_AUTHÚSERVER_AUTHÚcreate_default_contextÚhasattrÚoptionsrC   Ú	MemoryBIOÚtypeÚ
SSLContextÚwrap_bior   Úrun_syncÚ_call_sslobject_methodÚdo_handshake)Úclsr<   r'   r@   rA   r+   ÚpurposeÚbio_inÚbio_outr*   Úwrappers              r7   ÚwrapÚTLSStream.wrapO   s,  é € ð: ÑØ&œ,ˆKææ+6”—‘×'Ò'¼C¿K¹K×<SÑ<Sð ô ×4Ò4°WÓ=ˆKô ”sÐ6×7Ñ7Ø×#Ò#¬×(DÑ(DÐ'DÑDÕ#ä—’“ˆÜ—-’-“/ˆô �Ó¤§¡Ò.Ø$×-Ñ-Ø¨[ð .ð ‰Jô  )×1Ò1Ø×$Ñ$ØØØØØó ÷ ˆJñ Ø-Ø 3Ø"ØØñ
ˆð ×,Ñ,¨Z×-DÑ-DÓE×EÐEØˆñ#ñ  	Fùs$   ‚DEÄEÄ,EÅ
EÅEÅEc              ‡  ó¼  #   •   U" U6 nU R                   R                  (       a;  U R                  R                  U R                   R	                  5       5      I S h  v•N   U$  N! [
        R                   Ga     U R                   R                  (       a<  U R                  R                  U R                   R	                  5       5      I S h  v•N    U R                  R                  5       I S h  v•N  nU R                  R                  U5         GOÇ! [         a    U R                  R                  5           GOŸ[         a@  nU R                  R                  5         U R                   R                  5         [        UeS nAff = f[
        R                   a@    U R                  R                  U R                   R	                  5       5      I S h  v•N     GO[
        R                   a@  nU R                  R                  5         U R                   R                  5         [        UeS nAf[
        R                    a™  nU R                  R                  5         U R                   R                  5         [#        U[
        R$                  5      (       d!  UR&                  (       a/  SUR&                  ;   a  U R(                  (       a  [        Ue[        S ee S nAff = fGMØ  7f)NÚUNEXPECTED_EOF_WHILE_READING)r?   Úpendingr<   ÚsendÚreadrE   ÚSSLWantReadErrorÚreceiver>   Úwriter   Ú	write_eofÚOSErrorr   ÚSSLWantWriteErrorÚSSLSyscallErrorÚSSLErrorÚ
isinstanceÚSSLEOFErrorÚstrerrorr+   )ÚselfÚfuncÚargsÚresultÚdataÚexcs         r7   rQ   Ú TLSStream._call_sslobject_method–   s  é € ð ð(Ù˜t˜�ðH —?‘?×*×*Ø×/Ñ/×4Ñ4°T·_±_×5IÑ5IÓ5KÓL×LÐLà�ñ MøôI ×'Ñ'ô /ð/à—‘×.×.Ø"×3Ñ3×8Ñ8¸¿¹×9MÑ9MÓ9OÓP×PÑPà!%×!6Ñ!6×!>Ñ!>Ó!@×@Ð@�Dð —N‘N×(Ñ(¨×.øô #ó /Ø—N‘N×,Ñ,×.Ð.Üó 7Ø—N‘N×,Ñ,Ô.Ø—O‘O×-Ñ-Ô/Ü-°3Ð6ûð7úô ×(Ñ(ó IØ×+Ñ+×0Ñ0°·±×1EÑ1EÓ1GÓH×HÔHÜ×&Ñ&ó 3Ø—‘×(Ñ(Ô*Ø—‘×)Ñ)Ô+Ü)¨sÐ2ûÜ—<‘<ó Ø—‘×(Ñ(Ô*Ø—‘×)Ñ)Ô+Ü˜c¤3§?¡?×3Ñ3Ø—L—LÐ%CÀsÇ|Á|Ó%Sà×/×/Ü1°sÐ:ä)¨tÐ3àûðúò1 ùs¯   ‚K…A$ ŠAKÁA"ÁKÁ$KÁ:ADÃCÃ"DÃ.C1Ã/DÃ4KÄKÄ$FÄ6KÄ7KÄ:	FÅ;E>Å>FÆAKÇGÇKÇKÇKÇ+;H&È&KÈ=BKËKËKc              ƒ  ó  #   • U R                  U R                  R                  5      I Sh  v•N   U R                  R	                  5         U R
                  R	                  5         U R                  U R                  R                  5       4$  N^7f)zl
Does the TLS closing handshake.

:return: a tuple of (wrapped byte stream, bytes left in the read buffer)

N)rQ   r=   Úunwrapr>   rb   r?   r<   r^   ©rj   s    r7   rr   ÚTLSStream.unwrapÄ   sk   é € ð ×)Ñ)¨$×*:Ñ*:×*AÑ*AÓB×BÐBØ�‰× Ñ Ô"Ø�‰×!Ñ!Ô#Ø×$Ñ$ d§n¡n×&9Ñ&9Ó&;Ð;Ð;ñ 	Cùs   ‚)B«B
¬ABc              ƒ  ó  #   • U R                   (       a   U R                  5       I S h  v•N   U R                  R                  5       I S h  v•N   g  N'! [         a     [        U R                  5      I S h  v•N    e f = f N47f©N)r+   rr   ÚBaseExceptionr   r<   Úaclosers   s    r7   rx   ÚTLSStream.acloseÐ   sl   é € Ø×#×#ðØ—k‘k“m×#Ð#ð
 ×#Ñ#×*Ñ*Ó,×,Ñ,ñ $øÜ ó Ü'¨×(=Ñ(=Ó>×>Ñ>Øðúñ 	-ùsC   ‚B•A ¨A©A ­BÁ
A?ÁBÁA Á"A<Á4A7Á5A<Á<Bc              ƒ  óˆ   #   • U R                  U R                  R                  U5      I S h  v•N nU(       d  [        eU$  N7frv   )rQ   r=   r^   r   )rj   Ú	max_bytesrn   s      r7   r`   ÚTLSStream.receiveÚ   s:   é € Ø×0Ñ0°×1AÑ1A×1FÑ1FÈ	ÓR×RˆÞÜÐàˆñ	 Sùs   ‚*A¬A ­Ac              ƒ  ól   #   • U R                  U R                  R                  U5      I S h  v•N   g  N7frv   )rQ   r=   ra   )rj   Úitems     r7   r]   ÚTLSStream.sendá   s'   é € Ø×)Ñ)¨$×*:Ñ*:×*@Ñ*@À$ÓG×GÓGùs   ‚*4¬2­4c              ƒ  ó<  #   • U R                  [        R                  5      n[        R                  " SU5      nU(       aQ  [        UR                  S5      5      [        UR                  S5      =(       d    S5      pCX44S:  a  [        SU 35      e[        S5      e7f)NzTLSv(\d+)(?:\.(\d+))?é   r
   r   )r�   r   z;send_eof() requires at least TLSv1.3; current session uses z7send_eof() has not yet been implemented for TLS streams)Úextrar   r-   ÚreÚmatchÚintÚgroupÚNotImplementedError)rj   r-   r„   ÚmajorÚminors        r7   Úsend_eofÚTLSStream.send_eofä   s‹   é € Ø—j‘j¤×!9Ñ!9Ó:ˆÜ—’Ð1°;Ó?ˆÞÜ˜uŸ{™{¨1›~Ó.´°E·K±KÀ³N×4GÀaÓ0H�5Øˆ~ Ó&Ü)ð$Ø$/ =ð2óð ô
 "ØEó
ð 	
ùs   ‚BBc                óH  ^ • 0 T R                   R                  E[        R                  T R                  R
                  [        R                  T R                  R                  [        R                  T R                  R                  [        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  U 4S j[        R                  T R                  R                   0
E$ )Nc                 ó:   >• T R                   R                  S5      $ )NF©r=   Úgetpeercertrs   s   €r7   Ú<lambda>Ú,TLSStream.extra_attributes.<locals>.<lambda>ü   s   ø€ °4×3CÑ3C×3OÑ3OÐPUÔ3Vr6   c                 ó:   >• T R                   R                  S5      $ )NTrŽ   rs   s   €r7   r�   r‘   ý   s   ø€ ¸$×:JÑ:J×:VÑ:VØô;r6   c                 ó0   >• T R                   R                  $ rv   )r=   r'   rs   s   €r7   r�   r‘      s   ø€ ¨d×.>Ñ.>×.JÒ.Jr6   c                 ór   >• T R                   R                  (       a  T R                   R                  5       $ S $ rv   )r=   r'   r(   rs   s   €r7   r�   r‘     s3   ø€ Ø×Ñ×+×+ð 26×1AÑ1A×1PÑ1PÓ1Rð 2àð2r6   c                 ó   >• T R                   $ rv   ©r+   rs   s   €r7   r�   r‘     ó   ø€ °d×6NÒ6Nr6   c                 ó   >• T R                   $ rv   )r=   rs   s   €r7   r�   r‘     s   ø€ ¨T×-=Ò-=r6   )r<   Úextra_attributesr   r    r=   Úselected_alpn_protocolr"   Úget_channel_bindingr#   r$   r%   r'   r(   r+   r*   r-   Úversionrs   s   `r7   r™   ÚTLSStream.extra_attributesó   sÓ   ø€ ð
Ø×#Ñ#×4Ñ4ð
ä×&Ñ&¨×(8Ñ(8×(OÑ(OÜ×3Ñ3Ø× Ñ ×4Ñ4ä×Ñ ×!1Ñ!1×!8Ñ!8Ü×)Ñ)Ô+VÜ×0Ñ0ô 3ô ×$Ñ$Ô&JÜ×'Ñ'ô *ô ×,Ñ,Ô.NÜ×#Ñ#Ô%=Ü×$Ñ$ d×&6Ñ&6×&>Ñ&>ñ#
ð 	
r6   r.   )r<   r   r'   zbool | Noner@   r   rA   zssl.SSLContext | Noner+   r&   Úreturnr:   )rk   z&Callable[[Unpack[PosArgsT]], T_Retval]rl   zUnpack[PosArgsT]rž   r   )rž   ztuple[AnyByteStream, bytes]©rž   ÚNone)i   )r{   r…   rž   r!   )r~   r!   rž   r    ©rž   zMapping[Any, Callable[[], Any]])r/   r0   r1   r2   r3   r4   ÚclassmethodrX   rQ   rr   rx   r`   r]   rŠ   Úpropertyr™   r5   r.   r6   r7   r:   r:   =   sÖ   ‡ ñð $Ó#ØÓØÓØÓØÓàð
 $(Ø#Ø-1Ø$(ñDà'ðDð !ð	Dð
 ðDð +ðDð "ðDð 
ôDó ðDðL,Ø:ð,ØCSð,à	ô,ô\
<ô-öôHô
ð ó
ó ó
r6   r:   c                  ó–   • \ rS rSr% SrS\S'   S\S'   SrS\S	'   S
rS\S'   \SS j5       r	 S     SS jjr
SS jr\SS j5       rSrg)ÚTLSListeneri
  aj  
A convenience listener that wraps another listener and auto-negotiates a TLS session
on every accepted connection.

If the TLS handshake times out or raises an exception,
:meth:`handle_handshake_error` is called to do whatever post-mortem processing is
deemed necessary.

Supports only the :attr:`~TLSAttribute.standard_compatible` extra attribute.

:param Listener listener: the listener to wrap
:param ssl_context: the SSL context object
:param standard_compatible: a flag passed through to :meth:`TLSStream.wrap`
:param handshake_timeout: time limit for the TLS handshake
    (passed to :func:`~anyio.fail_after`)
zListener[Any]Úlistenerzssl.SSLContextrA   Tr&   r+   é   ÚfloatÚhandshake_timeoutc              ƒ  ó  #   • [        U5      I Sh  v•N   [        U [        5       5      (       d(  [        R                  " [
        5      R                  SU S9  [        U [        5      (       a  [        U [        5       5      (       a  e g Nu7f)au  
Handle an exception raised during the TLS handshake.

This method does 3 things:

#. Forcefully closes the original stream
#. Logs the exception (unless it was a cancellation exception) using the
   ``anyio.streams.tls`` logger
#. Reraises the exception if it was a base exception or a cancellation exception

:param exc: the exception
:param stream: the original stream

NzError during TLS handshake)Úexc_info)r   rg   r   ÚloggingÚ	getLoggerr/   Ú	exceptionÚ	Exception)ro   Ústreams     r7   Úhandle_handshake_errorÚ"TLSListener.handle_handshake_error"  sz   é € ô    Ó'×'Ð'ô ˜#Ô6Ó8×9Ñ9ô
 ×ÒœhÓ'×1Ñ1Ø,°sð 2ñ ô
 ˜#œy×)Ñ)¬Z¸Ô=TÓ=V×-WÑ-WØð .Xñ 	(ùs   ‚B	‘B’A6B	Nc              ƒ  óˆ   ^ ^#   • [        T5      SUU 4S jj5       nT R                  R                  X25      I S h  v•N   g  N7f)Nc              “  ó`  >#   • SSK Jn   U" TR                  5         [        R	                  U TR
                  TR                  S9I S h  v•N nS S S 5        T" W5      I S h  v•N   g  N! , (       d  f       N!= f N! [         a$  nTR                  X05      I S h  v•N     S nAg S nAff = f7f)Nr
   )Ú
fail_after)rA   r+   )	Ú rµ   r©   r:   rX   rA   r+   rw   r±   )r°   rµ   Úwrapped_streamro   Úhandlerrj   s       €€r7   Úhandler_wrapperÚ*TLSListener.serve.<locals>.handler_wrapperG  s–   øé € å%ð
.Ù × 6Ñ 6Õ7Ü+4¯>©>ØØ$(×$4Ñ$4Ø,0×,DÑ,Dð ,:ð ,÷ &�N÷ 8ñ ˜nÓ-×-Ñ-ñ&÷ 8Õ7úñ .øô !ó ?Ø×1Ñ1°#Ó>×>Ö>ûð?üsu   ƒB.‹A= �-A*Á
A(ÁA*ÁA= ÁB.Á"A;Á#B.Á(A*Á*
A8Á4A= Á;B.Á=
B+ÂB&ÂBÂB&Â!B.Â&B+Â+B.)r°   r   rž   r    )r   r¦   Úserve)rj   r¸   Ú
task_groupr¹   s   ``  r7   r»   ÚTLSListener.serveB  s8   ùé € ô
 
ˆw‹÷	.ó 
ð	.ð �m‰m×!Ñ! /Ó>×>Ó>ùs   „6AºA »Ac              ƒ  óT   #   • U R                   R                  5       I S h  v•N   g  N7frv   )r¦   rx   rs   s    r7   rx   ÚTLSListener.acloseY  s   é € Ø�m‰m×"Ñ"Ó$×$Ó$ùs   ‚( &¡(c                ó0   ^ • [         R                  U 4S j0$ )Nc                 ó   >• T R                   $ rv   r–   rs   s   €r7   r�   Ú.TLSListener.extra_attributes.<locals>.<lambda>_  r—   r6   )r   r+   rs   s   `r7   r™   ÚTLSListener.extra_attributes\  s   ø€ ô ×,Ñ,Ô.Nð
ð 	
r6   r.   )ro   rw   r°   r   rž   r    rv   )r¸   zCallable[[TLSStream], Any]r¼   zTaskGroup | Nonerž   r    rŸ   r¡   )r/   r0   r1   r2   r3   r4   r+   r©   Ústaticmethodr±   r»   rx   r£   r™   r5   r.   r6   r7   r¥   r¥   
  s}   ‡ ñð" ÓØÓØ $Ð˜Ó$Ø!Ð�uÓ!àóó ððD (,ð?à+ð?ð %ð?ð 
õ	?ô.%ð ó
ó ó
r6   r¥   )+Ú
__future__r   r¬   rƒ   rE   ÚsysÚcollections.abcr   r   Údataclassesr   Ú	functoolsr   Útypingr   r	   r¶   r   r   r   r   r   Ú_core._typedattrr   r   Úabcr   r   r   r   Úversion_infor   r   Útyping_extensionsr   r   Útupler,   Ú_PCTRTTÚ_PCTRTTTr   r:   r¥   r.   r6   r7   Ú<module>rÒ      sß   ðÝ "ã Û 	Û 
Û 
ß -Ý !Ý ß ÷õ ÷ Bß @Ó @à×Ñ�wÓß+Ð+ç6á�:Ó€Ù˜
Ó#€Ø
��c˜3�h‘ Ð$Ñ
%€Ø�˜#�Ñ€ô)Ð$ô )ñ8 ˆeÑôI
�
ó I
ó ðI
ñX ˆeÑôU
�(˜9Ñ%ó U
ó ñU
r6   