+
    f4jJ                     t   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	t	^RI
Ht ^RI
Ht . ROt]! ]R4      t]P                   ]P"                  3tR tR]RR	 /t]P*                  R
8X  d6   ^ RIt^ RIt]! ]R4      '       d   ]P0                  ]R&   ]P2                  ]R&    ! R R]4      t ! R R]4      t]P<                  ! 4       t]! 4       t ] PB                  t!] PD                  t"] PF                  t#] PH                  t$]! ]R4      '       d   ]PJ                  ! ] PL                  R7       R t'R t(R# )    N)deque)spawn)utilpthread_sigmaskc                     \        R 4      h)z-noop should never be registered or cleaned up)RuntimeErrornames   &2lib/python3.14/multiprocessing/resource_tracker.pycleanup_noopr   %   s    
F
GG    noopdummyc                     R # N r	   s   &r   <lambda>r   *   s    $r   posix
sem_unlink	semaphoreshared_memoryc                       ] tR t^;tRtR# )ReentrantCallErrorr   N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r   ;   s    r   r   c            
         a  ] tR t^?t o R tR tR tR tRR lt]	P                  ]	P                  ]	P                  ]P                  ]P                  ]! ]	RR4      R3R ltR	 tR
 tR tR tR tRR ltR tR tR tR tR tRtV tR# )ResourceTrackerc                    \         P                  ! 4       V n        R V n        R V n        R V n        \        4       V n        RV n        RV n	        R # )NTF)
	threadingRLock_lock_fd_pid	_exitcoder   _reentrant_messages_use_simple_format_waitpid_timed_outselfs   &r   __init__ResourceTracker.__init__A   sC    __&
	#(7  #' #(r   c                    \        R 4      h)z8Reentrant call into the multiprocessing resource tracker)r   r+   s   &r   _reentrant_call_error%ResourceTracker._reentrant_call_errorS   s    
 !FH 	Hr   c                ,    V P                  R RR7       R# )Fg      ?)use_blocking_lockwait_timeoutN)_stopr+   s   &r   __del__ResourceTracker.__del__[   s     	

U
=r   c                T   V P                   P                  4        V P                  P                  4        R V n        R V n        V P                  eF   \        \        RR4      '       g-   V P                  pR V n         \        P                  ! V4       R # R # R #   \         d     R # i ; i)Npreserve_fdF)r$   _at_fork_reinitr(   clearr&   r'   r%   getattr_fork_intentoscloseOSError)r,   fds   & r   _after_fork_in_child$ResourceTracker._after_fork_in_childc   s    ( 	

""$  &&(	HH mU;;BDH	 < !  s   <B B'&B'Nc                   V'       d2   V P                   ;_uu_ 4        V P                  VR 7       RRR4       R# V P                   P                  RR7      p V P                  VR 7       V'       d   V P                   P                  4        R# R#   + '       g   i     R# ; i  T'       d   T P                   P                  4        i i ; i))r4   NF)blocking)r$   _stop_lockedacquirerelease)r,   r3   r4   acquireds   &&& r   r5   ResourceTracker._stop   s    !!|!<  zz))5)9H)!!|!<JJ&&(   JJ&&( s   BB# B 	#%CWNOHANGc                   V P                   P                  4       ^8  d   V P                  4       hV P                  f   R# V P                  f   R# V! V P                  4       RV n         Vf   V! V P                  ^ 4      w  rMwV! 4       V,           p
Rp V! V P                  V4      w  rV^ 8w  d   MIW! 4       ,
          pV^ 8:  d   RV n        RV n        RV n        R# \        V^,          VR4      pV! V4       Kg  RV n         V! V	4      V n        R#   \         d    RT n        RT n         R# i ; i  \         d    RT n         R# i ; i)   NgMbP?Tg?)
r$   _recursion_countr0   r%   r&   r'   r*   minChildProcessError
ValueError)r,   r?   waitpidwaitstatus_to_exitcode	monotonicsleeprK   r4   _statusdeadlinedelay
result_pid	remainings   &&&&&&&&      r   rF   ResourceTracker._stop_locked   sB    ::&&(1,,,..8899 	dhh	##DIIq1	6
 %;5)0G)D&J!Q (9; 6I A~
 %)	)-26/	9c:E%L 		"3F;DN ! 	DI!DN	  	"!DN	"s6   *D -D 2)D D D2 D/.D/2EEc                :    V P                  4        V P                  # r   )ensure_runningr%   r+   s   &r   getfdResourceTracker.getfd   s    xxr   c                "    V P                  4       # )zMake 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.)_ensure_running_and_writer+   s   &r   r^   ResourceTracker.ensure_running   s    
 --//r   c                   \         P                  ! V P                  4        V P                  e"   \         P                  ! V P                  ^ 4       R T n        R T n        R T n        \        P                  ! R4       R #   \
         d     L:i ; i)NzUresource_tracker: process died unexpectedly, relaunching.  Some resources might leak.)	r>   r?   r%   r&   rR   rP   r'   warningswarnr+   s   &r   _teardown_dead_process&ResourceTracker._teardown_dead_process   ss    
	 yy$

499a( 	 A 	B ! 		s   /A> >BBc                H   . p VP                  \        P                  P                  4       4       \
        P                  ! 4       w  r# VP                  V4       \        P                  ! 4       pV.\        P                  ! 4       OR NRV R2NpRp \        '       d*   \        P                  ! \        P                  \        4      p\        P                   ! WEV4      pVe&   \        P                  ! \        P"                  V4       Y0n        Ypn         \
        P(                  ! T4       R#   \         d     EL	i ; i  Te'   \        P                  ! \        P"                  T4       i i ; i   \
        P(                  ! T4       h ; i  \
        P(                  ! T4       i ; i)z-cz7from multiprocessing.resource_tracker import main;main()N)appendsysstderrfileno	Exceptionr>   piper   get_executabler   _args_from_interpreter_flags_HAVE_SIGMASKsignalr   	SIG_BLOCK_IGNORED_SIGNALSspawnv_passfdsSIG_SETMASKr%   r&   r?   )r,   fds_to_passrwexeargsprev_sigmaskpids   &       r   _launchResourceTracker._launch   s[   	szz0023 wwy	q!&&(C224  J!AN	D  LM =#)#9#9&:J:JL\#]L))#[A+**6+=+=|L
 HIHHQKE  		2  +**6+=+=|L ,	HHQK
 HHQKsI   -D, 	AE- AD> )E- F	 ,D;:D;>,E**E- -FF	 	F!c                    V P                   '       d   R# \        P                  ! RRRR/RR
R7      R,           P                  R	4      # )zReturn a probe message.s   PROBE:0:noop
cmdPROBErtyper   Tensure_ascii
separators
ascii,:)r)   jsondumpsencoder+   s   &r   _make_probe_message#ResourceTracker._make_probe_message  sI    """$JJ&1!%
  &/	r   c                   V P                   ;_uu_ 4        V P                   P                  4       ^8  d:   Vf   V P                  4       hV P                  P	                  V4      uuRRR4       # V P
                  e-   Vf   V P                  4       pMTp V P                  V4       RpMV P                  4        RRR4         V P                  P                  4       pT P                  T4       K/    \         d$    T P                  4        T P                  4         Lwi ; i  + '       g   i     Lp; i  \         d     Mi ; iTe   T P                  T4       R# R# )rM   N)r$   rN   r0   r(   rk   r%   r   _writer@   rg   r   popleft
IndexError)r,   msgto_sendreentrant_msgs   &&  r   rb   )ResourceTracker._ensure_running_and_write!  s   ZZZzz**,q0;4466//66s; Z xx#;"668G!G#KK(
 + .  $ 8 8 @ @ B KK&  #//1LLN# Z4   ?KK sH   AD .%D C/%D D3 /+DD DD  D0	3E Ec                     \         P                  ! V P                  V P                  4       4       R#   \         d     R# i ; i)z;Check that the pipe has not been closed by sending a probe.TF)r>   writer%   r   r@   r+   s   &r   _check_aliveResourceTracker._check_aliveB  s=    	 HHTXXt779:   		s   /3 AAc                *    V P                  RW4       R# )z0Register name of resource with resource tracker.REGISTERN_sendr,   r
   r   s   &&&r   registerResourceTracker.registerM  s    

:t+r   c                *    V P                  RW4       R# )z2Unregister name of resource with resource tracker.
UNREGISTERNr   r   s   &&&r   
unregisterResourceTracker.unregisterQ  s    

<-r   c                    \         P                  ! V P                  V4      pV\        V4      8X  g   Q R V: R\        V4      : 24       hR# )znbytes=z != len(msg)=N)r>   r   r%   len)r,   r   nbytess   && r   r   ResourceTracker._writeU  s>    $((C(S!>gfYn3s8+#>>!r   c                v   V P                   '       dP   R V9  dI   V RV RV R 2P                  R4      p\        V4      R8  d   \        R4      hV P	                  V4       R# VP                  RR4      p\        V4      ^8  d   \        R4      h\
        P                  ! V4      P                  R4      pR	VR
VRV/p\        P                  ! VRRR7      R ,           P                  R4      p\        V4      R8:  g   Q R\        V4       R24       hVP                  R4      '       g   Q hV P	                  V4       R# )r   r   r   i   zmsg too longNutf-8surrogateescapez+shared memory name too long (max 255 bytes)r   r   base64_nameTr   z"internal error: message too long (z bytes)   {r   )r)   r   r   rQ   rb   base64urlsafe_b64encodedecoder   r   
startswith)r,   r   r
   r   r   bb64payloads   &&&&    r   r   ResourceTracker._sendY  s#   """t4'7E4&%+227;C3x#~ !00**3/ KK!23q6C<JKK&&q)009#w}cBzz'LtS[[\cd 3x3V"DSXJg VV~~d####&&s+r   )r'   r%   r$   r&   r(   r)   r*   )TNr   )r   r   r   r   r-   r0   r6   rB   r5   r>   r?   rR   rS   timerT   rU   r<   rF   r_   r^   rg   r   r   rb   r   r   r   r   r   r   __classdictcell__)__classdict__s   @r   r    r    ?   s     ($H>B
) hh

!88..jjIt,<"|0B&&PB	,.?, ,r   r    register_at_fork)after_in_childc                    V P                  R 4      '       d    \        P                  ! V P                  R4      4      pTR,          pTR,          pTP                  RR4      p\        T\        4      '       d-   \        T\        4      '       d   \        T\        4      '       g   \        RT: 24      h \        P                  ! T4      P                  R	R
4      pMGV P                  4       P                  R4      P                  R^R7      w  r7VP                  R^R7      w  rdW4V3#   \         d   p\        RT : 24      ThRp?ii ; i  \
         d   p\        RT: 24      ThRp?ii ; i)r   r   z$malformed resource_tracker message: Nr   r   r    z#malformed resource_tracker fields: r   r   z(malformed resource_tracker base64_name: r   )maxsplit)r   r   loadsr   ro   rQ   get
isinstancestrr   urlsafe_b64decodestripsplitrsplit)lineobjer   r   r   r
   rests   &       r   _decode_messager     s=   t	X**T[[12C %jGww}b)#s##:eS+A+ATWY\I]I]MNN	[++C077ARSD JJL''066sQ6G	kk#k2t#  	XOPVWW	X  	[SRSYZZ	[s/   %D& 4&E	 &E1EE	E)E$$E)c                   \         P                   ! \         P                  \         P                  4       \         P                   ! \         P                  \         P                  4       \        '       d*   \         P
                  ! \         P                  \        4       \        P                  \        P                  3 F  p VP                  4        K  	  \        P                  4        Uu/ uF  q"\        4       bK  	  pp^ p \!        V R4      ;_uu_ 4       pV F  p \#        V4      w  rbp\        P%                  VR4      pVf   \'        RV RV 24      hVR8X  d   W2,          P)                  V4       K]  VR8X  d   W2,          P+                  V4       K}  VR8X  d   K  \-        RV,          4      h	  RRR4       VP3                  4        F_  w  r)V	'       d5    ^pVR	8X  d   M)\4        P6                  ! R
\9        V	4       RV RV	 24        V	 F  p  \        V,          ! V4       K  	  Ka  	  \        P:                  ! V4       R#   \         d     EK  i ; iu upi   \         d:    ^p \        P.                  ! \        P0                  ! 4       !    EK~       EK  ; ii ; i  + '       g   i     L; i  \         d     Li ; i  \         d+   p
^p\4        P6                  ! RT: RT
: 24        Rp
?
LRp
?
ii ; i  i ; i  TP3                  4        F  w  r)T	'       dF    ^pTR	8X  d   M:\4        P6                  ! R
\9        T	4       RT RT	 24       M  \         d     Mi ; iT	 FV  p  \        T,          ! T4       M8  \         d+   p
^p\4        P6                  ! RT: RT
: 24        Rp
?
MRp
?
ii ; iKS    i ; i	  K  	  \        P:                  ! T4       i ; i)zRun resource tracker.rbNzCannot register z. for automatic cleanup: unknown resource type r   r   r   zunrecognized command %rr   z%resource_tracker: There appear to be z leaked z" objects to clean up at shutdown: zresource_tracker: z: )rt   SIGINTSIG_IGNSIGTERMrs   r   SIG_UNBLOCKrv   rl   stdinstdoutr?   ro   _CLEANUP_FUNCSkeyssetopenr   r   rQ   addremover   
excepthookexc_infoitemsre   rf   r   exit)rA   fr   cache	exit_coder   r   r
   cleanup_funcrtype_cacher   s   &          r   mainr     sf    MM&--0
MM&..&..1}v113CDii$	GGI % (6':':'<='<eCE\'<E=I9"d^^q'6t'<$C#1#5#5eT#BL#+(.tf 555:G=> > j(((.,++D1*+Ds+JKK!  4 #(++-E !I'  C";/0 @55@MC $N&u-d3
  $! #0: 	  		 >. !  !I7% ^P !  % N$%	 D!&LMMN 7 #(++-E !I'  C";/0 @55@MC
 ! #N&u-d3$ N$%	 D!&LMMN D $! #0: 	sK   I*IL J%AI4J%6IJ%IJ%I1J%3L 	J8#(J8K	IIJ"	,'JJ%JJ"	J%J"	"J%%J5	0L 8KK	K> K94L9K>>LLO %	M.O /(MO M&	#O %M&	&O 0NN>N9 N4/N>4N99N><O >O   O )r^   r   r   ))r   r>   rt   rl   r"   r   re   collectionsr   r   r   r   r   __all__hasattrrs   r   r   rv   r   r   r
   _multiprocessing_posixshmemr   
shm_unlinkr   r   objectr    localr=   _resource_trackerr^   r   r   r_   r   rB   r   r   r   r   r   <module>r      s9  $  	  
       
6 12MM6>>2 H L
 77g ..&6&A&A{#&1&<&<N?#	 	y,f y,B
  #% "11%%))
 2!""'8'M'MN0Jr   