a
    é´«j—J  ã                	   @   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
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Zzd dlmZ W n eefyÆ   d dlZY n0 d dlmZ d dlmZ d dlZee
ddƒZ e!d "¡ ƒZ#zd dl$m$Z$ dd	„ Z%W n e�y4   d
d	„ Z%Y n0 dd„ Z&dXdd„Z'ej(j)ej(j*fZ+dd„ Z,dd„ Z-dYdd„Z.dd„ Z/ej0 1d¡�rœdZdd„Z2dd„ Z3ne
j4Z3dd „ Z4d!d"„ Z5d[d$d%„Z6d&d'„ Z7d(d)„ Z8d*d+„ Z9zd d,l
m:Z: W n e�y    d-d.„ Z:Y n0 d/d0„ Z;d\d1d2„Z<d]d3d4„Z=d5d6„ Z>d7d8„ Z?d9d:„ Z@d;d<„ ZAd^d=d>„ZBd?d@„ ZCd_dAdB„ZDdCdD„ ZEdEdF„ ZFd`dHdI„ZGdJdK„ ZHdLdM„ ZIdNdO„ ZJdPdQ„ ZKdadRdS„ZLdTdU„ ZMdVdW„ ZNdS )bé    N)ÚAppImportError)ÚSUPPORTED_WORKERSÚdevnullz	/dev/nullz€
    connection keep-alive proxy-authenticate proxy-authorization
    te trailers transfer-encoding upgrade
    server date
    ©Úsetproctitlec                 C   s   t d|  ƒ d S )Nzgunicorn: %sr   ©Útitle© r	   úL/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/gunicorn/util.pyÚ_setproctitle4   s    r   c                 C   s   d S ©Nr	   r   r	   r	   r
   r   7   s    c                    sB   t  | ¡}‡ ‡fdd„|jD ƒ}|s6tdˆ ˆff ƒ‚|d  ¡ S )Nc                    s$   g | ]}|j ˆ kr|jˆkr|‘qS r	   ©ÚgroupÚname)Ú.0Úepr   r	   r
   Ú
<listcomp>=   s   ÿz$load_entry_point.<locals>.<listcomp>zEntry point %r not foundr   )Úimportlib_metadataÚdistributionZentry_pointsÚImportErrorÚload)r   r   r   Zdist_objZepsr	   r   r
   Úload_entry_point;   s
    
r   ú gunicorn.workers.sync.SyncWorkerúgunicorn.workersc                 C   s~  t  | ¡r| S |  d¡r–|  d¡d }z| dd¡\}}W n tyT   |}|}Y n0 zt|||ƒW S  ty’   t 	¡ }d}t
|| |f ƒ‚Y n0 nä|  d¡}t|ƒdk�r |  d¡rÄ| dd … } | tv rÞt|   d¡}�q ztd|| ƒW S  t�y   t 	¡ }d}t
|| |f ƒ‚Y q®0 q®| d¡}	zt d |¡¡}
W n0 t�yn   t 	¡ }d}t
|| |f ƒ‚Y n0 t|
|	ƒS d S )Nzegg:é   ú#z)class uri %r invalid or not found: 

[%s]Ú.Zgunicornéÿÿÿÿ)ÚinspectÚisclassÚ
startswithÚsplitÚrsplitÚ
ValueErrorr   Ú	ExceptionÚ	tracebackÚ
format_excÚRuntimeErrorÚlenr   ÚpopÚ	importlibÚimport_moduleÚjoinÚgetattr)ÚuriÚdefaultÚsectionZ	entry_strÚdistr   ÚexcÚmsgÚ
componentsÚklassÚmodr	   r	   r
   Ú
load_classD   sL    




ÿ
r7   c                 C   s4   t  | ¡}d}|j ¡ D ]}|jtv r|d7 }q|S )Nr   r   )r   Ú	signatureÚ
parametersÚvaluesÚkindÚpositionals)ÚfÚsigÚarityÚparamr	   r	   r
   Ú	get_arity|   s    


rA   c                 C   s   t  | ¡jS )z get the username for a user id)ÚpwdÚgetpwuidÚpw_name)Úuidr	   r	   r
   Úget_username‡   s    rF   Fc                 C   s~   |r`| r,zt | ƒ}W n ty*   d}Y n0 t|ƒd@ }|rJt ||¡ n|t ¡ kr`t |¡ | rz| t ¡ krzt | ¡ dS )z) set user and group of workers processes FiÿÿÿN)	rF   ÚKeyErrorÚabsÚosÚ
initgroupsÚgetgidÚsetgidÚgetuidÚsetuid)rE   ÚgidrJ   Úusernamer	   r	   r
   Úset_owner_processŒ   s    

rQ   c                 C   s   t  | ||¡ d S r   )rI   Úchown)ÚpathrE   rO   r	   r	   r
   rR   £   s    rR   Úwinc                 C   s‚   | |ƒ |r|}nt j |¡\}}|p(d}d}|dk rjt  |¡}|rJ|sVn||v rVd S t |¡ |d9 }q.tjd| tdd� d S )Nr   gü©ñÒMbP?g      ð?é   z)tests may fail, delete still pending for é   )Ú
stacklevel)	rI   rS   r!   ÚlistdirÚtimeÚsleepÚwarningsÚwarnÚRuntimeWarning)ÚfuncÚpathnameZwaitallÚdirnamer   ÚtimeoutÚLr	   r	   r
   Ú_waitfor¨   s    



ÿrc   c                 C   s   t tj| ƒ d S r   )rc   rI   Úunlink)Úfilenamer	   r	   r
   Ú_unlinkÉ   s    rf   c              
   C   sJ   zt | ƒ W n8 tyD } z |jtjtjfvr0‚ W Y d }~n
d }~0 0 d S r   )rf   ÚOSErrorÚerrnoÚENOENTÚENOTDIR)re   Úerrorr	   r	   r
   rd   Ï   s
    rd   c                 C   s>   zt  t j| ¡ W n& ty&   Y dS  ty8   Y dS 0 dS )NFT)ÚsocketÚ	inet_ptonÚAF_INET6rg   r#   )Úaddrr	   r	   r
   Úis_ipv6Ø   s    rp   Ú8000c                 C   s.  t  d| ¡rt  d| ¡d S |  d¡r^| dd … }z
t|ƒW S  ty\   td| ƒd ‚Y n0 |  d¡rv|  d¡d } | | }}d| v r¼d	| v r¼|  d	¡d
 dd … }|  d¡|g d }n8d| v râ|  d¡|g d d… \}}n| dkrôd| }}zt|ƒ}W n  t�y    td| ƒ‚Y n0 | ¡ |fS )Nz
unix:(//)?r   zfd://é   z"%r is not a valid file descriptor.ztcp://r   ú[ú]r   z]:ú:rU   Ú z0.0.0.0z%r is not a valid port number.)ÚreÚmatchr!   r    Úintr#   r'   Úlower)ÚnetlocÚdefault_portÚfdÚhostÚportr	   r	   r
   Úparse_addressâ   s.    




r€   c                 C   s,   t   | t j¡}|t jO }t   | t j|¡ d S r   )ÚfcntlZF_GETFDZ
FD_CLOEXECZF_SETFD©r}   Úflagsr	   r	   r
   Úclose_on_exec  s    
r„   c                 C   s(   t   | t j¡tjB }t   | t j|¡ d S r   )r�   ZF_GETFLrI   Ú
O_NONBLOCKZF_SETFLr‚   r	   r	   r
   Úset_non_blocking  s    r†   c                 C   s$   z|   ¡  W n ty   Y n0 d S r   )Úcloserg   )Úsockr	   r	   r
   r‡     s    r‡   )Ú
closerangec              	   C   s6   t | |ƒD ]&}zt |¡ W q
 ty.   Y q
0 q
d S r   )ÚrangerI   r‡   rg   )Zfd_lowZfd_highr}   r	   r	   r
   r‰     s
    r‰   c                 C   sD   t |tƒr| d¡}dt|ƒ }d | d¡|dg¡}|  |¡ d S )Nzutf-8z%X
ó    s   
)Ú
isinstanceÚstrÚencoder(   r,   Úsendall)rˆ   ÚdataÚ
chunk_sizeÚchunkr	   r	   r
   Úwrite_chunk  s
    

r“   c                 C   s   |rt | |ƒS |  |¡ d S r   )r“   r�   )rˆ   r�   Úchunkedr	   r	   r
   Úwrite'  s    
r•   c              	   C   sR   |   ¡ }|dkrBz"|  d¡ t| ||ƒW |  d¡ S |  d¡ 0 nt| ||ƒS d S )Ng        r   r   )Ú
gettimeoutÚsetblockingr•   )rˆ   r�   r”   ra   r	   r	   r
   Úwrite_nonblock-  s    

þr˜   c                 C   sL   t  d¡|t |¡dœ }t  d¡t|ƒ|t|ƒ|f }t| | d¡ƒ d S )Nz§    <html>
      <head>
        <title>%(reason)s</title>
      </head>
      <body>
        <h1><p>%(reason)s</p></h1>
        %(mesg)s
      </body>
    </html>
    )ÚreasonÚmesgzl    HTTP/1.1 %s %s
    Connection: close
    Content-Type: text/html
    Content-Length: %d
    
    %sÚlatin1)ÚtextwrapÚdedentÚhtmlÚescaper�   r(   r˜   rŽ   )rˆ   Z
status_intr™   rš   Z
html_errorÚhttpr	   r	   r
   Úwrite_error9  s    
öúr¡   c                 C   sD   t  ¡ d }z.|dur4|jj| ju r,W ~dS |j}qW ~dS ~0 dS )zêCheck whether calling a function raised a ``TypeError`` because
    the call failed or because something in the function raised the
    error.

    :param f: The function that was called.
    :return: ``True`` if the call failed.
    rU   NFT)ÚsysÚexc_infoÚtb_frameÚf_codeÚ__code__Útb_next)r=   Útbr	   r	   r
   Ú_called_with_wrong_argsP  s    	÷ür©   c              
   C   sL  |   dd¡}t|ƒdkrd}n|d |d  } }zt | ¡}W nJ tyˆ   |  d¡r‚tj | ¡r‚d}t||  	dd¡d |f ƒ‚‚ Y n0 zt
j|dd	�j}W n ty¼   td
| ƒ‚Y n0 t|t
jƒrÚ|j}d  }}n†t|t
jƒ�rTt|jt
jƒ�std| ƒ‚|jj}z$dd„ |jD ƒ}dd„ |jD ƒ}W n  t�yP   td| ƒ‚Y n0 ntd
| ƒ‚tjjtjk}	zt||ƒ}
W n8 t�y´   |	�r tjt  ¡ Ž  td|| f ƒ‚Y n0 |d u�r z|
|i |¤Ž}
W nL t!�y } z2t"|
ƒ�rtd #t $t!|¡¡ %¡ ƒ‚‚ W Y d }~n
d }~0 0 |
d u �r6td| ƒ‚t&|
ƒ�sHtdƒ‚|
S )Nru   r   Zapplicationr   z.pyz1Failed to find application, did you mean '%s:%s'?r   Úeval)Úmodez9Failed to parse %r as an attribute name or function call.z,Function reference must be a simple name: %rc                 S   s   g | ]}t  |¡‘qS r	   )ÚastÚliteral_eval)r   Úargr	   r	   r
   r   Ž  r‹   zimport_app.<locals>.<listcomp>c                 S   s   i | ]}|j t |j¡“qS r	   )r®   r¬   r­   Úvalue)r   Úkwr	   r	   r
   Ú
<dictcomp>�  r‹   zimport_app.<locals>.<dictcomp>z/Failed to parse arguments as literal values: %rz"Failed to find attribute %r in %r.rv   z%Failed to find application object: %rz$Application object must be callable.)'r!   r(   r*   r+   r   ÚendswithrI   rS   Úexistsr"   r¬   ÚparseÚbodyÚSyntaxErrorr   rŒ   ÚNameÚidÚCallr^   ÚargsÚkeywordsr#   ÚloggingÚrootÚlevelÚDEBUGr-   ÚAttributeErrorr%   Úprint_exceptionr¢   r£   Ú	TypeErrorr©   r,   Úformat_exception_onlyÚstripÚcallable)ÚmoduleÚpartsÚobjr6   r3   Z
expressionr   rº   ÚkwargsZis_debugÚappÚer	   r	   r
   Ú
import_appj  sn    ÿ

ÿÿ

ÿ

rÌ   c                  C   sn   zNt  t jd ¡} t  t  ¡ ¡}| j|jkrD| j|jkrDt jd }nt  ¡ }W n tyh   t  ¡ }Y n0 |S )NZPWD)rI   ÚstatÚenvironÚgetcwdÚst_inoÚst_devr$   )ÚaÚbÚcwdr	   r	   r
   rÏ   ½  s    rÏ   c                 C   s&   | du rt   ¡ } tjj| ddd�}|S )z@Return the current date and time formatted for a message header.NFT)Ú	localtimeÚusegmt)rY   ÚemailÚutilsÚ
formatdate)Ú	timestampÚsr	   r	   r
   Ú	http_dateË  s    rÜ   c                 C   s   |   ¡  ¡ tv S r   )rz   rÄ   Úhop_headers)Úheaderr	   r	   r
   Ú
is_hoppishÓ  s    rß   c                    sê   dt jvræt  ¡ rt  d¡ t  ¡  t  ¡ r6t  d¡ t  d¡ | s–tddƒ t  tt j	¡‰ t  
ˆ d¡ ˆ dkr|t  ˆ d¡ t  ˆ d¡ t  ˆ d¡ nPt  tt j	¡‰ ˆ dkrÂt  d¡ t  ˆ d¡ ‡ fdd	„}|tjdƒ |tjdƒ d
S )zo    Standard daemonization of a process.
    http://www.faqs.org/faqs/unix-faq/programmer/faq/ section 1.7
    ZGUNICORN_FDr   é   é   Tr   rU   c                    sJ   z2|   ¡ }||kr0|  ¡ r0t |¡ t ˆ |¡ W n tyD   Y n0 d S r   )ÚfilenoÚisattyrI   r‡   Údup2rÀ   )ÚstreamZ	fd_expectr}   ©Zfd_nullr	   r
   Úredirect   s    
zdaemonize.<locals>.redirectN)rI   rÎ   ÚforkÚ_exitÚsetsidÚumaskr‰   ÚopenÚREDIRECT_TOÚO_RDWRÚset_inheritablerä   r‡   r¢   ÚstdoutÚstderr)Zenable_stdio_inheritancerç   r	   ræ   r
   Ú	daemonize×  s,    





	rò   c                	   C   sF   zt  t d¡¡ W n, ty@   t  dt ¡ t ¡ f ¡ Y n0 d S )Né@   z%s.%s)ÚrandomÚseedrI   ÚurandomÚNotImplementedErrorrY   Úgetpidr	   r	   r	   r
   rõ   -  s    rõ   c              
   C   sp   z6t | dƒ�}| ¡  W d   ƒ n1 s*0    Y  W n4 tyj } ztd| |f ƒ‚W Y d }~n
d }~0 0 d S )NrÒ   zError: '%s' isn't writable [%r])rì   r‡   rg   r'   )rS   r=   rË   r	   r	   r
   Úcheck_is_writable4  s
    *rù   Úutf8c                 C   s.   t | tƒr| S t | tƒs$td|  ƒ‚|  |¡S )z+Converts a string argument to a byte stringz%r is not a string)rŒ   Úbytesr�   rÂ   rŽ   )r¯   Úencodingr	   r	   r
   Úto_bytestring<  s
    

rý   c              
   C   s<   t | dƒsdS z|  ¡  W n tttjfy6   Y dS 0 dS )Nrâ   FT)Úhasattrrâ   rÀ   rg   ÚioÚUnsupportedOperation)rÈ   r	   r	   r
   Ú
has_filenoF  s    
r  c                 C   sf   t dtjd� |  ¡ }t|ƒD ]*\}}|dkr6d| }t d| tjd� qt dtjd� tj ¡  d S )Nz!!!)Úfiler   zWARNING: %sz!!! %sz!!!
)Úprintr¢   rñ   Ú
splitlinesÚ	enumerateÚflush)r3   ÚlinesÚiÚliner	   r	   r
   r\   S  s    r\   c                    s   t ˆ ƒ‰ ‡ fdd„}|S )Nc                    s    |dddt tˆ ƒƒfgƒ ˆ gS )Nz500 Internal Server Error)zContent-Typez
text/plainzContent-Length)r�   r(   )rÎ   Zstart_response©r3   r	   r
   rÊ   c  s
    þzmake_fail_app.<locals>.app)rý   )r3   rÊ   r	   r
  r
   Úmake_fail_app`  s    r  c                 C   s<   |   d¡r0tj d|  ¡}|j|jdd … d�S tj | ¡S )Nz//r   r   )rS   )r    Úurllibr´   ÚurlsplitÚ_replacerS   )r.   rÇ   r	   r	   r
   Úsplit_request_urim  s    
r  c                 C   sB   z2|d u r| ƒ }|j |ur$| |¡‚|‚W d }d }n
d }d }0 d S r   )Ú__traceback__Úwith_traceback)Útpr¯   r¨   r	   r	   r
   Úreraisez  s    

ÿr  c                 C   s   t | tƒr| S t| dƒS )Nr›   )rŒ   r�   )rÓ   r	   r	   r
   Úbytes_to_str†  s    
r  c                 C   s   t j | ¡ d¡S )Nzlatin-1)r  r´   Úunquote_to_bytesÚdecode)Ústringr	   r	   r
   Úunquote_to_wsgi_strŒ  s    r  )r   r   )F)F)rq   )F)F)N)F)rú   )N)Or¬   Úemail.utilsr×   rh   r�   rž   r*   r   rÿ   r¼   rI   rB   rô   rw   rl   r¢   rœ   rY   r%   r[   Úimportlib.metadataÚmetadatar   ÚModuleNotFoundErrorr   Zgunicorn.errorsr   Zgunicorn.workersr   Úurllib.parser  r-   rí   Úsetr!   rÝ   r   r   r   r7   Ú	ParameterÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDr<   rA   rF   rQ   rR   Úplatformr    rc   rf   rd   rp   r€   r„   r†   r‡   r‰   r“   r•   r˜   r¡   r©   rÌ   rÏ   rÜ   rß   rò   rõ   rù   rý   r  r\   r  r  r  r  r  r	   r	   r	   r
   Ú<module>   sš   
	  ÿ
3þ

!
	

	

S

V


