+
     Bi;                        ^ RI t ^ RIt^ RI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
Ht ^RI
Ht ^RIHt ^RI
Ht ^RI
Ht ^RI
Ht . ROtR	t]P*                  ! R
4      t^ t ! R R]4      tRRR/R lltR tR tR t]! 4       t]P>                  t]P@                  t ]PB                  t!]PD                  t"R# )    N)AuthenticationError)
connection)process)	reduction)resource_tracker)spawn)util   qc                   J   a  ] tR t^#t o R tR tR tR tR tR t	R t
RtV tR	# )

ForkServerc                    R V n         R V n        R V n        R V n        R V n        \
        P                  ! 4       V n        R.V n        R # )N__main__)	_forkserver_authkey_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingLock_lock_preload_modulesselfs   &1/usr/lib/python3.14/multiprocessing/forkserver.py__init__ForkServer.__init__%   sB    #' #' $(!#"^^%
!+    c                    V P                   ;_uu_ 4        V P                  4        R R R 4       R #   + '       g   i     R # ; iN)r   _stop_unlockedr   s   &r   _stopForkServer._stop.   s#    ZZZ! ZZZs	   0A	c                l   V P                   f   R # \        P                  ! V P                  4       R V n        \        P                  ! V P                   ^ 4       R V n         \
        P                  ! V P                  4      '       g!   \        P                  ! V P                  4       R V n        R V n	        R # r    )
r   oscloser   waitpidr	   is_abstract_socket_namespacer   unlinkr   r   s   &r   r!   ForkServer._stop_unlocked3   s    ' 	**+$(!


4''+#001I1IJJIId../#' #' r   c                    \         ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   \        R4      hWn        R# )z>Set list of module names to try to load in forkserver process.c              3   D   "   T F  p\        V4      \        J x  K  	  R # 5ir    )typestr).0mods   & r   	<genexpr>4ForkServer.set_forkserver_preload.<locals>.<genexpr>E   s     =}49#}s    FTz&module_names must be a list of stringsN)all	TypeErrorr   )r   modules_namess   &&r   set_forkserver_preload!ForkServer.set_forkserver_preloadC   s5    s=}=sss=}===DEE -r   c                    V P                   # )z|Return list of fds inherited from parent process.

This returns None if the current process was not started by fork
server.
)r   r   s   &r   get_inherited_fdsForkServer.get_inherited_fdsI   s     """r   c                   V P                  4        V P                  '       g   Q h\        V4      ^,           \        8  d   \	        R4      h\
        P
                  ! \
        P                  4      ;_uu_ 4       pVP                  V P                  4       \        P                  ! 4       w  r4\        P                  ! 4       w  rVWTV P                  \        P                  ! 4       .pWq,          p VP                  R4       \        P                   ! VP#                  4       4      p \        P$                  ! WP                  4       \        P&                  ! WP                  4       VP)                  4        ?\*        P,                  ! W'4       W63\        P.                  ! V4       \        P.                  ! V4       uuRRR4       #   TP)                  4        ?i ; i   \        P.                  ! T4       \        P.                  ! T4       h ; i  \        P.                  ! T4       \        P.                  ! T4       i ; i  + '       g   i     R# ; i)a  Request forkserver to create a child process.

Returns a pair of fds (status_r, data_w).  The calling process can read
the child process's pid and (eventually) its returncode from status_r.
The calling process should write to data_w the pickled preparation and
process data.
ztoo many fdsTN)ensure_runningr   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXconnectr   r%   piper   r   getfdsetblockingr   
Connectionfilenoanswer_challengedeliver_challenge_detachr   sendfdsr&   )	r   fdsclientparent_rchild_wchild_rparent_wallfdswrapped_clients	   &&       r   connect_to_new_process!ForkServer.connect_to_new_processQ   s    	'''''s8a<>)^,,]]6>>**fNN4334 "	H "	G(A(A&,,.0FMF"""4(!+!6!6v}}!G'//*,D,DF00*,D,DF #**,&!!&1) !!9 +*$ #**,&""!!9 +**sJ   7A4H;,5G"A G")G,H;GG/HH

.H88H;;I	c           	     v   V P                   ;_uu_ 4        \        P                  ! 4        V P                  e   \        P
                  ! V P                  \        P                  4      w  rV'       g    RRR4       R# \        P                  ! V P                  4       RV n	        RV n
        RV n        RV n        R	pV P                  '       dG   RR0p\        P                  ! R4      pVP                  4        UUu/ uF  w  rgWd9   g   K  WgbK  	  pppM/ p\        P                  ! \        P                   4      ;_uu_ 4       p	\"        P$                  ! R4      p
V	P'                  V
4       \(        P*                  ! V
4      '       g   \        P,                  ! V
R4       V	P/                  4        \        P0                  ! 4       w  r\        P0                  ! 4       w  r V	P3                  4       W.pWR&   W9P3                  4       WP                  V3,          p\        P4                  ! 4       pV.\(        P6                  ! 4       ,           pVRV.,          p\(        P8                  ! VVV4      p \        P                  ! T4       \        P                  ! T4        \        P:                  ! \<        4      T n	        \        P>                  ! YP                  4       \        P                  ! T4       Yn
        Yn        Yn        RRR4       RRR4       R# u uppi    \        P                  ! T4       \        P                  ! T4       h ; i  \        P                  ! T4       \        P                  ! T4       i ; i  \        P                  ! T4       i ; i  + '       g   i     L; i  + '       g   i     R# ; i)
zMake sure that a fork server is running.

This can be called from any process.  Note that usually a child
process will just reuse the forkserver started by its parent, so
ensure_running() will do nothing.
N	main_pathsys_pathignorerA   i  	authkey_rz-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)) r   r   r<   r   r%   r'   WNOHANGr&   r   r   r   r   r   get_preparation_dataitemsr@   rA   r   arbitrary_addressbindr	   r(   chmodlistenrC   rG   get_executable_args_from_interpreter_flagsspawnv_passfdsurandom_AUTHKEY_LENwrite)r   pidstatuscmddesired_keysdataxymain_kwslisteneraddressalive_ralive_wrZ   	authkey_wfds_to_passexeargss   &                 r   r<   ForkServer.ensure_running{   s    ZZZ++-##/ jj)=)=rzzJ Z 223+/(+/(,0)'+$,C $$$ +Z811(;-1ZZ\O\TQQ=NDAD\Ov~~..($66yAg&88AAHHWe,! $&779 ')wwy$	(#+??#4g"IK,5[)OO-w8M8M$& &C..0C54#D#D#FFDT3K'D--c4EC HHW%HHY'(/1zz,/GD,HHY(@(@AHHY'+2(,3)'*$K /3 Z* P2HHW%HHY'HHW%HHY' HHY'E /.3 ZZs   AN'=A=N':
L
	L
2N'BN	BL*,N	?M9(N	>N'N'/MM.M66N	9NN	N$N''N8	)r   r   r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r   r"   r!   r6   r9   rT   r<   __static_attributes____classdictcell__)__classdict__s   @r   r   r   #   s0     -"
( .#("TE+ E+r   r   rZ   c                  Veb    \         P                  ! V\        4      p\        V4      \        8X  g   Q \        V4       R\         24       h \         P                  ! V4       MRpV'       d   Ve   V\
        P                  R&   RV9   dK   VeG   R\        P                  ! 4       n	         \        P                  ! V4       \        P                  ! 4       =	V F  p \        V4       K  	  \        P                  ! 4        \        P                   ! 4        \         P"                  ! 4       w  r\         P$                  ! VR4       \         P$                  ! V	R4       R p
\&        P(                  V
\&        P*                  \&        P,                  /pVP/                  4        UUu/ uF  w  rV\&        P&                  ! W4      bK  	  ppp\&        P0                  ! V	4       / p\2        P2                  ! \2        P4                  V R	7      ;_uu_ 4       p\6        P8                  ! 4       ;_uu_ 4       pVP;                  4       \<        n        VPA                  V\6        PB                  4       VPA                  V\6        PB                  4       VPA                  V\6        PB                  4          VPE                  4        UUu. uF  w  ppVPF                  NK  	  pppV'       g   K9   TT9   d*   \         P                  ! T^4      R8X  g   Q R
4       h\H        hTT9   d   \         P                  ! TR4         \         PJ                  ! R\         PL                  4      w  ppT^ 8X  d   MpTPQ                  TR4      pTe<   \         PR                  ! T4      p \U        TT4       \         P                  ! T4       K  \X        PZ                  ! RT,          4       K  TT9   Ed$   TP]                  4       ^ ,          ;_uu_ 4       p T'       de   \^        P`                  ! TPc                  4       4      p \^        Pd                  ! TT4       \^        Pf                  ! TT4       TPi                  4        ?\j        Pl                  ! T\n        ^,           4      p\        T4      \n        8  d$   \u        RPw                  \        T4      4      4      hTvpppTP	                  4        \         Px                  ! 4       pT^ 8X  d   ^p TP	                  4        TP	                  4        TTY.pTP{                  TP}                  4       4       \~        P                  ! 4        \~        P@                  ! \        P                  4       \        TTTT4      p\~        P                  ! 4        \         P                  ! T4       MG \U        TT4       TTT&   \         P                  ! T4       T F  p\         P                  ! T4       K  	  RRR4       EKW  EKZ    \         P                  ! T4       i ; i  \        P                  ! 4       =	i ; i  \         d     EKi  i ; iu uppi u uppi   \N         d     EK  i ; i  \V         d     ELi ; i  TPi                  4        ?i ; i  \p        \V        \r        3 d    TP	                  4         RRR4       EK  i ; i  \         dJ    \
        P                  ! \
        P                  ! 4       !   \
        P                  P                  4         ELi ; i  \~        P                  ! 4        \         P                  ! T4       i ; i  \V         d     ELi ; i  + '       g   i     EK  ; i  \         d-   p T P                  \        P                  8w  d   h  Rp ? EK  Rp ? ii ; i  + '       g   i     M; iRRR4       R#   + '       g   i     R# ; i)zRun forkserver.Nz < r   :NNNr   TFc                      R # r     )_unuseds   *r   sigchld_handlermain.<locals>.sigchld_handler   s    r   )rG   zNot at EOF?i   z.forkserver: waitpid returned unexpected pid %dzToo many ({0:n}) fds to send)Mr%   readrf   r=   r&   syspathr   current_process_inheritingr   import_main_path
__import__ImportErrorr	   _flush_std_streams_close_stdinrC   set_blockingsignalSIGCHLDSIGINTSIG_IGNr]   set_wakeup_fdr@   rA   	selectorsDefaultSelectorgetsockname_forkserverr   register
EVENT_READselectfileobj
SystemExitr'   r[   ChildProcessErrorpopwaitstatus_to_exitcodewrite_signedBrokenPipeErrorwarningswarnacceptr   rF   rG   rI   rH   rJ   r   recvfdsr>   EOFErrorr   RuntimeErrorformatforkextendvaluesatexit_clear_exit_function
_serve_one	Exception
excepthookexc_infostderrflush_run_exitfuncs_exitOSErrorerrnoECONNABORTED)!listener_fdrr   preloadrW   rX   rZ   authkeymodnamesig_rsig_wr   handlerssigvalold_handlers	pid_to_fdrp   selectorkeyeventsrfdsrh   stsrO   
returncodes	wrapped_srL   rP   code
unused_fdsfdes!   &&&&&$                           r   mainr      s    	 ggi6Gw<</SCL>\N1SS/HHY"CHHQK Y%:48G##%1:&&y1++-9G7#  	!779LEOOE5!OOE5! 	v~~	
H '/nn&68&6
 s00&6  8  I	v~~k	:	:h		"	"	$	$*2*>*>*@'(I$8$89'9#7#78%!5!56c=E__=NO=NMS&CKK=NDOtd?777A.#5D}D5$$D=GGE5)"')zz"bjj'AHC !8!"+--T":".)+)B)B3)GJ% ,Wj A HHW- %MM +>@C+D E t#!*1--%&,6,A,A!((*,M	!2$.$@$@,5w%@$.$?$?,5w%@ %.$5$5$7(1"+"3"3A~7I"JC s8n4". > E E$'H!.#/ / 25.3	 ggi!8#$D/ ( 0 ( 0.5w-M
 * 1 1)2B2B2D E & &0C0C D'1'32<2>(@ !' 5 5 7 "% ,Wc : .5IcNHHW-&) " '*m .- $ HHY ++-9  .8( P   1 "!" $3 % $%. %.$5$5$7(1 !)/;NO %GGI$% .- %. $- 3 # ? #

 0 0 23 !' 5 5 7 "
 $3 % $%c .--r  77e000 1S 
%	$ 
;	:	:	:s  AW? -X X4""Y_	+A;^,	']2;Y]2 A]21(Y4]2Y&A]28]:,Z'.Y83ZA*]3B[>,]+]7:]1]29^,	?XX14YY]2Y#]2"Y##]2&Y51]24Y55]28ZZ&[4]5]2=^,	 []A\\\\-]]]]]]]/(]2,^,	/]22^)= ^$^,	$^))^,	,^<7_		_	c                 z   \         P                  ! R4       VP                  4        F  w  rE\         P                   ! WE4       K  	  V F  p\        P                  ! V4       K  	  Vv\
        n        \        P                  n	        \
        n
        \        P                  ! V 4      p\        P                  ! W4      pV# )   r   )r   r   r]   r%   r&   r   r   r   _resource_tracker_fdr   dupr   _main)	rP   rL   r   r   r   r   r   parent_sentinelr   s	   &&&&     r   r   r   m  s    
NN$c %
 
 %("[%''+  ffWoO;;w0DKr   c                     \        \        P                  4      p\        V4      pV'       d/   \        P
                  ! W4      pV^ 8X  d   \        R4      hW#R pK6  \        P                  V4      ^ ,          # )r   zunexpected EOFN)	bytearraySIGNED_STRUCTsize
memoryviewr%   readintor   unpack)r   rl   unreadcounts   &   r   read_signedr     s_    ]''(DF
B'A:+,,%a((r   c                     \         P                  V4      pV'       d/   \        P                  ! W4      pV^ 8X  d   \	        R4      hW#R pK6  R# )r   zshould not get hereN)r   packr%   rg   r   )r   nmsgnbytess   &&  r   r   r     sD    


Q
C
""Q;455'l	 r   )r<   r9   rT   r6   )NN)#r   r   r%   r   r   r@   structr   r   r    r   r   r   contextr   r   r   r	   __all__r>   Structr   rf   objectr   r   r   r   r   r   r<   r9   rT   r6   r   r   r   <module>r      s      	     
   !      % c"]+ ]+FddN.	) l++11 $;; $;; r   