<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    if(%                     @   s  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Zddl	m
Z
 ddddd	gZejd
kpeedoeedoeejdZG dd dejZejZd6dd	Zejd
kredddg7 Zd dlZd7ddddZdd Zdd Zdd ZG dd deZnHedddg7 Zd dlZejdkZdd Zdd Zd d Zd!d Zd"d Zd#d$ ZG d%d& d&Z ee!e  j"e d'd( Z#ee!e$j%e# ee!e&j'e# d)d* Z(d+d, Z)eej*e( ejd
krd-d. Z+d/d0 Z,eeje+ nd1d. Z+d2d0 Z,eeje+ G d3d4 d4ed5Z-dS )8    )ABCMetaN   )contextsend_handlerecv_handleForkingPicklerregisterdumpwin32ZCMSG_LEN
SCM_RIGHTSsendmsgc                       sF   e Zd Zi ZejZ fddZedd Z	edddZ
ejZ  ZS )	r   c                    s*   t  j|  | j | _| j| j d S N)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducersselfargs	__class__ >/opt/alt/python38/lib64/python3.8/multiprocessing/reduction.pyr   &   s    zForkingPickler.__init__c                 C   s   || j |< d S r   )r   )clstypereducer   r   r   r   +   s    zForkingPickler.registerNc                 C   s    t  }| ||| | S r   )ioBytesIOr	   	getbuffer)r   objprotocolZbufr   r   r   dumps0   s    zForkingPickler.dumps)N)__name__
__module____qualname__r   copyregr   r   r   classmethodr   r$   pickleloads__classcell__r   r   r   r   r   !   s   
c                 C   s   t |||  d S r   )r   r	   )r"   filer#   r   r   r   r	   :   s    	DupHandle	duplicatesteal_handleF)source_processc                C   s6   t  }|d kr|}|d kr |}t || |d|t jS )Nr   )_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_processZinheritabler1   Zcurrent_processr   r   r   r/   G   s        c              	   C   sF   t t jd| }z$t ||t  ddt jt jB W S t | X d S NFr   )r2   OpenProcessPROCESS_DUP_HANDLECloseHandler4   r3   r5   DUPLICATE_CLOSE_SOURCE)Z
source_pidr6   Zsource_process_handler   r   r   r0   S   s         
c                 C   s   t |tj|}| | d S r   )r.   r2   r5   send)connr6   destination_pidZdhr   r   r   r   _   s    c                 C   s   |    S r   )recvdetach)r=   r   r   r   r   d   s    c                   @   s   e Zd ZdddZdd ZdS )r.   Nc              	   C   s\   |d krt  }ttjd|}ztt |||dd| _W 5 t| X || _	|| _
d S r7   )osgetpidr2   r8   r9   r:   r4   r3   _handle_access_pid)r   r6   accesspidprocr   r   r   r   j   s        
zDupHandle.__init__c              	   C   sZ   | j t kr| jS ttjd| j }z"t|| jt	 | j
dtjW S t| X d S )NF)rE   rA   rB   rC   r2   r8   r9   r:   r4   r3   rD   r;   )r   rH   r   r   r   r@   y   s    
    zDupHandle.detach)N)r%   r&   r'   r   r@   r   r   r   r   r.   h   s   
DupFdsendfdsrecvfdsdarwinc                 C   sV   t  d|}tt|d g}| |gtjtj|fg trR| ddkrRt	dd S )Ni   r      Az%did not receive acknowledgement of fd)
arraybyteslenr   socket
SOL_SOCKETr   ACKNOWLEDGEr?   RuntimeError)sockZfdsmsgr   r   r   rJ      s
    c              	   C   s  t  d}|j| }| dt|\}}}}|s:|s:tztrJ| d t|dkrft	dt| |d \}}	}
|tj
kr|	tjkrt|
|j dkrt||
 t|d |d krtdt||d t|W S W n ttfk
r   Y nX t	dd S )	NrM   r   rO   zreceived %d items of ancdatar   rN   z Len is {0:n} but msg[0] is {1!r}zInvalid data received)rP   itemsizeZrecvmsgrS   Z
CMSG_SPACEEOFErrorrU   r<   rR   rV   rT   r   
ValueErrorZ	frombytesAssertionErrorformatlist
IndexError)rW   sizeaZ
bytes_sizerX   ZancdataflagsZaddrZ
cmsg_levelZ	cmsg_typeZ	cmsg_datar   r   r   rK      s<    




 c              	   C   s2   t |  t jt j}t||g W 5 Q R X d S r   )rS   fromfdfilenoAF_UNIXSOCK_STREAMrJ   )r=   r6   r>   sr   r   r   r      s    c              
   C   s<   t |  t jt j}t|dd W  5 Q R  S Q R X d S )Nr   r   )rS   rc   rd   re   rf   rK   )r=   rg   r   r   r   r      s    c                 C   sF   t  }|d k	r ||| S tr:ddlm} || S tdd S )Nr   )resource_sharerz&SCM_RIGHTS appears not to be available)r   Zget_spawning_popenrI   Zduplicate_for_childHAVE_SEND_HANDLE rh   r[   )fdZ	popen_objrh   r   r   r   rI      s    
c                 C   s2   | j d krt| j| jjffS t| j | jjffS d S r   )__self__getattrr   __func__r%   mr   r   r   _reduce_method   s    
rq   c                   @   s   e Zd Zdd ZdS )_Cc                 C   s   d S r   r   )r   r   r   r   f   s    z_C.fN)r%   r&   r'   rs   r   r   r   r   rr      s   rr   c                 C   s   t | j| jffS r   )rm   __objclass__r%   ro   r   r   r   _reduce_method_descriptor   s    ru   c                 C   s   t | j| j| jpi ffS r   )_rebuild_partialfuncr   keywords)pr   r   r   _reduce_partial   s    rz   c                 C   s   t j| f||S r   )	functoolspartial)rw   r   rx   r   r   r   rv      s    rv   c                 C   s   ddl m} t|| ffS )Nr   )	DupSocket)rh   r}   _rebuild_socket)rg   r}   r   r   r   _reduce_socket   s    r   c                 C   s   |   S r   )r@   )Zdsr   r   r   r~      s    r~   c                 C   s"   t |  }t|| j| j| jffS r   )rI   rd   r~   familyr   proto)rg   dfr   r   r   r      s    c                 C   s   |   }tj||||dS )N)rd   )r@   rS   )r   r   r   r   rk   r   r   r   r~      s    c                   @   s`   e Zd ZeZeZeZeZeZej	dkr4e
Z
eZeZneZeZeZeZeZeZeZeZdd ZdS )AbstractReducerr
   c                 G   sN   t tt jt t ttjt t ttj	t t t
jt t tjt d S r   )r   r   rr   rs   rq   r^   appendru   int__add__r{   r|   rz   rS   r   r   r   r   r   r     s
    zAbstractReducer.__init__N)r%   r&   r'   r   r   r	   r   r   sysplatformr0   r/   r.   rJ   rK   rI   rq   ru   rv   r   r~   r   r   r   r   r   r      s$   
r   )	metaclass)N)NF).abcr   r(   r{   r   rA   r*   rS   r   rj   r   __all__r   hasattrri   ZPicklerr   r   r	   r2   r/   r0   r   r   objectr.   rP   rU   rJ   rK   rI   rq   rr   r   rs   ru   r^   r   r   r   rz   rv   r|   r   r~   r   r   r   r   r   <module>
   sj   


	
#
