
    VhX                        d dl mZ 	 d dlZdad dlm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 d dlmZmZ d dlm Z! d dl"m#Z#m$Z$m%Z%m&Z& d d	l'm(Z(m)Z) d d
l*m+Z+ d dl,m-Z- d dl.m/Z0 d dl1m2Z2 d dl3m4Z4 ejj                  rd dl6m7Z7  ejp                  d      Z9e
jt                  jw                  e
jx                  j{                  d            Z>e
j~                  fe>j                  _A        e
j                  e
j                  fe>j                  _A        d e
j                  e
j                        dz  dz
  z  dz
  ZFdaGdaHd/dZI G d dej                        ZK G d dej                        ZLdZM eNe!d      rJe!j                  ZPePr8ej                  j                  eP      r ej                  ePej                        s6 ej                  ej                  j                  eP      ej                        rej                  j                  eP      s ej                  ePej                  d        ej                  d      ZMej                  j                  D ]7  Z[e[j                   eK eNe!d g                    e[j                   eL              9 n1 e]d!eP d"ej                  #       n e]d$eP d%ej                  #       e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  e!j                  ej                  i
Zld&Zmd0d'Znej                  fd1d(Zpd2d)Zqd3d*Zrd4d+Zs G d, d-e2.      Zty# e$ r daY w xY w)5    )annotationsNTFwraps)unpackpack)	constants)AnsibleErrorAnsibleAssertionErrorAnsiblePromptInterruptAnsiblePromptNoninteractive)to_bytesto_text)	text_type)stringc)context)	Singleton)wrap_var)
FinalQueuePc            s   [Kc                   t        | t              st        dt        |       z        	 t        j                  | t              }|dk7  r|S d}d}| D ]8  }|dz  }|dv r|dz  }|dz  }	 t        j                  |      }|dk(  rd}||z  }: |dk(  r|rt        d| z        |dk\  r|S dS # t        j                  $ r d}Y }w xY w# t        j                  $ r d}Y ^w xY w)a3  Function that utilizes ``wcswidth`` or ``wcwidth`` to determine the
    number of columns used to display a text string.

    We try first with ``wcswidth``, and fallback to iterating each
    character and using wcwidth individually, falling back to a value of 0
    for non-printable wide characters.
    z$get_text_width requires text, not %sr   r   )   z3get_text_width could not calculate text width of %r)
isinstancer   	TypeErrortype_LIBCwcswidth_MAX_INTctypesArgumentErrorwcwidthEnvironmentError)textwidthcounterr   ws        E/home/dcms/DCMS/lib/python3.12/site-packages/ansible/utils/display.pyget_text_widthr0   L   s    dI&>dKLLtX. {EG 144 QJEqLG	a A 7 A
), zgADH
 	

 QJ5%A%G  * ## 	A	s#   B) (C)C CCCc                      e Zd Zd Zd Zy)FilterBlackListc                ^    |D cg c]  }t        j                  |       c}| _        y c c}w N)loggingFilter	blacklist)selfr7   names      r/   __init__zFilterBlackList.__init__   s     ;DE4'...EEs   *c                B    t        fd| j                  D               S )Nc              3  @   K   | ]  }|j                          y wr4   )filter).0frecords     r/   	<genexpr>z)FilterBlackList.filter.<locals>.<genexpr>   s     @Aqxx'@s   )anyr7   r8   r@   s    `r/   r=   zFilterBlackList.filter   s    @@@@@    N)__name__
__module____qualname__r:   r=    rD   r/   r2   r2      s    FArD   r2   c                  ~    e Zd ZdZ	  ej
                         Zd Z
y# e$ r d ej                         z  ZY d Z
yw xY w)FilterUserInjectorz
    This is a filter which injects the current user as the 'user' attribute on each record. We need to add this filter
    to all logger handlers so that 3rd party libraries won't print an exception due to user not being defined.
    zuid=%sc                .    t         j                  |_        yNT)rJ   usernameuserrC   s     r/   r=   zFilterUserInjector.filter   s    (11rD   N)rE   rF   rG   __doc__getpassgetuserrM   KeyErrorosgetuidr=   rH   rD   r/   rJ   rJ      sG    
*"7??$
	  *ibiik)	*s    <<rJ   DEFAULT_LOG_PATHzJ%(asctime)s p=%(process)d u=%(user)s n=%(name)s %(levelname)s| %(message)s)filenamelevelformatansibleDEFAULT_LOG_FILTERz4[WARNING]: DEFAULT_LOG_PATH can not be a directory 'z', aborting)filez[WARNING]: log file at 'z5' is not writeable and we cannot create it, aborting
)s   /usr/bin/cowsays   /usr/games/cowsays   /usr/local/bin/cowsays   /opt/local/bin/cowsayc                    d }| j                   } ||j                  |      |_         ||j                  |      |_        y )Nc                2     t                fd       }|S )Nc                 D    5   | i |cd d d        S # 1 sw Y   y xY wr4   rH   )argskwargsr?   locks     r/   locking_wrapperzL_synchronize_textiowrapper.<locals>._wrap_with_lock.<locals>.locking_wrapper   s(     *$)&)* * *s   r   )r?   ra   rb   s   `` r/   _wrap_with_lockz3_synchronize_textiowrapper.<locals>._wrap_with_lock   s!    	q	* 
	* rD   )bufferwriteflush)tiora   rc   rd   s       r/   _synchronize_textiowrapperrh      s8     ZZF #6<<6FL"6<<6FLrD   c                   t        j                  |       }|t        j                     t         j                  t         j
                  z  t         j                  z  t         j                  z  t         j                  z   z  |t        j                  <   |t        j                     t         j                   z  |t        j                  <   |t        j                     t         j                  t         j                  z   z  |t        j                  <   |t        j                     t         j                  z  |t        j                  <   |t        j                     t         j                   t         j"                  z  t         j$                  z  t         j&                  z   z  |t        j                  <   d|t        j(                     t         j*                  <   d|t        j(                     t         j,                  <   t        j.                  | ||       y)a  Put terminal into a raw mode.

    Copied from ``tty`` from CPython 3.11.0, and modified to not remove OPOST from OFLAG

    OPOST is kept to prevent an issue with multi line prompts from being corrupted now that display
    is proxied via the queue from forks. The problem is a race condition, in that we proxy the display
    over the fork, but before it can be displayed, this plugin will have continued executing, potentially
    setting stdout and stdin to raw which remove output post processing that commonly converts NL to CRLF
    r   r   N)termios	tcgetattrttyIFLAGBRKINTICRNLINPCKISTRIPIXONOFLAGOPOSTCFLAGCSIZEPARENBCS8LFLAGECHOICANONIEXTENISIGCCVMINVTIME	tcsetattr)fdwhenmodes      r/   setrawr      sE    R D399o'..7==*H7==*X[b[i[i*ilslxlx*x(yyDO399o'--(88DO399o'--'..*H(IIDO399o3DO399o',,*G'..*X[b[g[g*g(hhDO!"DL"#DLb$%rD   c                d    | j                  dt        z         | j                  dt        z         y )Ns   [%s)re   MOVE_TO_BOLCLEAR_TO_EOL)stdouts    r/   
clear_liner      s$    
LLk)*
LLl*+rD   c                   t        |        t        j                  |      rt        |       |rTt        j                  |       }|d   t        j
                  z  |d<   t        j                  | t        j                  |       y y )N   )r   rS   isattyrj   rk   rz   r   TCSANOW)stdin_fd	stdout_fdsecondsechonew_settingss        r/   setup_promptr      sd    
8 
yyy((2&q/GLL8Q(GOO\B rD   c                    	 t        j                          t        j                  d      xs t        at        j                  d      xs t        ay # t         j
                  t        t        j                  f$ r da	Y y w xY w)NcrelF)
curses	setuptermtigetstrr   r   errorr"   ioUnsupportedOperation
HAS_CURSESrH   rD   r/   r   r      sb    
= ood+:{t,< LL)R%<%<= 
s   A *A>=A>c                     e Zd Zd%d&dZd'dZd(dZd)dZe	 	 	 	 d*d       Ze	 	 	 	 d+d       Z	e	 	 	 	 d+d       Z
e	 	 	 	 	 	 d,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-d	       Zd.d/d
Zd0d1dZd0d1dZd0d1dZd0d1dZd0d1dZd0d1dZd2d3dZed2d3d       Zed2d3d       Ze	ed0d1d              Z	 	 	 	 d4	 	 	 	 	 	 	 	 	 	 	 d5dZe	 	 	 	 d4	 	 	 	 	 	 	 	 	 	 	 d6d       Zed7d8d       Zed9d       Zed:d;d       Zed0d<d       Zed=d>d       Zed7d?d       Z	 	 	 	 	 	 	 	 d@	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAdZd)dZ 	 	 	 	 dB	 	 	 	 	 	 	 	 	 	 	 dCdZ!	 	 	 	 dB	 	 	 	 	 	 	 	 	 dDd Z"e#dEd!       Z$e#dFd"       Z%e#dGd#       Z&e#dFd$       Z'y)HDisplayc                   d | _         t        j                         | _        d | _        || _        t        j                  || _        nt        |t        j                        | _        i | _
        i | _        i | _        d | _        t        j                  | _        | j!                          | j                  r	 t#        j$                  | j                  dgt"        j&                  t"        j&                        }|j)                         \  }}|j*                  rt,        |j/                         D ch c]  }t1        |       c}| _        t        j4                  rPt7        t        j4                        r7t9        t        j4                        j;                  | j2                        | _        | j=                          	 t?        t@        jB                  | j                         t?        t@        jD                  | j                         tI        jJ                  d| jL                         	 t@        jB                  jO                  d       t@        jD                  jO                  d       d| _(        y c c}w # t,        $ r
 d | _        Y w xY w# t,        $ r}| jG                  d|        Y d }~d }~ww xY w# t,        $ r%}| jG                  d|        Y d }~d| _(        y d }~ww xY w)Nz-lr   stderrz/failed to patch stdout/stderr for fork-safety: _replacing_warning_handlererrorszHfailed to reconfigure stdout/stderr with custom encoding error handler: F))_final_q	threadingRLock_lockcolumns	verbosityCLOG_VERBOSITYlog_verbositymax_deprecations_warns_errorsb_cowsayANSIBLE_COW_SELECTIONnoncowset_cowsay_info
subprocessPopenPIPEcommunicate
returncode	Exceptionsplitr   cows_availableANSIBLE_COW_ACCEPTLISTrB   setintersection_set_column_widthrh   sysr   r   warningcodecsregister_errorr   reconfiguresetup_curses)r8   r   cmdouterrr   exs          r/   r:   zDisplay.__init__  s5   +/ __&
"??"!*D!$Y!@D .0&(')&*--==
% &&t'<Z__]g]l]lm __.
c>>#OEHYY[0Q0Q#++A4L4L0M*-a.F.F*G*T*TUYUhUh*iD'
 	 	Q&szz4::>&szz4::> 	:D<[<[\	jJJ""*F"GJJ""*F"G "/ 1R  % $%  	QLLJ2$OPP	Q  	jLLcdfcghii!	jsX   4A7I, +I'=A(I, 6AJ A J, 'I, ,I?>I?	J)J$$J),	K5KKc                D    | j                  dd       d|j                  fS )Nz{Non UTF-8 encoded data replaced with "?" while displaying text to stdout/stderr, this is temporary and will become an errorz2.18)version?)
deprecatedend)r8   	exceptions     r/   r   z"Display._replacing_warning_handlerD  s/     	 J 	 	
 IMM!!rD   c                P    t        j                         t        d      || _        y)zSet the _final_q on Display, so that we know to proxy display over the queue
        instead of directly writing to stdout/stderr from forks

        This is only needed in ansible.executor.process.worker:WorkerProcess._run
        Nz%queue cannot be set in parent process)multiprocessing_contextparent_processRuntimeErrorr   )r8   queues     r/   	set_queuezDisplay.set_queueM  s&     #113;FGGrD   c                    t         j                  ry t         j                  rt         j                  | _        y t        D ])  }t
        j                  j                  |      s#|| _        + y r4   )r   ANSIBLE_NOCOWSANSIBLE_COW_PATHr   b_COW_PATHSrS   pathexists)r8   
b_cow_paths     r/   r   zDisplay.set_cowsay_infoW  sJ    ..DM) /
77>>*-$.DM/rD   c                0     t               d fd       }|S )Nc                    | j                   r* | j                   j                  j                  g|i |S  | g|i |S r4   )r   send_displayrE   )r8   r_   r`   funcs      r/   wrapperzDisplay._proxy.<locals>.wrapperf  sF    }} 2t}}11$--Q$Q&QQ.t.v..rD   )r_   zP.argsr`   zP.kwargsreturnNoner   r   r   s   ` r/   _proxyzDisplay._proxyb  s"     
t	/ 
	/ rD   c                2     t               dd fd       }|S )zQThis method ensures that debug is enabled before delegating to the proxy
        c                <    t         j                  sy  | ||      S )N)host)r   DEFAULT_DEBUG)r8   msgr   r   s      r/   r   z%Display._meets_debug.<locals>.wrapperv  s    ??c--rD   r4   r   strr   
str | Noner   r   r   r   s   ` r/   _meets_debugzDisplay._meets_debugp  s"     
t	. 
	. rD   c                2     t               dd fd       }|S )zThis method ensures the verbosity has been met before delegating to the proxy

        Currently this method is unused, and the logic is handled directly in ``verbose``
        c                <    | j                   |kD  r | |||      S y Nr   caplevel)r   )r8   r   r   r   r   s       r/   r   z)Display._meets_verbosity.<locals>.wrapper  s#    ~~(D#D8DDrD   NNr   r   r   r   r   intr   r   r   r   s   ` r/   _meets_verbosityzDisplay._meets_verbosity}  s"     
t	 
	 rD   Nc                   t        |t              s"t        d|j                  j                         |}|s{|j                  d      }	|	r|dd }
n|}
|rt        |
|      }
|	s|r|
dz   }
|st        j                  }nt        j                  }| j                  5  |j                  |
       ddd       t        r|s| j                  |||       yyy# 1 sw Y   'xY w)zy Display a message to the user

        Note: msg *must* be a unicode string to prevent UnicodeError tracebacks.
        z"Display message must be str, not: 
Nr   )r!   r   r"   	__class__rE   endswithr   r   r   r   r   re   logger_log)r8   r   colorr   screen_onlylog_onlynewliner   nocolorhas_newlinemsg2fileobjs               r/   displayzDisplay.display  s      #s#@AWAW@XYZZ,,u-K3BxtU+ge| **** $d#$  +IIguh/ &6!$ $s   CCc                   t         r|| j                  |kD  r|j                  d      }||dkD  rt        j                  }nN|dk(  rt        j
                  }n8|dk(  rt        j                  }n"|dk(  rt        j                  }n|r
	 t        |   }t         j                  |       y y y # t        $ r t        d|z        w xY w)Nr   r   r   z%Invalid color supplied to display: %s)r   r   lstripr5   INFOERRORWARNINGDEBUGcolor_to_log_levelrR   r
   log)r8   r   r  r   r  lvls         r/   r  zDisplay._log  s    x'4+=+=+H::d#D8a<llRmmRooRmma,U3C JJsD!+ ,I6    a/0WZ_0_``as   	B( (C c                *    | j                  ||d      S )Nr   r   verboser8   r   r   s      r/   vz	Display.v      ||CdQ|77rD   c                *    | j                  ||d      S )Nr   r   r  r  s      r/   vvz
Display.vv  r  rD   c                *    | j                  ||d      S )Nr   r   r  r  s      r/   vvvzDisplay.vvv  r  rD   c                *    | j                  ||d      S )Nr   r   r  r  s      r/   vvvvzDisplay.vvvv  r  rD   c                *    | j                  ||d      S )N   r   r  r  s      r/   vvvvvzDisplay.vvvvv  r  rD   c                *    | j                  ||d      S )N   r   r  r  s      r/   vvvvvvzDisplay.vvvvvv  r  rD   c                    | j                   |kD  r| j                  |||       | j                  | j                   kD  r%| j                  |kD  r| j                  |||       y y y r   )r   _verbose_displayr   _verbose_logr8   r   r   r   s       r/   r  zDisplay.verbose  s`    >>H$!!#D8!D.43E3E3Pcx@ 4Q.rD   c                    t         j                  }|#| j                  |t         j                  |       y | j                  d|d|t         j                  |       y )Nr  r   <> )r   VERBOSE_TO_STDERRr
  COLOR_VERBOSE)r8   r   r   r   	to_stderrs        r/   r)  zDisplay._verbose_display  sD    ''	<LLAOOILFLLdC0PYLZrD   c                Z    |d|d|}| j                  |t        j                  |       y )Nr.  r/  )r  r   r1  r+  s       r/   r*  zDisplay._verbose_log  s(     #S)C		#q1rD   c                    dt        j                         t        j                         fz  }|	|d| dz  }| j                  | d| t        j
                  d       y )Nz	%6d %0.5f []z: r  )r  r   )rS   getpidtimer
  r   COLOR_DEBUG)r8   r   r   prefixs       r/   debugzDisplay.debug
  sX     		TYY[994&l"Fxr#'q}}rJrD   c                d   |j                         }|r|d   dvr|dz  }|dk(  rd}|rdj                  |      }d}d}nd	j                  |      }d
}d}|rdj                  |      }	nd}	|rdj                  |      }
n|rdj                  |      }
nd}
dj                  d |||	|
|fD              }|S )z) used to print out a deprecation message.r   )!r   .r>  zansible.builtinzansible-corez[DEPRECATED]: {0}zThis feature was removedzPlease update your playbooks.z[DEPRECATION WARNING]: {0}zThis feature will be removedzZDeprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.zfrom {0} zin a release after {0}.zin version {0}.zin a future release. c              3  &   K   | ]	  }|s|  y wr4   rH   )r>   r?   s     r/   rA   z2Display.get_deprecation_message.<locals>.<genexpr>8  s     kaijks   )striprX   join)r8   r   r   removeddatecollection_nameheaderremoval_fragment	help_textfrom_fragmentr   message_texts               r/   get_deprecation_messagezDisplay.get_deprecation_message  s     iik3r7/13JC//,O(//4F97I188=F=tI&--o>MM,33D9D$++G4D)DxxkF4DmUY[d+ekkrD   c                x   |st         j                  sy | j                  |||||      }|rt        |      t	        j
                  || j                  d      }dj                  |      dz   }|| j                  vr@| j                  |j                         t         j                  d       d| j                  |<   y y )N)r   rD  rE  rF  F)drop_whitespacer   Tr-  r   )r   DEPRECATION_WARNINGSrL  r	   textwrapwrapr   rC  r   r
  rB  COLOR_DEPRECATE)r8   r   r   rD  rE  rF  rK  wrappeds           r/   r   zDisplay.deprecated<  s     q5533CRY`d  wF3  G|,,--dllERyy)D0t111LL++-Q5F5FtLT/0D|, 2rD   c                   |s:d|z  }t        j                  || j                        }dj                  |      dz   }nd|z  }|| j                  vr3| j                  |t        j                  dd       d| j                  |<   y y )Nz[WARNING]: %sr   z
[WARNING]: 
%sTr  r  r   r   r   )rP  rQ  r   rC  r   r
  r   
COLOR_WARN)r8   r   	formattednew_msgrS  s        r/   r   zDisplay.warningT  sy     %+GmmGT\\:Gii(4/G)C/G$++%LLTBLO#$DKK  &rD   c                H    t         j                  r| j                  |       y y r4   )r   SYSTEM_WARNINGSr   )r8   r   s     r/   system_warningzDisplay.system_warningb  s    LL rD   c                   t        |      }| j                  r|r	 | j                  |       y|j                         }	 | j                  t        |      z
  }|dk  rd}d|z  }| j                  d|d||       y# t        $ r | j	                  d       Y kw xY w# t        $ r | j                  t        |      z
  }Y iw xY w)zw
        Prints a header-looking line with cowsay or stars with length depending on terminal width (3 minimum)
        NzFsomebody cleverly deleted cowsay or something during the PB run.  heh.r   *r   r@  r  )r   r   banner_cowsayOSErrorr   rB  r   r0   r*   lenr
  )r8   r   r  cowsstar_lenstarss         r/   bannerzDisplay.bannerg  s    
 cl==Tg""3' iik	/||nS&99H q=Hx3.e<  gefg   	/||c#h.H	/s"   A< B <BB!C ?C c                Z   d|v r(|j                  dd      }|j                  d      r|d d }| j                  ddg}| j                  rd| j                  }|dk(  r(t	        j
                  t        | j                              }|j                  d	       |j                  t        |             |j                  t        |             t        j                  |t        j                  t        j                  
      }|j                         \  }}| j                  dt        |      z  |       y )Nz: [[r?  r6  r   s   -Ws   60randoms   -fr   z%s
r^  )replacer   r   r   secretschoicelistr   appendr   r   r   r   r   r
  r   )r8   r   r  runcmdthecowr   r   r   s           r/   r_  zDisplay.banner_cowsay  s    S=++dC(C||D!#2h--.;;[[F! T-@-@(ABMM% MM(6*+hsm$vjoojooV__&
cWws|+59rD   c                   |r:d|z  }t        j                  || j                        }dj                  |      dz   }nd|z  }|| j                  vr3| j                  |t        j                  dd       d| j                  |<   y y )Nz
[ERROR]: %sr   z	ERROR! %sTr   rU  r   )rP  rQ  r   rC  r   r
  r   COLOR_ERROR)r8   r   	wrap_textrX  rS  s        r/   r   zDisplay.error  sw    &,GmmGT\\:Gjj)E1G"S(G$,,&LLdRLP$%DLL! 'rD   c                F    |rt        j                   |       S t        |       S r4   )rP   input)r   privates     r/   promptzDisplay.prompt  s    ??3'':rD   c
                   d }
t         j                  j                         r`| j                  }|r|	|d|d}n|rd|z  }nd|z  }|r.	  |||      }
 |d|z   |      }|
|k(  rn/| j	                  d       - |||      }
nd }
| j                  d       |
s||}
|rdd	lm}  ||
|||
      }
t        |
d      }
|	rt        |
      }
|
S )Nr5  z]: z%s: zinput for %s: zconfirm z&***** VALUES ENTERED DO NOT MATCH ****z/Not prompting as we are not in interactive moder   )
do_encrypt)	salt_sizesaltsurrogate_or_strictr   )
r   	__stdin__r   rv  r
  r   ansible.utils.encryptrx  r   r   )r8   varnameru  rv  encryptconfirmry  rz  defaultunsaferesult	do_promptr   secondrx  s                  r/   do_var_promptzDisplay.do_var_prompt  s     ==!I'-%+W5vo&0&sG4F&zC'7AF'LL!IJ  #30FLLJK '-F894PF (=>f%FrD   c                    t        j                  d      r@t        dt        j                  dt
        j                  t        ddddd                  d   }nd}t        d|dz
        | _	        y )Nr   HHHHr   O   )
rS   r   r   fcntlioctlrj   
TIOCGWINSZr   r   r   )r8   tty_sizes     r/   r   zDisplay._set_column_width  sZ    99Q<fekk!W5G5GfVWYZ\]_`Ia&bcdefHH2x!|,rD   c                   | j                   rKddlm} | j                   j                  |j                  |||||       |j
                  j                         S t        r| j                  st                d| _        | j                  St        j                  | j                        r4t        j                         t        j                  | j                        k7  rt        d      | j!                  |       d}| j"                  5  t%        j&                  | j                        }	 t)        | j                  | j*                  ||        t%        j,                  | j.                  t$        j0                         | j3                  | |||      t%        j4                  | j                  t$        j6                  |       cd d d        S # t%        j4                  | j                  t$        j6                  |       w xY w# 1 sw Y   y xY w)Nr   )current_worker)	worker_idrv  ru  r   interrupt_inputcomplete_inputTzstdin is not interactiverD   )r   r   r  r  )r   ansible.executor.process.workerr  send_promptr  worker_queuegetr   r   r   	_stdin_fdrS   r   getpgrp	tcgetpgrpr   r
  r   rj   rk   r   
_stdout_fdtcflush_stdinTCIFLUSH_read_non_blocking_stdinr   	TCSADRAIN)	r8   r   ru  r   r  r  r  r  original_stdin_settingss	            r/   prompt_untilzDisplay.prompt_until  s    ==FMM%%(223Y` / &  "..2244d//K $D NN"99T^^, zz|r||DNN;;-.HII 	SZZ 	^&-&7&7&G#^T^^T__g7{S W-=-=> 44g+whw  IW4  X !!$..'2C2CE\]	^ 	^ !!$..'2C2CE\]	^ 	^s%    G8%A&G/G81G55G88Hc                   | j                   rt        |t        j                         }|P	 t        j                  t
        j                  j                  j                               d   t        j                     }	 t        j                  | j                        d   t        j                     g}d}|t        j                         z
  |k  rd }		 t        j                  | j                  d       |	z|t        j                         z
  |k  r^| j                  j!                  d      }	t        j"                  t$        j&                         |	|Ct        j                         z
  |k  r^t        j                  | j                  d       |	d}		 ||	k(  s|2|	j)                         |v r t+        | j,                         t/        d	      ||	d
v s|*|	j)                         |v rt+        | j,                         	 |S |	|v rRt+        | j,                         |d d }|r| j,                  j1                  |       | j,                  j3                          n||	z  }|t        j                         z
  |k  r|S # t        $ r d}Y w xY w# t        $ r ddg}Y w xY w# t        j                  | j                  d       |	d}	w w xY w)N            rD   Fr   Tzuser interrupt)r      
r   )r   NotImplementedErrorr8  rj   rk   r   stdinrd   filenoVINTRr   r  VERASErS   set_blockingr  readsleepr   DEFAULT_INTERNAL_POLL_INTERVALlowerr   _stdoutr   re   rf   )
r8   r   r   r  r  start	interruptbackspace_sequencesresult_stringkey_presseds
             r/   r  z Display._read_non_blocking_stdin  s    ==%%IIKE"$#--cii.>.>.E.E.GHKGMMZ		5#*#4#4T^^#DQ#G#W"X
 o$))+"5"?K	&6!)w499;QVCVY`C`"&++"2"21"5KJJq??@ ")w499;QVCVY`C`
 5&"%K'K9,D/Jejuj{j{j}  BQ  kQ4<<(,-=>>&;.+HnNhmxm~m~  nA  ES  nS4<<(   334<<( -cr 2LL&&}5""$,5 o$))+"5"?6 K  $#	$
  	5#*G"4	5 5&"%K 's7   AI= <4J B J# J# =JJJ J #'K
c                z    | j                   rt        	 t        j                  j                  S # t
        $ r Y y w xY wr4   )r   r  r   r  rd   AttributeErrorr8   s    r/   r  zDisplay._stdinO  s6    ==%%	99### 		s   . 	::c                b    	 | j                   j                         S # t        t        f$ r Y y w xY wr4   )r  r  
ValueErrorr  r  s    r/   r  zDisplay._stdin_fdX  s1    	;;%%''N+ 		    ..c                Z    | j                   rt        t        j                  j                  S r4   )r   r  r   r   rd   r  s    r/   r  zDisplay._stdout_  s    ==%%zz   rD   c                b    	 | j                   j                         S # t        t        f$ r Y y w xY wr4   )r  r  r  r  r  s    r/   r  zDisplay._stdout_fde  s1    	<<&&((N+ 		r  )r   )r   r   r   r   )r   UnicodeErrorr   ztuple[str | bytes, int])r   r   r   r   r   r   )r   z+c.Callable[t.Concatenate[Display, P], None]r   c.Callable[..., None])r   r  r   r  )NFFFTN)r   r   r  r   r   boolr  r  r  r  r  r  r   
int | Noner   r   r   )r   r   r  r   r   r  r4   r   )Nr   r   )NFNN)r   r   r   r   rD  r  rE  r   rF  r   r   r   )r   r   r   r   rD  r  rE  r   rF  r   r   r   )F)r   r   rW  r  r   r   )r   r   r   r   rL   )r   r   r  r   rb  r  r   r   )r   r   r  r   r   r   )T)r   r   rr  r  r   r   )r   r   ru  r  r   r   )TNNFNNNF)r~  r   ru  r  rv  r   r  r   r  r  ry  r  rz  r   r  r   r  r  r   r   )FNNN)r   r   ru  r  r   r  r  c.Container[bytes] | Noner  r  r   bytes)
r   r  r   r  r  r  r  r  r   r  )r   zt.BinaryIO | None)r   r  )r   
t.BinaryIO)(rE   rF   rG   r:   r   r   r   staticmethodr   r   r   r
  r  r  r  r  r!  r$  r'  r  r)  r*  r;  rL  r   r   r[  re  r_  r   rv  r  r   r  r  propertyr  r  r  r  rH   rD   r/   r   r   	  s   7"r"	/ 9	  
#
	
 
 #	   !!#:0:0 :0 	:0
 :0 :0 :0 :0 
:0 :0x"2888888A [ [ 2 2 K  K #&*(( ( 	(
 ( $( 
(T  #&*11 1 	1
 1 $1 
1 1. % %   = =. : :" 	& 	&   !" $"33 3 	3
 3 3 3 3 3 3 
3j- "59487^7^ 7^ 	7^
 37^ 27^ 
7^v "594844 4 3	4
 24 
4l     ! !
  rD   r   )	metaclass)r+   r   r   r   )rg   zt.TextIOra   zthreading.RLock)r   r   r   r   r   r   )r   r  r   r   )
r   r   r   r   r   r   r   r  r   r   r  )u
__future__r   r   r   ImportErrorcollections.abcabcr   r   ctypes.utilr'   r  rP   r   r5   rS   rj  r   r   rj   rP  r   r8  rl   typingt	functoolsr   structr   r   rY   r   r   ansible.errorsr	   r
   r   r   +ansible.module_utils.common.text.convertersr   r   ansible.module_utils.sixr   ansible.utils.colorr   ansible.utils.multiprocessingr   r   ansible.utils.singletonr   ansible.utils.unsafe_proxyr   TYPE_CHECKING#ansible.executor.task_queue_managerr   	ParamSpecr   cdllLoadLibraryutilfind_libraryr$   c_wcharr)   argtypes	c_wchar_pc_intr%   sizeofr&   r   r   r0   r6   r2   rJ   r   getattrrU   r   r   accessW_OKdirnameisdirbasicConfigr  	getLoggerroothandlershandler	addFilterprintr   r9  r  r1  COLOR_OKCOLOR_INCLUDEDCOLOR_CHANGED
COLOR_SKIPr  rR  rV  COLOR_UNREACHABLEr  rq  r  r   rh   	TCSAFLUSHr   r   r   r   r   rH   rD   r/   <module>r     sD  $ #
 J      	  	   
     
    " s s I . ' L - /??>AKK 8 8 => !..* !++V\\: v||,q014590&fAgnn A " 

1 !D%)"))D"''*ByryyQSQXQXQ`Q`aeQfhjhohoGpww}}T"GW\\'su 'W&&y1F"<<00 8!!/'!=QSU2V"WX!!"4"678 HkZadakakl(.delolvlvw mmW]]oow||jj',,&&oow||llGOO''llGOO))7==mmW]]	4 7& !( 1 1 &*,
C=a		 a	g  Js   O2 2O=<O=