<!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>

]                 @   sO  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 m Z y d  d l m Z Wn" e k
 r d  d l m Z Yn Xd d d	 d
 d d d d d d d d d d d d d g Z e j Z e j Z e j Z e j Z e j Z y e j Z Wn e  k
 r$d Z Yn Xe j! Z! [ d a" d a# d d   Z$ d d   Z% e Z& d d   Z Gd d   d  Z' e' Z( Gd d   d  Z) Gd d   d  Z* Gd d   d e*  Z+ Gd  d   d  Z, Gd! d   d  Z- Gd" d#   d# e.  Z/ e   j0 Z1 e1   d$ d% d&  Z2 e   a3 i  Z4 i  Z5 e
   Z6 Gd' d   d  Z7 Gd( d   d e7  Z8 Gd) d*   d* e7  Z9 Gd+ d,   d, e7  Z: d- d	   Z; e; Z< d. d   Z= e= Z> d/ d0   Z? d1 d
   Z@ d  d2 l mA ZA e9   aB d3 d4   ZC d5 d6   ZD d7 d8   ZE y d  d9 l mF ZG Wn" e k
 r>d  d: lH mG ZG Yn Xd; d<   ZI d S)=    N)	monotonic)
format_exc)WeakSet)islicecount)dequeactive_count	Conditioncurrent_thread	enumerateEventLockRLock	SemaphoreBoundedSemaphoreThreadBarrierTimerThreadError
setprofilesettracelocal
stack_sizec             C   s
   |  a  d  S)N)_profile_hook)func r   ./opt/alt/python35/lib64/python3.5/threading.pyr   0   s    c             C   s
   |  a  d  S)N)_trace_hook)r   r   r   r   r   :   s    c              O   s&   t  d  k r t |  |   St  |  |   S)N)_CRLock_PyRLock)argskwargsr   r   r   r   H   s    	c               @   s|   e  Z d  Z d d   Z d d   Z d d d d  Z e Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d S)_RLockc             C   s"   t    |  _ d  |  _ d |  _ d  S)Nr   )_allocate_lock_block_owner_count)selfr   r   r   __init___   s    	z_RLock.__init__c             C   sy   |  j  } y t | j } Wn t k
 r. Yn Xd |  j j   rG d n d |  j j |  j j | |  j	 t
 t |    f S)Nz)<%s %s.%s object owner=%r count=%d at %s>lockedunlocked)r%   _activenameKeyErrorr$   r)   	__class__
__module____qualname__r&   hexid)r'   ownerr   r   r   __repr__d   s    			z_RLock.__repr__T   c             C   s\   t    } |  j | k r+ |  j d 7_ d S|  j j | |  } | rX | |  _ d |  _ | S)Nr5   )	get_identr%   r&   r$   acquire)r'   blockingtimeoutmercr   r   r   r7   s   s    			z_RLock.acquirec             C   sR   |  j  t   k r t d   |  j d |  _ } | sN d  |  _  |  j j   d  S)Nzcannot release un-acquired lockr5   )r%   r6   RuntimeErrorr&   r$   release)r'   r   r   r   r   r=      s    	z_RLock.releasec             C   s   |  j    d  S)N)r=   )r'   tvtbr   r   r   __exit__   s    z_RLock.__exit__c             C   s#   |  j  j   | \ |  _ |  _ d  S)N)r$   r7   r&   r%   )r'   stater   r   r   _acquire_restore   s    z_RLock._acquire_restorec             C   sV   |  j  d k r t d   |  j  } d |  _  |  j } d  |  _ |  j j   | | f S)Nr   zcannot release un-acquired lock)r&   r<   r%   r$   r=   )r'   r   r3   r   r   r   _release_save   s    				z_RLock._release_savec             C   s   |  j  t   k S)N)r%   r6   )r'   r   r   r   	_is_owned   s    z_RLock._is_ownedN)__name__r/   r0   r(   r4   r7   	__enter__r=   rA   rC   rD   rE   r   r   r   r   r"   U   s   
$
r"   c               @   s   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d d  Z
 d d d  Z d d d  Z d d   Z e Z d S)r	   Nc             C   s   | d  k r t    } | |  _ | j |  _ | j |  _ y | j |  _ Wn t k
 rZ Yn Xy | j |  _ Wn t k
 r Yn Xy | j |  _ Wn t k
 r Yn Xt   |  _	 d  S)N)
r   _lockr7   r=   rD   AttributeErrorrC   rE   _deque_waiters)r'   lockr   r   r   r(      s$    		zCondition.__init__c             C   s   |  j  j   S)N)rI   rH   )r'   r   r   r   rH      s    zCondition.__enter__c             G   s   |  j  j |   S)N)rI   rA   )r'   r    r   r   r   rA      s    zCondition.__exit__c             C   s   d |  j  t |  j  f S)Nz<Condition(%s, %d)>)rI   lenrL   )r'   r   r   r   r4      s    zCondition.__repr__c             C   s   |  j  j   d  S)N)rI   r=   )r'   r   r   r   rD      s    zCondition._release_savec             C   s   |  j  j   d  S)N)rI   r7   )r'   xr   r   r   rC      s    zCondition._acquire_restorec             C   s+   |  j  j d  r# |  j  j   d Sd Sd  S)Nr   FT)rI   r7   r=   )r'   r   r   r   rE      s    zCondition._is_ownedc             C   s   |  j    s t d   t   } | j   |  j j |  |  j   } d } zW | d  k ro | j   d } n0 | d k r | j d |  } n | j d  } | SWd  |  j |  | s y |  j j |  Wn t	 k
 r Yn XXd  S)Nzcannot wait on un-acquired lockFTr   )
rE   r<   r#   r7   rL   appendrD   rC   remove
ValueError)r'   r9   waitersaved_stategotitr   r   r   wait  s*    	

	zCondition.waitc             C   s~   d  } | } |   } xb | sy | d  k	 r` | d  k rF t    | } n | t    } | d k r` P|  j |  |   } q W| S)Nr   )_timerV   )r'   	predicater9   endtimewaittimeresultr   r   r   wait_for5  s    		zCondition.wait_forr5   c             C   s   |  j    s t d   |  j } t t | |   } | s@ d  Sx> | D]6 } | j   y | j |  WqG t k
 r| YqG XqG Wd  S)Nz!cannot notify on un-acquired lock)rE   r<   rL   rK   _islicer=   rQ   rR   )r'   nall_waiterswaiters_to_notifyrS   r   r   r   notifyL  s    
	
zCondition.notifyc             C   s   |  j  t |  j   d  S)N)ra   rN   rL   )r'   r   r   r   
notify_allc  s    zCondition.notify_all)rG   r/   r0   r(   rH   rA   r4   rD   rC   rE   rV   r\   ra   rb   	notifyAllr   r   r   r   r	      s   	0	c               @   sO   e  Z d  Z d d d  Z d d d d  Z e Z d d	   Z d
 d   Z d S)r   r5   c             C   s7   | d k  r t  d   t t    |  _ | |  _ d  S)Nr   z$semaphore initial value must be >= 0)rR   r	   r   _cond_value)r'   valuer   r   r   r(   {  s    zSemaphore.__init__TNc          
   C   s   | r | d  k	 r t  d   d } d  } |  j  x |  j d k r | sN P| d  k	 r | d  k rv t   | } n | t   } | d k r P|  j j |  q8 W|  j d 8_ d } Wd  QRX| S)Nz.can't specify timeout for non-blocking acquireFr   r5   T)rR   rd   re   rW   rV   )r'   r8   r9   r;   rY   r   r   r   r7     s$    
zSemaphore.acquirec          
   C   s1   |  j  ! |  j d 7_ |  j  j   Wd  QRXd  S)Nr5   )rd   re   ra   )r'   r   r   r   r=     s    
zSemaphore.releasec             C   s   |  j    d  S)N)r=   )r'   r>   r?   r@   r   r   r   rA     s    zSemaphore.__exit__)rG   r/   r0   r(   r7   rH   r=   rA   r   r   r   r   r   o  s
   -c               @   s+   e  Z d  Z d d d  Z d d   Z d S)r   r5   c             C   s   t  j |  |  | |  _ d  S)N)r   r(   _initial_value)r'   rf   r   r   r   r(     s    zBoundedSemaphore.__init__c          
   C   sO   |  j  ? |  j |  j k r( t d   |  j d 7_ |  j  j   Wd  QRXd  S)Nz!Semaphore released too many timesr5   )rd   re   rg   rR   ra   )r'   r   r   r   r=     s
    

zBoundedSemaphore.releaseN)rG   r/   r0   r(   r=   r   r   r   r   r     s   c               @   sa   e  Z d  Z d d   Z d d   Z d d   Z e Z d d   Z d	 d
   Z d d d  Z	 d S)r   c             C   s   t  t    |  _ d |  _ d  S)NF)r	   r   rd   _flag)r'   r   r   r   r(     s    zEvent.__init__c             C   s   |  j  j t    d  S)N)rd   r(   r   )r'   r   r   r   _reset_internal_locks  s    zEvent._reset_internal_locksc             C   s   |  j  S)N)rh   )r'   r   r   r   is_set  s    zEvent.is_setc          	   C   s+   |  j   d |  _ |  j  j   Wd  QRXd  S)NT)rd   rh   rb   )r'   r   r   r   set  s    
	z	Event.setc          	   C   s   |  j   d |  _ Wd  QRXd  S)NF)rd   rh   )r'   r   r   r   clear	  s    
zEvent.clearNc          	   C   s:   |  j  * |  j } | s+ |  j  j |  } | SWd  QRXd  S)N)rd   rh   rV   )r'   r9   signaledr   r   r   rV     s
    
	z
Event.wait)
rG   r/   r0   r(   ri   rj   isSetrk   rl   rV   r   r   r   r   r     s   
c               @   s   e  Z d  Z d d d d  Z d d d  Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d d   Z
 d d   Z e d d    Z e d d    Z e d d    Z d S)r   Nc             C   sC   t  t    |  _ | |  _ | |  _ | |  _ d |  _ d |  _ d  S)Nr   )r	   r   rd   _action_timeout_parties_stater&   )r'   partiesactionr9   r   r   r   r(   =  s    					zBarrier.__init__c             C   s   | d  k r |  j  } |  j y |  j   |  j } |  j d 7_ z5 | d |  j k rd |  j   n |  j |  | SWd  |  j d 8_ |  j   XWd  QRXd  S)Nr5   )rp   rd   _enterr&   rq   _release_wait_exit)r'   r9   indexr   r   r   rV   M  s    		

	zBarrier.waitc             C   s<   x  |  j  d k r" |  j j   q W|  j  d k  r8 t  d  S)Nr5   r   rF   )rF   r5   )rr   rd   rV   BrokenBarrierError)r'   r   r   r   ru   k  s
    zBarrier._enterc          	   C   sI   y- |  j  r |  j    d |  _ |  j j   Wn |  j     Yn Xd  S)Nr5   )ro   rr   rd   rb   _break)r'   r   r   r   rv   v  s    	
	
zBarrier._releasec                sJ     j  j   f d d   |  s1   j   t    j d k  rF t  d  S)Nc                  s     j  d k S)Nr   )rr   r   )r'   r   r   <lambda>  s    zBarrier._wait.<locals>.<lambda>r   )rd   r\   r{   rz   rr   )r'   r9   r   )r'   r   rw     s    !
zBarrier._waitc             C   s8   |  j  d k r4 |  j d k r4 d |  _ |  j j   d  S)Nr   r5   rF   )rF   r5   )r&   rr   rd   rb   )r'   r   r   r   rx     s    	zBarrier._exitc          	   C   sp   |  j  ` |  j d k rO |  j d k r4 d |  _ qX |  j d k rX d |  _ n	 d |  _ |  j  j   Wd  QRXd  S)Nr   r5      rF   rF   )rd   r&   rr   rb   )r'   r   r   r   reset  s    
	zBarrier.resetc          	   C   s   |  j   |  j   Wd  QRXd  S)N)rd   r{   )r'   r   r   r   abort  s    
zBarrier.abortc             C   s   d |  _  |  j j   d  S)Nr}   r~   )rr   rd   rb   )r'   r   r   r   r{     s    	zBarrier._breakc             C   s   |  j  S)N)rq   )r'   r   r   r   rs     s    zBarrier.partiesc             C   s   |  j  d k r |  j Sd S)Nr   )rr   r&   )r'   r   r   r   	n_waiting  s    zBarrier.n_waitingc             C   s   |  j  d k S)Nr}   r~   )rr   )r'   r   r   r   broken  s    zBarrier.broken)rG   r/   r0   r(   rV   ru   rv   rw   rx   r   r   r{   propertyrs   r   r   r   r   r   r   r   4  s   	
	c               @   s   e  Z d  Z d S)rz   N)rG   r/   r0   r   r   r   r   rz     s   rz   z	Thread-%dc             C   s   |  t    S)N)_counter)templater   r   r   _newname  s    r   c            	   @   s{  e  Z d  Z d Z e j Z d d d f  d d d d d Z d d   Z d d	   Z	 d
 d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d d  Z d d2 d d  Z e d  d!    Z e j d" d!    Z e d# d$    Z d% d&   Z e Z e d' d(    Z e j d) d(    Z d* d+   Z d, d-   Z d. d/   Z d0 d1   Z d S)3r   FNdaemonc            C   s   | d  k r i  } | |  _  t | p* t    |  _ | |  _ | |  _ | d  k	 r] | |  _ n t   j |  _ d  |  _	 d  |  _
 t   |  _ d |  _ d |  _ t j |  _ t j |   d  S)NFT)_targetstrr   _name_args_kwargs	_daemonicr
   r   _ident_tstate_lockr   _started_is_stopped_initialized_sysstderr_stderr	_danglingadd)r'   grouptargetr,   r    r!   r   r   r   r   r(     s     							zThread.__init__c             C   s6   |  j  j   | r  |  j   n d |  _ d  |  _ d  S)NT)r   ri   _set_tstate_lockr   r   )r'   is_aliver   r   r   ri      s
    	zThread._reset_internal_locksc             C   s   d } |  j  j   r d } |  j   |  j r4 d } |  j rG | d 7} |  j d  k	 rg | d |  j 7} d |  j j |  j | f S)Ninitialstartedstoppedz daemonz %sz<%s(%s, %s)>)	r   rj   r   r   r   r   r.   rG   r   )r'   statusr   r   r   r4   ,  s    
		
zThread.__repr__c             C   s   |  j  s t d   |  j j   r0 t d   t  |  t |  <Wd  QRXy t |  j f   Wn* t k
 r t  t |  =Wd  QRX  Yn X|  j j	   d  S)Nzthread.__init__() not calledz threads can only be started once)
r   r<   r   rj   _active_limbo_lock_limbo_start_new_thread
_bootstrap	ExceptionrV   )r'   r   r   r   start:  s    
	zThread.startc          
   C   s=   z# |  j  r" |  j  |  j |  j   Wd  |  `  |  ` |  ` Xd  S)N)r   r   r   )r'   r   r   r   runS  s    		z
Thread.runc          	   C   s9   y |  j    Wn$ |  j r- t d  k r- d  S  Yn Xd  S)N)_bootstrap_innerr   r   )r'   r   r   r   r   d  s    zThread._bootstrapc             C   s   t    |  _ d  S)N)r6   r   )r'   r   r   r   
_set_identx  s    zThread._set_identc             C   s   t    |  _ |  j j   d  S)N)_set_sentinelr   r7   )r'   r   r   r   r   {  s    zThread._set_tstate_lockc          2   C   s  z|  j    |  j   |  j j   t  |  t |  j <t |  =Wd  QRXt rY t	 j
 t  t rl t	 j t  z7y |  j   Wn"t k
 r Ynt	 r t	 j d  k	 r t d |  j t   f d t	 j n |  j d  k	 r|  j   \ } } } z t d |  j d d |  j t d d |  j xH | rqt d | j j j | j | j j j f d |  j | j } q*Wt d | | f d |  j Wd  ~ ~ ~ XYn XWd  XWd  t  y t t   =Wn Yn XWd  QRXXd  S)NzException in thread %s:
%sfilezException in thread z2 (most likely raised during interpreter shutdown):z"Traceback (most recent call last):z  File "%s", line %s, in %sz%s: %s)r   r   r   rk   r   r+   r   r   r   r   r   r   r   r   
SystemExitr   printr,   _format_excr   	_exc_infotb_framef_codeco_filename	tb_linenoco_nametb_nextr6   )r'   exc_type	exc_valueexc_tbr   r   r   r     sT    

 
	!zThread._bootstrap_innerc             C   s+   |  j  } | d  k	 r d |  _ d  |  _  d  S)NT)r   r   )r'   rM   r   r   r   _stop  s    		zThread._stopc             C   sG   y t   t t   =Wd  QRXWn$ t k
 rB d t j k r>   Yn Xd  S)Ndummy_threading)r   r+   r6   r-   r   modules)r'   r   r   r   _delete  s    zThread._deletec             C   s   |  j  s t d   |  j j   s0 t d   |  t   k rK t d   | d  k rd |  j   n |  j d t | d   d  S)NzThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr9   r   )r   r<   r   rj   r
   _wait_for_tstate_lockmax)r'   r9   r   r   r   join  s    	zThread.joinTr5   c             C   sB   |  j  } | d  k r n& | j | |  r> | j   |  j   d  S)N)r   r7   r=   r   )r'   blockr9   rM   r   r   r   r   $  s    	
zThread._wait_for_tstate_lockc             C   s   |  j  S)N)r   )r'   r   r   r   r,   2  s    	zThread.namec             C   s   t  |  |  _ d  S)N)r   r   )r'   r,   r   r   r   r,   =  s    c             C   s   |  j  S)N)r   )r'   r   r   r   identB  s    
zThread.identc             C   s2   |  j  s |  j j   r d S|  j d  |  j  S)NF)r   r   rj   r   )r'   r   r   r   r   N  s    	zThread.is_alivec             C   s   |  j  S)N)r   )r'   r   r   r   r   ^  s    zThread.daemonc             C   s=   |  j  s t d   |  j j   r0 t d   | |  _ d  S)NzThread.__init__() not calledz)cannot set daemon status of active thread)r   r<   r   rj   r   )r'   daemonicr   r   r   r   n  s
    	c             C   s   |  j  S)N)r   )r'   r   r   r   isDaemonv  s    zThread.isDaemonc             C   s   | |  _  d  S)N)r   )r'   r   r   r   r   	setDaemony  s    zThread.setDaemonc             C   s   |  j  S)N)r,   )r'   r   r   r   getName|  s    zThread.getNamec             C   s   | |  _  d  S)N)r,   )r'   r,   r   r   r   setName  s    zThread.setNamerF   )rG   r/   r0   r   r   exc_infor   r(   ri   r4   r   r   r   r   r   r   r   r   r   r   r   r,   setterr   r   isAliver   r   r   r   r   r   r   r   r   r     s6   			,A#&c               @   s:   e  Z d  Z d d d d  Z d d   Z d d   Z d S)r   Nc             C   se   t  j |   | |  _ | |  _ | d  k	 r1 | n g  |  _ | d  k	 rL | n i  |  _ t   |  _ d  S)N)r   r(   intervalfunctionr    r!   r   finished)r'   r   r   r    r!   r   r   r   r(     s    		zTimer.__init__c             C   s   |  j  j   d  S)N)r   rk   )r'   r   r   r   cancel  s    zTimer.cancelc             C   sI   |  j  j |  j  |  j  j   s8 |  j |  j |  j   |  j  j   d  S)N)r   rV   r   rj   r   r    r!   rk   )r'   r   r   r   r     s    z	Timer.run)rG   r/   r0   r(   r   r   r   r   r   r   r     s   	c               @   s   e  Z d  Z d d   Z d S)_MainThreadc          
   C   sY   t  j |  d d d d |  j   |  j j   |  j   t  |  t |  j <Wd  QRXd  S)Nr,   
MainThreadr   F)	r   r(   r   r   rk   r   r   r+   r   )r'   r   r   r   r(     s    

z_MainThread.__init__N)rG   r/   r0   r(   r   r   r   r   r     s   r   c               @   sC   e  Z d  Z d d   Z d d   Z d d   Z d d d	  Z d S)
_DummyThreadc          
   C   sU   t  j |  d t d  d d |  j j   |  j   t  |  t |  j <Wd  QRXd  S)Nr,   zDummy-%dr   T)	r   r(   r   r   rk   r   r   r+   r   )r'   r   r   r   r(     s
    
z_DummyThread.__init__c             C   s   d  S)Nr   )r'   r   r   r   r     s    z_DummyThread._stopc             C   s   d S)NTr   )r'   r   r   r   r     s    z_DummyThread.is_aliveNc             C   s   d  S)Nr   )r'   r9   r   r   r   r     s    z_DummyThread.join)rG   r/   r0   r(   r   r   r   r   r   r   r   r     s   r   c               C   s/   y t  t   SWn t k
 r* t   SYn Xd  S)N)r+   r6   r-   r   r   r   r   r   r
     s    c            
   C   s&   t   t t  t t  SWd  QRXd  S)N)r   rN   r+   r   r   r   r   r   r     s    c               C   s    t  t j    t  t j    S)N)listr+   valuesr   r   r   r   r   
_enumerate  s    r   c            
   C   s2   t  % t t j    t t j    SWd  QRXd  S)N)r   r   r+   r   r   r   r   r   r   r     s    )r   c              C   sT   t  j }  |  j   t  j   t   } x | rE | j   t   } q) Wt  j   d  S)N)_main_threadr   r=   r   _pickSomeNonDaemonThreadr   r   )tlockr>   r   r   r   	_shutdown  s    	

		
r   c              C   s2   x+ t    D]  }  |  j r
 |  j   r
 |  Sq
 Wd  S)N)r   r   r   )r>   r   r   r   r     s    r   c               C   s   t  S)N)r   r   r   r   r   main_thread  s    r   )_local)r   c              C   s   t    a i  }  t   } | a t  t t    } | j t  x] | D]U } | | k r | j d  t	   } | | _
 | |  | <qH | j d  | j   qH Wt j   t j   t j |   Wd  QRXd  S)NTF)r#   r   r
   r   rk   r   updater   ri   r6   r   r   r   rl   r+   )
new_activecurrentthreadsthreadr   r   r   r   _after_fork'  s&    				

r   )Jsysr   _threadtimer   rW   	tracebackr   r   _weakrefsetr   	itertoolsr   r]   r   r&   _collectionsr   rK   ImportErrorcollections__all__start_new_threadr   allocate_lockr#   r   r6   errorr   r   r   rJ   TIMEOUT_MAXr   r   r   r   r   r"   r   r	   r   r   r   r   r<   rz   __next__r   r   r   r+   r   r   r   r   r   r   r
   currentThreadr   activeCountr   r   r   r   r   r   r   r   r   Z_threading_localr   r   r   r   r   <module>   s   						
qP&O		 
	