§
    n‡ºf—J  ã                   óú  — 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	 d dlmZ n# eef$ r d dlZY nw xY wd dlmZ d dlmZ d dlZ ee
dd¦  «        Z  e!d "                    ¦   «         ¦  «        Z#	 d dl$m$Z$ d„ Z%n# e$ r d	„ Z%Y nw xY wd
„ Z&	 	 d4d„Z'ej(        j)        ej(        j*        fZ+d„ Z,d„ Z-d5d„Z.d„ Z/ej0         1                    d¦  «        rd5d„Z2d„ Z3ne
j4        Z3d„ Z4d„ Z5d6d„Z6d„ Z7d„ Z8d„ Z9	 d dl
m:Z: n# e$ r d„ Z:Y nw xY wd„ Z;d5d „Z<d5d!„Z=d"„ Z>d#„ Z?d$„ Z@d%„ ZAd7d&„ZBd'„ ZCd5d(„ZDd)„ ZEd*„ ZFd8d,„ZGd-„ ZHd.„ ZId/„ ZJd0„ ZKd7d1„ZLd2„ ZMd3„ ZNdS )9é    N)ÚAppImportError)ÚSUPPORTED_WORKERSÚdevnullz	/dev/nullz€
    connection keep-alive proxy-authenticate proxy-authorization
    te trailers transfer-encoding upgrade
    server date
    ©Úsetproctitlec                 ó*   — t          d| z  ¦  «         d S )Nzgunicorn: %sr   ©Útitles    úL/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/gunicorn/util.pyÚ_setproctitler   4   s   € Ý�^ eÑ+Ñ,Ô,Ð,Ð,Ð,ó    c                 ó   — d S ©N© r	   s    r   r   r   7   s   € Øˆr   c                 ó¸   ‡‡— t          j        | ¦  «        }ˆˆfd„|j        D ¦   «         }|st          d‰‰f›d�¦  «        ‚|d                              ¦   «         S )Nc                 ó@   •— g | ]}|j         ‰k    ¯|j        ‰k    ¯|‘ŒS r   )ÚgroupÚname)Ú.0Úepr   r   s     €€r   ú
<listcomp>z$load_entry_point.<locals>.<listcomp>=   s7   ø€ ð 5ð 5ð 5�"ØŒh˜%ÒÐ B¤G¨t¢O Oð Ø$3 O Or   zEntry point z
 not foundr   )Úimportlib_metadataÚdistributionÚentry_pointsÚImportErrorÚload)r   r   r   Údist_objÚepss    ``  r   Úload_entry_pointr   ;   sy   øø€ Ý!Ô.¨|Ñ<Ô<€Hð5ð 5ð 5ð 5ð 5˜Ô-ð 5ñ 5ô 5€Càð IÝˆk¸À¸¸¸ÐGÑHÔHÐHØˆqŒ6�;Š;‰=Œ=Ðr   ú gunicorn.workers.sync.SyncWorkerúgunicorn.workersc                 óþ  — t          j        | ¦  «        r| S |                      d¦  «        r“|                      d¦  «        d         }	 |                     dd¦  «        \  }}n# t
          $ r |}|}Y nw xY w	 t          |||¦  «        S # t          $ r* t          j	        ¦   «         }d}t          || |fz  ¦  «        ‚w xY w|                      d¦  «        }t          |¦  «        dk    r“	 |                      d¦  «        r
| dd …         } | t          v r!t          |                               d¦  «        }nI	 t          d|| ¦  «        S # t          $ r* t          j	        ¦   «         }d}t          || |fz  ¦  «        ‚w xY w|                     d¦  «        }		 t          j        d                     |¦  «        ¦  «        }
n7# t          $ r* t          j	        ¦   «         }d}t          || |fz  ¦  «        ‚w xY wt#          |
|	¦  «        S )	Nzegg:é   ú#z)class uri %r invalid or not found: 

[%s]ú.TÚgunicornéÿÿÿÿ)ÚinspectÚisclassÚ
startswithÚsplitÚrsplitÚ
ValueErrorr   Ú	ExceptionÚ	tracebackÚ
format_excÚRuntimeErrorÚlenr   ÚpopÚ	importlibÚimport_moduleÚjoinÚgetattr)ÚuriÚdefaultÚsectionÚ	entry_strÚdistr   ÚexcÚmsgÚ
componentsÚklassÚmods              r   Ú
load_classrB   D   sI  € å„�sÑÔð Øˆ
Ø
‡~‚~�fÑÔð +#à—I’I˜fÑ%Ô% aÔ(ˆ	ð	Ø"×)Ò)¨#¨qÑ1Ô1‰JˆD�$�$øÝð 	ð 	ð 	ØˆDØˆDˆDˆDð	øøøð	1Ý# D¨'°4Ñ8Ô8Ð8øÝð 	1ð 	1ð 	1ÝÔ&Ñ(Ô(ˆCØ?ˆCÝ˜s c¨3 ZÑ/Ñ0Ô0Ð0ð	1øøøð
 —Y’Y˜s‘^”^ˆ
Ýˆz‰?Œ?˜aÒÐð9Ø—>’> #Ñ&Ô&ð "Ø˜a˜b˜bœ'�CàÕ+Ð+Ð+Ý!2°3Ô!7×!=Ò!=¸cÑ!BÔ!B�JØð9Ý+Ø" G¨Sñô ð øõ !ð 9ð 9ð 9Ý#Ô.Ñ0Ô0�CØG�CÝ& s¨c°3¨ZÑ'7Ñ8Ô8Ð8ð9øøøð
 —’˜rÑ"Ô"ˆð	1ÝÔ)¨#¯(ª(°:Ñ*>Ô*>Ñ?Ô?ˆCˆCøÝð 	1ð 	1ð 	1ÝÔ&Ñ(Ô(ˆCØ?ˆCÝ˜s c¨3 ZÑ/Ñ0Ô0Ð0ð	1øøøõ �s˜EÑ"Ô"Ð"s6   ÁA" Á"A3Á2A3Á7B Â4B<Ä2E Å4E7Æ'F8 Æ84G,c                 ó�   — t          j        | ¦  «        }d}|j                             ¦   «         D ]}|j        t
          v r|dz  }Œ|S )Nr   r#   )r(   Ú	signatureÚ
parametersÚvaluesÚkindÚpositionals)ÚfÚsigÚarityÚparams       r   Ú	get_arityrM   |   sP   € Ý
Ô
˜AÑ
Ô
€CØ€Eà”×&Ò&Ñ(Ô(ð ð ˆØŒ:�Ð$Ð$Ø�Q‰JˆEøà€Lr   c                 ó4   — t          j        | ¦  «        j        S )z get the username for a user id)ÚpwdÚgetpwuidÚpw_name)Úuids    r   Úget_usernamerS   ‡   s   € åŒ<˜ÑÔÔ$Ð$r   Fc                 ó`  — |rz| r#	 t          | ¦  «        }n# t          $ r d}Y nw xY wt          |¦  «        dz  }|rt          j        ||¦  «         n+|t          j        ¦   «         k    rt          j        |¦  «         | r-| t          j        ¦   «         k    rt          j        | ¦  «         dS dS dS )z) set user and group of workers processes FiÿÿÿN)	rS   ÚKeyErrorÚabsÚosÚ
initgroupsÚgetgidÚsetgidÚgetuidÚsetuid)rR   ÚgidrX   Úusernames       r   Úset_owner_processr_   Œ   sÒ   € ð ð Øð 	#ð#Ý'¨Ñ,Ô,��øÝð #ð #ð #Ø"�
�
�
ð#øøøõ
 �#‰hŒh˜Ñ#ˆàð 	ÝŒM˜( CÑ(Ô(Ð(Ð(Ø•B”I‘K”KÒÐÝŒI�c‰NŒNˆNà
ð ˆs•b”i‘k”kÒ!Ð!Ý
Œ	�#‰Œˆˆˆðð Ð!Ð!s   † –%¤%c                 ó2   — t          j        | ||¦  «         d S r   )rW   Úchown)ÚpathrR   r]   s      r   ra   ra   £   s   € Ý„HˆT�3˜ÑÔÐÐÐr   Úwinc                 ó<  —  | |¦  «         |r|}n&t           j                             |¦  «        \  }}|pd}d}|dk     r>t          j        |¦  «        }|r|sn||v rd S t	          j        |¦  «         |dz  }|dk     °>t          j        d|z   t          d¬¦  «         d S )Nr%   gü©ñÒMbP?g      ð?é   z)tests may fail, delete still pending for é   )Ú
stacklevel)	rW   rb   r+   ÚlistdirÚtimeÚsleepÚwarningsÚwarnÚRuntimeWarning)ÚfuncÚpathnameÚwaitallÚdirnamer   ÚtimeoutÚLs          r   Ú_waitforrt   ¨   sÖ   € àˆˆX‰Œˆàð 	%ØˆGˆGåœGŸMšM¨(Ñ3Ô3‰MˆG�TØ�n ˆGð ˆØ˜Šmˆmõ ”
˜7Ñ#Ô#ˆAØð �1ð ð  T¨Q Y YØ�åŒJ�wÑÔÐØ�q‰LˆGð ˜Šmˆmõ 	ŒÐAÀHÑLÝ$°ð	4ñ 	4ô 	4ð 	4ð 	4ð 	4r   c                 ó:   — t          t          j        | ¦  «         d S r   )rt   rW   Úunlink)Úfilenames    r   Ú_unlinkrx   É   s   € Ý•”˜HÑ%Ô%Ð%Ð%Ð%r   c                 ó–   — 	 t          | ¦  «         d S # t          $ r+}|j        t          j        t          j        fvr‚ Y d }~d S d }~ww xY wr   )rx   ÚOSErrorÚerrnoÚENOENTÚENOTDIR)rw   Úerrors     r   rv   rv   Ï   sg   € ðÝ�ÑÔÐÐÐøÝð ð ð àŒ;�uœ|­U¬]Ð;Ð;Ð;Øð <Ð;Ð;Ð;Ð;Ð;øøøøðøøøs   ‚ “
A� AÁAc                 ó‚   — 	 t          j        t           j        | ¦  «         n# t          $ r Y dS t          $ r Y dS w xY wdS )NFT)ÚsocketÚ	inet_ptonÚAF_INET6rz   r-   )Úaddrs    r   Úis_ipv6r„   Ø   s_   € ðÝÔ�œ¨$Ñ/Ô/Ð/Ð/øÝð ð ð ØˆuˆuÝð ð ð Øˆuˆuðøøøàˆ4s   ‚" ¢
<¯	<»<Ú8000c                 óô  — t          j        d| ¦  «        rt          j        d| ¦  «        d         S |                      d¦  «        r;| dd …         }	 t	          |¦  «        S # t
          $ r t          d|z  ¦  «        d ‚w xY w|                      d¦  «        r|                      d¦  «        d         } | |}}d| v rGd	| v rC|                      d	¦  «        d
         dd …         }|                      d¦  «        |gz   d         }n3d| v r%|                      d¦  «        |gz   d d…         \  }}n
| dk    rd|}}	 t	          |¦  «        }n # t
          $ r t          d|z  ¦  «        ‚w xY w|                     ¦   «         |fS )Nz
unix:(//)?r'   zfd://é   z"%r is not a valid file descriptor.ztcp://r#   ú[ú]r   z]:ú:re   Ú z0.0.0.0z%r is not a valid port number.)ÚreÚmatchr+   r*   Úintr-   r1   Úlower)ÚnetlocÚdefault_portÚfdÚhostÚports        r   Úparse_addressr•   â   sº  € Ý	„x�˜vÑ&Ô&ð 3ÝŒx˜ vÑ.Ô.¨rÔ2Ð2à×Ò˜Ñ!Ô!ð TØ�A�B�BŒZˆð	TÝ�r‘7”7ˆNøÝð 	Tð 	Tð 	TÝÐCÀbÑHÑIÔIÈtÐSð	Tøøøð ×Ò˜Ñ"Ô"ð +Ø—’˜hÑ'Ô'¨Ô*ˆØ˜ˆ$€Dà
ˆf€}€}˜ ˜˜Ø�|Š|˜CÑ Ô  Ô# A B BÔ'ˆØ—’˜TÑ"Ô" l ^Ñ3°QÔ7ˆˆØ	�ˆˆØ—l’l 3Ñ'Ô'¨<¨.Ñ8¸"¸1¸"Ô=‰
ˆˆdˆdØ	�2ŠˆØ ˆdˆðDÝ�4‰yŒyˆˆøÝð Dð Dð DÝÐ;¸dÑBÑCÔCÐCðDøøøð �:Š:‰<Œ<˜ÐÐs   ÁA  Á A>Ä4E ÅE!c                 ó¢   — t          j         | t           j        ¦  «        }|t           j        z  }t          j         | t           j        |¦  «         d S r   )ÚfcntlÚF_GETFDÚ
FD_CLOEXECÚF_SETFD©r’   Úflagss     r   Úclose_on_execr�     s>   € ÝŒK˜�EœMÑ*Ô*€EØ	�UÔÑ€EÝ	„K�•E”M 5Ñ)Ô)Ð)Ð)Ð)r   c                 óž   — t          j         | t           j        ¦  «        t          j        z  }t          j         | t           j        |¦  «         d S r   )r—   ÚF_GETFLrW   Ú
O_NONBLOCKÚF_SETFLr›   s     r   Úset_non_blockingr¢     s8   € ÝŒK˜�EœMÑ*Ô*­R¬]Ñ:€EÝ	„K�•E”M 5Ñ)Ô)Ð)Ð)Ð)r   c                 óR   — 	 |                       ¦   «          d S # t          $ r Y d S w xY wr   )Úcloserz   )Úsocks    r   r¤   r¤     s:   € ðØ�
Š
‰ŒˆˆˆøÝð ð ð Øˆˆðøøøs   ‚ ˜
&¥&)Ú
closerangec                 óv   — t          | |¦  «        D ]'}	 t          j        |¦  «         Œ# t          $ r Y Œ$w xY wd S r   )ÚrangerW   r¤   rz   )Úfd_lowÚfd_highr’   s      r   r¦   r¦     sY   € å˜ Ñ(Ô(ð 	ð 	ˆBðÝ”˜‘”��øÝð ð ð Ø�ðøøøð	ð 	s   ”)©
6µ6c                 óþ   — t          |t          ¦  «        r|                     d¦  «        }dt          |¦  «        z  }d                     |                     d¦  «        |dg¦  «        }|                      |¦  «         d S )Nzutf-8z%X
r   s   
)Ú
isinstanceÚstrÚencoder2   r6   Úsendall)r¥   ÚdataÚ
chunk_sizeÚchunks       r   Úwrite_chunkr³     ss   € Ý�$�ÑÔð $Ø�{Š{˜7Ñ#Ô#ˆØ�C ™IœIÑ%€JØ�HŠH�j×'Ò'¨Ñ0Ô0°$¸Ð@ÑAÔA€EØ‡L‚L�ÑÔÐÐÐr   c                 óT   — |rt          | |¦  «        S |                      |¦  «         d S r   )r³   r¯   )r¥   r°   Úchunkeds      r   Úwriter¶   '  s2   € Øð 'Ý˜4 Ñ&Ô&Ð&Ø‡L‚L�ÑÔÐÐÐr   c                 ó  — |                       ¦   «         }|dk    rV	 |                      d¦  «         t          | ||¦  «        |                      d¦  «         S # |                      d¦  «         w xY wt          | ||¦  «        S )Ng        r   r#   )Ú
gettimeoutÚsetblockingr¶   )r¥   r°   rµ   rr   s       r   Úwrite_nonblockrº   -  s…   € Ø�oŠoÑÔ€GØ�#‚~€~ð	 Ø×Ò˜QÑÔÐÝ˜˜t WÑ-Ô-à×Ò˜QÑÔÐÐøˆD×Ò˜QÑÔÐÐøøøå�T˜4 Ñ)Ô)Ð)s   œ%A ÁA.c                 ó  — t          j        d¦  «        |t          j        |¦  «        dœz  }t          j        d¦  «        t	          |¦  «        |t          |¦  «        |fz  }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­   r2   rº   r®   )r¥   Ú
status_intr¼   r½   Ú
html_errorÚhttps         r   Úwrite_errorrÆ   9  s�   € Ý”ð 
"ñ 
	ô 
	ð ¥d¤k°$Ñ&7Ô&7Ð8Ð8ñ
9€Jõ Œ?ð 
ñ ô õ �*‰oŒo˜v¥s¨:¡¤¸
ÐCñD€Dõ �4˜Ÿš XÑ.Ô.Ñ/Ô/Ð/Ð/Ð/r   c                 óŽ   — t          j        ¦   «         d         }	 |� |j        j        | j        u r	 ~dS |j        }|­ 	 ~dS # ~w xY w)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.
    re   NFT)ÚsysÚexc_infoÚtb_frameÚf_codeÚ__code__Útb_next)rI   Útbs     r   Ú_called_with_wrong_argsrÏ   P  se   € õ 
Œ‰Œ˜Ô	€BðØˆnØŒ{Ô! Q¤ZÐ/Ð/àð ˆBˆBð ”ˆBð ˆnð ð ˆBˆBøˆBˆˆˆˆs   ›A ´	A ÁAc           	      óô  — |                       dd¦  «        }t          |¦  «        dk    rd}n|d         |d         }} 	 t          j        | ¦  «        }ns# t          $ rf |                      d¦  «        rOt          j                             | ¦  «        r0d}t	          ||  	                    dd¦  «        d         |fz  ¦  «        ‚‚ w xY w	 t          j        |d¬	¦  «        j        }n # t          $ r t          d
|z  ¦  «        ‚w xY wt          |t          j        ¦  «        r|j        }d x}}n­t          |t          j        ¦  «        r�t          |j        t          j        ¦  «        st          d|z  ¦  «        ‚|j        j        }	 d„ |j        D ¦   «         }d„ |j        D ¦   «         }n2# t,          $ r t          d|z  ¦  «        ‚w xY wt          d
|z  ¦  «        ‚t.          j        j        t.          j        k    }		 t7          ||¦  «        }
nE# t8          $ r8 |	rt;          j        t?          j         ¦   «         Ž  t          d|›d| ›d�¦  «        ‚w xY w|�x	  |
|i |¤Ž}
nn# tB          $ ra}tE          |
¦  «        rLt          d #                    t;          j$        tB          |¦  «        ¦  «         %                    ¦   «         ¦  «        ‚‚ d }~ww xY w|
€t          d|z  ¦  «        ‚tM          |
¦  «        st          d¦  «        ‚|
S )NrŠ   r#   Ú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                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   )ÚastÚliteral_eval)r   Úargs     r   r   zimport_app.<locals>.<listcomp>Ž  s#   € ÐEÐEÐE¨c•CÔ$ SÑ)Ô)ÐEÐEÐEr   c                 óL   — i | ]!}|j         t          j        |j        ¦  «        “Œ"S r   )r×   rÕ   rÖ   Úvalue)r   Úkws     r   ú
<dictcomp>zimport_app.<locals>.<dictcomp>�  s)   € ÐWÐWÐW¸R�b”f�cÔ.¨r¬xÑ8Ô8ÐWÐWÐWr   z/Failed to parse arguments as literal values: %rzFailed to find attribute z in r‹   z%Failed to find application object: %rz$Application object must be callable.)'r+   r2   r4   r5   r   ÚendswithrW   rb   Úexistsr,   rÕ   ÚparseÚbodyÚSyntaxErrorr   r¬   ÚNameÚidÚCallrn   ÚargsÚkeywordsr-   ÚloggingÚrootÚlevelÚDEBUGr7   ÚAttributeErrorr/   Úprint_exceptionrÈ   rÉ   Ú	TypeErrorrÏ   r6   Úformat_exception_onlyÚstripÚcallable)ÚmoduleÚpartsÚobjrA   r>   Ú
expressionr   rä   ÚkwargsÚis_debugÚappÚes               r   Ú
import_apprø   j  sj  € Ø�LŠL˜˜aÑ Ô €EÝ
ˆ5�z„z�Q‚€Øˆˆà˜A”h  a¤�ˆðÝÔ% fÑ-Ô-ˆˆøÝð ð ð Ø�?Š?˜5Ñ!Ô!ð 	E¥b¤g§n¢n°VÑ&<Ô&<ð 	EØEˆCÝ˜c V§]¢]°3¸Ñ%:Ô%:¸1Ô%=¸sÐ$CÑCÑDÔDÐDØð	øøøð
Ý”Y˜s¨Ð0Ñ0Ô0Ô5ˆ
ˆ
øÝð 
ð 
ð 
ÝØGÈ#ÑMñ
ô 
ð 	
ð
øøøõ
 �*�cœhÑ'Ô'ð 
ØŒ}ˆØÐˆˆvˆvÝ	�J¥¤Ñ	)Ô	)ð 
å˜*œ/­3¬8Ñ4Ô4ð 	WÝ Ð!OÐRUÑ!UÑVÔVÐVàŒÔ!ˆð	ØEÐE°Z´_ÐEÑEÔEˆDØWÐWÀ:ÔCVÐWÑWÔWˆFˆFøÝð 	ð 	ð 	õ !ØAÀCÑGñô ð ð	øøøõ ØGÈ#ÑMñ
ô 
ð 	
õ Œ|Ô!¥W¤]Ò2€HðTÝ�c˜4Ñ Ô ˆˆøÝð Tð Tð TØð 	7ÝÔ%¥s¤|¡~¤~Ð6Ð6ÝˆnÀTÀTÀTÈ6È6È6ÐRÑSÔSÐSðTøøøð Ðð	Ø�#�tÐ&˜vÐ&Ð&ˆCˆCøÝð 	ð 	ð 	õ ' sÑ+Ô+ð Ý$Ø—G’G�IÔ;½IÀqÑIÔIÑJÔJ×PÒPÑRÔRñô ð ð øøøøð	øøøð €{ÝÐDÀsÑJÑKÔKÐKå�C‰=Œ=ð EÝÐCÑDÔDÐDØ€JsJ   ¾A ÁA0CÃC# Ã#D Æ"F$ Æ$GÇ6H ÈAI	ÉI É
KÉ"AJ>Ê>Kc                  ón  — 	 t          j        t           j        d         ¦  «        } t          j        t          j        ¦   «         ¦  «        }| j        |j        k    r#| j        |j        k    rt           j        d         }nt          j        ¦   «         }n## t          $ r t          j        ¦   «         }Y nw xY w|S )NÚPWD)rW   ÚstatÚenvironÚgetcwdÚst_inoÚst_devr.   )ÚaÚbÚcwds      r   rý   rý   ½  s˜   € ðÝŒG•B”J˜uÔ%Ñ&Ô&ˆÝŒG•B”I‘K”KÑ Ô ˆØŒ8�q”xÒÐ A¤H°´Ò$8Ð$8Ý”*˜UÔ#ˆCˆCå”)‘+”+ˆCøøÝð ð ð ÝŒi‰kŒkˆˆˆðøøøà€Js   ‚BB ÂB2Â1B2c                 ót   — | €t          j         ¦   «         } t          j                             | dd¬¦  «        }|S )z@Return the current date and time formatted for a message header.NFT)Ú	localtimeÚusegmt)ri   ÚemailÚutilsÚ
formatdate)Ú	timestampÚss     r   Ú	http_dater  Ë  s4   € àÐÝ”I‘K”Kˆ	ÝŒ×Ò˜y°EÀ$ÐÑGÔG€AØ€Hr   c                 ó\   — |                       ¦   «                              ¦   «         t          v S r   )r�   rî   Úhop_headers)Úheaders    r   Ú
is_hoppishr  Ó  s!   € Ø�<Š<‰>Œ>×ÒÑ!Ô!¥[Ð0Ð0r   c                 ó@  ‡— dt           j        v�r�t          j        ¦   «         rt          j        d¦  «         t          j        ¦   «          t          j        ¦   «         rt          j        d¦  «         t          j        d¦  «         | s�t          dd¦  «         t          j        t          t           j	        ¦  «        Št          j
        ‰d¦  «         ‰dk    rt          j        ‰d¦  «         t          j        ‰d¦  «         t          j        ‰d¦  «         d	S t          j        t          t           j	        ¦  «        Š‰dk    r)t          j        d¦  «         t          j        ‰d¦  «         ˆfd„} |t          j        d¦  «          |t          j        d¦  «         d	S d	S )
zo    Standard daemonization of a process.
    http://www.faqs.org/faqs/unix-faq/programmer/faq/ section 1.7
    ÚGUNICORN_FDr   é   é   Tr#   re   c                 óâ   •— 	 |                       ¦   «         }||k    r?|                      ¦   «         r-t          j        |¦  «         t          j        ‰|¦  «         d S d S d S # t
          $ r Y d S w xY wr   )ÚfilenoÚisattyrW   r¤   Údup2rê   )ÚstreamÚ	fd_expectr’   Úfd_nulls      €r   Úredirectzdaemonize.<locals>.redirect   s~   ø€ ðØŸš™œ�BØ˜Y’�¨6¯=ª=©?¬?�Ýœ ™œ˜Ýœ ¨Ñ,Ô,Ð,Ð,Ð,ð '���øõ &ð ð ð Ø�D�Dðøøøs   ƒAA  Á 
A.Á-A.N)rW   rü   ÚforkÚ_exitÚsetsidÚumaskr¦   ÚopenÚREDIRECT_TOÚO_RDWRÚset_inheritabler  r¤   rÈ   ÚstdoutÚstderr)Úenable_stdio_inheritancer  r  s     @r   Ú	daemonizer'  ×  sz  ø€ ð
 �BœJÐ&Ñ&ÝŒ7‰9Œ9ð 	ÝŒH�Q‰KŒKˆKÝ
Œ	‰ŒˆåŒ7‰9Œ9ð 	ÝŒH�Q‰KŒKˆKå
Œ�‰Œˆð (ð >	$õ
 �q˜!ÑÔÐå”g�k­2¬9Ñ5Ô5ˆGåÔ˜w¨Ñ-Ô-Ð-ð ˜!Š|ˆ|Ý”˜ Ñ#Ô#Ð#åŒG�G˜QÑÔÐÝŒG�G˜QÑÔÐÐÐõ ”g�k­2¬9Ñ5Ô5ˆGð
 ˜!Š|ˆ|Ý”˜‘”�Ý”˜ Ñ#Ô#Ð#ð4ð ð ð ð ð ˆH•S”Z Ñ#Ô#Ð#ØˆH•S”Z Ñ#Ô#Ð#Ð#Ð#ð] 'Ð&r   c                  óì   — 	 t          j        t          j        d¦  «        ¦  «         d S # t          $ r? t          j        t          j        ¦   «         ›dt          j        ¦   «         ›�¦  «         Y d S w xY w)Né@   r%   )ÚrandomÚseedrW   ÚurandomÚNotImplementedErrorri   Úgetpidr   r   r   r+  r+  -  sp   € ð:ÝŒ•B”J˜r‘N”NÑ#Ô#Ð#Ð#Ð#øÝð :ð :ð :ÝŒ�tœy™{œ{˜{˜{­B¬I©K¬K¨KÐ8Ñ9Ô9Ð9Ð9Ð9Ð9ð:øøøs   ‚&* ªAA3Á2A3c                 óÒ   — 	 t          | d¦  «        5 }|                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r}t          d| ›d|›d�¦  «        ‚d }~ww xY w)Nr   zError: 'z' isn't writable [r‰   )r   r¤   rz   r1   )rb   rI   r÷   s      r   Úcheck_is_writabler0  4  sÄ   € ðJÝ�$˜‰_Œ_ð 	 Ø�GŠG‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	øåð Jð Jð JÝˆlÀÀÀÀaÀaÀaÐHÑIÔIÐIøøøøðJøøøs2   ‚A ’4§A ´8¸A »8¼A Á
A&ÁA!Á!A&Úutf8c                 ó¨   — t          | t          ¦  «        r| S t          | t          ¦  «        st          d| z  ¦  «        ‚|                      |¦  «        S )z+Converts a string argument to a byte stringz%r is not a string)r¬   Úbytesr­   rì   r®   )rÙ   Úencodings     r   Úto_bytestringr5  <  sQ   € å�%�ÑÔð ØˆÝ�e�SÑ!Ô!ð 6ÝÐ,¨uÑ4Ñ5Ô5Ð5à�<Š<˜Ñ!Ô!Ð!r   c                 óœ   — t          | d¦  «        sdS 	 |                      ¦   «          n## t          t          t          j        f$ r Y dS w xY wdS )Nr  FT)Úhasattrr  rê   rz   ÚioÚUnsupportedOperation)rò   s    r   Ú
has_filenor:  F  s`   € Ý�3˜Ñ!Ô!ð ØˆuðØ�
Š
‰ŒˆˆøÝ�G¥RÔ%<Ð=ð ð ð Øˆuˆuðøøøð ˆ4s   ”) ©A	ÁA	c                 óR  — t          dt          j        ¬¦  «         |                      ¦   «         }t	          |¦  «        D ].\  }}|dk    rd|z  }t          d|z  t          j        ¬¦  «         Œ/t          dt          j        ¬¦  «         t          j                             ¦   «          d S )Nz!!!)Úfiler   zWARNING: %sz!!! %sz!!!
)ÚprintrÈ   r%  Ú
splitlinesÚ	enumerateÚflush)r>   ÚlinesÚiÚlines       r   rl   rl   S  sŸ   € Ý	ˆ%•c”jÐ!Ñ!Ô!Ð!à�NŠNÑÔ€EÝ˜UÑ#Ô#ð 0ð 0‰ˆˆ4Ø�Š6ˆ6Ø  4Ñ'ˆDÝˆh˜‰o¥C¤JÐ/Ñ/Ô/Ð/Ð/å	ˆ'�œ
Ð#Ñ#Ô#Ð#Ý„J×ÒÑÔÐÐÐr   c                 ó0   ‡ — t          ‰ ¦  «        Š ˆ fd„}|S )Nc           
      ó^   •—  |dddt          t          ‰¦  «        ¦  «        fg¦  «         ‰gS )Nz500 Internal Server Error)zContent-Typez
text/plainzContent-Length)r­   r2   )rü   Ústart_responser>   s     €r   rö   zmake_fail_app.<locals>.appc  s?   ø€ ØˆÐ2Ø*Ø�s¥3 s¡8¤8™}œ}Ð-ð5
ñ 	ô 	ð 	ð ˆuˆr   )r5  )r>   rö   s   ` r   Úmake_fail_apprG  `  s0   ø€ Ý
˜Ñ
Ô
€Cðð ð ð ð ð €Jr   c                 óô   — |                       d¦  «        rEt          j                             d| z   ¦  «        }|                     |j        dd …         ¬¦  «        S t          j                             | ¦  «        S )Nz//r%   r#   )rb   )r*   ÚurllibrÞ   ÚurlsplitÚ_replacerb   )r8   rñ   s     r   Úsplit_request_urirL  m  se   € Ø
‡~‚~�dÑÔð 3õ
 ”×%Ò% c¨C¡iÑ0Ô0ˆØ�~Š~ 5¤:¨a¨b¨b¤>ˆ~Ñ2Ô2Ð2åŒ<× Ò  Ñ%Ô%Ð%r   c                 ón   — 	 |€
 | ¦   «         }|j         |ur|                     |¦  «        ‚|‚# d }d }w xY wr   )Ú__traceback__Úwith_traceback)ÚtprÙ   rÎ   s      r   ÚreraiserQ  z  sQ   € ðØˆ=Ø�B‘D”DˆEØÔ bÐ(Ð(Ø×&Ò& rÑ*Ô*Ð*ØˆøàˆØˆˆ	ˆ	ˆ	ˆ	s   ‚,. ®4c                 óP   — t          | t          ¦  «        r| S t          | d¦  «        S )Nr¾   )r¬   r­   )r  s    r   Úbytes_to_strrS  †  s)   € Ý�!•SÑÔð ØˆÝˆq�(ÑÔÐr   c                 óf   — t           j                             | ¦  «                             d¦  «        S )Nzlatin-1)rI  rÞ   Úunquote_to_bytesÚdecode)Ústrings    r   Úunquote_to_wsgi_strrX  Œ  s&   € ÝŒ<×(Ò(¨Ñ0Ô0×7Ò7¸	ÑBÔBÐBr   )r    r!   )F)r…   r   )r1  )OrÕ   Úemail.utilsr  r{   r—   rÁ   r4   r(   r8  ræ   rW   rO   r*  rŒ   r€   rÈ   r¿   ri   r/   rk   Úimportlib.metadataÚmetadatar   ÚModuleNotFoundErrorr   Úgunicorn.errorsr   Úgunicorn.workersr   Úurllib.parserI  r7   r!  Úsetr+   r  r   r   r   rB   Ú	ParameterÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDrH   rM   rS   r_   ra   Úplatformr*   rt   rx   rv   r„   r•   r�   r¢   r¤   r¦   r³   r¶   rº   rÆ   rÏ   rø   rý   r  r  r'  r+  r0  r5  r:  rl   rG  rL  rQ  rS  rX  r   r   r   ú<module>re     s´  ðð €
€
€
Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€ðØ3Ð3Ð3Ð3Ð3Ð3Ð3øØ˜[Ð)ð ð ð ØÐÐÐÐÐðøøøð +Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð àˆg�b˜) [Ñ1Ô1€ð ˆcð ÷ 	Š‰Œñ	ô €ðØ)Ð)Ð)Ð)Ð)Ð)ð-ð -ð -ð -øàð ð ð ðð ð ð ð ðøøøð
ð ð ð ?Ø)ð/#ð /#ð /#ð /#ðf ÔÔ%ØÔÔ+ð€ðð ð ð%ð %ð %ð
ð ð ð ð.ð ð ð „<×Ò˜5Ñ!Ô!ð %ð4ð 4ð 4ð 4ðB&ð &ð &ð &ð Œi€Gðð ð ðð ð ðð ð ð ð>*ð *ð *ð*ð *ð *ð
ð ð ð	ØÐÐÐÐÐÐøØð ð ð ðð ð ð ð ðøøøðð ð ðð ð ð ð	*ð 	*ð 	*ð 	*ð0ð 0ð 0ð.ð ð ð4Pð Pð Pðfð ð ðð ð ð ð1ð 1ð 1ðS$ð S$ð S$ð S$ðl:ð :ð :ðJð Jð Jð"ð "ð "ð "ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð	&ð 	&ð 	&ð	ð 	ð 	ð 	ðð ð ðCð Cð Cð Cð Cs6   ÁA ÁA#Á"A#Â!	B+ Â+B6Â5B6Ä$D+ Ä+D6Ä5D6