
    ]Og}                        S r SSKrSSKJrJr  SSKJr  SSKJr  SSKJ	r	J
r
  SSKrSSKrSSKJrJr  SSKJrJrJr  SS	KJrJrJr  SS
KJrJrJr  SSKJr  SSKrSSKrSSK J!r!  SSK"J#r#  SSK$J%r%J&r&  Sr'Sr(Sr)\RT                  " S5      r+Sr,Sr-Sr.Sr/Sr0Sr1Sr2S r3SS jr4SS jr5SS jr6S  r7S! r8S"S#S$S%S&S'S(S).r9S* r:S+ r;S, r<S- r=S. r>S/ r?\8S\'SSSSSSSSSSSSSS0SSSSSS4S1 j5       r@\8SSS\'SSSSSSSSSS4S2 j5       rAS3 rB\R                  " 5       \R                  " S4S5SS0S6S79\R                  " S8S9SS0S:S79\R                  " S;S<SS0S=S79\R                  " S>S?SS@SASB9\R                  " SCSDSS0SES79\R                  " SFSG\'SHSISB9\R                  " SJSKSLSMSN9\R                  " SOSPS@SQSN9\R                  " SRSSSS0STS79\R                  " SUSVSWSX9\R                  " SYSZS[SX9\R                  " S\S]SS0S^S79\R                  " S_S`SaSbSN9\R                  " ScSdSe\?SfSg9\R                  " ShSiSjSN9\R                  " SkSS0SlS79\R                  " SmSSnSo9\R                  " SpSS0SqS79\R                  " SrS0\>SS0SsSt9\R                  " SuSvSS0SwS79\R                  " SxSySSzR                  \(5      So9\R                  " S{S|SS}R                  \)5      So9\R                  " S~SSS9S 5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       5       rG\HS:X  a  \G" 5         gg)z1.18.0    N)datetime	timedeltawraps)ceil)EmptyQueue)abspathdirname)DEVNULLPopenSTDOUT)exitstderrstdout)EventLockThread)sleeptz)parse)CharNotPrintedFigletuniversz%H:%M:%Sz%Y-%m-%dzg((?P<years>\d+)y ?)?((?P<days>\d+)d ?)?((?P<hours>\d+)h ?)?((?P<minutes>\d+)m ?)?((?P<seconds>\d+)s ?)?                     c                 @   [         R                  " 5         [         R                  " S[         R                  S5        [         R                  " S[         R                  [         R                  5        [         R                  " S[         R                  S5        [         R                  " SS[         R                  5         [         R
                  " S5        U R                  S5        [        5       n[        5       n[        5       nXU4$ ! [         R                   a     NIf = f)Nr   r   r   r   Fr   )cursesuse_default_colors	init_pair	COLOR_RED
COLOR_BLUEcurs_seterrortimeoutr   r	   r   )stdscrcurses_lockinput_queue
quit_events       M/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/termdown.pysetupr2   )   s    

Q(("-
Q((&*:*:;
Q))2.
QF,,- NN1 &K'KJj11 << s   =D DDr$   c           
      j   Uc  UnU R                  5       u  pxUS:  a  UOSn	US:  a  SOUn
U(       aP  [        XHS5      nSUR                  S5      ;   a  US-  nUS-   [        X[        UR	                  S5      5      5      -   nU(       a6  [        XhS5      n[        X[        UR	                  S5      5      5      S-   U-   n[        XU	5      R                  S5      R	                  S5      n [        U5       H/  u  pU R                  X-   SU[        R                  " U5      5        M1     U R                  5         g!   [        X8U	5      R                  S5      R	                  S5      n [        USS 5       H/  u  pU R                  X-   SU[        R                  " U5      5        M1      N!     N= f= f)z%
Draws text in the given color. Duh.
Nr   r   
z




)
getmaxyxpad_to_sizerstriplensplit	enumerateinsstrr%   
color_pairrefresh)r-   textcolorfallbacktitleno_figlet_y_offsetendyxeffective_yy_deltalinesilines                 r1   	draw_textrK   >   s    ??DA*Q.1AK&*q0BGEa(5<<%%XEt|k$3tzz$7G3HII
#!$4C

4(8$9:TACG-44T:@@FE	 'GAMM!+q$0A0A%0HI ( NNH5<<TBHHN	$U1X.ak1dF4E4Ee4LM /	s%   +>D: :,F2'AF**F/,F2/F2Fc                     U S::  a  [        U 5      $ SnS HA  u  p4X:  d  M  U(       a  US:X  a  M  U[        [        X-  5      5      -  nX#-  nUS-  nX-  n MC     UR                  5       $ )zP
Returns a human-readable string representation of the given amount
of seconds.
<    ))rD   )dQ )h  )mrM   )sr   rU    )strintstrip)secondshide_secondsoutputperiodperiod_secondss        r1   format_secondsr_   _   sw    
 "}7|F# $lv}c#g6788FFcMF.G# <<>    c                    [        US5      nSnU nS H_  nU(       a  US:X  a  US:  a    OK[        X-  5      nUS:  a!  U[        U5      R                  S5      S-   -  nOX:  d  XE:  a  US	-  nX-  n Ma     UR	                  S5      $ )
NrQ   rN   )rO   rQ   rS   rM   r   r   rM   r   r   :z00:)maxrX   rW   zfillr7   )rZ   startr[   r\   total_secondsr^   actual_period_values          r1   format_seconds_altrh   v   s    uEFM Na/MB4F!'":;"c-.44Q7#==F#}'EeOF* ==r`   c                     [         R                  " 5       R                  5       U R                  5       :w  a  SR                  X!5      nOUnU R	                  U5      $ )zS
Returns a human-readable string representation of the countdown's target
datetime
z{} {})r   nowdateformatstrftime)targettime_formatdate_formatfmts       r1   format_targetrr      sC    
 ||~-nn[6??3r`   c                 0   ^  [        T 5      U 4S j5       nU$ )z:
Makes the decorated function exit with code 1 on CTRL+C.
c                  L   >  T" U 0 UD6$ ! [          a    [        S5         g f = f)Nr   )KeyboardInterruptr   )argskwargsfuncs     r1   wrappergraceful_ctrlc.<locals>.wrapper   s.    	(((  	G	s    ##r   )rx   ry   s   ` r1   graceful_ctrlcr{      s"     4[ 
 Nr`   aeAeoeOeueUess)   ä   Ä   ö   Ö   ü   Ü   ßc                    [         R                  5        H  u  pU R                  X5      n M     SR                  [        R
                  " SU 5       Vs/ s H!  n[        R                  " U5      S:w  d  M  UPM#     sn5      $ s  snf )NrN   NFDMn)NORMALIZE_TEXT_MAPitemsreplacejoinunicodedata	normalizecategory)	input_strcharreplacementcs       r1   normalize_textr      sy    /557%%d8	 877))%; 	*;q			a	 D	( 
; 	* 	*s   B5Bc                    U R                  5       R                  S5      n[        [        [        U5      5      n[	        U5      n[        X5      n[        X%5      nSn[        X%-
  S-  5      nX%-
  U-
  n[        X-
  S-  5      n	XgSU-  S-   -  -  nU H$  n
XiS-  U
-   SX-
  [	        U
5      -
  -  -   S-   -  nM&     XhSU-  S-   -  -  nU$ )zN
Adds whitespace to text to center it within a frame of the given
dimensions.
r4   rN   r   rV   )r7   r9   rc   mapr8   rX   )r>   rE   rD   input_lineslongest_input_linenumber_of_input_linesr\   padding_toppadding_bottompadding_leftrJ   s              r1   r6   r6      s    
 ++-%%d+KSk23,A"AA%AFq0A56K.<N.!34L
S1Wt^,,F$t+cQ5ED	5Q.RRUYYY 
a$//FMr`   c                 
   [        U 5      n[        R                  " 5       nU(       a   [        R                  " 5       [        US9-   nOYU R	                  5       (       a)  [        R                  " 5       [        [        U 5      S9-   nO [        U 5      nUR                  SS9n UR                  [        R                  " 5       S9R                  SS9nX#4$ !   [        SR                  U 5      5      e= f! [         a     X#4$ f = f)z,
Parse a string describing a point in time.
rZ   zUnable to parse '{}'r   microsecondr   N)tzinfo)parse_timedeltar   rj   r   isdigitrX   r   
ValueErrorrl   r   
astimezoner   tzlocal)timestrtimedelta_secs
sync_startrn   s       r1   parse_timestrr      s     %W-NJ)N"CC			)CL"AA	E7^F  ''A'6
""bjjl"3;;4;H #	E3::7CDD  s   C "/C3 C03
DDc                 `   [         R                  U 5      nU(       d  g0 nUR                  5       R                  5        H  u  p4U(       d  M  [	        U5      X#'   M     S H+  u  pVXR;   d  M  UR                  SS5      X%   U-  -   US'   X%	 M-     [	        [        S0 UD6R                  5       5      $ )z-
Parse a string describing a period of time.
N))days   )yearsi>"  hoursr    )TIMEDELTA_REGEXmatch	groupdictr   rX   getr   rf   )deltastrmatches
componentsnamevaluer]   r   s          r1   r   r      s     ##H-GJ((*0025"5zJ 3 9",..!"<","4u"<#=Jw"	 9
 y&:&44677r`   c                     U(       a  U R                   (       a  g [        R                  " [        5        U R	                  5         g )N)resilient_parsingclickechoVERSIONr   ctxparamr   s      r1   print_versionr     s%    C))	JJwHHJr`   c                 h   U(       a  [         R                  R                  U5      (       a%  [        R                  " SR                  U5      5      e[         R                  " [        [        U5      5      [         R                  5      (       d%  [        R                  " SR                  U5      5      eU$ )NzFile already exists: {}zUnable to write file: {})
ospathexistsr   BadParameterrl   accessr   r
   W_OKr   s      r1   verify_outfiler     su    77>>%  $$%>%E%Ee%LMMyy0"''::$$%?%F%Fu%MNNLr`   Tc                     [        U5      u  nnU(       a  U
(       a  [        R                  " S5      e[        U 5      u  nnn[        US9nU(       d  SnS nU
(       a1  S H+  n[        R                  R                  U5      (       d  M)  Un  O   U
(       d  U(       a  U=(       d    Sn[        U UUU4[        S9n U R                  5         [        [        U[        R                   " 5       -
  R#                  5       5      5      =n!n" U"S:  d  U(       d  U(       Ga.  U R%                  5       S	   Ul        U(       a%  [        R                   " 5       R)                  U5      n#OU(       a  [+        U"U!US
9n#O
[-        U"US
9n#U"S:  Ga)  U   U(       dG  [        R.                  " [0        R2                  " 5       SR	                  U#5      R5                  5       5        U(       a6  [7        US5       n$U$R/                  SR	                  U#U"5      5        S S S 5        U R9                  5         U	(       a  [;        UUUS9OS n%U#n&U(       a  US-   U&-   n&U	(       a  U&S-   U%-   n& [=        U U(       a  U#OUR?                  U#5      U"U::  a  S	OSU&U(       d  U(       d  UOUR?                  U5      U%US9  S S S 5        S n'U"U::  a  [C        U"5      n'OUU"S;   a  SR	                  UU"5      n'O<U"S;   a  SR	                  U[        U"S-  5      5      n'OU"S:X  a  SR	                  U5      n'U'(       d  U(       a`  U(       a-  [E        UR	                  U"U'=(       d    S5      [F        [H        SS9  U(       a%  [E        USU
U'RK                  5       /[F        [H        S9  U[M        S	S9-   n(U(       a  U(RO                  SS9n([        R                   " 5       n)U(U):  Ga  U"S:  Ga   URQ                  SU(U)-
  R#                  5       5      n*U*[T        :X  a  [        R                   " 5       n+U   U R9                  5          [=        U U(       a  U#OUR?                  U#5      SU#U(       d  U(       d  UOUR?                  U5      US 9  S S S 5        URQ                  5       n*[        R                   " 5       U+-
  n,UU,-  nUU,-  nU*[V        :X  a  GOU*[T        :X  a  GM  U*[X        :X  aI  [        U5      u  nn[        [        U[        R                   " 5       -
  R#                  5       5      5      n"GM  U*[Z        :X  a  U[M        S!S9-  nO8U*[\        :X  a  U[M        S!S9-  nO!U*[^        :X  a  GM?  U*[`        :X  a
  U	(       + n	GMS  U(n[        [        U[        R                   " 5       -
  R#                  5       5      5      n"U"S::  Ga  U(       d   U   [b        Rd                  " 5         S S S 5        U(       a  U(       d  [g        U5      nU(       a?  [7        US5       n$U$R/                  SR	                  U(       a  UOS"S5      5        S S S 5        Un-U(       a  U(       d   UR?                  U5      n-U(       d  U(       Ga  U(       a  S	OSn.S#n/Sn0Sn1Sn2 U   [        R.                  " [0        R2                  " 5       SR	                  U0(       a  S$OS%5      R5                  5       5        U(       a  [=        U U-U0(       a  U.OS&UUS'9  O[=        U SU0(       a  U.OS&S(9  S S S 5        U(       a  U0(       + n0 [        R                   " 5       n3URQ                  SS)U2-   5      n*Sn2[        R                   " 5       n4U*[T        :X  a8  [        R                   " 5       n+URQ                  5       n*U4W3-
  R#                  5       n2U*[V        :X  a   U   U(       d8  [        R.                  " [0        R2                  " 5       S*R5                  5       5        U(       a  [        Rh                  " U5        S S S 5        URk                  5         U Rm                  5         g U*[X        :X  aI  [        U5      u  nn[        [        U[        R                   " 5       -
  R#                  5       5      5      n"Sn/OU1U4W3-
  R#                  5       -  n1U(       a  U1[o        U5      :  a   U   U(       d8  [        R.                  " [0        R2                  " 5       S*R5                  5       5        U(       a  [        Rh                  " U5        S S S 5        URk                  5         U Rm                  5         g GM  U/(       a  GM&  U"S:  a  GM  U(       a  GM$  U(       a  GM.  U   U(       d8  [        R.                  " [0        R2                  " 5       S*R5                  5       5        U(       a  [        Rh                  " U5        S S S 5        URk                  5         U Rm                  5         g ! [         a&    [        R                  " SR	                  U5      5      ef = f! , (       d  f       GN= f! [@         a    [=        U S5         GNf = f! , (       d  f       GN= f! [R         a    S n* GNhf = f! [@         a    [=        U S5         GNf = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! [@         a    Sn- GNxf = f! , (       d  f       GN= f! [R         a    S n* GNf = f! Sn2[        R                   " 5       n4f = f! , (       d  f       GN= f! , (       d  f       GN"= f! , (       d  f       GN= f! U   U(       d8  [        R.                  " [0        R2                  " 5       S*R5                  5       5        U(       a  [        Rh                  " U5        S S S 5        O! , (       d  f       O= fURk                  5         U Rm                  5         f = f)+NzUnable to parse TIME value '{}'z---exec-cmd and --voice are mutually exclusivefontr$   )z/usr/bin/sayz/usr/bin/espeakz/usr/bin/espeak-ngrN   rv   rn   r   r   r[   ]2;{0}w{}
{}
)ro   rp   r4   )r?   r@   rA   rC   rB   E)r    
         rM   {} {} seconds),  X    {} {} minutesrM   rS   {} one hourTr   r   shell-v)r   r   r   r   r   r?   r@   rA   rB   r   DONEF/\r   )r?   r@   rB   )r?   g      ?]2;)8r   r   r   r   rl   r2   r   r   r   r   r   input_thread_bodyre   rX   r   r   rj   rf   r5   widthrm   rh   r_   writer   filenoencodeopeneraserr   rK   
renderTextr   rW   r   r   r   rY   r   r   r   r   INPUT_PAUSE
INPUT_EXITINPUT_RESET
INPUT_PLUSINPUT_MINUS	INPUT_LAP	INPUT_ENDr%   beepr   removesetr   float)5r-   
alt_formatr   blinkcritical
quit_afterr>   timespecrA   rC   voicevoice_prefixexec_cmdoutfileno_bell
no_secondsno_text_magic	no_figletrB   no_window_titletimero   rp   rw   r   rn   r.   r/   r0   figlet	voice_cmdcmdinput_threadseconds_totalseconds_leftcountdown_textfend_textr@   annunciationsleep_targetrj   input_actionpause_starttime_pausedrendered_text
base_colorblink_resetflipsleptextra_sleepsleep_start	sleep_ends5                                                        r1   	countdownr!    s<	   6U*84
F E  !PQQ+0=(KjFILCww~~c""	 M #)rk:{; L #&tVhlln-D,S,S,U'V#WWMLKQ%4!??,Q/FL!)!8!8!E!3 -j"J "0:!Va *2B2I2I.2Y2`2`2bc!'3/1GGJ$5$5nl$ST 0LLN
 	  -$/$/  #'	 
  .H#(4<(#:#+d?X#=/!".7NV=N=N~=^'3x'?!Q%-+4E%vGXGXY^G_ (/A% !:  Lx'"<0!44.55lLQ!11.55lCWYHYDZ[%,33LAx l6HbI&%"	 "D%1C1C1EF&% &	!(<<L+333B ,,.Cc!lQ&6(#.??4,:L9[9[9]#^L  ;."*,,.K$
3% &2;ARARSaAb&')7/8e6K\K\]bKc3E % $/??#4L"*,,.;">K+-Jk)F:-![0![0)6x)@&J#&tVhlln-D,S,S,U'V#WL!Z/i33F![0i33F!Y.!Y.!'C%JtVhlln%<$K$K$MNOLq  $ % )$/Dgs+q
 1 1$$FA NO , !%	+(.(9(9$(? D&+J"'KDE"#K(HHV]]_6F6M6MUYc_c6d6k6k6mn# )$*$18<*!-17I!" !*&"$JTU V ) !'+8D7*2,,.K+6??4{AR+SL +,K(0I';6*2,,.K+6??+<L+4{+B*Q*Q*SK':5" "-*>*>*@A		'"	 
 	# *[81>x1H.J+.tVhlln5L4[4[4]/^+_L*.K!)k"9!H!H!JJ%%53D*D" "-*>*>*@A		'"	 
 	_ L # E Q%%44H "-*>*>*@A		'"	 
 	K  U  !B!I!I(!STTUR 0/. * /!&#./7 ![T  (#'L(  . 3%fc23 %V % ,+ * +(*+ )["  % 0+/L0 +,K(0I& [[[[[["-*>*>*@A		'"	 [[
 	s  g A?l4 A"h2&"hAh2Ah#D$l4 #i +!l4 i4Ai#D?l4 "j84l4 ,+jl4 0j* %l4 &Bj=)l4  *k *A#l4 Ak>A?l4 All4 4l4 >l4 
Al"0h 
h	h2h/+h2.h//h22
i<l4 il4 il4 i1-i40i11i44
j>l4 
jl4 
j'"l4 *j:6l4 9j::l4 =
kl4 kk" kk" "k;;l4 >
l
l"
l14o7An	o
n+'(oc           
      8   [        U 5      u  nnn[        US9nU(       d  SnU	(       a  U(       d   UR                  U	5      n	[	        U UUU4[
        S9nUR                  5          [        R                  " 5       nS nSn/ nUb  U[        U5      :  Ga  U R                  5       S   Ul        U(       a%  [        R                  " 5       R                  U5      nOU(       a  [        USUS9nO
[        UUS9nU   U(       dG  [        R                   " ["        R$                  " 5       SR'                  U5      R)                  5       5        U
(       a6  [+        U
S	5       nUR!                  S
R'                  UU5      5        S S S 5        U R-                  5          [/        U U(       a  UOUR                  U5      UU	US9  S S S 5        U(       a  U=(       d    SnSnUU::  a  US:  a  [1        U5      nOUS;   a  SR'                  UU5      nOjUS;   a  SR'                  U[        US-  5      5      nOEUS:X  a  SR'                  U5      nO-US-  S:X  a$  US:  a  SR'                  U[        US-  5      5      n[3        UR'                  UU5      [4        [6        SS9  U[9        US-   S9-   nU(       a  UR;                  SS9n[        R                  " 5       nUU:  GaD   UR=                  SUU-
  R?                  5       5      nU[B        :X  Ga  [        R                  " 5       nU   U(       dG  [        R                   " ["        R$                  " 5       SR'                  U5      R)                  5       5        U
(       a6  [+        U
S	5       nUR!                  S
R'                  UU5      5        S S S 5        U R-                  5          [/        U U(       a  UOUR                  U5      SUU	US9  S S S 5        UR=                  5       nU[B        :X  a  U[        R                  " 5       U-
  -  nS nU[D        :X  a&  U(       a  U[        R                  " 5       U-
  -  nS nGOJU[F        :X  a  [        R                  " 5       n/ nSnOU[H        :X  a  U[9        SS9-  nOU[J        :X  a  U[9        SS9-  nOzU[L        :X  ap  U(       a  U[        R                  " 5       U-
  -  nS nURO                  [        R                  " 5       U-
  R?                  5       5        [        R                  " 5       nSnU(       a0  [Q        [        R                  " 5       U-
  R?                  5       5      nO/[        [        R                  " 5       U-
  R?                  5       5      nUc  GM  U[        U5      :  a  GM  U   U(       d8  [        R                   " ["        R$                  " 5       SR)                  5       5        U
(       a  [        RR                  " U
5        S S S 5        URU                  5         URW                  5         [        R                  " 5       U-
  R?                  5       U4$ ! [         a    Sn	 GNf = f! , (       d  f       GN= f! [         a    [/        U S5         GNf = f! , (       d  f       GN= f! [@         a    S n GNf = f! , (       d  f       GN= f! [         a    [/        U S5         GNf = f! , (       d  f       GN= f! , (       d  f       N= f! U   U(       d8  [        R                   " ["        R$                  " 5       SR)                  5       5        U
(       a  [        RR                  " U
5        S S S 5        O! , (       d  f       O= fURU                  5         URW                  5         f = f)Nr   r$   rN   r   r   r   r   r   r   r   )r@   rA   rB   r   )r    r   r   r   (   2   rM   r   )x      r   r   r   r   rM   rS   r   z{} {} hoursTr   r   r   r   r   r   r   ),r2   r   r   r   r   r   re   r   rj   rX   r5   r   rm   rh   r_   r   r   r   r   rl   r   r   r   rK   rW   r   r   r   r   r   r   rf   r   r   r   r   r   r   r   appendr   r   r   r   )r-   r   r   r  r   r  rB   r  r   rA   r  r	  r
  ro   r  rw   r.   r/   r0   r  r  r   r  seconds_elapsedlapsstopwatch_textr  r  r  rj   r  s                                  r1   	stopwatchr+    s   & ,1=(KjFY	%%e,E k:{; L q\\^
 Oc*o$E!??,Q/FL!)!8!8!E!3OQU_!`!/j!Y&HHV]]_.>.E.En.U.\.\.^_gs+q
 1 1./ RS ,	+*39J9J>9Z!/#+= " +1r!"h.?Q3F#&#7L$(CC#2#9#9,#XL$(BB#2#9#9,O^`L`Ha#bL$,#0#7#7#EL$t+q0_q5H#0#7#7c/\`J`Fa#bLOOO\B"!	 &	/A:M(NNL+333B,,.Cc!(#.??4,:L9[9[9]#^L  ;."*,,.K$.HHV]]_6F6M6Mn6]6d6d6fg"!%gs!3q !
(9(9./(Z [ "4
3% &2;ARARSaAb&')7&+3E %$ $/??#4L#{2"x||~'CD
&*:-""x||~'CD
&*![0!)JD&'O!Z/)B"77J![0)B"77J!Y.""x||~'CD
&*KK*!< K K MN!)J&'O"&(C'R'R'T"U"%x||~
'B&Q&Q&S"TI  Oc*o$EL "-*>*>*@A		'"	 
 	LLNZ'668$>>w  	E	4 ,+ & +fc*+ V  (#'L( "4!3  . 3%fc23! %^ [["-*>*>*@A		'"	 [[
 	s  Y %B[> 6A"Z"Y:Z%Y*8D[> #Z 8"[> A"[<"Z,[7&Z>F$[> [> A[-YY
Y'	"Z*Z ZZZ
Z[> Z)%[> (Z))[> ,
Z;	6[>[[[[
[*%[> -
[;>^A]'	^'
]51(^c                 j   UR                  5       (       Gd   U   U R                  5       nS S S 5        WS;   a  UR                  [        5        OUS:X  a  UR                  [        5        OUS;   a  UR                  [
        5        OoUS;   a  UR                  [        5        OSUS;   a  UR                  [        5        O7US:X  a  UR                  [        5        OUS:X  a  UR                  [        5        [        S5        UR                  5       (       d  GM  g g ! , (       d  f       N= f!   S n N= f)	N)qQrV   )er   )rR)lL+-g{Gz?)is_setgetkeyputr   r   r   r   r   r   r   r   )r-   r/   r0   r.   keys        r1   r   r     s    !!	mmo  *OOJ'CZOOK(JOOI&JOOK(JOOI&CZOOJ'CZOOK(d) !!	Cs'   D, DD, 
D)%D, )D, ,D2z-az--alt-formatzUse colon-separated time format)defaultis_flaghelpz-bz--blinkz"Flash terminal at end of countdownz-Bz	--no-bellz,Don't ring terminal bell at end of countdownz-cz
--criticalNzeDraw final N seconds in red and announce them individually with --voice or --exec-cmd (defaults to 3))r:  metavarr<  z-ez--endz-Display target datetime of unpaused countdownz-fz--fontFONTz/Choose from http://www.figlet.org/examples.htmlz-pz--voice-prefixTEXTzVAdd TEXT to the beginning of --voice and --exec annunciations (except per-second ones))r>  r<  z-qz--quit-afterzYQuit N seconds after countdown (use with -b or -t) or terminate stopwatch after N secondsz-sz--no-secondszVDon't show seconds (except for last minute of countdown and first minute of stopwatch)z-tz--textz#Text to display at end of countdown)r<  z-Tz--titlez-Text to display on top of countdown/stopwatchz-Wz--no-window-titlez7Don't update terminal title with remaining/elapsed timer   z--voiceVOICEzSpoken countdown (at fixed intervals with per-second annunciations starting at --critical; requires `espeak` on Linux or `say` on macOS; choose VOICE from `say -v '?'` or `espeak --voices`)z-oz	--outfilePATHz/File to write current remaining/elapsed time to)r>  callbackr<  z
--exec-cmdCMDa  Runs CMD every second. '{0}' and '{1}' in CMD will be replaced with the remaining/elapsed number of seconds and a more sparse annunciation as in --voice, respectively. For example, to get a callout at five seconds only, use: --exec-cmd "if [ '{0}' == '5' ]; then say -v Alex {1}; fi"z--no-figletzDon't use ASCII art for displayz--no-figlet-y-offsetz:Vertical offset within the terminal (only for --no-figlet))r:  r<  z--no-text-magicz7Don't try to replace non-ASCII characters (use with -t)z	--versionzShow version and exit)r;  rC  expose_valueis_eagerr<  z-zz--timez0Show current time instead of countdown/stopwatchz-Zz--time-formatz@Format for --time/--end (defaults to "{}", ignores --no-seconds)z-Dz--date-formatz#Format for --end (defaults to "{}")r   z[TIME])r>  requiredc                     U S   c  U S   (       a	  [         SS O[         U S'   U S   c	  [        U S'   U S   (       a  [        R                  " [        40 U D6  g[        R                  " [
        40 U D6u  p[        U5       HA  u  p4[        R                  " SR                  U[        [        U5      5      US-   5      5        MC     U(       a  [        R                  " SR                  U[        [        U5      5      [        U5      S-   5      5        UR                  U5        [        U5      nU[        U5      -  n[        R                  " S	R                  U[        [        U5      5      5      5        [        R                  " S
R                  U[        [        U5      5      5      5        O8[        R                  " S
R                  U[        [        U5      5      5      5        [        R                  " 5         g)a  

Starts a countdown to TIME. Example values for TIME:
10, '1h 5m 30s', '12:00', '2020-01-01', '2020-01-01 14:00 UTC'.

If TIME is not given, termdown will operate in stopwatch mode
and count forward.

Hotkeys:
    E       Show end time (countdown mode only)
    L       Lap (stopwatch mode only)
    R       Reset
    SPACE   Pause (will delay absolute TIME)
    +       Plus (will add 10 seconds)
    -       Minus (will subtract 10 seconds)
    Q       Quit
ro   Nr  rp   r   z{:.3f}	{}	lap {}
r   z{:.3f}	{}	lap avg
z{:.3f}	{}	total
)DEFAULT_TIME_FORMATDEFAULT_DATE_FORMATr%   ry   r!  r+  r:   r   r   rl   r_   rX   r8   r'  sumflush)rw   r(  r)  	lap_indexlap_timerf   average_secondss          r1   mainrQ    s   X m$,2<,@#CR(FY 	}m$ 3}jy+F+ &y CF C#,T?ILL/66s8}-A  $3 LL/66s?34D	A 
 KK(IM+c$i7OLL077s?34  LL.55s=12 
 LL.55s?34  	r`   __main__)r   NNr$   N)F)Ir   r%   r   r   	functoolsr   mathr   queuer   r	   rer   os.pathr
   r   
subprocessr   r   r   sysr   r   r   	threadingr   r   r   r
  r   r   r   dateutilr   dateutil.parserr   pyfigletr   r   DEFAULT_FONTrJ  rK  compiler   r   r   r   r   r   r   r   r2   rK   r_   rh   rr   r{   r   r   r6   r   r   r   r   r!  r+  r   commandoptionrl   argumentrQ  __name__r   r`   r1   <module>rd     sx  
  (    	 	 $ - - $ $ ) )     ! +     ** 7 8
 
	
	2*B..	 
 





 0 D8&  	
	

	/A AH  	
	U? U?p0 dNE446dIud79dKACdL!S34 dGUDBDdHlFDFd$f./ dNC<= dNE445 dH8:dIBDd'LNdIwJK
 dK.DFlEWX
 mUD46$bOQLNk4- 4*, dHeTEGdOT++162E+FH dOT:AABUVX
Hu=: >XHG,NQ6XFKND:5=/FD4C96 t:z zF r`   