ó
    F\hÄ  ã                   ó"  • S r SSKr\R                  S:w  a  \" S5      eSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SrSr\R                  r\R                  r\R                  " 5       rSS\S	.S
 jr " S S5      r " S S\R&                  5      rg)z)Various Windows specific bits and pieces.é    NÚwin32z
win32 only)ÚpipeÚPopenÚPIPEÚ
PipeHandlei    F)TT)ÚduplexÚ
overlappedÚbufsizec           
      ó¾  • [         R                  " SR                  [        R                  " 5       [        [        5      5      S9nU (       a4  [        R                  n[        R                  [        R                  -  nX"pvO#[        R                  n[        R                  nSUpvU[        R                  -  nUS   (       a  U[        R                  -  nUS   (       a  [        R                  nOSnS=pš [        R                  " X4[        R                  SXg[        R                   [        R"                  5      n	[        R$                  " X5S[        R"                  [        R&                  U[        R"                  5      n
[        R(                  " U	SS9nUR+                  S5        Xš4$ !   U	b  [        R,                  " U	5        U
b  [        R,                  " U
5        e = f)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)Úprefixr   é   NT©r	   )ÚtempfileÚmktempÚformatÚosÚgetpidÚnextÚ_mmap_counterÚ_winapiÚPIPE_ACCESS_DUPLEXÚGENERIC_READÚGENERIC_WRITEÚPIPE_ACCESS_INBOUNDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚFILE_FLAG_OVERLAPPEDÚCreateNamedPipeÚ	PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ
CreateFileÚOPEN_EXISTINGÚConnectNamedPipeÚGetOverlappedResultÚCloseHandle)r   r	   r
   ÚaddressÚopenmodeÚaccessÚobsizeÚibsizeÚflags_and_attribsÚh1Úh2Úovs               Ú,/usr/lib/python3.13/asyncio/windows_utils.pyr   r       sx  € ä�oŠoØ1×8Ñ8Ü�IŠI‹KœœmÓ,ó.ñ/€Gö Ü×-Ñ-ˆÜ×%Ñ%¬×(=Ñ(=Ñ=ˆØ ‘ä×.Ñ.ˆÜ×&Ñ&ˆØ˜G�à”×5Ñ5Ñ5€Hà�!‡}Ø”G×0Ñ0Ñ0ˆà�!‡}Ü#×8Ñ8ÑàÐà€N€BðÜ×$Ò$Øœw×0Ñ0Øˆvœw×;Ñ;¼W¿\¹\óKˆô ×ÒØ˜Q¤§¡¬g×.CÑ.CØœwŸ|™|ó-ˆô ×%Ò% b°TÑ:ˆØ
×Ñ˜tÔ$ØˆvˆøðØ‰>Ü×Ò Ô#Ø‰>Ü×Ò Ô#Øús   Ã4B2F' Æ'5Gc                   óˆ   • \ rS rSrSrS rS r\S 5       rS r	\
R                  S.S jr\R                  4S	 jrS
 rS rSrg)r   éQ   z‡Wrapper for an overlapped pipe handle which is vaguely file-object like.

The IOCP event loop can use these instead of socket objects.
c                 ó   • Xl         g ©N©Ú_handle©ÚselfÚhandles     r/   Ú__init__ÚPipeHandle.__init__V   s   € Ø�ó    c                 ó|   • U R                   b  SU R                   < 3nOSnSU R                  R                   SU S3$ )Nzhandle=ÚclosedÚ<Ú Ú>)r5   Ú	__class__Ú__name__r6   s     r/   Ú__repr__ÚPipeHandle.__repr__Y   sB   € Ø�<‰<Ñ#Ø˜tŸ|™|Ñ.Ð/‰FàˆFØ�4—>‘>×*Ñ*Ð+¨1¨V¨H°AÐ6Ð6r;   c                 ó   • U R                   $ r3   r4   ©r7   s    r/   r8   ÚPipeHandle.handle`   s   € à�|‰|Ðr;   c                 óJ   • U R                   c  [        S5      eU R                   $ )NzI/O operation on closed pipe)r5   Ú
ValueErrorrF   s    r/   ÚfilenoÚPipeHandle.filenod   s"   € Ø�<‰<ÑÜÐ;Ó<Ð<Ø�|‰|Ðr;   )r%   c                óR   • U R                   b  U" U R                   5        S U l         g g r3   r4   )r7   r%   s     r/   ÚcloseÚPipeHandle.closei   s$   € Ø�<‰<Ñ#Ù˜Ÿ™Ô%ØˆD�Lð $r;   c                 ó`   • U R                   b!  U" SU < 3[        U S9  U R                  5         g g )Nz	unclosed )Úsource)r5   ÚResourceWarningrM   )r7   Ú_warns     r/   Ú__del__ÚPipeHandle.__del__n   s-   € Ø�<‰<Ñ#Ù�I˜d™XÐ&¬ÀÒEØ�J‰J�Lð $r;   c                 ó   • U $ r3   © rF   s    r/   Ú	__enter__ÚPipeHandle.__enter__s   s   € Øˆr;   c                 ó$   • U R                  5         g r3   )rM   )r7   ÚtÚvÚtbs       r/   Ú__exit__ÚPipeHandle.__exit__v   s   € Ø�
‰
�r;   r4   N)rB   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r9   rC   Úpropertyr8   rJ   r   r%   rM   ÚwarningsÚwarnrS   rW   r]   Ú__static_attributes__rV   r;   r/   r   r   Q   sR   † ñòò7ð ñó ðòð
 $+×#6Ñ#6õ  ð
 %ŸM™Mô ò
õr;   r   c                   ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )r   é}   z€Replacement for subprocess.Popen using overlapped pipe handles.

The stdin, stdout, stderr are None or instances of PipeHandle.
c                 óN  >• UR                  S5      (       a   eUR                  SS5      S:X  d   eS =n=pxS =n	=p«U[        :X  a2  [        SSS9u  pÉ[        R                  " U[
        R                  5      nOUnU[        :X  a#  [        SS9u  p­[        R                  " US5      nOUnU[        :X  a#  [        SS9u  p¾[        R                  " US5      nOU[        :X  a  UnOUn [        TU ]$  " U4XgUS	.UD6  U	b  [        U	5      U l        U
b  [        U
5      U l        Ub  [        U5      U l        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        g g !   XšU4 H  nUc  M  [        R                  " U5        M      e = f! U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        U[        :X  a  [
        R                   " U5        f f = f)
NÚuniversal_newlinesr
   r   )FTT)r	   r   )TFr   )ÚstdinÚstdoutÚstderr)Úgetr   r   ÚmsvcrtÚopen_osfhandler   ÚO_RDONLYÚSTDOUTÚsuperr9   r   rk   rl   rm   r   r%   rM   )r7   Úargsrk   rl   rm   ÚkwdsÚ	stdin_rfdÚ
stdout_wfdÚ
stderr_wfdÚstdin_whÚ	stdout_rhÚ	stderr_rhÚstdin_rhÚ	stdout_whÚ	stderr_whÚhrA   s                   €r/   r9   ÚPopen.__init__‚   së  ø€ Ø—8‘8Ð0×1Ñ1Ð1Ð1Ø�x‰x˜	 1Ó%¨Ó*Ð*Ð*Ø.2Ð2ˆ	Ð2�JØ+/Ð/ˆÐ/�9Ø”D‹=Ü!%°ÀtÑ!LÑˆHÜ×-Ò-¨h¼¿¹ÓD‰IàˆIØ”T‹>Ü#'°=Ñ#AÑ ˆIÜ×.Ò.¨y¸!Ó<‰JàˆJØ”T‹>Ü#'°=Ñ#AÑ ˆIÜ×.Ò.¨y¸!Ó<‰JØ”vÓØ#‰JàˆJð	%Ü‰GÒ˜Tð 8¨Ø$.ñ8Ø26ò8ð Ñ#Ü'¨Ó1�”
ØÑ$Ü(¨Ó3�”ØÑ$Ü(¨Ó3�”àœ‹}Ü—’˜Ô#Øœ‹~Ü—’˜Ô$Øœ‹~Ü—’˜Õ$ð øð#	Ø¨9Ó5�Ø“=Ü×'Ò'¨Ö*ñ 6ð ûð œ‹}Ü—’˜Ô#Øœ‹~Ü—’˜Ô$Øœ‹~Ü—’˜Õ$ð ús%   Ã&F Ã:9G Æ
F>Æ#F>Æ>G ÇA#H$)rm   rk   rl   )NNN)rB   r_   r`   ra   rb   r9   rf   Ú__classcell__)rA   s   @r/   r   r   }   s   ø† ñ÷+%õ +%r;   r   )rb   ÚsysÚplatformÚImportErrorr   Ú	itertoolsro   r   Ú
subprocessr   rd   Ú__all__ÚBUFSIZEr   rr   Úcountr   r   r   r   rV   r;   r/   Ú<module>rŠ      s‘   ðÙ /ã 
à‡<�<�7ÓÙ
�lÓ
#Ð#ã Û Û Û 	Û Û Û ð 0€ð €Ø‡�€Ø	×	Ñ	€Ø—’Ó!€ð  \¸7õ +÷b&ñ &ôX0%ˆJ×Ñõ 0%r;   