Ë
    pPêjN  ã                  ó0  — U d 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	m
Z
 ddlmZ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mZ ej4                  dk(  rCddlZddlZeZej>                  j@                  Z e jB                  Z!de"d<   e jF                  Z#de"d<   nddl$Z$e$jH                  ZdZ%de"d<   dZ&de"d<    G d„ de'«      Z( G d„ d«      Z) G d„ de)«      Z* G d„ de)«      Z+ G d„ de'«      Z,d%d„Z-d&d'd „Z.d(d"„Z/d)d#„Z0 G d$„ d!«      Z1y)*zƒCross-platform abstractions for inter-process communication

On Unix, this uses AF_UNIX sockets.
On Windows, this uses NamedPipes.
é    )ÚannotationsN)Úabstractmethod)ÚCallableÚSequence)Úselect)ÚTracebackType)ÚFinal)ÚSelf)Úurlsafe_b64encode)Ú
ReadBufferÚWriteBufferÚwin32zCallable[[_IPCHandle], int]ÚDisconnectNamedPipeÚFlushFileBuffersé   r	   ÚHEADER_SIZEi @ ÚMAX_READc                  ó   — e Zd ZdZy)ÚIPCExceptionzException for IPC issues.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úM/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/ipc.pyr   r   2   s   „ Ú#r   r   c                  ó\   — e Zd ZU dZded<   dd„Zdd„Zefdd„Zefdd„Z	dd„Z
dd	„Zdd
„Zy)ÚIPCBaseai  Base class for communication between the dmypy client and server.

    This contains logic shared between the client and server, such as reading
    and writing.
    We want to be able to send multiple "messages" over a single connection and
    to be able to separate the messages. We do this by prefixing each message
    with its size in a fixed format.
    Ú
_IPCHandleÚ
connectionc                óZ   — || _         || _        || _        d | _        t	        «       | _        y ©N)ÚnameÚtimeoutÚwin_io_timeoutÚmessage_sizeÚ	bytearrayÚbuffer)Úselfr$   r%   s      r   Ú__init__zIPCBase.__init__B   s)   € ØˆŒ	ØˆŒà%ˆÔØ(,ˆÔÜ“kˆ�r   c                ó¬  — t        | j                  «      }|t        k  ry| j                  €/t	        j
                  d| j                  dt         «      d   | _        || j                  t        z   k  ryt        | j                  «      t        t        | j                  z    }| j                  t        | j                  z   d | _        d| _        t        |«      S )z9Return a full frame from the bytes we have in the buffer.Nú!Lr   )Úlenr)   r   r'   ÚstructÚunpackÚ
memoryviewÚbytes)r*   ÚsizeÚbdatas      r   Úframe_from_bufferzIPCBase.frame_from_bufferJ   s°   € ä�4—;‘;ÓˆØ”+ÒØØ×ÑÐ$Ü &§¡¨d°D·K±KÀÄÐ4MÓ NÈqÑ QˆDÔØ�$×#Ñ#¤kÑ1Ò1Øä˜4Ÿ;™;Ó'¬´kÀD×DUÑDUÑ6UÐVˆØ—k‘k¤+°×0AÑ0AÑ"AÐ"CÐDˆŒØ ˆÔÜ�U‹|Ðr   c                óB   — | j                  |«      j                  d«      S ©Nzutf-8)Ú
read_bytesÚdecode)r*   r3   s     r   ÚreadzIPCBase.readY   s   € Ø�‰˜tÓ$×+Ñ+¨GÓ4Ð4r   c                ó°  — t         j                  dk(  �rR	 | j                  «       }|��n‹t        j                  | j
                  |d¬«      \  }}	 |t        j                  k(  ru| j                  rt        | j                  dz  «      nt        j                  }t        j                  |j                  |«      }|t        j                  k7  rt        d|› �«      ‚|j!                  d«      \  }}|j#                  «       }|r.| j$                  j'                  |«       | j                  «       }|�n‰|dk(  rnƒ|t        j(                  k(  r�Œ2|t        j*                  k(  rt        d«      ‚�ŒQ	 | j                  «       }|�n:| j
                  j-                  |«      }|sn| j$                  j'                  |«       ŒM|sy|S # t        $ r |j                  «        ‚ w xY w)	z=Read bytes from an IPC connection until we have a full frame.r   T©Ú
overlappedéè  úBad result from I/O wait: r   zReadFile operation aborted.r   )ÚsysÚplatformr5   Ú_winapiÚReadFiler!   ÚERROR_IO_PENDINGr&   ÚintÚINFINITEÚWaitForSingleObjectÚeventÚWAIT_OBJECT_0r   ÚBaseExceptionÚcancelÚGetOverlappedResultÚ	getbufferr)   ÚextendÚERROR_MORE_DATAÚERROR_OPERATION_ABORTEDÚrecv)	r*   r3   r4   ÚovÚerrr%   ÚresÚ_Úmores	            r   r8   zIPCBase.read_bytes\   sÉ  € ä�<‰<˜7Ó"Øð ×.Ñ.Ó0�ØÐ$Ùô "×*Ñ*¨4¯?©?¸DÈTÔR‘��CðØœg×6Ñ6Ò6ð  $×2Ò2ô   × 3Ñ 3°dÑ :Ô;ä!(×!1Ñ!1ð  ô
 &×9Ñ9¸"¿(¹(ÀGÓL˜Ø¤'×"7Ñ"7Ò7Ü".Ð1KÈCÈ5Ð/QÓ"RÐRð ×/Ñ/°Ó5‘��3Ø—|‘|“~�ÙØ—K‘K×&Ñ& tÔ,Ø ×2Ñ2Ó4�EØÐ(ØØ˜!’8àØœG×3Ñ3Ò3áØœG×;Ñ;Ò;Ü&Ð'DÓEÐEñI ðL ð ×.Ñ.Ó0�ØÐ$Øð —‘×+Ñ+¨DÓ1�ÙàØ—‘×"Ñ" 4Ô(ð ñ ð ØˆøôK %ò Ø—I‘I”KØðús   ÁBF: Æ:Gc                óD   — | j                  |j                  d«      «       y r7   )Úwrite_bytesÚencode)r*   Údatas     r   ÚwritezIPCBase.write™   s   € Ø×Ñ˜Ÿ™ WÓ-Õ.r   c                ó  — t        j                  dt        |«      «      |z   }t        j                  dk(  ró	 t        j                  | j                  |d¬«      \  }}	 |t
        j                  k(  ru| j                  rt        | j                  dz  «      nt
        j                  }t        j                  |j                  |«      }|t
        j                  k7  r!t        d|› �«      ‚|dk7  rt        d|› �«      ‚|j%                  d«      \  }}|dk(  sJ |«       ‚|t        |«      k(  sJ ‚y
| j                  j+                  |«       y
# t         $ r |j#                  «        ‚ w xY w# t&        $ r}t        d	|j(                  › �«      |‚d
}~ww xY w)zWrite to an IPC connection.r-   r   Tr<   r>   r?   r   z#Failed writing to pipe with error: zFailed to write with error: N)r/   Úpackr.   r@   rA   rB   Ú	WriteFiler!   rD   r&   rE   rF   rG   rH   rI   r   rJ   rK   rL   ÚOSErrorÚwinerrorÚsendall)	r*   rZ   Úencoded_datarR   rS   r%   rT   Úbytes_writtenÚes	            r   rX   zIPCBase.write_bytesœ   s{  € ô —{‘{ 4¬¨T«Ó3°dÑ:ˆä�<‰<˜7Ò"ðWÜ!×+Ñ+¨D¯O©O¸\ÐVZÔ[‘��CðØœg×6Ñ6Ò6ð  $×2Ò2ô   × 3Ñ 3°dÑ :Ô;ä!(×!1Ñ!1ð  ô
 &×9Ñ9¸"¿(¹(ÀGÓL˜Ø¤'×"7Ñ"7Ò7Ü".Ð1KÈCÈ5Ð/QÓ"RÐRØ šÜ*Ð-PÐQTÐPUÐ+VÓWÐWð &(×%;Ñ%;¸DÓ%AÑ"�˜sØ˜a’xÐ$ Ó$�xØ$¬¨LÓ(9Ò9Ð9Ñ9ð �O‰O×#Ñ# LÕ1øô %ò Ø—I‘I”KØðûô ò WÜ"Ð%AÀ!Ç*Á*ÀÐ#NÓOÐUVÐVûðWús0   ·%E# ÁBE Ã80E# ÅE Å E# Å#	F
Å,FÆF
c                óÚ   — t         j                  dk(  r>| j                  t        j                  k7  r t        j
                  | j                  «       y y | j                  j                  «        y ©Nr   )r@   rA   r!   rB   ÚNULLÚCloseHandleÚclose©r*   s    r   ri   zIPCBase.close¼   sG   € Ü�<‰<˜7Ò"Ø�‰¤'§,¡,Ò.Ü×#Ñ# D§O¡OÕ4ð /ð �O‰O×!Ñ!Õ#r   N©r$   Ústrr%   úfloat | NoneÚreturnÚNone)rn   zbytes | None)r3   rE   rn   rl   )r3   rE   rn   r2   )rZ   rl   rn   ro   )rZ   r2   rn   ro   ©rn   ro   )r   r   r   r   Ú__annotations__r+   r5   r   r:   r8   r[   rX   ri   r   r   r   r   r   6   s>   … ñð Óó"óð  (ô 5ð &.ô ;óz/ó2ô@$r   r   c                  óJ   ‡ — e Zd ZdZdˆ fd„Zdd„Z	 	 	 d	 	 	 	 	 	 	 dd„Zˆ xZS )	Ú	IPCClientz%The client side of an IPC connection.c           	     óF  •— t         ‰| �  ||«       t        j                  dk(  �r| j                  rt        | j                  dz  «      nt        j                  }	 t        j                  | j                  |«       	 t        j                  | j                  t        j                   t        j"                  z  dt        j$                  t        j&                  t        j(                  t        j$                  «      | _        t        j.                  | j*                  t        j0                  d d «       y t3        j2                  t2        j4                  «      | _        | j*                  j7                  t2        j8                  t2        j:                  t<        «       | j*                  j7                  t2        j8                  t2        j>                  t<        «       | j*                  jA                  |«       | j*                  jC                  |«       y # t        $ r}t        d| j                  › d�«      |‚d }~wt        $ r/}|j                  t        j                  k(  rt        d«      |‚‚ d }~ww xY w# t        $ r/}|j                  t        j,                  k(  rt        d«      |‚‚ d }~ww xY w)Nr   r>   zThe NamedPipe at z was not found.z!Timed out waiting for connection.r   zThe connection is busy.)"Úsuperr+   r@   rA   r%   rE   rB   ÚNMPWAIT_WAIT_FOREVERÚWaitNamedPiper$   ÚFileNotFoundErrorr   r_   r`   ÚERROR_SEM_TIMEOUTÚ
CreateFileÚGENERIC_READÚGENERIC_WRITErg   ÚOPEN_EXISTINGÚFILE_FLAG_OVERLAPPEDr!   ÚERROR_PIPE_BUSYÚSetNamedPipeHandleStateÚPIPE_READMODE_MESSAGEÚsocketÚAF_UNIXÚ
setsockoptÚ
SOL_SOCKETÚ	SO_RCVBUFr   Ú	SO_SNDBUFÚ
settimeoutÚconnect)r*   r$   r%   rd   Ú	__class__s       €r   r+   zIPCClient.__init__Ç   sá  ø€ Ü‰Ñ˜˜wÔ'Ü�<‰<˜7Ó"Ø26·,²,”c˜$Ÿ,™,¨Ñ-Ô.ÄG×D`ÑD`ˆGðÜ×%Ñ% d§i¡i°Ô9ðÜ")×"4Ñ"4Ø—I‘IÜ×(Ñ(¬7×+@Ñ+@Ñ@ØÜ—L‘LÜ×)Ñ)Ü×0Ñ0Ü—L‘Ló#�”ô ×+Ñ+Ø—‘¤×!>Ñ!>ÀÀdõô %Ÿm™m¬F¯N©NÓ;ˆDŒOð �O‰O×&Ñ&¤v×'8Ñ'8¼&×:JÑ:JÌHÔUØ�O‰O×&Ñ&¤v×'8Ñ'8¼&×:JÑ:JÌHÔUØ�O‰O×&Ñ& wÔ/Ø�O‰O×#Ñ# DÕ)øôA %ò ZÜ"Ð%6°t·y±y°kÀÐ#QÓRÐXYÐYûÜò Ø—:‘:¤×!:Ñ!:Ò:Ü&Ð'JÓKÐQRÐRàûð	ûô ò Ø—:‘:¤×!8Ñ!8Ò8Ü&Ð'@ÓAÀqÐHàûð	ús=   Á H Á<BI( È	I%ÈH*È*I%È6*I É I%É(	J É1*JÊJ c                ó   — | S r#   r   rj   s    r   Ú	__enter__zIPCClient.__enter__ï   s   € Øˆr   c                ó$   — | j                  «        y r#   )ri   ©r*   Úexc_tyÚexc_valÚexc_tbs       r   Ú__exit__zIPCClient.__exit__ò   s   € ð 	�
‰
�r   rk   )rn   rs   ©NNN©r�   ztype[BaseException] | Noner�   zBaseException | Noner‘   zTracebackType | Nonern   ro   )r   r   r   r   r+   rŒ   r’   Ú__classcell__©rŠ   s   @r   rs   rs   Ä   sG   ø„ Ù/õ&*óPð
 .2Ø(,Ø'+ð	à*ðð &ðð %ð	ð
 
÷r   rs   c                  ór   ‡ — e Zd ZU dZded<   d	d
ˆ fd„Zdd„Z	 	 	 d	 	 	 	 	 	 	 dd„Zdd„Ze	dd„«       Z
ˆ xZS )Ú	IPCServeri   r	   ÚBUFFER_SIZEc           
     óZ  •— t         j                  dk(  r=dj                  |t        t	        j
                  d«      «      j                  «       «      }n|› d�}t        ‰| �!  ||«       t         j                  dk(  réd | _	        t        j                  | j                  t        j                  t        j                  z  t        j                  z  t        j                   t        j"                  z  t        j$                  z  dz  d| j&                  | j&                  t        j(                  d«      | _        | j*                  dk(  r"t        j,                  «       }t/        d	|› �«      ‚y t1        j2                  «       | _        t        j6                  j9                  | j4                  | j                  «      }t;        j:                  t:        j<                  «      | _        | j>                  jA                  |«       | j>                  jC                  d«       |�| j>                  jE                  |«       y y )
Nr   z\\.\pipe\{}-{}.pipeé   z.socké   é   r   éÿÿÿÿzInvalid handle to pipe: )#r@   rA   Úformatr   ÚosÚurandomr9   ru   r+   r&   rB   ÚCreateNamedPiper$   ÚPIPE_ACCESS_DUPLEXÚFILE_FLAG_FIRST_PIPE_INSTANCEr~   r�   ÚPIPE_TYPE_MESSAGEÚ	PIPE_WAITr™   rv   r!   ÚGetLastErrorr   ÚtempfileÚmkdtempÚsock_directoryÚpathÚjoinr‚   rƒ   ÚsockÚbindÚlistenrˆ   )r*   r$   r%   rS   ÚsockfilerŠ   s        €r   r+   zIPCServer.__init__þ   s³  ø€ Ü�<‰<˜7Ò"Ø)×0Ñ0°Ô7HÌÏÉÐTUËÓ7W×7^Ñ7^Ó7`Óa‰Dà�V˜5�>ˆDÜ‰Ñ˜˜wÔ'Ü�<‰<˜7Ò"ð
 #'ˆDÔÜ%×5Ñ5Ø—	‘	Ü×*Ñ*Ü×7Ñ7ñ8ä×.Ñ.ñ/ô ×-Ñ-Ü×+Ñ+ñ,ä×#Ñ#ñ$ð ñð Ø× Ñ Ø× Ñ Ü×,Ñ,ØóˆDŒOð �‰ "Ò$Ü×*Ñ*Ó,�Ü"Ð%=¸c¸UÐ#CÓDÐDð %ô #+×"2Ñ"2Ó"4ˆDÔÜ—w‘w—|‘| D×$7Ñ$7¸¿¹ÓCˆHÜŸ™¤f§n¡nÓ5ˆDŒIØ�I‰I�N‰N˜8Ô$Ø�I‰I×Ñ˜QÔØÐ"Ø—	‘	×$Ñ$ WÕ-ð #r   c                óö  — t         j                  dk(  rª	 t        j                  | j                  d¬«      }	 | j
                  rt        | j
                  dz  «      nt        j                  }t        j                  |j                  |«      }|t        j                  k(  sJ ‚	 |j                  d«      \  }}|dk(  sJ ‚| S 	 | j&                  j)                  «       \  | _        }| j                  j+                  t,        j.                  t,        j0                  t2        «       | j                  j+                  t,        j.                  t,        j4                  t2        «       | S # t        $ r1 |j                  «        t        j                  | j                  «       ‚ w xY w# t        $ r8}|j                   t        j"                  t        j$                  fvr‚ Y d }~| S d }~ww xY w# t6        $ r}t9        d«      |‚d }~ww xY w)Nr   Tr<   r>   r   zThe socket timed out)r@   rA   rB   ÚConnectNamedPiper!   r%   rE   rF   rG   rH   rI   rJ   rK   rh   rL   r_   r`   ÚERROR_PIPE_CONNECTEDÚERROR_NO_DATAr­   Úacceptr„   r‚   r…   r†   r   r‡   ÚTimeoutErrorr   )r*   rR   r%   rT   rU   rS   rd   s          r   rŒ   zIPCServer.__enter__%  s�  € Ü�<‰<˜7Ò"ð Ü×-Ñ-¨d¯o©oÈ$ÔO�ðØ:>¿,º,œc $§,¡,°Ñ"5Ô6ÌG×L\ÑL\�GÜ!×5Ñ5°b·h±hÀÓH�CØ¤'×"7Ñ"7Ò7Ð7Ñ7ð
 ×/Ñ/°Ó5‘��3Ø˜a’x��xð ˆðBØ%)§Y¡Y×%5Ñ%5Ó%7Ñ"�” ð —‘×*Ñ*¬6×+<Ñ+<¼f×>NÑ>NÔPXÔYØ—‘×*Ñ*¬6×+<Ñ+<¼f×>NÑ>NÔPXÔYð ˆøô %ò Ø—I‘I”KÜ×'Ñ'¨¯©Ô8Øðûô ò à—:‘:¤g×&BÑ&BÄG×DYÑDYÐ%ZÑZØó [ð, ˆûð1ûô,  ò BÜ"Ð#9Ó:ÀÐAûðBús<   •!F ·A)E Â?BG Å:FÆ	GÆ#-GÇGÇ	G8Ç'G3Ç3G8c                óî   — t         j                  dk(  r8	 t        | j                  «      st	        d«      ‚	 t        | j                  «       y | j                  «        y # t        | j                  «       w xY w)Nr   z;Failed to flush NamedPipe buffer, maybe the client hung up?)r@   rA   r   r!   r   r   ri   rŽ   s       r   r’   zIPCServer.__exit__E  s]   € ô �<‰<˜7Ò"ð5ä'¨¯©Ô8Ü&ØUóð ð 9ô
 $ D§O¡OÕ4à�J‰J�Løô $ D§O¡OÕ4ús   • A ÁA4c                óŠ   — t         j                  dk(  r| j                  «        y t        j                  | j
                  «       y rf   )r@   rA   ri   ÚshutilÚrmtreerª   rj   s    r   ÚcleanupzIPCServer.cleanupW  s)   € Ü�<‰<˜7Ò"Ø�J‰J�Lä�M‰M˜$×-Ñ-Õ.r   c                ó*  — t         j                  dk(  r| j                  S t         j                  dk(  r4t        j                  j                  | j                  | j                  «      S | j                  j                  «       }t        |t        «      sJ ‚|S )Nr   Úgnu0)r@   rA   r$   r    r«   r¬   rª   r­   ÚgetsocknameÚ
isinstancerl   )r*   r$   s     r   Úconnection_namezIPCServer.connection_name]  sl   € ä�<‰<˜7Ò"Ø—9‘9ÐÜ�\‰\˜VÒ#ô —7‘7—<‘< × 3Ñ 3°T·Y±YÓ?Ð?à—9‘9×(Ñ(Ó*ˆDÜ˜d¤CÔ(Ð(Ð(ØˆKr   r#   rk   )rn   r˜   r“   r”   rp   )rn   rl   )r   r   r   r™   rq   r+   rŒ   r’   r»   ÚpropertyrÀ   r•   r–   s   @r   r˜   r˜   û   sh   ø… Ø€K�Óö%.óNðD .2Ø(,Ø'+ð	à*ðð &ðð %ð	ð
 
óó$/ð ò
ó ô
r   r˜   c                  ó   — e Zd ZdZy)Ú	BadStatuszÏException raised when there is something wrong with the status file.

    For example:
    - No status file found
    - Status file malformed
    - Process whose pid is in the status file does not exist
    Nr   r   r   r   rÃ   rÃ   k  s   „ òr   rÃ   c                óV  — t         j                  j                  | «      st        d«      ‚t	        | «      5 }	 t        j                  |«      }	 ddd«       t        t        «      st        d|› �«      ‚|S # t        $ r}t        dt        |«      › �«      |‚d}~ww xY w# 1 sw Y   ŒRxY w)z„Read status file.

    Raise BadStatus if the status file doesn't exist or contains
    invalid JSON or the JSON is not a dict.
    zNo status file foundzMalformed status file: Nz"Invalid status file (not a dict): )r    r«   ÚisfilerÃ   ÚopenÚjsonÚloadÚ	Exceptionrl   r¿   Údict)Ústatus_fileÚfrZ   rd   s       r   Úread_statusrÍ   u  s§   € ô �7‰7�>‰>˜+Ô&ÜÐ.Ó/Ð/Ü	ˆkÓ	ð G˜að	GÜ—9‘9˜Q“<‰D÷Gô
 �dœDÔ!ÜÐ<¸T¸FÐCÓDÐDØ€Køô	 ò 	GÜÐ5´c¸!³f°XÐ>Ó?ÀQÐFûð	Gú÷Gð Gús(   ¶B¸A6Á6	BÁ?BÂBÂBÂB(c                ó  — t        | «      D ��cg c]  \  }}|j                  sŒ|‘Œ }}}|r|S t        j                  dk(  �ród}g }g }g }t        | «      D ]¿  \  }}	 t	        j
                  |j                  dd¬«      \  }	}
|
t        j                  k(  r/|j                  |	j                  «       |j                  ||	f«       Œn|	j                  d«      \  }}
|	j                  «       }|r|j                  j                  |«       |j                  |«       ŒÁ |sx|rv|�t        |dz  «      nt        j                  }t	        j                   |d|«      }||k(  r:|D ]  \  }}	|	j#                  «        Œ t%        d	t	        j&                  «       › �«      ‚|D ]  \  }}	|	j#                  «        Œ |D ]ƒ  \  }}		 |	j                  d«      \  }}
|
t        j*                  k(  rŒ/|
d
t        j0                  fv r0|	j                  «       }|r| |   j                  j                  |«       |j                  |«       Œ… |S | D �cg c]  }|j                  ‘Œ }}t3        |g g |«      \  }}}|D �cg c]  }|j5                  |«      ‘Œ c}S c c}}w # t        $ r |j                  |«       Y �ŒMw xY w# t        $ rI}|j(                  }
|
t        j*                  t        j,                  t        j.                  fvr‚ Y d}~�Œ+d}~ww xY wc c}w c c}w )zrWait until some connections are readable.

    Return index of each readable connection in the original list.
    r   l   ÿÿ r�   Tr<   Nr>   Fz Failed to wait for connections: r   )Ú	enumerater)   r@   rA   rB   rC   r!   r_   ÚappendrD   rH   rL   rM   rN   rE   rF   ÚWaitForMultipleObjectsrK   r   r§   r`   rP   ÚERROR_BROKEN_PIPEÚERROR_NETNAME_DELETEDrO   r   Úindex)Úconnsr%   ÚiÚconnÚunread_messagesÚWAIT_FAILEDÚpendingÚeventsÚreadyrR   rS   rU   rZ   Ú
timeout_msrT   rd   ÚconnectionsÚrs                     r   Úready_to_readrà   ‡  sá  € ô
 )2°%Ó(8×H™W˜Q ¸D¿K»K’qÐH€OÑHÙàÐÜ
‡|�|�wÓð !ˆØ8:ˆØˆØˆä  Ó'ò 	 ‰GˆAˆtðÜ!×*Ñ*¨4¯?©?¸AÈ$ÔO‘��Cð ”g×.Ñ.Ò.Ø—‘˜bŸh™hÔ'Ø—‘  2˜wÕ'ð ×/Ñ/°Ó5‘��3Ø—|‘|“~�ÙØ—K‘K×&Ñ& tÔ,Ø—‘˜Q•ð#	 ñ( ™Ø07Ð0Cœ˜W t™^Ô,Ì×IYÑIYˆJÜ×0Ñ0°¸À
ÓKˆCØ�kÒ!Ø$ò  ‘E�A�rØ—I‘I•Kð ä"Ð%EÄg×FZÑFZÓF\ÐE]Ð#^Ó_Ð_ð ò 	‰EˆAˆrØ�I‰I�Kð	àò 	‰EˆAˆrðØ×/Ñ/°Ó5‘��3ð ”g×5Ñ5Ò5àØ�qœ'×1Ñ1Ð2Ñ2Ø—|‘|“~�ÙØ˜!‘H—O‘O×*Ñ*¨4Ô0Ø�L‰L˜�Oð+	ð. ˆð 49Ö9¨4�t—“Ð9ˆÐ9Ü˜[¨"¨b°'Ó:‰ˆˆq�!Ø.3Ö4¨�×!Ñ! !Õ$Ò4Ð4ùó_ Iøô$ ò ð —‘˜Q”Úð	ûôH ò 
Ø—j‘j�ð Ü×3Ñ3Ü×-Ñ-Ü×1Ñ1ðñ ð õûð	
üò. :ùâ4s@   �J ¤J Á%JÆ5J'È:K<É%LÊJ$Ê#J$Ê'	K9Ê0>K4Ë4K9Ú
IPCMessagec                óx   — t        «       }|j                  |«       | j                  |j                  «       «       y)z§Send data to a connection encoded and framed.

    The data must be a non-abstract IPCMessage. We assume that a single send call is a
    single frame to be sent.
    N)r   r[   rX   Úgetvalue)r!   rZ   Úbufs      r   Úsendrå   Þ  s*   € ô ‹-€CØ‡J�Jˆs„OØ×Ñ˜3Ÿ<™<›>Õ*r   c                óR   — | j                  «       }|st        d«      ‚t        |«      S )zuReceive single encoded IPCMessage frame from a connection.

    Raise OSError if the data received is not valid.
    zNo data received)r8   r_   r   )r!   r4   s     r   Úreceiverç   é  s,   € ð
 ×!Ñ!Ó#€EÙÜÐ(Ó)Ð)Ü�eÓÐr   c                  ó:   — e Zd Zeedd„«       «       Zedd„«       Zy)rá   c                ó   — t         ‚r#   ©ÚNotImplementedError)Úclsrä   s     r   r:   zIPCMessage.readõ  s
   € ô "Ð!r   c                ó   — t         ‚r#   rê   )r*   rä   s     r   r[   zIPCMessage.writeú  s   € ä!Ð!r   N)rä   r   rn   r
   )rä   r   rn   ro   )r   r   r   Úclassmethodr   r:   r[   r   r   r   rá   rá   ô  s0   „ ØØò"ó ó ð"ð ò"ó ñ"r   )rË   rl   rn   zdict[str, object]r#   )rÕ   zSequence[IPCBase]r%   rm   rn   z	list[int])r!   r   rZ   rá   rn   ro   )r!   r   rn   r   )2r   Ú
__future__r   rÇ   r    r¹   r/   r@   r¨   Úabcr   Úcollections.abcr   r   r   Útypesr   Útypingr	   Útyping_extensionsr
   Úlibrt.base64r   Úlibrt.internalr   r   rA   rB   ÚctypesrE   r    ÚwindllÚkernel32r   rq   r   r‚   r   r   rÉ   r   r   rs   r˜   rÃ   rÍ   rà   rå   rç   rá   r   r   r   ú<module>rú      s  ðòõ #ã Û 	Û Û Û 
Û Ý ß .Ý Ý Ý Ý "å *ß 2à‡<�<�7ÒãÛà€Jà�}‰}×%Ñ%€HØ7?×7SÑ7SÐÐ4ÓSØ4<×4MÑ4MÐÐ1ÔMãà—‘€Jð €ˆUÓ ð €ˆ%Ó ô
$�9ô $÷K$ñ K$ô\4�ô 4ônm�ô mô`�	ô óô$T5ón+ó÷"ò "r   