+
    üÐjÙ\  ã                   óF  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIH t  ^ RI!H"t"H#t#H$t$H%t% ^ RI&H't'H(t(  ! R	 R
]PR                  4      t* ! R R](PV                  4      t,Rs-Rs.^ s/Rs0R t1R t2R t3 ! R R]#Ph                  4      t5 ! R R]Pl                  4      t6 ! R R]Pn                  4      t7 ! R R]Pp                  4      t8 ! R R]Pr                  4      t:];R8X  d
   ]2! 4        R# R# )z2
Implementation module for the `tkconch` command.
N)ÚListÚTuple)Úerror)ÚisInKnownHosts)ÚchannelÚcommonÚ
connectionÚ
forwardingÚkeysÚsessionÚ	transportÚuserauth)Útkvt100)ÚdeferÚprotocolÚreactorÚ	tksupport)ÚlogÚusagec                   ó>   a € ] tR t^&t o R tR tR tR tR tRt	V t
R# )ÚTkConchMenuc                óh  € \         P                  P                  ! V .VO5/ VB  V P                  P	                  R 4       \         P
                  ! 4       V n        V P                  P                  R4       \         P                  ! V RRRR7      P                  ^^RR7       \         P                  ! V 4      V n        V P                  P                  ^^^RR7       \         P                  ! V RRR	R7      P                  ^^RR7       \         P                  ! V 4      V n        V P                  P                  ^^^RR7       \         P                  ! V RRR
R7      P                  ^^RR7       \         P                  ! V 4      V n        V P                  P                  ^^^RR7       \         P                  ! V RRRR7      P                  ^^RR7       \         P                  ! V 4      V n        V P                  P                  ^^^RR7       \         P                  ! V RRRR7      P                  ^^RR7       \         P                  ! V 4      V n        V P                  P                  ^^RR7       \         P                   ! W P"                  RR7      P                  ^^RR7       \         P                  ! V RR7      P                  ^^RR7       \         P$                  ! V ^ ^ R7      V n        V P&                  P                  ^^^RR7       \         P                   ! V RV P(                  R7      P                  ^^R7       \         P                   ! V RV P*                  R7      P                  ^^R7       \         P                  ! V 4      V n        V P,                  P                  ^^RR7       \         P                  ! V R	R7      P                  ^^RR7       \         P                  ! V 4      V n        V P.                  P                  ^^RR7       \         P                  ! V RR7      P                  ^^RR7       \         P0                  ! V RV P                  RR7      V n        V P2                  P                  ^^	R7       \         P0                  ! V RV P                  RR7      V n        V P4                  P                  ^^	R7       \         P                  ! V RR7      P                  ^^^
RR7       \         P                  ! V RRRR7      P                  ^^RR7       \         P                  ! V RR7      V n        V P6                  P                  ^^^RR7       \         P                  ! V RRRR7      P                  ^^RR7       \         P                  ! V R R7      V n        V P8                  P                  ^^^RR7       \         P                  ! V RRR!R7      P                  ^^RR7       \         P                  ! V R"R7      V n        V P:                  P                  ^^^RR7       \         P                   ! V R#V P<                  R7      P                  ^^^RR7       V P?                  ^^^@R$7       V PA                  ^^^R$7       V P                  PC                  R%\D        PF                  4       R&# )'ÚTkConchÚlocalÚwÚleftÚHostname)ÚanchorÚjustifyÚtext)ÚcolumnÚrowÚstickyÚnesw)r    Ú
columnspanr!   r"   ÚPortÚUsernameÚCommandÚIdentityÚBrowse)Úcommandr   zPort Forwarding)r   )ÚheightÚwidthÚAdd)r   r*   )r    r!   ÚRemoveÚHostÚLocal)r   ÚvariableÚvalueÚRemoteÚremotezAdvanced OptionsÚCipherÚcipher)ÚnameÚMACÚmaczEscape CharÚescapezConnect!)ÚweightÚminsizeÚWM_DELETE_WINDOWN)$ÚTkinterÚFrameÚ__init__ÚmasterÚtitleÚ	StringVarÚlocalRemoteVarÚsetÚLabelÚgridÚEntryÚhostÚportÚuserr*   ÚidentityÚButtonÚgetIdentityFileÚListboxÚforwardsÚ
addForwardÚremoveForwardÚforwardPortÚforwardHostÚRadiobuttonÚlocalForwardÚremoteForwardr6   r9   r:   Ú	doConnectÚgrid_rowconfigureÚgrid_columnconfigurer   ÚsysÚexit)ÚselfÚargsÚparamss   &*,Ú?/usr/lib/python3/dist-packages/twisted/conch/scripts/tkconch.pyr@   ÚTkConchMenu.__init__'   s†  € ä�‰×Ò˜tÐ5 dÒ5¨fÒ5à�‰×Ñ˜)Ô$Ü%×/Ò/Ó1ˆÔØ×Ñ×Ñ Ô(ä�Š�d 3°¸ZÔH×MÑMØ˜! Cð 	Nô 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÔDä�Š�d 3°¸VÔD×IÑIØ˜! Cð 	Jô 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÔDä�Š�d 3°¸ZÔH×MÑMØ˜! Cð 	Nô 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÔDä�Š�d 3°¸YÔG×LÑLØ˜! Cð 	Mô 	
ô —}’} TÓ*ˆŒØ�‰×Ñ ¨q°aÀÐÔGä�Š�d 3°¸ZÔH×MÑMØ˜! Cð 	Nô 	
ô  Ÿš dÓ+ˆŒØ�‰×Ñ !¨°6ÐÔ:Ü�Š�t×%9Ñ%9ÀÔI×NÑNØ˜! Fð 	Oô 	
ô 	�Š�dÐ!2Ô3×8Ñ8ÀÀqÐQTÐ8ÔUÜŸš¨°Q¸aÔ@ˆŒØ�‰×Ñ !°°qÀÐÔHÜ�Š�t %°·±ÔA×FÑFÈaÐUVÐFÔWÜ�Š�t (°D×4FÑ4FÔG×LÑLØ˜!ð 	Mô 	
ô #Ÿ=š=¨Ó.ˆÔØ×Ñ×Ñ Q¨A°fÐÔ=Ü�Š�d Ô(×-Ñ-°Q¸AÀfÐ-ÔMÜ"Ÿ=š=¨Ó.ˆÔØ×Ñ×Ñ Q¨A°fÐÔ=Ü�Š�d Ô(×-Ñ-°Q¸AÀfÐ-ÔMÜ#×/Ò/Ø�w¨×)<Ñ)<ÀGô
ˆÔð 	×Ñ×Ñ a¨QÐÔ/Ü$×0Ò0Ø�x¨$×*=Ñ*=ÀXô
ˆÔð 	×Ñ×Ñ q¨aÐÔ0ä�Š�dÐ!3Ô4×9Ñ9Ø ¨°6ð 	:ô 	
ô 	�Š�d 3°¸XÔF×KÑKØ˜" Sð 	Lô 	
ô —m’m D¨xÔ8ˆŒØ�‰×Ñ ¨a°RÀÐÔGä�Š�d 3°¸UÔC×HÑHØ˜" Sð 	Iô 	
ô —=’= ¨EÔ2ˆŒØ�‰�‰˜Q¨1°"¸VˆÔDä�Š�d 3°¸]ÔK×PÑPØ˜" Sð 	Qô 	
ô —m’m D¨xÔ8ˆŒØ�‰×Ñ ¨a°RÀÐÔGÜ�Š�t *°d·n±nÔE×JÑJØ ¨°6ð 	Kô 	
ð
 	×Ñ˜q¨°BÐÔ7Ø×!Ñ! !¨A°qÐ!Ô9à�‰×ÑÐ/´·±Ö:ó    c                óì   € \         P                  ! 4       pV'       dW   V P                  P                  ^ \        P
                  4       V P                  P                  \        P
                  V4       R# R# ©é    N)ÚtkFileDialogÚaskopenfilenamerL   Údeleter>   ÚENDÚinsert)r]   Úrs   & r`   rN   ÚTkConchMenu.getIdentityFile…   sH   € Ü×(Ò(Ó*ˆßØ�M‰M× Ñ  ¤G§K¡KÔ0Ø�M‰M× Ñ ¤§¡¨aÖ0ñ rb   c                ó  € V P                   P                  4       pV P                   P                  ^ \        P                  4       V P
                  P                  4       pV P
                  P                  ^ \        P                  4       V P                  P                  4       R8X  d3   V P                  P                  \        P                  RV RV 24       R# V P                  P                  \        P                  RV RV 24       R# )re   r   úL:Ú:úR:N)	rS   Úgetrh   r>   ri   rT   rD   rP   rj   )r]   rJ   rI   s   &  r`   rQ   ÚTkConchMenu.addForward‹   s¿   € Ø×Ñ×#Ñ#Ó%ˆØ×Ñ×Ñ ¤7§;¡;Ô/Ø×Ñ×#Ñ#Ó%ˆØ×Ñ×Ñ ¤7§;¡;Ô/Ø×Ñ×"Ñ"Ó$¨Ô/Ø�M‰M× Ñ ¤§¡°°4°&¸¸$¸Ð.@ÖAà�M‰M× Ñ ¤§¡°°4°&¸¸$¸Ð.@ÖArb   c                ó’   € V P                   P                  4       pV'       d%   V P                   P                  V^ ,          4       R# R# rd   )rP   ÚcurselectionÚremove)r]   Úcurs   & r`   rR   ÚTkConchMenu.removeForward•   s2   € Ø�m‰m×(Ñ(Ó*ˆßØ�M‰M× Ñ   Q¥Ö(ñ rb   c                ó
  € ^pV P                   P                  4       \        R&   V P                  P                  4       \        R&   V P                  P                  4       \        R&   V P
                  P                  4       \        R&   V P                  P                  4       pV P                  P                  4       pV P                  P                  4       pV'       d<   V\        P                  9   d   V.\        n
        M\        P                  ! RR4       ^ pV'       dD   V\        P                  9   d   V.\        n        M!V'       d   \        P                  ! RR4       ^ pV'       dœ   VR8X  d   R	\        R
&   MŠV^ ,          R8X  d;   \        V4      ^8X  d+   \        \!        V^,          4      ^@,
          4      \        R
&   MB\        V4      ^8X  d   V\        R
&   M(V'       d!   \        P                  ! RRV,          4       ^ pV P"                  P                  4       '       d8   \        P$                  P'                  V P"                  P                  4       4       V P(                  P                  ^ \*        P,                  4       FK  pV^ ,          R8X  d   \        P/                  VR,          4       K/  \        P1                  VR,          4       KM  	  R\        R,          9   d/   \        R,          P3                  R^4      w  \        R&   \        R&   \        R,          '       d   \        R,          '       g"   V'       d   \        P                  ! RR4       ^ pV'       Ed—   V P4                  P7                  4        V P4                  P9                  4        \        R,          '       dA   \:        P<                  p\>        P@                  ! \:        PB                  4       V\:        n        M\>        PD                  ! 4        \F        \>        n$        \        P$                  '       g   RR.\        n        \        R,          p\K        \        R,          ;'       g    ^4      p\>        PL                  ! Wx34       \N        PP                  ! Wx\S        4       4       \T        P4                  PW                  4        \T        P4                  PY                  RP[                  \        R,          \        R,          4      4       R	# V P]                  4        R	# )é   rI   rJ   rK   r*   r   zBad cipher.zBad MAC.ÚnoneNr:   Ú^zBad escape character '%s'.ÚL:é   NNÚ@zMissing host or username.r   z~/.ssh/id_rsaz~/.ssh/id_dsaz{}@{} - TkConch)/rI   rq   ÚoptionsrJ   rK   r*   r6   r9   r:   ÚSSHClientTransportÚsupportedCiphersÚtkMessageBoxÚ	showerrorÚsupportedMACsÚlenÚchrÚordrL   Ú	identitysÚappendrP   r>   ri   Úopt_localforwardÚopt_remoteforwardÚsplitrA   ÚquitÚdestroyr[   Ústdoutr   ÚstartLoggingÚstderrÚdiscardLogsÚhandleErrorÚdeferrÚintÚmsgr   Ú
connectTCPÚSSHClientFactoryÚframeÚ	deiconifyrB   ÚformatÚfocus)	r]   Úfinishedr6   r9   r:   ÚlineÚrealoutrI   rJ   s	   &        r`   rX   ÚTkConchMenu.doConnectš   sF  € ØˆØŸ)™)Ÿ-™-›/Œ�‰ØŸ)™)Ÿ-™-›/Œ�‰ØŸ)™)Ÿ-™-›/Œ�‰Ø!Ÿ\™\×-Ñ-Ó/Œ�	ÑØ—‘—‘Ó"ˆØ�h‰h�l‰l‹nˆØ—‘—‘Ó"ˆßØÔ+×<Ñ<Ô<Ø7=°hÔ"Õ3ä×&Ò& y°-Ô@Ø�çØÔ(×6Ñ6Ô6Ø47°5Ô"Õ0ßÜ×&Ò& y°*Ô=Ø�çØ˜ÔØ$(”˜Ò!Ø˜•˜cÔ!¤c¨&£k°QÔ&6Ü$'¬¨F°1­I«¸Õ(;Ó$<”˜Ò!Ü�V“ Ô!Ø$*”˜Ò!ßÜ×&Ò& yÐ2NÐQWÕ2WÔXØ�à�=‰=×Ñ×ÒÜ×Ñ×$Ñ$ T§]¡]×%6Ñ%6Ó%8Ô9à—M‘M×%Ñ% a¬¯©Ö5ˆDØ�A�w˜#Œ~Ü×(Ñ(¨¨b­Ö2ä×)Ñ)¨$¨r­(Ö3ñ	 6ð ”'˜&•/Ô!Ü/6°v­×/DÑ/DÀSÈ!Ó/LÑ,ŒG�F‰OœW V™_ä˜—”¤w¨v§¤¿HÜ×"Ò" 9Ð.IÔJØˆHßˆ8Ø�K‰K×ÑÔØ�K‰K×ÑÔ!Ü�u�~Œ~ÜŸ*™*�Ü× Ò ¤§¡Ô,Ø$”•
ä—’Ô!Ü$ŒCŒJÜ×$×$Ð$Ø%4°oÐ$F”Ô!Ü˜6•?ˆDÜ”w˜v•×,Ð,¨"Ó-ˆDÜ�GŠG�T�LÔ!Ü×Ò˜tÔ+;Ó+=Ô>Ü�L‰L×"Ñ"Ô$Ü�L‰L×ÑØ!×(Ñ(¬°­¼'À&½/ÓJöð �J‰JŽLrb   )r6   r*   r:   rT   rS   rP   rI   rL   rV   rD   r9   rJ   rW   rK   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r@   rN   rQ   rR   rX   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r`   r   r   &   s(   ø‡ € ò\;ò|1òBò)÷
Fð Frb   r   c                   óÌ  a€ ] tR t^ãt oRt. RO. RO. RO. RO. RO. RO. RO. RO.t. RO. RO. RO. R O. R!O. R"O. R#O. R$O.t]P                  P                  t
]P                  P                  t]P                  ! R%.R]P                  ! ]
 U u. uF  q P!                  4       NK  	  up 4      R]P                  ! ] U u. uF  q P!                  4       NK  	  up 4      R]P"                  ! RR7      R]P"                  ! RR7      /]P$                  ! 4       ]P"                  ! R	R7      ]P"                  ! R
RR7      .R7      t. t. t. tR tR tR tR tR tV3R ltRtVtR# u up i u up i )&ÚGeneralOptionsz,Usage:    tkconch [options] host [command]
 Nr6   ÚmacsÚlocalforwardÚremoteforwardzlisten-port:host:port)Údescrr*   ÚargumentT)r®   Úrepeat)ÚmutuallyExclusiveÚ
optActionsÚextraActionsc                ó<   € V P                   P                  V4       R # ©N)rˆ   r‰   )r]   Úis   &&r`   Úopt_identityÚGeneralOptions.opt_identity  s   € Ø�‰×Ñ˜aÖ rb   c                ó–   € VP                  R 4      w  r#p\        V4      p\        V4      pV P                  P                  W#V334       R# ©ro   N)rŒ   r•   ÚlocalForwardsr‰   )r]   ÚfÚ	localPortÚ
remoteHostÚ
remotePorts   &&   r`   rŠ   ÚGeneralOptions.opt_localforward   sB   € Ø,-¯G©G°C«LÑ)ˆ	˜zÜ˜	“Nˆ	Ü˜“_ˆ
Ø×Ñ×!Ñ! 9¸:Ð.FÐ"GÖHrb   c                ó–   € VP                  R 4      w  r#p\        V4      p\        V4      pV P                  P                  W#V334       R# rº   )rŒ   r•   ÚremoteForwardsr‰   )r]   r¼   r¿   ÚconnHostÚconnPorts   &&   r`   r‹   Ú GeneralOptions.opt_remoteforward&  sB   € Ø)*¯©°«Ñ&ˆ
˜hÜ˜“_ˆ
Ü�x“=ˆØ×Ñ×"Ñ" J¸8Ð0DÐ#EÖFrb   c                ó.   € R .\         P                  R&   R# )Úzlib:re   ry   NN)r€   ÚsupportedCompressions©r]   s   &r`   Úopt_compressÚGeneralOptions.opt_compress,  s   € Ø9?¸Ô×0Ñ0°Ó5rb   c                ó|   € V'       d*   V^ ,          V R&   RP                  VR,          4      V R&   R# RV R&   RV R&   R# )re   rI   Ú ºry   NNr*   Ú N)Újoin)r]   r^   s   &*r`   Ú	parseArgsÚGeneralOptions.parseArgs/  s:   € ßØ �7ˆD�‰LØ!Ÿh™h t¨B¥xÓ0ˆD�‹OàˆD�‰LØ ˆD�‹Orb   c                óÆ   <€ V ^8„  d   Qh/ S[ S[,          ;R&   S[ S[S[S[S[S[3,          3,          ,          ;R&   S[ S[S[S[S[S[3,          3,          ,          ;R&   # )r}   rˆ   r»   rÂ   )r   Ústrr   r•   )r›   r¨   s   "€r`   Ú__annotate__ÚGeneralOptions.__annotate__ã   sd   ø‡ ‚ ñl ‘C�yÑñm ñn ™™c¡5©©c¨¥?Ð2Õ3Õ4Ñ9ño ñp ™™s¡E©#©s¨(¥OÐ3Õ4Õ5Ñ:òq rb   © )rK   ÚlNzLog in using this user name.)rL   r¶   z~/.ssh/identityz&Identity for public key authentication)r:   ÚeÚ~z(Set escape character; ``none'' = disable)r6   ÚcNzSelect encryption algorithm.)r«   ÚmNz.Specify MAC algorithms for protocol version 2.)rJ   ÚpNz7Connect to this port.  Server must be on the same port.)r¬   r|   Nz<listen-port:host:port   Forward local port to remote address)r­   ÚRNz<listen-port:host:port   Forward remote port to local address)ÚttyÚtz-Tty; allocate a tty even if command is given.)ÚnottyÚTzDo not allocate a tty.)ÚversionÚVzDisplay version number only.)ÚcompressÚCzEnable compression.)ÚnoshellÚNz"Do not execute a shell or command.)Ú	subsystemÚsz-Invoke command (mandatory) as SSH2 subsystem.)r   ÚvzLog to stderr)ÚansilogÚaz!Print the received data to stdout)rß   rá   )r¡   r¢   r£   r¤   ÚsynopsisÚoptParametersÚoptFlagsr   r€   r�   Ú_ciphersr„   Ú_macsr   ÚCompletionsÚCompleteListÚdecodeÚ	CompleterÚCompleteUserAtHostÚcompDatarˆ   r»   rÂ   r·   rŠ   r‹   rÊ   rÑ   Ú__annotate_func__r¥   r¦   )rë   r¨   s   0@r`   rª   rª   ã   sb  ø‡ € ð€Hò 	<ÚVÚHÚ=ÚMÚVò	
ò	
ð€Mò, 	FÚ0Ú8Ú0Ú>ÚKÚ%Ú=ð	€Hð ×+Ñ+×<Ñ<€HØ×(Ñ(×6Ñ6€Eà× Ò Ø+Ð,à�e×(Ò(¹hÓ)G¹h¸¯(©(®*¹hÑ)GÓHØ�E×&Ò&¹EÓ'B¹E°q¯©®
¹EÑ'BÓCØ˜EŸOšOÐ2IÔJØ˜UŸ_š_Ð3JÔKð	
ð ×$Ò$Ó&Ø�OŠO )Ô,Ø�OŠO *°TÔ:ð
ô€Hð €IØ79€MØ8:€Nò!òIòGòAò!÷Y ƒ ùòT *HùÚ'Bs   ÂEÂ:E!rª   c                 ó
  aa€ \         P                  '       d   \        R 4      h\        P                  ! 4       o. pV3VV3R llpV\         n        \         P                  V 4       \         P                  P                  4        S# )zcan't ask 2 questions at once!c                 ó  <€ V '       g   R # V R8X  d   \         P                  ! 4        V R8X  dF   \        P                  R4       RP	                  V4      p?R \        n        SP                  V4       R # ^ \        V 4      u;8:  d   ^8  d6   M M2VP                  V 4       S'       d   \        P                  V 4       R # R # \        V 4      ^8X  d:   V'       d0   S'       d   \        P                  R4       VP                  4        R # R # R # )NÚÚz
rÏ   z )	r   Ústopr™   ÚwriterÐ   Úcallbackr‡   r‰   Úpop)ÚchÚrespÚstrespÚdÚechos   && €€r`   ÚgotCharÚ!deferredAskFrame.<locals>.gotCharE  s­   ø€ ßÙØ�Œ<Ü�LŠLŒNØ�Œ:Ü�K‰K˜ÔØ—W‘W˜T“]ˆFØØ!ŒEŒNØ�J‰J�vÔÙØ”3�r“7Ö ˜S× Ø�K‰K˜ŒOßÜ—‘˜B–ñ ä�‹W˜Œ\ŸdßÜ—‘˜KÔ(Ø�H‰HŽJñ #‰\rb   )r™   r   Ú
ValueErrorr   ÚDeferredrÿ   ÚcanvasÚfocus_force)Úquestionr  r  r  r  s   &f  @r`   ÚdeferredAskFramer  ?  s`   ù€ Ü‡~‡~€~ÜÐ9Ó:Ð:Ü�ŠÓ€AØ€Dà÷ ð ð* „E„NÜ	‡K�K�ÔÜ	‡L�L×ÑÔØ€Hrb   c            
      ó€  € \         P                  R ,          p RV 9   d6   V P                  R4      pWV^,            V ,           p W^,           V^,           1 V R,           FM  p V P                  V4      pVR,          R8X  d+   W^,           ,          ^ ,          R8w  d   . WV^,           % KK  KM  KO  	  \        P
                  ! 4       pVP                  4        \        P                  ! 4       p\        V4      s	\        P                  \        P                  \        P                  ^R7       \        4       s \        P                  V 4       \        P+                  4        FU  w  rgV'       g   K  \-        \        V4      '       g   K'  \/        \        V4      P1                  \        P2                  V4       KW  	  \        P4                   F?  w  pw  rš\        P6                  P1                  \        P2                  R	V R
V	 R
V
 24       KA  	  . \        n        \        P8                   F?  w  pw  rš\        P6                  P1                  \        P2                  RV R
V	 R
V
 24       KA  	  . \        n        \:        P<                  ! VRR7      sVPA                  R\:        PB                  \>        PD                  ,          ^,           \:        PF                  \>        PH                  ,          ^,           3,          4       \>        P                  \        P                  R7       \J        PL                  ! V4       VP                  4        \        R,          '       d   \        R,          '       g   R\        R,          9   d   \        PO                  4        MVPQ                  4        \R        PT                  ! 4        \         P(                  ! \V        4       R#   \         d     EK€  i ; i  \         P"                   dH   p\%        RT,          4       \        P'                  4        \         P(                  ! ^4        Rp?ELñRp?ii ; i)rÎ   z-l:NNN:Nr}   Nz-oÚ-)ÚsideÚfillÚexpandz	ERROR: %sNrn   ro   rp   )r   z%dx%d)r  rI   rK   r~   ),r[   ÚargvÚindexr	  r>   ÚTkÚwithdrawÚToplevelr   ÚmenuÚpackÚTOPÚBOTHrª   r   ÚparseOptionsr   Ú
UsageErrorÚprintÚopt_helpr\   ÚitemsÚhasattrÚgetattrrj   ri   r»   rP   rÂ   r   Ú
VT100Framer™   ÚgeometryÚ	fontWidthr,   Ú
fontHeightr+   r   ÚinstallrX   Úmainloopr   ÚrunÚ
exitStatus)r^   r¶   ÚargÚrootÚtopÚuÚkrë   rÝ   ÚrhÚrps              r`   r*  r*  `  sé  € ä�8‰8�B�<€DØˆt„|Ø�J‰J�tÓˆØ˜˜A�ˆ Õ%ˆØ�Q•˜˜Q��ÐØ�A�wˆwˆð	Ø—
‘
˜3“ˆAØ�2�w˜$Œ 4¨A­¥;¨q¥>°SÔ#8Ø"$�˜˜Q�’ñ $9‰ñ ô �:Š:‹<€DØ‡M�M„OÜ
×
Ò
Ó
€CÜ�sÓ€DÜ‡I�I”7—;‘;¤W§\¡\¸!€IÔ<ÜÓ€GðÜ×Ñ˜TÔ"ô
 —‘–‰ˆß‰1”œ˜q×!Ô!Ü”D˜!Ó×#Ñ#¤G§K¡K°Ö3ñ  ô ×,Ô,‰ˆ‰8ˆBÜ�‰×ÑœWŸ[™[¨B¨q¨c°°2°$°a¸°tÐ*<Ö=ñ -à„GÔÜ×-Ô-‰ˆ‰8ˆBÜ�‰×ÑœWŸ[™[¨B¨q¨c°°2°$°a¸°tÐ*<Ö=ñ .à„GÔÜ×Ò˜t¨dÔ3€EØ‡M�MØÜ×ÑœuŸ{™{Õ*¨QÕ.´×0BÑ0BÄUÇ\Á\Õ0QÐTUÕ0UÐ
Võ	Wôô 
‡J�J”G—K‘K€JÔ Ü×Ò�dÔØ‡M�M„OÜ��ŒœG FŸOœO°´w¸vµÔ0FÜ�‰Õà�‰ŒÜ‡K‚K„MÜ‡H‚HŒZÖøôI ô 	Ûð	ûô ×Ñô Üˆk˜A�oÔÜ×ÑÔÜ�Š��Šûðús+   Á!AOÄ2O! ÏOÏOÏ!P=Ï6<P8Ð8P=c                  ó†   € ^ RI Hp  ^s\        P                  ! V P                  4       4       \        P                  ! 4        h )re   ©Úfailure)Útwisted.pythonr5  r+  r   ÚerrÚFailurer   rþ   r4  s    r`   r“   r“   “  s+   € Ý&ð €JÜ‡G‚GˆG�O‰OÓÔÜ‡L‚L„NØ	rb   c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )r˜   i�  Tc                ó0   € \         P                  ! 4        R # rµ   )r   rþ   rÉ   s   &r`   ÚstopFactoryÚSSHClientFactory.stopFactory   s   € Ü�ŠŽrb   c                ó   € \        4       # rµ   )r€   )r]   Úaddrs   &&r`   ÚbuildProtocolÚSSHClientFactory.buildProtocol£  s   € Ü!Ó#Ð#rb   c                óh   € \         P                  ! R RVP                   RVP                   24       R# )r   zConnection Failed, Reason:
 z: N)r‚   ÚshowwarningÚtyper2   )r]   Ú	connectorÚreasons   &&&r`   ÚclientConnectionFailedÚ'SSHClientFactory.clientConnectionFailed¦  s+   € Ü× Ò ØØ+¨F¯K©K¨=¸¸6¿<¹<¸.ÐIö	
rb   r×   N)
r¡   r¢   r£   r¤   Únoisyr;  r?  rF  r¥   r¦   r§   s   @r`   r˜   r˜   �  s   ø‡ € Ø€Eòò$÷
ð 
rb   r˜   c                   óD   a € ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
r€   i­  c                ó   € R W3,          s R# )zDconch:	Remote side disconnected with error code %i
conch:	reason: %sN)r+  )r]   ÚcodeÚdescs   &&&r`   ÚreceiveErrorÚSSHClientTransport.receiveError®  s   € ð VØˆlõò 	rb   c                óZ   € R W3,          s \        P                  P                  WV4       R# )z>conch:	Sending disconnect with error code %i
conch:	reason: %sN)r+  r   r€   ÚsendDisconnect)r]   rK  rE  s   &&&r`   rP  Ú!SSHClientTransport.sendDisconnectµ  s/   € ð PØˆnõð 	ô 	×$Ñ$×3Ñ3°DÀÖGrb   c                óz   € V'       g   \         R ,          '       d    \        P                  ! RV,          4       R# R# )r   zReceived Debug Message: %sN)r   r   r–   )r]   ÚalwaysDisplayÚmessageÚlangs   &&&&r`   ÚreceiveDebugÚSSHClientTransport.receiveDebug½  s$   € çœG EŸNœNÜ�GŠGÐ0°7Õ:Ö;ñ +rb   c                óB  € \        \        R ,          VRR/4      pV^8X  d   \        P                  ! ^4      # V^8X  d+   \        P                  ! \
        P                  ! R4      4      # \        R ,          V P                  P                  4       P                  8X  d   \        R ,          p\        R ,          pM~RP                  \        R ,          V P                  P                  4       P                  4      pRP                  \        R ,          V P                  P                  4       P                  4      p\        P                  ! V4      ^ ,          pRP                  VRRR	R
/V,          V4      pVR,          p\        V^4      P                  V P                  WV4      # )rI   zknown-hostsNúbad host keyz{} ({})z{},{}zNThe authenticity of host '{}' can't be established.
{} key fingerprint is {}.ó   ssh-dssÚDSAó   ssh-rsaÚRSAz9
Are you sure you want to continue connecting (yes/no)? )r   r   r   ÚsucceedÚfailr   Ú
ConchErrorr   ÚgetPeerrI   r›   r   ÚgetNSr  ÚaddCallbackÚ_cbVerifyHostKey)r]   ÚpubKeyÚfingerprintÚgoodKeyrI   ÚkhHostÚkeyTypeÚquess   &&&     r`   ÚverifyHostKeyÚ SSHClientTransport.verifyHostKeyÂ  sE  € ô
 !¤¨¥°&¸=È$Ð:OÓPˆØ�aŒ<Ü—=’= Ó#Ð#Ø˜Œ\Ü—:’:œe×.Ò.¨~Ó>Ó?Ð?ä�v� $§.¡.×"8Ñ"8Ó":×"?Ñ"?Ô?Ü˜v•�Ü  �‘à ×'Ñ'¬°­¸¿¹×9OÑ9OÓ9Q×9VÑ9VÓW�Ø Ÿ™¬°­¸¿¹×9OÑ9OÓ9Q×9VÑ9VÓW�Ü—l’l 6Ó*¨1Õ-ˆGðß#™VØØ˜U J°Ð6°wÕ?Øóð ð ÐQÕQˆDÜ# D¨!Ó,×8Ñ8Ø×%Ñ% v°wóð rb   c           
     ó¶  € VP                  4       R9  d(   \        R^4      P                  V P                  W#V4      # VP                  4       R8X  d,   \        P                  R4       \        P                  ! R4      h \        P                  RV: RRRR	R
/V,          : R24       \        \        P                  P                  R4      R4      ;_uu_ 4       p\        P                  ! V4      pVP                  RV RV RV 24       RRR4       R#   + '       g   i     R# ; i  \         d'    \        P                   ! 4        \        P                  hi ; i)ÚyesÚnozPlease type  'yes' or 'no': zHost key verification failed.
rY  zWarning: Permanently added 'z' (rZ  r[  r\  r]  z) to the list of known hosts.
z~/.ssh/known_hostsrí   Ú
rÍ   N)rn  ro  )Úlowerr  rc  rd  r™   rÿ   r   r`  ÚopenÚosÚpathÚ
expanduserÚbase64Ú	b64encodeÚBaseExceptionr   r”   )r]   Úansre  rh  ri  Úknown_hostsÚ
encodedKeys   &&&&&  r`   rd  Ú#SSHClientTransport._cbVerifyHostKeyß  s  € Ø�9‰9‹;˜mÔ+Ü#Ð$BÀAÓF×RÑRØ×%Ñ% v°wóð ð �9‰9‹;˜$ÔÜ�K‰KÐ;Ô<Ü×"Ò" >Ó2Ð2ð	#Ü�KŠKó ˜J¨¨z¸5ÐAÀ'×JÐJðLôô
 ”b—g‘g×(Ñ(Ð)=Ó>À×DÔDÈÜ#×-Ò-¨fÓ5�
Ø×!Ñ! B v h¨a°¨y¸¸*¸Ð"FÔG÷ E×D×DÒDûô ô 	#Ü�JŠJŒLÜ×"Ñ"Ð"ð	#ús+   Á>AD' Ã1DÄ	D' ÄD$	ÄD' Ä$D' Ä'1Ec                ó¸   € \         R ,          '       d   \         R ,          pM\        P                  ! 4       pV P                  \	        V\        4       4      4       R# )rK   N)r   ÚgetpassÚgetuserÚrequestServiceÚSSHUserAuthClientÚSSHConnection)r]   rK   s   & r`   ÚconnectionSecureÚ#SSHClientTransport.connectionSecureô  s8   € Ü�6�?Œ?Ü˜6•?‰Dä—?’?Ó$ˆDØ×ÑÔ-¨d´M³OÓDÖErb   r×   N)r¡   r¢   r£   r¤   rM  rP  rV  rk  rd  rƒ  r¥   r¦   r§   s   @r`   r€   r€   ­  s+   ø‡ € ò
òHò<ò
ò:#÷*Fð Frb   r€   c                   óL   a € ] tR tRt o . tR	R ltR tR tR tV 3R lt	Rt
V tR# )
r�  iü  Nc                óx   € V'       g(   R P                  V P                  \        R,          4      p\        V^ 4      # )z{}@{}'s password: rI   )r›   rK   r   r  )r]   Úprompts   &&r`   ÚgetPasswordÚSSHUserAuthClient.getPasswordÿ  s,   € ßØ)×0Ñ0°·±¼GÀF½OÓLˆFÜ ¨Ó*Ð*rb   c                ó2  € \         P                   Uu. uF  qV P                  9  g   K  VNK  	  ppV'       g   R # V^ ,          p\        P                  ! V4       V P                  P                  V4       \        P                  P                  V4      pVR,          p\        P                  P                  V4      '       g   R #  \        P                  P                  V4      P                  4       # u upi   \         d    T P                  4       u # i ; i)Nz.pub)r   rˆ   Ú	usedFilesr   r–   r‰   rs  rt  ru  Úexistsr
   ÚKeyÚfromFileÚblobrx  ÚgetPublicKey)r]   ÚxÚfilesÚfiles   &   r`   r�  ÚSSHUserAuthClient.getPublicKey  sÑ   € Ü#×-Ò-ÓIÑ-�q¸$¿.¹.Ñ1H—�Ñ-ˆÐIßÙØ�Q�xˆÜ�Š�ŒØ�‰×Ñ˜dÔ#Ü�w‰w×!Ñ! $Ó'ˆØ��ˆÜ�w‰w�~‰~˜d×#Ò#Ùð	'Ü—8‘8×$Ñ$ TÓ*×/Ñ/Ó1Ð1ùò Jøô ô 	'Ø×$Ñ$Ó&Ò&ð	'ús   “C3ªC3Ã,C8 Ã8DÄDc                ó,  € \         P                  P                  V P                  R,          4      p\         P                  P	                  V4      '       g   R#  \
        P                  ! \        P                  P                  V4      P                  4      #   \        P                   di   pTP                  ^ ,          R8X  dF   RT P                  R,          ,          p\        T^ 4      P                  T P                  ^ 4      u Rp?#  Rp?R# Rp?ii ; i)ry   Nzencrypted key with no passwordúEnter passphrase for key '%s': éÿÿÿÿ)rs  rt  ru  r‹  rŒ  r   r^  r
   r�  rŽ  Ú	keyObjectÚBadKeyErrorr^   r  rc  Ú_cbGetPrivateKey)r]   r“  rÙ   r‡  s   &   r`   ÚgetPrivateKeyÚSSHUserAuthClient.getPrivateKey  sÁ   € Ü�w‰w×!Ñ! $§.¡.°Õ"4Ó5ˆÜ�w‰w�~‰~˜d×#Ò#Ùð	YÜ—=’=¤§¡×!2Ñ!2°4Ó!8×!BÑ!BÓCÐCøÜ×Ñô 	YØ�v‰v�a�yÐ<Ô<Ø:¸T¿^¹^ÈBÕ=OÕO�Ü'¨°Ó2×>Ñ>¸t×?TÑ?TÐVWÓXÕXõ =ûð	Yús   Á<B ÂDÂ+ADÄDÄDc                óŒ  € \         P                  P                  V P                  R,          4      p \        P
                  P                  W1R7      P                  #   \        P                   dS    T^8X  d   h RT P                  R,          ,          p\        T^ 4      P                  T P                  T^,           4      u # i ; i)ry   )Úpasswordr–  r—  )rs  rt  ru  r‹  r
   r�  rŽ  r˜  r™  r  rc  rš  )r]   ry  Úcountr“  r‡  s   &&&  r`   rš  Ú"SSHUserAuthClient._cbGetPrivateKey  s�   € Ü�w‰w×!Ñ! $§.¡.°Õ"4Ó5ˆð	Ü—8‘8×$Ñ$ TÐ$Ó8×BÑBÐBøÜ×Ñô 	Ø˜ŒzØØ6¸¿¹ÈÕ9KÕKˆFÜ# F¨AÓ.×:Ñ:Ø×%Ñ% u¨q¥yóò ð		ús   ²)A ÁA$CÃCc                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # )r}   r‹  )r   rÔ   )r›   r¨   s   "€r`   rÕ   ÚSSHUserAuthClient.__annotate__ü  s   ø‡ ‚ Ù‘C�yÑò rb   r×   rµ   )r¡   r¢   r£   r¤   r‹  rˆ  r�  r›  rš  rù   r¥   r¦   r§   s   @r`   r�  r�  ü  s'   ø‡ € Ø€Iô+ò
'ò 	Yò
÷G ƒ rb   r�  c                   ó&   a € ] tR tRt o R tRtV tR# )r‚  i,  c           	     óL  € \         R ,          '       g   V P                  \        4       4       \         P                  '       dT   \         P                   F?  w  r\        P
                  ! V\        P                  ! W\        P                  4      4       KA  	  \         P                  '       dy   \         P                   Fb  w  r2\        P                  ! RP                  W24      4       \        P                  ! RV34      pV P                  RV4       W P                  V&   Kd  	  R# R# )rç   z&asking for remote forwarding for {}:{}z0.0.0.0ztcpip-forwardN)r   ÚopenChannelÚ
SSHSessionr»   r   Ú	listenTCPr	   ÚSSHListenForwardingFactoryÚ SSHListenClientForwardingChannelrÂ   r   r–   r›   ÚpackGlobal_tcpip_forwardÚsendGlobalRequest)r]   r½   Úhostportr¿   Údatas   &    r`   ÚserviceStartedÚSSHConnection.serviceStarted-  sÞ   € Ü�y×!Ô!Ø×ÑœZ›\Ô*Ü× × Ð Ü'.×'<Ô'<Ñ#�	Ü×!Ò!ØÜ×9Ò9Ø¬
×(SÑ(Sóöñ (=ô ×!×!Ð!Ü(/×(>Ô(>Ñ$�
Ü—’Ø<×CÑCØ"óôô
 "×:Ò:¸IÀzÐ;RÓS�Ø×&Ñ& ¸Ô=Ø2:×#Ñ# JÓ/ó )?ñ "rb   r×   N)r¡   r¢   r£   r¤   r®  r¥   r¦   r§   s   @r`   r‚  r‚  ,  s   ø‡ € ÷;ð ;rb   r‚  c                   óT   a € ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tRtV tR# )r¦  iD  s   sessionc                ó°  € ^V n         \        P                  ! 4       p\        R,          '       d   V P                  Vn        MV P                  Vn        V P                  Vn        VP
                  \        n
        \        P                  P                  4        \        R,          '       d?   V P                  P                  V R\        P                   ! \        R,          4      4       EM?\        R,          '       d§   \        R,          '       dW   \"        P$                  P'                  RR4      pRp\        P(                  ! W4R4      pV P                  P                  V R	V4       V P                  P                  V R
\        P                   ! \        R,          4      4       M†\        R,          '       gW   \"        P$                  P'                  RR4      pRp\        P(                  ! W4R4      pV P                  P                  V R	V4       V P                  P                  V RR4       V P                  P*                  P*                  P-                  ^4       R# )ry   r:   ré   s	   subsystemr*   rß   ÚTERMÚxtermrÏ   s   pty-reqÚexecrá   s   shellrb   N)é   éP   re   re   )Ú
escapeModer   ÚSSHSessionClientr   ÚhandleInputÚdataReceivedrÿ   ÚsendEOFÚconnectionLostr™   r   r  r  ÚconnÚsendRequestr   ÚNSrs  Úenvironrq   ÚpackRequest_pty_reqr   ÚsetTcpNoDelay)r]   ÚfoorÛ   ÚtermÚwinSizeÚ
ptyReqDatas   &&    r`   ÚchannelOpenÚSSHSession.channelOpenG  s‹  € ð ˆŒÜ×$Ò$Ó&ˆÜ�8×ÔØ!×-Ñ-ˆA�Nà!ŸZ™ZˆAŒNØŸ<™<ˆÔØŸ™ŒŒÜ�‰× Ñ Ô"Ü�;×ÔØ�I‰I×!Ñ! $¨´f·i²iÄÈ	Õ@RÓ6SÖTÜ�Y×ÔÜ�u�~Œ~Ü—z‘z—~‘~ f¨gÓ6�à(�Ü$×8Ò8¸ÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCØ�I‰I×!Ñ! $¨´·	²	¼'À)Õ:LÓ0MÕNä˜7×#Ô#Ü—z‘z—~‘~ f¨gÓ6�à(�Ü$×8Ò8¸ÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCØ�I‰I×!Ñ! $¨°#Ô6Ø�	‰	×Ñ×%Ñ%×3Ñ3°AÖ6rb   c                ó¤  € VR	9   d   ^V n         V P                  V4       R# V P                   ^8X  d   V\        R,          8X  d
   ^V n         R# V P                   ^8X  dÚ   ^V n         VR8X  d.   \        P                  ! R4       \
        P                  ! 4        R# VR8X  d;   \        P                  ! \        P                  ! 4       \        P                  4       R# VR8X  d=   \        P                  ! R4       V P                  P                  P                  4        R# V P                  RV,           4       R# ^ V n         V P                  V4       R# )
rp  r:   Ú.zdisconnecting from escapeNÚrÞ   zrekeying connectionrÚ   )rp  rý   )r·  rÿ   r   r   r–   r   rþ   rs  ÚkillÚgetpidÚsignalÚSIGSTOPr½  r   ÚsendKexInit)r]   Úchars   &&r`   r¹  ÚSSHSession.handleInputh  sá   € à�<ÔØˆDŒOØ�J‰J�tÖØ�_‰_ Ô! d¬g°hÕ.?Ô&?ØˆDŽOØ�_‰_ Ô!ØˆDŒOØ�sŒ{Ü—’Ð3Ô4Ü—’”ÙØ˜”ä—’œŸ	š	›¤V§^¡^Ô4ÙØ˜”Ü—’Ð-Ô.Ø—	‘	×#Ñ#×/Ñ/Ô1ÙØ�J‰J�s˜T•zÖ"àˆDŒOØ�J‰J�tÖrb   c                ó    € VP                  R 4      p\        R,          '       d   \        \        V4      4       \        P                  V4       R# )zutf-8rì   N)rõ   r   r  Úreprr™   rÿ   ©r]   r­  s   &&r`   rº  ÚSSHSession.dataReceived‚  s3   € Ø�{‰{˜7Ó#ˆÜ�9×ÔÜ”$�t“*ÔÜ�‰�DÖrb   c                óú   € V\         P                  8X  df   \        P                  ! R \	        V4      ,          4       \
        P                  P                  V4       \
        P                  P                  4        R# R# )zgot %s stderr dataN)	r   ÚEXTENDED_DATA_STDERRr   r–   r…   r[   r‘   rÿ   Úflush)r]   rà   r­  s   &&&r`   ÚextReceivedÚSSHSession.extReceivedˆ  sM   € Ø”
×/Ñ/Ô/Ü�GŠGÐ(¬3¨t«9Õ4Ô5Ü�J‰J×Ñ˜TÔ"Ü�J‰J×ÑÖñ 0rb   c                ón   € \         P                  ! R 4       \        P                  P	                  4        R# )zgot eofN)r   r–   r[   ÚstdinÚcloserÉ   s   &r`   ÚeofReceivedÚSSHSession.eofReceivedŽ  s   € Ü�Š�	ÔÜ�	‰	�‰Örb   c                ó¶   € \         P                  ! R V ,          4       \        V P                  P                  4      ^8X  d   \
        P                  ! 4        R# R# )z	closed %sN)r   r–   r…   r½  Úchannelsr   rþ   rÉ   s   &r`   ÚclosedÚSSHSession.closed’  s8   € Ü�Š�˜dÕ"Ô#Üˆt�y‰y×!Ñ!Ó" aÔ'Ü�LŠLŽNñ (rb   c                ó–   € \        \        P                  ! R V4      ^ ,          4      s\        P
                  ! R\        ,          4       R# )z>Lzexit status: %sN)r•   ÚstructÚunpackr+  r   r–   rÕ  s   &&r`   Úrequest_exit_statusÚSSHSession.request_exit_status—  s.   € äœŸš t¨TÓ2°1Õ5Ó6ˆ
Ü�ŠÐ!¤JÕ.Ö/rb   c                ó<   € V P                   P                  V 4       R # rµ   )r½  r»  rÉ   s   &r`   r»  ÚSSHSession.sendEOFœ  s   € Ø�	‰	×Ñ˜$Örb   )r·  N)r¡   r¢   r£   r¤   r7   rÇ  r¹  rº  rÚ  rß  rã  rè  r»  r¥   r¦   r§   s   @r`   r¦  r¦  D  s8   ø‡ € Ø€Dò7òBò4òòòò
0÷
 ð  rb   r¦  Ú__main__)<Ú__doc__rv  r~  rs  rÎ  ræ  r[   Útkinterr>   Útkinter.filedialogÚ
filedialogrf   Útkinter.messageboxÚ
messageboxr‚   Útypingr   r   Útwisted.conchr   Útwisted.conch.client.defaultr   Útwisted.conch.sshr   r   r   r	   r
   r   r   r   Útwisted.conch.uir   Útwisted.internetr   r   r   r   r6  r   r   r?   r   ÚOptionsrª   r   r  r+  r™   r  r*  r“   ÚClientFactoryr˜   r€   r�  r‚  Ú
SSHChannelr¦  r¡   r×   rb   r`   Ú<module>rü     s  ðñ
ó
 Û Û 	Û Û Û 
Û Ý )Ý )ß å Ý 7÷	÷ 	ó 	õ %ß @Ó @ß %ôz�'—-‘-ô zôzR!�U—]‘]ô R!ðl €Ø€Ø€
Ø€òòB0òf
ô
�x×-Ñ-ô 
ô LF˜×5Ñ5ô LFô^-˜×2Ñ2ô -ô`;�J×,Ñ,ô ;ô0Y �×#Ñ#ô Y ðx ˆzÔÙ†Eñ rb   