
    *ii                       S r SSKJr  SSKJr  SSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  \RF                  " S5      r$\RJ                  S:X  a  Sr&Sr'OSr&Sr' " S S\RP                  \$   5      r)S(S)S jjr*        S*S jr+        S*S jr,        S+S jr- " S S 5      r.S,S-S! jjr/S.S" jr0\
Rb                  S#:X  a  SSK2r2\Rf                  S/S$ j5       r4S0S% jr5gSSK6r6SSK7r7\Rf                  S/S& j5       r4S0S' jr5g)1z
This module contains implementations for the termui module. To keep the
import time of Click down, some infrequently used functionality is
placed in this module and only imported as needed.
    )annotationsN)gettext)StringIO)Path)TracebackType   )_default_text_stdout)CYGWIN)get_best_encoding)isatty)open_stream)
strip_ansi)term_len)WIN)ClickException)echoVnt
z[?25lz[?25h
c                  h   \ rS rSr               S                                 SS jjrSS jr        SS jrSS jrSS jrSS jr	\
SS	 j5       r\
SS
 j5       r\
SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrS S jrS!S"S jjrSS jrSS jrSrg)#ProgressBar+   Nc                   X0l         X@l        XPl        X`l        Xpl        Xl        Xl        Xl        Xl        U=(       d    SU l	        Uc  [        5       nUc
  [        5       nXl        Xl        Xl        SU l        UU l        US:H  U l        Uc  SSKJn  U" US5      nUS:X  a  S nUc.  Uc  [)        S5      e[*        R,                  " S[/        U5      5      n[1        U5      U l        X l        SU l        / U l        U   U   [8        R8                  " 5       =U l        U l        SU l        SU l         S U l!        SU l"        S U l#        [I        U R                  5      U l%        S U l&        g )N r   )length_hintziterable or length is requiredzcabc.Iterable[V]F)'	fill_char
empty_charbar_templateinfo_sephiddenshow_etashow_percentshow_positem_show_funclabelr	   r   filecolorupdate_min_steps_completed_intervalswidth	autowidthoperatorr   	TypeErrortcastrangeiterlengthposavgtimestartlast_eta	eta_knownfinished	max_widthenteredcurrent_itemr   _is_atty
_last_line)selfiterabler4   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r,   r   s                     P/var/www/html/ai-backend/venv/lib/python3.13/site-packages/click/_termui_impl.py__init__ProgressBar.__init__,   sC   & #$(  ( ,+2
<')D |z	
 0$%!
$z>, 2.F|~ @AAvv0%-@H&*8n	 "%)YY[0
T]$#%)"&*tyy)&*    c                4    SU l         U R                  5         U $ )NT)r=   render_progressrA   s    rC   	__enter__ProgressBar.__enter__s   s    rF   c                $    U R                  5         g N)render_finish)rA   exc_type	exc_valuetbs       rC   __exit__ProgressBar.__exit__x   s     	rF   c                z    U R                   (       d  [        S5      eU R                  5         U R                  5       $ )N.You need to use progress bars in a with block.)r=   RuntimeErrorrH   	generatorrI   s    rC   __iter__ProgressBar.__iter__   s.    ||OPP~~rF   c                *    [        [        U 5      5      $ rM   )nextr3   rI   s    rC   __next__ProgressBar.__next__   s     DJrF   c                    U R                   (       d  U R                  (       d  g U R                  R                  [        5        U R                  R                  5         g rM   )r"   r?   r(   write	AFTER_BARflushrI   s    rC   rN   ProgressBar.render_finish   s0    ;;dmm			"		rF   c                    U R                   (       a  g[        U R                  [        U R                  =(       d    S5      =(       d    S-  S5      $ )N      ?r   )r;   minr5   floatr4   rI   s    rC   pctProgressBar.pct   s5    ==488uT[[%5A6;!<cBBrF   c                    U R                   (       d  g[        U R                   5      [        [        U R                   5      5      -  $ Ng        )r6   sumrf   lenrI   s    rC   time_per_iterationProgressBar.time_per_iteration   s,    xx488}uS]333rF   c                    U R                   b7  U R                  (       d&  U R                  U R                   U R                  -
  -  $ grj   )r4   r;   rm   r5   rI   s    rC   etaProgressBar.eta   s3    ;;"4==**dkkDHH.DEErF   c                    U R                   (       aV  [        U R                  5      nUS-  nUS-  nUS-  nUS-  nUS-  nUS-  nUS:  a  U SUS SUS SUS 3$ US SUS SUS 3$ g)N<      r   zd 02:r   )r:   intrp   )rA   r0   secondsminuteshourss        rC   
format_etaProgressBar.format_eta   s    >>DHHA"fG"HA"fG"HAFE"HA1uBuRj'"QwrlCC1WRL'">>rF   c                n    [        U R                  5      nU R                  b  USU R                   3-  nU$ )N/)strr5   r4   )rA   r5   s     rC   
format_posProgressBar.format_pos   s3    $((m;;"Qt{{m$$C
rF   c                @    [        U R                  S-  5      S S3SS  $ )Nd   z 4%r   )rw   rg   rI   s    rC   
format_pctProgressBar.format_pct   s&    dhhn%b)+AB//rF   c                ^   U R                   bQ  [        U R                  U R                  -  5      nU R                  U-  nX R
                  U R                  U-
  -  -  nU$ U R                  (       a  U R                  U R                  -  nU$ [        U R
                  U R                  =(       d    S-  5      nU R                  S:w  aV  U R                  U[        [        R                  " U R                  U R                  -  5      S-  S-   U R                  -  5      '   SR                  U5      nU$ )Nr   r   g       @g      ?r   )r4   rw   rg   r,   r   r   r;   listrm   mathcosr5   join)rA   
bar_lengthbarcharss       rC   
format_barProgressBar.format_bar   s    ;;"TXX

23J..:-C??djj:&=>>C 
 ]]..4::-C 
 DJJO!<=E&&!+ NN $((T-D-D"DEKcQ**% ''%.C
rF   c                   U R                   n/ nU R                  b  Uc  U R                  (       + nU R                  (       a  UR                  U R	                  5       5        U(       a  UR                  U R                  5       5        U R                  (       aA  U R                  (       a0  U R                  (       d  UR                  U R                  5       5        U R                  b/  U R                  U R                  5      nUb  UR                  U5        U R                  U R                  U R                  5       U R                  R!                  U5      S.-  R#                  5       $ )N)r'   r   info)r$   r4   r%   appendr   r   r#   r:   r;   r{   r&   r>   r    r'   r   r!   r   rstrip)rA   r$   	info_bits	item_infos       rC   format_progress_line ProgressBar.format_progress_line   s   ((	;;"|';#}},L==T__./T__./==T^^DMMT__./*++D,=,=>I$  + (**95 &(	rF   c                h   U R                   (       a  g U R                  (       dU  U R                  U R                  :w  a:  U R                  U l        [	        U R                  U R
                  U R                  S9  g / nU R                  (       a  SS KnU R                  nSU l	        [        U R                  5       5      n[        SUR                  5       R                  U-
  5      nXS:  aF  U R                  b9  UR!                  ["        5        UR!                  SU R                  -  5        XPl        XPl	        U R                  nU R                  b  U R                  nUR!                  ["        5        U R                  5       n[        U5      nU R                  b  U R                  U:  a  Xl        UR!                  U5        UR!                  SXh-
  -  5        SR%                  U5      nXpR                  :w  a@  Xpl        [	        XpR
                  U R                  SS9  U R
                  R'                  5         g g )N)r(   r)   r    r   F)r(   r)   nl)r"   r?   r@   r'   r   r(   r)   r-   shutilr,   r   r   maxget_terminal_sizecolumnsr<   r   
BEFORE_BARr   ra   )	rA   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lens	            rC   rH   ProgressBar.render_progress   s   ;;}}$**,"&**TZZdiitzzB>>

IDJ%d&?&?&ABNAv779AANRSI$)C

:&

3/0!*"Jjj>>%..K

:((*D>>>!T^^h%>%N

4

3+012wws| ??""OIITZZEBIIOO #rF   c                (   U =R                   U-  sl         U R                  b!  U R                   U R                  :  a  SU l        [        R                  " 5       U R                  -
  S:  a  g [        R                  " 5       U l        U R                   (       a0  [        R                  " 5       U R
                  -
  U R                   -  nO"[        R                  " 5       U R
                  -
  nU R                  SS  U/-   U l        U R                  S LU l        g )NTrd   i)r5   r4   r;   r7   r9   r8   r6   r:   )rA   n_stepssteps      rC   	make_stepProgressBar.make_step  s    G;;"txx4;;'> DMIIK$--'3.		
 88IIK$**,8D99;+D88BC=D6)D0rF   c                    Ub  X l         U =R                  U-  sl        U R                  U R                  :  a3  U R                  U R                  5        U R	                  5         SU l        gg)a  Update the progress bar by advancing a specified number of
steps, and optionally set the ``current_item`` for this new
position.

:param n_steps: Number of steps to advance.
:param current_item: Optional item to set as ``current_item``
    for the updated position.

.. versionchanged:: 8.0
    Added the ``current_item`` optional parameter.

.. versionchanged:: 8.0
    Only render when the number of steps meets the
    ``update_min_steps`` threshold.
Nr   )r>   r+   r*   r   rH   )rA   r   r>   s      rC   updateProgressBar.update0  s`      # ,!!W,!$$(=(==NN4445  "()D% >rF   c                .    SU l         S U l        SU l        g )NFT)r:   r>   r;   rI   s    rC   finishProgressBar.finishJ  s     rF   c              #  p  #    U R                   (       d  [        S5      eU R                  (       d  U R                   Sh  vN   gU R                   H>  nXl        U R
                  S:X  a  U R                  5         Uv   U R                  S5        M@     U R                  5         U R                  5         g Nt7f)zReturn a generator which yields the items added to the bar
during construction, and updates the progress bar *after* the
yielded block returns.
rU   Nr   r   )	r=   rV   r?   r3   r>   r+   rH   r   r   )rA   rvs     rC   rW   ProgressBar.generatorO  s      ||OPP}}yy  ii$&!
 ,,1((*A   KKM  " !s   =B6B4 A5B6)r+   r?   r@   r-   r6   r    r)   r>   r   r=   r:   r(   r   r;   r"   r!   r&   r3   r'   r9   r4   r<   r5   r#   r$   r%   r8   r*   r,   )N#r   z%(bar)sz  FTNFNNNNr      )"rB   zcabc.Iterable[V] | Noner4   z
int | Noner   r   r   r   r    r   r!   r   r"   boolr#   r   r$   bool | Noner%   r   r&   z)t.Callable[[V | None], str | None] | Noner'   
str | Noner(   zt.TextIO | Noner)   r   r*   rw   r,   rw   returnNone)r   zProgressBar[V])rO   ztype[BaseException] | NonerP   zBaseException | NonerQ   zTracebackType | Noner   r   )r   zcabc.Iterator[V])r   r   )r   r   )r   rf   r   r   )r   rw   r   r   rM   )r   rw   r>   zV | Noner   r   )__name__
__module____qualname____firstlineno__rD   rJ   rR   rX   r\   rN   propertyrg   rm   rp   r{   r   r   r   r   rH   r   r   r   rW   __static_attributes__ rF   rC   r   r   +   s    "%$(DH  $! !#E+)E+ E+ 	E+
 E+ E+ E+ E+ E+ "E+ E+ BE+ E+ E+ E+  !E+" #E+$ 
%E+N
, ( !	
 
   C C
 4 4
  
0&6,\1,*4
#rF   r   c                   [        5       nUc
  [        5       n[        [        R                  5      (       a  [        U5      (       d  [        X U5      $ [        R                  " [        R                  R                  SS5      SS9nU(       a0  [        (       a  [        XU5      (       a  gO[        XU5      (       a  g[        R                  R                  S5      S;   a  [        X U5      $ [        (       d$  [        R                  R                  S5      (       a  [        U S	/U5      (       a  g[        U S
/U5      (       a  gSSKnUR#                  5       u  pV[        R$                  " U5         [        U S	/U5      (       a   [        R&                  " U5        g[        X U5      [        R&                  " U5        $ ! [        R&                  " U5        f = f)z2Decide what method to use for paging through text.NPAGERr   F)posixTERM)dumbemacsos2morelessr   )r	   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswithtempfilemkstempcloseunlink)rW   r)   stdoutpager_cmd_partsr   fdfilenames          rC   pagerr   q  s_   !#F ~#))F6NN&U33 kk"**..""=UKO3i%@@ A	E::	zz~~f!22&U33s||&&u-->F8U4 4 	)fXu--##%LBHHRLi&511 			( &U3
		(		(s   /F< F< <Gc           	     "   U(       d  gSSK nUS   nUSS nUR                  U5      nU(       d  g[        U5      R                  5       nUR                  nSSKn	[        [        R                  5      n
UcV  US:X  aP  [        R                  R                  SS5       SR                  U5       3nU(       d  S	U
S'   S
nOSU;   d  SU;   a  S
nU	R                  [        U5      /U-   SU	R                  U
SS
S9nUR                  c   e U  H0  nU(       d  [        U5      nUR                  R!                  U5        M2      UR                  R)                  5           UR+                  5          g
! ["         a     N;[$         a  nUR'                  5         UeSnAff = f! ["         a     NOf = f! [,         a     Of = fMd  !  UR                  R)                  5         O! ["         a     Of = f  UR+                  5         f ! [,         a     Of = fM$  = f)zPage through text by feeding it to another program. Invoking a
pager through this might support colors.

Returns `True` if the command was found, `False` otherwise and thus another
pager should be attempted.
Fr   Nr   r   LESSr   r   -RTrRreplace)shellr   enverrorstext)r   whichr   absolutename
subprocessdictr   r   r   r   Popenr   PIPEr   r   r_   BrokenPipeError	Exception	terminater   waitKeyboardInterrupt)rW   	cmd_partsr)   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer   r   
less_flagscr   es                  rC   r   r     s    
A,C12J<<$L
 L!**,H}}H rzz
C }V+

vr23CHHZ4H3IJ
CKEJ#"3E	X*$oo 	 	A 77'D!$'GGMM$	 "	GGMMO  G   
 	
  		 %  	GGMMO  		   %  s   6E+ =F F* +
F5F< 7	F FFF< 
F'&F'*
F76F7<H>GH
G&#H%G&&H+G<;H<
H	HH		Hc                   U(       d  gSSK nUS   nUR                  U5      nU(       d  g[        U5      R                  5       nSSKnSSKnUR                  5       u  pSR                  U 5      nU(       d  [        U5      n[        [        R                  5      n[        U
S5      S    nUR                  UR                  U5      5        SSS5         UR                  [!        U5      U
/5        [$        R&                  " U	5        [$        R(                  " U
5        g! , (       d  f       NX= f! ["         a     NJf = f! [$        R&                  " U	5        [$        R(                  " U
5        f = f)zPage through text by invoking a program on a temporary file.

Returns `True` if the command was found, `False` otherwise and thus another
pager should be attempted.
Fr   Nr   wbT)r   r   r   r   r   r   r   r   r   r   r   r   r   r_   encodecallr   OSErrorr   r   r   )rW   r   r)   r   r   r   r   r   r   r   r   r   encodingfs                 rC   r   r     s    
A,C<<$L L!**,H##%LB779D$ ,H	Xt	$Q	'1	H%& 
(X12
 	
		( 
(	'   	
		(s0   )!DD- 
D*-
D:7D= 9D::D= =.E+c                \    U H&  nU(       d  [        U5      nU R                  U5        M(     g)z>Simply print unformatted text.  This is the ultimate fallback.N)r   r_   )streamrW   r)   r   s       rC   r   r   *  s'     d#DT rF   c                      \ rS rSr    S
         SS jjrSS jrSS jr\R                  SS j5       r	\R                  SS j5       r	SS jr	S	r
g)Editori4  Nc                4    Xl         X l        X0l        X@l        g rM   )editorr   require_save	extension)rA   r  r   r  r  s        rC   rD   Editor.__init__5  s     ("rF   c                    U R                   b  U R                   $ S H-  n[        R                  R                  U5      nU(       d  M+  Us  $    [        (       a  gSSKJn  S H  nU" U5      c  M  Us  $    g)N)VISUALEDITORnotepadr   )r   )zsensible-editorvimnanovi)r  r   r   r   r   r   r   )rA   keyr   r   r  s        rC   
get_editorEditor.get_editorA  sg    ;;";;%C$Br	 & 3 6FV}( 7 rF   c                   SS K nU R                  5       nS nU R                  (       a9  [        R                  R                  5       nUR                  U R                  5        SR                  S U 5       5      n UR                  U SU 3USS9nUR                  5       nUS:w  a!  [        [        S5      R                  US95      eg ! [         a'  n[        [        S5      R                  X8S	95      UeS nAff = f)
Nr   r   c              3  .   #    U  H  nS U S 3v   M     g7f)"Nr   ).0r   s     rC   	<genexpr>$Editor.edit_files.<locals>.<genexpr>\  s     J	H!H:Q	s   T)argsr   r   z{editor}: Editing failed)r  z{editor}: Editing failed: {e})r  r  )r   r  r   r   r   copyr   r   r   r   r   _formatr  )	rA   	filenamesr   r  r   exc_filenamer  	exit_coder  s	            rC   
edit_filesEditor.edit_filesR  s    ")-88jjoo'GNN488$xxJ	JJ	  xq/WD ! A IA~$01888G    	 12999M	s   :AC 
C9"C44C9c                    g rM   r   rA   r   s     rC   editEditor.editl  s    =@rF   c                    g rM   r   r-  s     rC   r.  r/  q  s    47rF   c                   SS K nUc  SnO~[        U[        [        45      (       a  UnO`U(       a  UR	                  S5      (       d  US-  n[
        (       a"  UR                  SS5      R                  S5      nOUR                  S5      nUR                  SU R                  S9u  pE [        R                  " US	5       nUR                  U5        S S S 5        [        R                  " U[        R                  R                  U5      [        R                  R!                  U5      S
-
  45        [        R                  R!                  U5      nU R#                  U45        U R$                  (       a;  [        R                  R!                  U5      U:X  a   [        R&                  " U5        g [)        US5       nUR+                  5       nS S S 5        [        U[        [        45      (       a  W[        R&                  " U5        $ WR-                  S5      R                  SS5      [        R&                  " U5        $ ! , (       d  f       GNq= f! , (       d  f       N= f! [        R&                  " U5        f = f)Nr   rF   r   z
z	utf-8-sigzutf-8zeditor-)prefixsuffixr     rb)r   
isinstancebytes	bytearrayendswithr   r   r  r   r  r   fdopenr_   utimepathgetatimegetmtimer*  r  r   openreaddecode)	rA   r   r   datar   r   r	  	timestampr   s	            rC   r.  r/  t  s   <&)Dui011DDMM$//s||D&188E{{7+##9T^^#L	2t$ % HHTBGG,,T2BGG4D4DT4JQ4NOP ((.IOOTG$  RWW%5%5d%;y%H IIdO dD!QVVX " $	 233 IIdO 99[)11&$?IIdO3 %$" "! IIdOsI   &I =H9CI *I 6I$I  I 9
II 
II I4)r  r   r  r  )NNTz.txt)
r  r   r   zcabc.Mapping[str, str] | Noner  r   r  r   r   r   r   )r'  cabc.Iterable[str]r   r   )r   zbytes | bytearrayr   zbytes | None)r   r   r   r   )r   zstr | bytes | bytearray | Noner   zstr | bytes | None)r   r   r   r   rD   r  r*  r0   overloadr.  r   r   rF   rC   r  r  4  s|     "-1!
#
# +
# 	
#
 
# 

#"4 ZZ@ @ ZZ7 7-rF   r  c                   SS K nSS jn[        R                  S:X  a  S/nU(       a  UR                  S5        U(       a  UR                  S5        UR                  U" U 5      5        [	        SS5      n UR                  XVS	9R                  5       UR                  5         $ [        (       af  U(       a  U" U 5      n S
SU  3/nO=S/nU(       a  UR                  S5        UR                  S5        UR                  U 5         UR                  U5      $ [        (       ao  U(       a*  U" U 5      n S[        R                  R                  U 5      /nO,S/nU(       a  UR                  S5        UR                  U 5         UR                  U5      $  U(       a/  [        R                  R                  U" U 5      5      =(       d    Sn OU" U 5      n UR                  SU /5      nU(       a  UR                  5       $ g! UR                  5         f = f! [         a     gf = f! [         a     gf = f! [         a>    U R                  S5      (       a%  U(       d  U(       d  SS KnUR	                  U 5         g gf = f)Nr   c                T    SSK Jn  U R                  S5      (       a  U" U SS  5      n U $ )Nr   )unquotezfile://   )urllib.parserH  r   )urlrH  s     rC   _unquote_fileopen_url.<locals>._unquote_file  s)    (>>)$$#ab'"C
rF   darwinr?  z-Wr   z	/dev/nullw)stderrexplorerz/select,r8   z/WAITr      cygstartz-w.zxdg-open)zhttp://zhttps://r   )rK  r   r   r   )r   r   r   r   r?  r   r   r   r   r  r  r
   r   r<  dirnamer   
webbrowser)	rK  r   locater   rL  r#  nullr  rV  s	            rC   open_urlrY    s    ||xxKKKKM#&'K%	##D#6;;=JJL	$C(3% 01D9DG$KKOKK	??4(( 
$C 45D<DD!KK	??4((
''//-"45<C$Cj#./668OO JJL  		  		  >>1226$OOC sD   5G7 H <H A'H, 7H	
HH
H)(H),AI43I4c                    U S:X  a
  [        5       eU S:X  a  [        (       d
  [        5       eU S:X  a  [        (       a
  [        5       eg )N)r   r   EOFError)chs    rC   _translate_ch_to_excr`    s;    	V|!!	V|CCj	V|jrF   win32c               #     #    Sv   g 7f)Nr   r   r   rF   rC   raw_terminalrc    s
     s   c                H   U (       a=  [         R                  " [         R                  / [        4   [        R
                  5      nO<[         R                  " [         R                  / [        4   [        R                  5      nU" 5       nUS;   a	  X!" 5       -  n[        U5        U$ )N)    à)r0   r1   Callabler   msvcrtgetwchegetwchr`  )r   funcr   s      rC   getcharrl    ss    > 66!**RW-v~~>D66!**RW-v}}=DV!! $&LBR 	rF   c               #    #    [        [        R                  5      (       d  [        S5      n U R	                  5       nO [        R                  R	                  5       nS n  [
        R                  " U5      n [        R                  " U5        Uv   [
        R                  " U[
        R                  U5        [        R                  R                  5         U b  U R                  5         g g ! [
        R                  " U[
        R                  U5        [        R                  R                  5         U b  U R                  5         f f = f! [
        R                   a     g f = f7f)Nz/dev/tty)r   r   r   r?  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   ra   r   error)r	  r   old_settingss      rC   rc  rc  1  s     
 cii  Z AB!!#BA	",,R0L

2!!"g&7&7F

  "=GGI ! !!"g&7&7F

  "=GGI !}} 		sD   AEE 5C( AE &E(AEE EEEEc                j   [        5        n[        R                  " US5      R                  [	        [
        R                  5      S5      nU (       a=  [        [
        R                  5      (       a  [
        R                  R                  U5        [        U5        UsS S S 5        $ ! , (       d  f       g = f)N    r   )rc  r   r@  rA  r   r   r   r   r   r_   r`  )r   r   r_  s      rC   rl  rl  L  sg    ^rR''(9#))(DiPBszz**

  $ $ ^^s   BB$$
B2rM   )rW   rD  r)   r   r   r   )rW   rD  r   z	list[str]r)   r   r   r   )r  zt.TextIOrW   rD  r)   r   r   r   )FF)rK  r   r   r   rW  r   r   rw   )r_  r   r   r   )r   zcabc.Iterator[int])r   r   r   r   )8__doc__
__future__r   collections.abcabccabc
contextlibr   r   r   r   r7   typingr0   r   r%  ior   pathlibr   typesr   _compatr	   r
   r   r   r   r   r   r   
exceptionsr   utilsr   TypeVarr   r   r   r`   Genericr   r   r   r   r   r  rY  r`  r   rh  contextmanagerrc  rl  ro  rq  r   rF   rC   <module>r     s}   #    	  
        )  &       & IIcN77d?JIJIC#!))A, C#L
'T]!].7]@K]	]@,!,.7,@K,	,^!3<G	m m`DN
 <<7 ,^  4rF   