ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     U
    e5d0                     @   s   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Zd dlZd dl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 d	d
ddgZdZedZG dd deZdddZdd Zdd Zdd Ze ZejZejZejZejZdS )    N   )
connection)process)	reduction)resource_tracker)spawn)utilensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   qc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
ForkServerc                 C   s.   d | _ d | _d | _d | _t | _dg| _d S )N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingZLock_lock_preload_modulesself r   2/usr/lib64/python3.8/multiprocessing/forkserver.py__init__"   s    
zForkServer.__init__c              	   C   s   | j  |   W 5 Q R X d S N)r   _stop_unlockedr   r   r   r   _stop*   s    zForkServer._stopc                 C   sV   | j d krd S t| j d | _t| j d d | _ t| jsLt| j d | _d S )Nr   )	r   oscloser   waitpidr   is_abstract_socket_namespacer   unlinkr   r   r   r   r   /   s    
zForkServer._stop_unlockedc                 C   s&   t dd | jD std|| _dS )z>Set list of module names to try to load in forkserver process.c                 s   s   | ]}t |tkV  qd S r   )typestr).0modr   r   r   	<genexpr>@   s     z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)allr   	TypeError)r   Zmodules_namesr   r   r   r   >   s    z!ForkServer.set_forkserver_preloadc                 C   s   | j S )zReturn list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r   r   r   r   r   r
   D   s    zForkServer.get_inherited_fdsc              
   C   s   |    t|d tkr tdttj}|| j t	 \}}t	 \}}||| j
t g}||7 }zNz&t|| ||fW W 4W  5 Q R  S    t| t|  Y nX W 5 t| t| X W 5 Q R X dS )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 fdsN)r	   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXZconnectr   r    piper   r   Zgetfdr!   r   Zsendfds)r   fdsZclientZparent_rchild_wchild_rZparent_wZallfdsr   r   r   r   L   s(    


z!ForkServer.connect_to_new_processc                    s  | j ~ t  | jdk	r`t| jtj\}}|sBW 5 Q R  dS t| j d| _	d| _d| _d}| j
rddh td} fdd| D }ni }ttj}td}|| t|st|d	 |  t \}}ztzV| |g}	|| || j
|f; }t }
|
gt  }|d
|g7 }t|
||	}W n   t|  Y nX W 5 t| X || _	|| _|| _W 5 Q R X W 5 Q R X dS )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.
        NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)	main_pathsys_pathignorec                    s   i | ]\}}| kr||qS r   r   )r'   xyZdesired_keysr   r   
<dictcomp>   s       z-ForkServer.ensure_running.<locals>.<dictcomp>r1   i  z-c)r   r   r	   r   r    r"   WNOHANGr!   r   r   r   r   Zget_preparation_dataitemsr0   r1   r   Zarbitrary_addressZbindr   r#   chmodZlistenr2   filenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds)r   pidZstatuscmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargsr   r;   r   r	   i   sN    






zForkServer.ensure_runningN)
__name__
__module____qualname__r   r   r   r   r
   r   r	   r   r   r   r   r       s   r   c                 C   s  |rdd|kr8|dk	r8dt  _zt| W 5 t  `X |D ]&}zt| W q< tk
r`   Y q<X q<t  t	
 \}}t	|d t	|d dd }tj|tjtji}	dd |	 D }
t| i }tjtj| d	}t }| t_||tj ||tj ||tj zd
d | D }|r"qBq"||krjt	|ddksftdt||kr\t	|d zt	dt	j \}}W n t!k
r   Y q\Y nX |dkrq\|"|d}|dk	rJt	#|rt	$| }n&t	%|std&||t	'|}zt(|| W n t)k
r<   Y nX t	*| nt+,d|  q||kr|- d ,}t./|t0d }t1|t0krt2d&t1||^}}}|*  t	3 }|dkrNd}zpz<|*  |*  ||||g}|5|6  t7||||
}W n. t8k
r:   t9j:t9;   t9j<=  Y nX W 5 t	4| X nNzt(|| W n t)k
rr   Y nX |||< t	*| |D ]}t	*| qW 5 Q R X W n4 t>k
r } z|j?t?j@kr̂ W 5 d}~X Y nX qW 5 Q R X W 5 Q R X dS )zRun forkserver.r   NTFc                  W   s   d S r   r   )Z_unusedr   r   r   sigchld_handler   s    zmain.<locals>.sigchld_handlerc                 S   s   i | ]\}}|t  ||qS r   )signal)r'   sigvalr   r   r   r<      s    zmain.<locals>.<dictcomp>)r@   c                 S   s   g | ]\}}|j qS r   )Zfileobj)r'   keyZeventsr   r   r   
<listcomp>   s     zmain.<locals>.<listcomp>r       zNot at EOF?i   r   zChild {0:n} status is {1:n}z.forkserver: waitpid returned unexpected pid %dzToo many ({0:n}) fds to send)Ar   Zcurrent_processZ_inheritingr   Zimport_main_path
__import__ImportErrorr   Z_close_stdinr    r2   set_blockingrK   SIGCHLDSIGINTSIG_IGNr>   set_wakeup_fdr0   r1   	selectorsZDefaultSelectorZgetsockname_forkserverr   registerZ
EVENT_READZselectreadAssertionError
SystemExitr"   r=   ChildProcessErrorpopWIFSIGNALEDWTERMSIG	WIFEXITEDformatWEXITSTATUSwrite_signedBrokenPipeErrorr!   warningswarnZacceptr   Zrecvfdsr.   r-   RuntimeErrorfork_exitextendvalues
_serve_one	Exceptionsys
excepthookexc_infostderrflushOSErrorerrnoZECONNABORTED)Zlistener_fdrE   Zpreloadr6   r7   modnameZsig_rZsig_wrJ   handlersZold_handlersZ	pid_to_fdrD   ZselectorZrfdsrA   stsr4   
returncodesr3   r5   code
unused_fdsfder   r   r   main   s    

  





 





r   c           	      C   sh   t d | D ]\}}t  || q|D ]}t| q,|^t_tj_	t_
t| }t| |}|S )NrQ   )rK   rX   r>   r    r!   rZ   r   r   Z_resource_trackerZ_fdr   dupr   Z_main)	r5   r3   r~   ry   rL   rM   r   Zparent_sentinelr}   r   r   r   ro   1  s    

ro   c                 C   sN   d}t j}t||k r@t| |t| }|s6td||7 }q
t |d S )NrP   zunexpected EOFr   )SIGNED_STRUCTsizer-   r    r\   EOFErrorZunpack)r   rC   Zlengthr|   r   r   r   read_signedH  s    
r   c                 C   s<   t |}|r8t| |}|dkr*td||d  }q
d S )Nr   zshould not get here)r   Zpackr    writerj   )r   nmsgnbytesr   r   r   rf   R  s    
rf   )NN) rw   r    rY   rK   r0   Zstructrq   r   rh    r   r   contextr   r   r   r   __all__r.   ZStructr   objectr   r   ro   r   rf   rZ   r	   r
   r   r   r   r   r   r   <module>   s>   
 
 
