§
    (¶Õi#  ã                   ó¨  — 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 g d¢Z e	ed¦  «        Z
ej        ej        fZdd„ iZe j        d	k    rLd dlZd dlZ e	ed
¦  «        re                     dej        i¦  «         e                     dej        i¦  «          G d„ de¦  «        Z e¦   «         Zej        Zej        Zej        Zej        Zd„ ZdS )é    Né   )Úspawn)Úutil)Úensure_runningÚregisterÚ
unregisterÚpthread_sigmaskÚnoopc                  ó   — d S ©N© r   ó    ú7/usr/lib/python3.11/multiprocessing/resource_tracker.pyú<lambda>r   !   s   € �D€ r   ÚposixÚ
sem_unlinkÚ	semaphoreÚshared_memoryc                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚResourceTrackerc                 óR   — t          j        ¦   «         | _        d | _        d | _        d S r   )Ú	threadingÚLockÚ_lockÚ_fdÚ_pid©Úselfs    r   Ú__init__zResourceTracker.__init__8   s#   € Ý”^Ñ%Ô%ˆŒ
ØˆŒØˆŒ	ˆ	ˆ	r   c                 óò   — | j         5  | j        €	 d d d ¦  «         d S t          j        | j        ¦  «         d | _        t          j        | j        d¦  «         d | _        d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )r   r   ÚosÚcloseÚwaitpidr   r   s    r   Ú_stopzResourceTracker._stop=   s×   € ØŒZð 
	ð 
	ØŒxÐàð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	õ ŒH�T”XÑÔÐØˆDŒHåŒJ�t”y !Ñ$Ô$Ð$ØˆDŒIð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s   ˆ	A,žAA,Á,A0Á3A0c                 ó8   — |                       ¦   «          | j        S r   )r   r   r   s    r   ÚgetfdzResourceTracker.getfdJ   s   € Ø×ÒÑÔÐØŒxˆr   c                 ó²  — | j         5  | j        ��|                      ¦   «         r	 ddd¦  «         dS t          j        | j        ¦  «         	 | j        �t          j        | j        d¦  «         n# t          $ r Y nw xY wd| _        d| _        t          j	        d¦  «         g }	 | 
                    t          j                             ¦   «         ¦  «         n# t          $ r Y nw xY wd}t          j        ¦   «         \  }}	 | 
                    |¦  «         t!          j        ¦   «         }|gt%          j        ¦   «         z   }|d||z  gz  }	 t(          r$t+          j        t*          j        t0          ¦  «         t%          j        |||¦  «        }t(          r$t+          j        t*          j        t0          ¦  «         n1# t(          r%t+          j        t*          j        t0          ¦  «         w w xY w|| _        || _        n#  t          j        |¦  «         ‚ xY w	 t          j        |¦  «         n# t          j        |¦  «         w xY w	 ddd¦  «         dS # 1 swxY w Y   dS )z¬Make sure that resource tracker process is running.

        This can be run from any process.  Usually a child process will use
        the resource created by its parent.Nr   zUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)r   r   Ú_check_aliver!   r"   r   r#   ÚChildProcessErrorÚwarningsÚwarnÚappendÚsysÚstderrÚfilenoÚ	ExceptionÚpiper   Úget_executabler   Ú_args_from_interpreter_flagsÚ_HAVE_SIGMASKÚsignalr	   Ú	SIG_BLOCKÚ_IGNORED_SIGNALSÚspawnv_passfdsÚSIG_UNBLOCK)r   Úfds_to_passÚcmdÚrÚwÚexeÚargsÚpids           r   r   zResourceTracker.ensure_runningN   sÍ  € ð
 ŒZð 9	ð 9	ØŒxÐ#à×$Ò$Ñ&Ô&ð àð9	ð 9	ð 9	ñ 9	ô 9	ð 9	ð 9	ð 9	õ ”˜œÑ"Ô"Ð"ðð ”yÐ,Ýœ
 4¤9¨aÑ0Ô0Ð0øøÝ(ð ð ð à�Dðøøøð  �”Ø �”	å”ð Iñ Jô Jð Jð ˆKðØ×"Ò"¥3¤:×#4Ò#4Ñ#6Ô#6Ñ7Ô7Ð7Ð7øÝð ð ð Ø�ðøøøàNˆCÝ”7‘9”9‰DˆAˆqðØ×"Ò" 1Ñ%Ô%Ð%åÔ*Ñ,Ô,�Ø�u�tÔ@ÑBÔBÑB�Ø˜˜s Q™w˜Ñ'�ðUÝ$ð SÝÔ.­vÔ/?ÕAQÑRÔRÐRÝÔ-¨c°4¸ÑEÔE�Cå$ð UÝÔ.­vÔ/AÕCSÑTÔTÐTøøõ %ð UÝÔ.­vÔ/AÕCSÑTÔTÐTÐTðUøøøð �”Ø�”	�	øðÝ”˜‘”�Øøøøð å”˜‘”��ø•”˜‘”��øøø�ðs9	ð 9	ð 9	ñ 9	ô 9	ð 9	ð 9	ð 9	ð 9	ð 9	ð 9	ð 9	øøøð 9	ð 9	ð 9	ð 9	ð 9	ð 9	s¢   ˆI²IÁ!A.Á-IÁ.
A;Á8IÁ:A;Á;'IÂ#1CÃIÃ
C"ÃIÃ!C"Ã"IÃ>A	G5ÅAF5Æ	,G5Æ5.G#Ç#G5Ç&H%Ç5HÈH%ÈIÈ%H;È;IÉIÉIc                 ó^   — 	 t          j        | j        d¦  «         dS # t          $ r Y dS w xY w)z;Check that the pipe has not been closed by sending a probe.s   PROBE:0:noop
TF)r!   Úwriter   ÚOSErrorr   s    r   r(   zResourceTracker._check_aliveŽ   sI   € ð	õ ŒH�T”XÐ0Ñ1Ô1Ð1ð �4øõ ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ž
,«,c                 ó4   — |                       d||¦  «         dS )z0Register name of resource with resource tracker.ÚREGISTERN©Ú_send©r   ÚnameÚrtypes      r   r   zResourceTracker.register™   s   € à�
Š
�:˜t UÑ+Ô+Ð+Ð+Ð+r   c                 ó4   — |                       d||¦  «         dS )z2Unregister name of resource with resource tracker.Ú
UNREGISTERNrF   rH   s      r   r   zResourceTracker.unregister�   s   € à�
Š
�<  uÑ-Ô-Ð-Ð-Ð-r   c                 óv  — |                       ¦   «          d                     |||¦  «                             d¦  «        }t          |¦  «        dk    rt	          d¦  «        ‚t          j        | j        |¦  «        }|t          |¦  «        k    s+J d                     |t          |¦  «        ¦  «        ¦   «         ‚d S )Nz{0}:{1}:{2}
Úasciii   zmsg too longznbytes {0:n} but len(msg) {1:n})r   ÚformatÚencodeÚlenÚ
ValueErrorr!   rB   r   )r   r;   rI   rJ   ÚmsgÚnbytess         r   rG   zResourceTracker._send¡   s¬   € Ø×ÒÑÔÐØ×$Ò$ S¨$°Ñ6Ô6×=Ò=¸gÑFÔFˆÝˆs‰8Œ8�cŠ>ˆ>õ ˜^Ñ,Ô,Ð,Ý”˜$œ( CÑ(Ô(ˆØ�˜S™œÒ!Ð!Ð!Ð#D×#KÒ#KØ•C˜‘H”Hñ$ô $Ñ!Ô!Ð!Ð!Ð!r   N)Ú__name__Ú
__module__Ú__qualname__r   r$   r&   r   r(   r   r   rG   r   r   r   r   r   6   s�   € € € € € ðð ð ð
ð ð ðð ð ð>ð >ð >ð@	ð 	ð 	ð,ð ,ð ,ð.ð .ð .ð	ð 	ð 	ð 	ð 	r   r   c                 óÚ  — t          j         t           j        t           j        ¦  «         t          j         t           j        t           j        ¦  «         t          r$t          j        t           j        t          ¦  «         t          j	        t          j
        fD ]'}	 |                     ¦   «          Œ# t          $ r Y Œ$w xY wd„ t                               ¦   «         D ¦   «         }	 t          | d¦  «        5 }|D �]	}	 |                     ¦   «                              d¦  «                             d¦  «        \  }}}t                               |d¦  «        }|€t)          d|› d|› �¦  «        ‚|dk    r||                              |¦  «         n;|d	k    r||                              |¦  «         n|d
k    rnt/          d|z  ¦  «        ‚ŒÒ# t          $ r, 	 t          j        t          j        ¦   «         Ž  n#  Y nxY wY �Œw xY w	 ddd¦  «         n# 1 swxY w Y   |                     ¦   «         D ]’\  }}|r8	 t7          j        dt;          |¦  «        |fz  ¦  «         n# t          $ r Y nw xY w|D ]P}	 	 t          |         |¦  «         n1# t          $ r$}	t7          j        d|›d|	›�¦  «         Y d}	~	nd}	~	ww xY wŒL# w xY wŒ“dS # |                     ¦   «         D ]’\  }}|r8	 t7          j        dt;          |¦  «        |fz  ¦  «         n# t          $ r Y nw xY w|D ]P}	 	 t          |         |¦  «         n1# t          $ r$}	t7          j        d|›d|	›�¦  «         Y d}	~	nd}	~	ww xY wŒL# w xY wŒ“w xY w)zRun resource tracker.c                 ó,   — i | ]}|t          ¦   «         “ŒS r   )Úset)Ú.0rJ   s     r   ú
<dictcomp>zmain.<locals>.<dictcomp>Á   s   € Ð=Ð=Ð=˜eˆU•C‘E”EÐ=Ð=Ð=r   ÚrbrN   ú:NzCannot register z. for automatic cleanup: unknown resource type rE   rL   ÚPROBEzunrecognized command %rzQresource_tracker: There appear to be %d leaked %s objects to clean up at shutdownzresource_tracker: z: )r5   ÚSIGINTÚSIG_IGNÚSIGTERMr4   r	   r9   r7   r-   ÚstdinÚstdoutr"   r0   Ú_CLEANUP_FUNCSÚkeysÚopenÚstripÚdecodeÚsplitÚgetrR   ÚaddÚremoveÚRuntimeErrorÚ
excepthookÚexc_infoÚitemsr*   r+   rQ   )
ÚfdÚfÚcacheÚliner;   rI   rJ   Úcleanup_funcÚrtype_cacheÚes
             r   Úmainry   ³   s¡  € õ „M•&”-¥¤Ñ0Ô0Ð0Ý
„M•&”.¥&¤.Ñ1Ô1Ð1Ýð EÝÔ�vÔ1Õ3CÑDÔDÐDåŒi�œÐ$ð ð ˆð	Ø�GŠG‰IŒIˆIˆIøÝð 	ð 	ð 	ØˆDð	øøøð >Ð=¥~×':Ò':Ñ'<Ô'<Ð=Ñ=Ô=€Eð-å�"�d‰^Œ^ð 	˜qØð ñ �ðØ'+§z¢z¡|¤|×':Ò':¸7Ñ'CÔ'C×'IÒ'IÈ#Ñ'NÔ'NÑ$�C˜˜uÝ#1×#5Ò#5°e¸TÑ#BÔ#B�LØ#Ð+Ý(ð=¨tð =ð =Ø5:ð=ð =ñ>ô >ð >ð ˜jÒ(Ð(Ø˜eœ×(Ò(¨Ñ.Ô.Ð.Ð.Ø Ò,Ð,Ø˜eœ×+Ò+¨DÑ1Ô1Ð1Ð1Ø š˜Øå*Ð+DÀsÑ+JÑKÔKÐKøøÝ ð ð ð ðÝœ­¬©¬Ð7Ð7Ð7øðØ˜øøøøùð	øøøð#ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð2 #(§+¢+¡-¤-ð 	ð 	ÑˆE�;Øð ðÝ”Mð #Nå#& {Ñ#3Ô#3°UÐ";ñ#<ñ =ô =ð =ð =øõ !ð ð ð Ø�Dðøøøà#ð 
ð 
�ððNÝ& uÔ-¨dÑ3Ô3Ð3Ð3øÝ$ð Nð Nð NÝ œ˜ÀDÀDÀDÈ!È!Ð&LÑMÔMÐMÐMÐMÐMÐMÐMøøøøðNøøøð ø�D�D�D�Dð
ð	ð 	ø %§+¢+¡-¤-ð 	ð 	ÑˆE�;Øð ðÝ”Mð #Nå#& {Ñ#3Ô#3°UÐ";ñ#<ñ =ô =ð =ð =øõ !ð ð ð Ø�Dðøøøà#ð 
ð 
�ððNÝ& uÔ-¨dÑ3Ô3Ð3Ð3øÝ$ð Nð Nð NÝ œ˜ÀDÀDÀDÈ!È!Ð&LÑMÔMÐMÐMÐMÐMÐMÐMøøøøðNøøøð ø�D�D�D�Dð
ð	øøøs!  ÂB.Â.
B;Â:B;Ã"K Ã2HÃ9CGÇHÇ
G=ÇG2Ç1G=Ç2G6	Ç4G=Ç9HÇ<G=Ç=HÈK ÈHÈK ÈHÈK È4&IÉ
I(É'I(É1JÊJ9Ê
J5ÊJ0Ê+J9Ê0J5Ê5J9Ê9J;ËM*Ë&LÌM*Ì
L	ÌM*ÌL	ÌM*ÌL1Ì0M#Ì1
MÌ;MÍM#ÍMÍM#Í"M*Í#M%Í%M*)r!   r5   r-   r   r*   Ú r   r   Ú__all__Úhasattrr4   r`   rb   r7   re   rI   Ú_multiprocessingÚ_posixshmemÚupdater   Ú
shm_unlinkÚobjectr   Ú_resource_trackerr   r   r   r&   ry   r   r   r   ú<module>rƒ      sž  ðð$ 
€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à
6Ð
6Ð
6€à�˜Ð 1Ñ2Ô2€Ø”M 6¤>Ð2Ð ð ˆLˆLð€ð „7ˆgÒÐØÐÐÐØÐÐÐð €wÐ Ñ.Ô.ð Ø×ÒØÐ)Ô4ð
ñ 	ô 	ð 	ð ×ÒØ˜Ô/ðñ ô ð ð
tð tð tð tð t�fñ tô tð tðn $�OÑ%Ô%Ð Ø"Ô1€ØÔ%€ØÔ)€
ØÔ€ð<ð <ð <ð <ð <r   