+
    Tr•j  ã                   ót   € R t ^ RIt^ RIt^ RIt^ RIt^ RIt ! R R]4      t ! R R]4      t	 ! R R]4      t
R# )z
Terminal / input handling
Nc                   ó`   a € ] tR t^t o RtR tR tR tR tR t	RR lt
RR	 ltRR
 ltRtV tR# )ÚTerminalz8
Do minimal terminal mangling to prompt users for input
c                óN   € Wn         R V n        R V n        V P                  4        R # ©N)ÚfdÚ
orig_flagsÚ	orig_termÚsave)Úselfr   s   &&Ú*/usr/share/netplan/netplan_cli/terminal.pyÚ__init__ÚTerminal.__init__"   s   € ØŒØˆŒØˆŒØ�	‰	Žó    c                óv  € \         P                  P                  4       '       d•   \        P                  ! V P
                  4      pV^,          \        P                  ,          V^&   V^,          \        P                  ,          V^&   \        P                  ! V P
                  \        P                  V4       R# R# ©é   N©
ÚsysÚstdinÚisattyÚtermiosÚ	tcgetattrr   ÚICANONÚECHOÚ	tcsetattrÚTCSANOW©r
   Úattrss   & r   Úenable_echoÚTerminal.enable_echo(   st   € Ü�9‰9×Ñ×ÒÜ×%Ò% d§g¡gÓ.ˆEØ˜Q•x¤'§.¡.Õ0ˆE�!‰HØ˜Q•x¤'§,¡,Õ.ˆE�!‰HÜ×Ò˜dŸg™g¤w§¡¸Ö>ñ	 r   c                óz  € \         P                  P                  4       '       d—   \        P                  ! V P
                  4      pV^,          \        P                  ( ,          V^&   V^,          \        P                  ( ,          V^&   \        P                  ! V P
                  \        P                  V4       R# R# r   r   r   s   & r   Údisable_echoÚTerminal.disable_echo/   sx   € Ü�9‰9×Ñ×ÒÜ×%Ò% d§g¡gÓ.ˆEØ˜Q•x¤7§>¡> /Õ1ˆE�!‰HØ˜Q•x¤7§<¡< -Õ/ˆE�!‰HÜ×Ò˜dŸg™g¤w§¡¸Ö>ñ	 r   c                óî   € \         P                   ! V P                  \         P                  4      p\         P                   ! V P                  \         P                  V\        P
                  ,          4       R # r   ©Úfcntlr   ÚF_GETFLÚF_SETFLÚosÚ
O_NONBLOCK©r
   Úflagss   & r   Úenable_nonblocking_ioÚTerminal.enable_nonblocking_io6   s;   € Ü—’˜DŸG™G¤U§]¡]Ó3ˆÜ�Š�D—G‘GœUŸ]™]¨E´B·M±MÕ,AÖBr   c                óð   € \         P                   ! V P                  \         P                  4      p\         P                   ! V P                  \         P                  V\        P
                  ( ,          4       R # r   r$   r*   s   & r   Údisable_nonblocking_ioÚTerminal.disable_nonblocking_io:   s=   € Ü—’˜DŸG™G¤U§]¡]Ó3ˆÜ�Š�D—G‘GœUŸ]™]¨E´R·]±]°NÕ,BÖCr   Nc           
     ó”  € \        R4       \        4       pV P                  V4       V P                  4        V P	                  4        V'       g   Rp\        RP                  V4      4       TpV^ 8”  d¥   \        RP                  V\        \        V4      4      4      RR7       \        P                  ! \        P                  .. . ^4        \        P                  P                  4       pVR8X  d   V P                  V4       \        4       h V^,          pK«  V P                  V4       \!        4       h  \        \        3 d     L9i ; i)a]  
Get a "confirmation" input from the user, for at most (timeout)
seconds. Optionally, customize the message to be displayed.

timeout -- timeout to wait for input (default 120)
message -- optional customized message ("Press ENTER to (message)")

raises:
InputAccepted -- the user confirmed the changes
InputRejected -- the user rejected the changes
z%Do you want to keep these settings?

zaccept the new configurationz&Press ENTER before the timeout to {}

z%Changes will revert in {:>{}} secondsÚ)ÚendÚ
)ÚprintÚdictr	   r!   r,   ÚformatÚlenÚstrÚselectr   r   ÚreadÚresetÚInputAcceptedÚ	TypeErrorÚBlockingIOErrorÚInputRejected)r
   ÚtimeoutÚmessageÚsettingsÚtimeout_nowÚcs   &&&   r   Úget_confirmation_inputÚTerminal.get_confirmation_input>   s  € ô 	Ð7Ô8ä“6ˆØ�	‰	�(ÔØ×ÑÔØ×"Ñ"Ô$çØ4ˆGäÐ8×?Ñ?ÀÓHÔIØˆØ˜QŒÜÐ9×@Ñ@ÀÌcÔRUÐV]ÓR^ÓN_Ó`ÐfjÕkô �MŠMœ3Ÿ9™9˜+ r¨2¨qÔ1ðô —I‘I—N‘NÓ$�Ø˜”IØ—J‘J˜xÔ(ä'›/Ð)ð ð ˜1ÕŠKð
 	�
‰
�8ÔÜ‹oÐøô œÐ/ô ñ
 ðús   ÃA D3 Ä3EÅEc                ó>  € \         P                   ! V P                  \         P                  4      pRp\        P                  P                  4       '       d!   \        P                  ! V P                  4      pVe   VP                  RVRV/4       R# W n	        W0n
        R# )zu
Save the terminal's current attributes and flags

Optional argument:
    - dest: if set, save settings to this dict
Nr+   Úterm)r%   r   r&   r   r   r   r   r   Úupdater   r   )r
   Údestr   r   s   &&  r   r	   ÚTerminal.saveq   st   € ô —[’[ §¡¬%¯-©-Ó8ˆ
Øˆ	Ü�9‰9×Ñ×ÒÜ×)Ò)¨$¯'©'Ó2ˆIØÒØ�K‰K˜ *Ø ð,ö -ð )ŒOØ&ŽNr   c                ó”  € RpRpVe$   VP                  R4      pVP                  R4      pMV P                  pV P                  p\        P                  P                  4       '       d1   \        P                  ! V P                  \        P                  V4       \        P                  ! V P                  \        P                  V4       R# )z‚
Reset the terminal to its original attributes and flags

Optional argument:
    - orig: if set, reset to settings from this dict
NrI   r+   )Úgetr   r   r   r   r   r   r   r   Ú	TCSAFLUSHr%   r'   )r
   Úorigr   r   s   &&  r   r<   ÚTerminal.resetƒ   s‰   € ð ˆ	Øˆ
ØÒØŸ™ Ó(ˆIØŸ™ 'Ó*‰JàŸ™ˆIØŸ™ˆJÜ�9‰9×Ñ×ÒÜ×Ò˜dŸg™g¤w×'8Ñ'8¸)ÔDÜ�Š�D—G‘GœUŸ]™]¨JÖ7r   )r   r   r   )éx   Nr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r!   r,   r/   rF   r	   r<   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r      s:   ø‡ € ñòò?ò?òCòDô1ôf'÷$8ò 8r   r   c                   ó   € ] tR t^—tRtRtR# )r=   zDenotes has accepted input© N©rS   rT   rU   rV   rW   rX   r\   r   r   r=   r=   —   s   † Ù%Ûr   r=   c                   ó   € ] tR t^œtRtRtR# )r@   z(Denotes that the user has rejected inputr\   Nr]   r\   r   r   r@   r@   œ   s   † Ù3Ûr   r@   )rW   r%   r(   r   r:   r   Úobjectr   Ú	Exceptionr=   r@   r\   r   r   Ú<module>ra      sB   ðñ$ó Û 	Û Û Û 
ôw8ˆvô w8ôt	�Iô 	ô
	�Iö 	r   