???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yfj                 @   s4  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d d g Z Gd d   d e  Z d d d d	  Z	 d d d
 d  Z
 d d d d  Z d d d d d  Z d d   Z y  d d l Z e j e j f WnI e e f k
 r)y d d l Z Wn e k
 re Z Yn Xe
 Z Yn Xe	 Z d S)a  Utilities to get a password and/or the current user name.

getpass(prompt[, stream]) - Prompt for a password, with echo turned off.
getuser() - Get the user name from the environment or password database.

GetPassWarning - This UserWarning is issued when getpass() cannot prevent
                 echoing of the password contents while reading.

On Windows, the msvcrt module will be used.

    NgetpassgetuserGetPassWarningc               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   ,/opt/alt/python35/lib64/python3.5/getpass.pyr      s    z
Password: c          .   C   s$  d } t  j   } yg t j d t j t j B } t j | d  } | j |  t j	 |  } | j |  | s{ | } Wn t
 k
 r} zj | j   y t j j   } Wn- t t f k
 r d } t |  |  } Yn Xt j } | s t j } WYd d } ~ Xn X| d k	 ry t j |  } | d d  }	 |	 d t j M<t j }
 t t d  rn|
 t j O}
 z, t j | |
 |	  t |  | d | } Wd t j | |
 |  | j   XWnI t j k
 r| d k	 r  | | k	 r| j   t |  |  } Yn X| j d  | SWd QRXd S)a  Prompt for a password, with echo turned off.

    Args:
      prompt: Written on stream to ask for the input.  Default: 'Password: '
      stream: A writable file object to display the prompt.  Defaults to
              the tty.  If no tty is available defaults to sys.stderr.
    Returns:
      The seKr3t input.
    Raises:
      EOFError: If our input tty or stdin was closed.
      GetPassWarning: When we were unable to turn echo off on the input.

    Always restores terminal settings before returning.
    Nz/dev/ttyzw+   TCSASOFTinput
)
contextlib	ExitStackosopenO_RDWRO_NOCTTYioFileIOenter_contextTextIOWrapperOSErrorclosesysstdinfilenoAttributeError
ValueErrorfallback_getpassstderrtermios	tcgetattrZECHOZ	TCSAFLUSHhasattrr   	tcsetattr
_raw_inputflusherrorwrite)promptstreamZpasswdstackfdZttyr   eoldnewZtcsetattr_flagsr   r   r	   unix_getpass   sR    

		
r0   c             C   s   t  j t  j k	 r t |  |  Sx |  D] } t j |  q& Wd } xd t j   } | d k sj | d k rk P| d k r} t  | d k r | d d  } qF | | } qF Wt j d  t j d  | S)	z9Prompt for password with echo off, using Windows getch(). r   N   )r   r   	__stdin__r   msvcrtZputwchZgetwchKeyboardInterrupt)r)   r*   cZpwr   r   r	   win_getpassa   s"    r;   c             C   sB   t  j d t d d | s% t j } t d d | t |  |  S)Nz%Can not control echo on the terminal.
stacklevel   z&Warning: Password input may be echoed.file)warningswarnr   r   r    printr%   )r)   r*   r   r   r	   r   x   s    	r   r1   c             C   s   | s t  j } | s t  j } t |   }  |  r y | j |   WnF t k
 r |  j | j d  }  |  j | j  }  | j |   Yn X| j	   | j
   } | s t  | d d k r | d  d  } | S)Nreplacer5   r   r6   r6   )r   r    r   strr(   UnicodeEncodeErrorencodeencodingdecoder&   readlineEOFError)r)   r*   r   liner   r   r	   r%      s&    		
r%   c              C   sP   x* d D]" }  t  j j |   } | r | Sq Wd d l } | j t  j    d S)zGet the username from the environment or password database.

    First try various environment variables, then the password
    database.  This works on Windows as long as USERNAME is set.

    LOGNAMEUSERLNAMEUSERNAMEr   N)rK   rL   rM   rN   )r   environgetpwdgetpwuidgetuid)nameuserrQ   r   r   r	   r      s    )__doc__r   r   r   r   r?   __all__UserWarningr   r0   r;   r   r%   r   r!   r"   r$   ImportErrorr   r8   r   r   r   r   r	   <module>   s,   D	