+
    üÐj¢†  ã                   ó  € 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t^ RI	t	^ RI
t
^ RIHtHtHtHt ^ RIHtHtHt ^ RIHtHtHtHt ^ RIHtHtHtHt ^ RIHt ^ RI H!t!H"t"H#t# ^ RI$H%t%  ! R	 R
]PL                  4      t'R t(R t)R t*R t+R t, ! R R4      t- ! R R]P\                  4      t/]0! ]/R]/Pb                  4        ! R R]Pd                  4      t2 ! R R]Pf                  4      t4]5R8X  d
   ](! 4        R# R# )z0
Implementation module for the I{cftp} command.
N)ÚListÚOptionalÚTextIOÚUnion)ÚconnectÚdefaultÚoptions)ÚchannelÚcommonÚ
connectionÚfiletransfer)ÚdeferÚreactorÚstdioÚutils)Úbasic)ÚfailureÚlogÚusage)ÚFilePathc                   óÊ   a € ] tR t^t o RtRt. RO. RO. RO. RO.t]P                  ! RR/]P                  ! 4       ]P                  ! RR7      .R7      tRR	 ltV 3R
 ltRtV tR# )ÚClientOptionszˆUsage:   cftp [options] [user@]host
         cftp [options] [user@]host[:dir[/]]
         cftp [options] [user@]host[:file [localfile]]
zncftp is a client for logging into a remote machine and executing commands to send and receive file informationÚ
buffersizeNz,Size of send/receive buffer (default: 32768)z
local file)Údescr)ÚdescriptionsÚextraActionsc                óŒ   € R V R&   RV9   d0   VP                  R^4      w  qR&   V R,          P                  R4       WR&   W R&   R# )Ú Ú
remotePathÚ:Ú/ÚhostÚ	localPathN)ÚsplitÚrstrip)Úselfr!   r"   s   &&&Ú</usr/lib/python3/dist-packages/twisted/conch/scripts/cftp.pyÚ	parseArgsÚClientOptions.parseArgs5   sM   € Øˆˆ\ÑØ�$Œ;Ø'+§z¡z°#°qÓ'9Ñ$ˆD�|Ñ$Ø�Õ×%Ñ% cÔ*ØˆV‰Ø%ˆ[Óó    c                ól   <€ V ^8„  d   Qh/ S[ S[ S[S[S[S[3,          ,          ,          ,          ;R&   # )é   ÚoptParameters)r   r   r   ÚstrÚint)ÚformatÚ__classdict__s   "€r&   Ú__annotate__ÚClientOptions.__annotate__   s+   ø‡ ‚ ñ ™™X¡e©C±¨H¥oÕ6Õ7Õ8ñ ò r)   © )r   ÚBi €  z0Size of the buffer to use for sending/receiving.)Ú	batchfileÚbNz-File to read commands from, or '-' for stdin.)ÚrequestsÚRé   z6Number of requests to make before waiting for a reply.)Ú	subsystemÚsÚsftpz'Subsystem/server program to connect to.©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚsynopsisÚlongdescr,   r   ÚCompletionsÚCompleteUserAtHostÚCompleteFilesÚcompDatar'   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r0   s   @r&   r   r      ss   ø‡ € ð€Hð
	Bð ò 	WÚQÚVÚMð	<€Mð × Ò Ø"Ð$RÐSà×$Ò$Ó&Ø×Ò lÔ3ð
ô€Hô&÷3 ƒ r)   r   c                  ó‚  € \         P                  R ,          p RV 9   d6   V P                  R4      pWV^,            V ,           p W^,           V^,           1 \        4       p VP                  ! V 4       VR,          '       dA   \         P                  p\        P                  ! \         P                  4       V\         n	        M\        P                  ! 4        \        V4       \        P                   ! 4        R#   \
        P                   d3   p\        RT,          4       \         P                  ! ^4        Rp?LÈRp?ii ; i)ºé   NNz-lz	ERROR: %sNr   )ÚsysÚargvÚindexr   ÚparseOptionsr   Ú
UsageErrorÚprintÚexitÚstdoutr   ÚstartLoggingÚstderrÚdiscardLogsÚ	doConnectr   Úrun)ÚargsÚir   ÚuÚrealouts        r&   r[   r[   >   sÛ   € Ü�8‰8�B�<€DØˆt„|Ø�J‰J�tÓˆØ˜˜A�ˆ Õ%ˆØ�Q•˜˜Q��ÐÜ‹o€GðØ×Ò˜TÔ"ð ˆu‡~„~Ü—*‘*ˆÜ×ÒœŸ™Ô$ØŒ�
ä�ŠÔÜˆgÔÜ‡K‚K†Møô ×Ñô Üˆk˜A�oÔÜ�Š��‰ûðús   ÁC7 Ã7D>Ä(D9Ä9D>c                  ó¨   € ^s  \        P                  ! 4        \        P
                  ! \        P                  ! 4       4       h   \         d     L7i ; i)r+   )Ú
exitStatusr   ÚstopÚBaseExceptionr   Úerrr   ÚFailurer3   r)   r&   ÚhandleErrorrf   T   sA   € à€JðÜ�ŠŒô ‡G‚GŒG�OŠOÓÔØ	øô ô Ùðús   „A ÁAÁAc                 ó  € R V R,          9   d#   V R,          P                  R ^4      w  V R&   V R&   V R,          pV R,          '       g   \        P                  ! 4       V R&   V R,          '       g   ^V R&   M\        V R,          4      V R&   V R,          pV R,          p\	        4       pWn        \        P                  p\        P                  ! V R,          W4      p\        P                  ! WWV4      P                  \        4       R# )Ú@r!   ÚuserÚportN)r#   ÚgetpassÚgetuserr.   ÚSSHConnectionr   r   ÚverifyHostKeyÚSSHUserAuthClientr   Ú
addErrbackÚ_ebExit)r   r!   rj   ÚconnÚvhkÚuaos   &     r&   rZ   rZ   _   sÑ   € Ø
ˆg�f�oÔØ+2°6­?×+@Ñ+@ÀÀaÓ+HÑ(ˆ�‰˜ ™Ø�6�?€DØ�6�?Œ?Ü!Ÿ/š/Ó+ˆ�‰Ø�6�?Œ?Øˆ�Šä˜g f�oÓ.ˆ�‰Ø�6�?€DØ�6�?€DÜ‹?€DØ„LÜ
×
Ñ
€CÜ
×
#Ò
# G¨F¥O°WÓ
C€CÜ‡O‚O�D ¨cÓ2×=Ñ=¼gÖFr)   c                 óè   € \        V P                  R 4      '       d   V P                  P                  pM\        V 4      p\        V4        \        P
                  ! 4        R#   \         d     R# i ; i)ÚvalueN)Úhasattrrv   r-   rT   r   rb   rc   )Úfr;   s   & r&   rq   rq   r   sP   € Üˆq�w‰w˜× Ò Ø�G‰G�M‰M‰ä�‹FˆÜ	ˆ!„HðÜ�ŠŽøÜô Úðús   ÁA" Á"A1Á0A1c                  ó   € R # r=   r3   )r\   s   *r&   Ú_ignorerz   ~   s   € Ùr)   c                   ó,   a € ] tR t^‚t o R tR tRtV tR# )ÚFileWrapperc                ón   € Wn         R V n        VP                  ^ ^4       VP                  4       V n        R# )ç        N)rx   ÚtotalÚseekÚtellÚsize©r%   rx   s   &&r&   Ú__init__ÚFileWrapper.__init__ƒ   s(   € ØŒØˆŒ
Ø	�‰ˆq�!ŒØ—F‘F“HˆŽ	r)   c                ó.   € \        V P                  V4      # r=   )Úgetattrrx   )r%   Úattrs   &&r&   Ú__getattr__ÚFileWrapper.__getattr__‰   s   € Ü�t—v‘v˜tÓ$Ð$r)   )rx   r‚   r   N)r>   r?   r@   rA   r„   r‰   rI   rJ   rK   s   @r&   r|   r|   ‚   s   ø‡ € ò÷%ð %r)   r|   c                   ó¢  a € ] tR t^�t o ]tRtRt]tR@R lt	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tRAR ltR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%RBR! lt&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5]5t6R1 t7R2 t8R3 t9R4 t:R5 t;R6 t<R7 t=R8 t>R9 t?R: t@R; tAR< tBR= tCR> tDR?tEV tFR# )CÚStdioClientzcftp> ó   
Nc                ól   € Wn         R V n        W n        V'       * ;'       d    ^;'       g    ^ V n        R# ©r   N)ÚclientÚcurrentDirectoryÚfileÚuseProgressBar)r%   r�   rx   s   &&&r&   r„   ÚStdioClient.__init__•   s,   € ØŒØ "ˆÔØŒ	Ø#$œuŸ{˜{¨×0Ð0¨qˆÖr)   c                ón   € V P                   P                  R 4      P                  V P                  4       R# r�   )r�   ÚrealPathÚaddCallbackÚ_cbSetCurDir©r%   s   &r&   ÚconnectionMadeÚStdioClient.connectionMade›   s%   € Ø�‰×Ñ˜RÓ ×,Ñ,¨T×->Ñ->Ö?r)   c                ó2   € Wn         V P                  4        R # r=   )r‘   Ú_newLine©r%   Úpaths   &&r&   r˜   ÚStdioClient._cbSetCurDirž   s   € Ø $ÔØ�‰Žr)   c                ó†   € \        V\        4      '       d   VP                  R 4      pV P                  P	                  V4      # ©úutf-8)Ú
isinstancer-   ÚencodeÚ	transportÚwrite)r%   Úmsgs   &&r&   Ú_writeToTransportÚStdioClient._writeToTransport¢   s2   € Ü�cœ3×ÒØ—*‘*˜WÓ%ˆCØ�~‰~×#Ñ# CÓ(Ð(r)   c                óN  € V P                   P                  P                  '       d   R # \        V\        4      '       d   VP                  R4      p\        P                  ! RV,          4       VP                  4       pV'       g   V P                  4        R # V P                  '       d)   VP                  R4      '       d   ^V n        VR,          pM^ V n        V P                  V4      pVe9   VP                  V P                  4       VP!                  V P"                  4       R # R # )Nr£   zgot line %sÚ-rM   )r�   r¦   ÚlocalClosedr¤   ÚbytesÚdecoder   r¨   Úlstripr�   r’   Ú
startswithÚignoreErrorsÚ_dispatchCommandr—   Ú
_cbCommandrp   Ú
_ebCommand)r%   ÚlineÚds   && r&   ÚlineReceivedÚStdioClient.lineReceived§   sË   € Ø�;‰;× Ñ ×,×,Ð,ÙÜ�dœE×"Ò"Ø—;‘;˜wÓ'ˆDÜ�Š� Õ$Ô%Ø�{‰{‹}ˆßØ�M‰MŒOÙØ�9�9ˆ9˜Ÿ™¨×-Ò-Ø !ˆDÔØ˜•8‰Dà !ˆDÔØ×!Ñ! $Ó'ˆØŠ=Ø�M‰M˜$Ÿ/™/Ô*Ø�L‰L˜Ÿ™Ö)ñ r)   c                ó:  € R V9   d&   VP                  R ^4      w  r#VP                  4       pMTRr2VP                  R4      '       d3   V P                  pVR,          R ,           V,           P	                  4       pMAVP                  4       p\        P                  ! RV,          4       \        V RV,          R4      pVe   \        P                  ! WC4      # RV,          pV P                  \        P                  ! \        V4      4      4       V P                  4        R# )Ú r   Ú!rM   zlooking up cmd %szcmd_%sNzNo command called `%s')r#   r°   r±   Úcmd_EXECÚstripÚupperr   r¨   r‡   r   ÚmaybeDeferredrµ   r   re   ÚNotImplementedErrorr�   )r%   r¶   ÚcommandÚrestrx   ÚerrMsgs   &&    r&   r³   ÚStdioClient._dispatchCommand»   s×   € Ø�$Œ;Ø ŸJ™J s¨AÓ.‰MˆGØ—;‘;“=‰Dà  "�TØ×Ñ˜c×"Ò"Ø—‘ˆAØ˜B•K #Õ%¨Õ,×3Ñ3Ó5‰Dà—m‘m“oˆGÜ�GŠGÐ'¨'Õ1Ô2Ü˜˜h¨Õ0°$Ó7ˆAØŠ=Ü×&Ò& qÓ/Ð/à-°Õ9ˆFØ�O‰OœGŸOšOÔ,?ÀÓ,GÓHÔIØ�M‰MŽOr)   c                óL  € \         P                  ! V4       VP                  \        \        P
                  \        \        4      pV\        8X  d#   V P                  V P                  R 4      4       R# V\        P
                  8X  dG   RVP                  P                  VP                  P                  3,          pV P                  V4       R# V\        \        39   dG   RVP                  P                  VP                  P                  3,          pV P                  V4       R# R# )r   zremote error %i: %s
zlocal error %i: %s
N)r   r¨   ÚtraprÁ   r   Ú	SFTPErrorÚOSErrorÚIOErrorr©   Úcmd_HELPrv   ÚcodeÚmessageÚerrnoÚstrerror)r%   rx   ÚerÄ   s   &&  r&   Ú_printFailureÚStdioClient._printFailureÏ   sÄ   € Ü�Š�Œ
Ø�F‰FÔ&¬×(>Ñ(>ÄÌÓQˆØÔ#Ô#Ø×"Ñ" 4§=¡=°Ó#4Ö5Ø”,×(Ñ(Ô(Ø,°·±·±¸a¿g¹g¿o¹oÐ/NÕNˆFØ×"Ñ" 6Ö*Ø”7œGÐ$Ô$Ø+¨q¯w©w¯}©}¸a¿g¹g×>NÑ>NÐ.OÕOˆFØ×"Ñ" 6Ö*ñ %r)   c                ó²  € V P                   P                  P                  '       d   R # V P                  V P                  4       ^ V n        V P                  '       d{   V P                  P                  4       pV'       g'   V P                   P                  P                  4        R # V P                  V4       V P                  VP                  4       4       R # R # r=   )r�   r¦   r­   r©   Úpsr²   r’   ÚreadlineÚloseConnectionr¸   r¾   )r%   Úls   & r&   r�   ÚStdioClient._newLineÛ   s�   € Ø�;‰;× Ñ ×,×,Ð,ÙØ×Ñ˜tŸw™wÔ'ØˆÔØ�9�9ˆ9Ø—	‘	×"Ñ"Ó$ˆAßØ—‘×%Ñ%×4Ñ4Ö6à×&Ñ& qÔ)Ø×!Ñ! !§'¡'£)Ö,ñ r)   c                óî   € Vea   \        V\        4      '       d   VP                  R4      pV P                  V4       VP	                  R4      '       g   V P                  R4       V P                  4        R # )Nr£   r�   )r¤   r-   r¥   r©   Úendswithr�   )r%   Úresults   &&r&   r´   ÚStdioClient._cbCommandè   sW   € ØÒÜ˜&¤#×&Ò&ØŸ™ wÓ/�Ø×"Ñ" 6Ô*Ø—?‘? 5×)Ò)Ø×&Ñ& uÔ-Ø�‰Žr)   c                óØ   € V P                  V4       V P                  '       d7   V P                  '       g%   V P                  P                  P                  4        V P                  4        R # r=   )rÑ   r’   r²   r�   r¦   rÖ   r�   rƒ   s   &&r&   rµ   ÚStdioClient._ebCommandñ   sC   € Ø×Ñ˜1ÔØ�9�9ˆ9˜T×.×.Ð.Ø�K‰K×!Ñ!×0Ñ0Ô2Ø�‰Žr)   c                óŠ  € V P                  V4      w  rVP                  R 4      '       g
   VR ,          pT;'       d3    \        P                  P	                  V P
                  V4      ;'       g    RpV P                  P                  V4      pVP                  V P                  4       VP                  V P                  4       V# )r    r   )Ú_getFilenamerÚ   ÚosrŸ   Újoinr‘   r�   ÚopenDirectoryr—   Ú_cbCdrp   rµ   )r%   rŸ   rÃ   ÚnewPathr·   s   &&   r&   Úcmd_CDÚStdioClient.cmd_CD÷   s�   € Ø×&Ñ& tÓ,‰
ˆØ�}‰}˜S×!Ò!Ø�C�KˆDØ×DÐDœ2Ÿ7™7Ÿ<™<¨×(=Ñ(=¸tÓD×JÐJÈˆØ�K‰K×%Ñ% gÓ.ˆØ	�‰�d—j‘jÔ!Ø	�‰�T—_‘_Ô%Øˆr)   c                ó¦   € VP                  4        V P                  P                  VP                  4      pVP	                  V P
                  4       V# r=   )Úcloser�   r–   Únamer—   Ú	_cbCurDir)r%   Ú	directoryr·   s   && r&   rä   ÚStdioClient._cbCd  s9   € Ø�‰ÔØ�K‰K× Ñ  §¡Ó0ˆØ	�‰�d—n‘nÔ%Øˆr)   c                ó   € Wn         R # r=   ©r‘   rž   s   &&r&   rë   ÚStdioClient._cbCurDir  s   € Ø $Ör)   c                óÚ   € VP                  R ^4      w  r!V P                  V4      w  r1\        V4      pV P                  P	                  V4      pVP                  V P                  W2R7       V# )N)Úgrp©r#   rà   r.   r�   ÚgetAttrsr—   Ú_cbSetUsrGrp)r%   rÃ   rò   rŸ   r·   s   &&   r&   Ú	cmd_CHGRPÚStdioClient.cmd_CHGRP
  ó^   € Ø—J‘J˜t QÓ'‰	ˆØ×&Ñ& tÓ,‰
ˆÜ�#‹hˆØ�K‰K× Ñ  Ó&ˆØ	�‰�d×'Ñ'¨ˆÔ7Øˆr)   c                óÒ   € VP                  R ^4      w  r!V P                  V4      w  r1\        V^4      pV P                  P	                  VRV/4      pVP                  \        4       V# )NÚpermissions)r#   rà   r.   r�   ÚsetAttrsr—   rz   )r%   rÃ   ÚmodrŸ   r·   s   &&   r&   Ú	cmd_CHMODÚStdioClient.cmd_CHMOD  s]   € Ø—J‘J˜t QÓ'‰	ˆØ×&Ñ& tÓ,‰
ˆÜ�#�q‹kˆØ�K‰K× Ñ  ¨°sÐ';Ó<ˆØ	�‰”gÔØˆr)   c                óÚ   € VP                  R ^4      w  r!V P                  V4      w  r1\        V4      pV P                  P	                  V4      pVP                  V P                  W2R7       V# )N)Úusrró   )r%   rÃ   r   rŸ   r·   s   &&   r&   Ú	cmd_CHOWNÚStdioClient.cmd_CHOWN  rø   r)   c                óò   € / pVR J;'       d    T;'       g
    VR,          VR&   VR J;'       d    T;'       g
    VR,          VR&   V P                   P                  W%4      pVP                  \        4       V# )NÚuidÚgid)r�   rû   r—   rz   )r%   ÚattrsrŸ   r   rò   Únewr·   s   &&&&&  r&   rõ   ÚStdioClient._cbSetUsrGrp"  sn   € ØˆØ �o×.Ð.¨3×>Ð>°%¸µ,ˆˆE‰
Ø �o×.Ð.¨3×>Ð>°%¸µ,ˆˆE‰
Ø�K‰K× Ñ  Ó+ˆØ	�‰”gÔØˆr)   c                ó  € V P                  V4      w  r!R V9   g   RV9   du   V'       d<   V P                  V4      w  r1\        P                  P                  V4      '       g   R# MRpV P	                  V4      pVP                  V P                  V4       V# V'       d   V P                  V4      w  r1M&\        P                  P                  V4      ^,          p\        P                  ! W#34       \        VR^ 4      p\        V P                  4      P                  V4      pV P                  P                  VP                  \         P"                  / 4      pVP                  V P$                  V4       VP'                  V P(                  V4       V# )Ú*Ú?z'Wildcard get with non-directory target.r)   Úwb)rà   rá   rŸ   ÚisdirÚ_remoteGlobr—   Ú_cbGetMultipler#   r   r¨   Úopenr   r‘   Úchildr�   ÚopenFiler   ÚFXF_READÚ_cbGetOpenFilerp   Ú
_ebCloseLf)r%   rÃ   ÚremoteÚlocalr·   ÚlfrŸ   s   &&     r&   Úcmd_GETÚStdioClient.cmd_GET*  s3  € Ø×(Ñ(¨Ó.‰ˆØ�&Œ=˜C 6œMßØ"×/Ñ/°Ó5‘�Ü—w‘w—}‘} U×+Ò+ÙDð ,ð �Ø× Ñ  Ó(ˆAØ�M‰M˜$×-Ñ-¨uÔ5ØˆHßØ×+Ñ+¨DÓ1‰KˆE�4ä—G‘G—M‘M &Ó)¨!Õ,ˆEÜ�Š��Ô Ü�%˜˜qÓ!ˆÜ˜×-Ñ-Ó.×4Ñ4°VÓ<ˆØ�K‰K× Ñ  §¡¬L×,AÑ,AÀ2ÓFˆØ	�‰�d×)Ñ)¨2Ô.Ø	�‰�T—_‘_ bÔ)Øˆr)   c                ó&   € V P                  R W4      # r=   )Ú_cbGetMultipleNext)r%   Úfilesr  s   &&&r&   r  ÚStdioClient._cbGetMultipleB  s   € à×&Ñ& t¨UÓ:Ð:r)   c                ó(  € \        V\        P                  4      '       d   V P                  V4       MAV'       d:   V P	                  V4       VP                  R 4      '       g   V P	                  R 4       V'       g   R# VP                  ^ 4      ^ ,          p\        \        P                  P                  V\        P                  P                  V4      ^,          4      R^ 4      p\        V P                  4      P                  V4      pV P                  P!                  VP                  \"        P$                  / 4      pVP'                  V P(                  V4       VP+                  V P,                  V4       VP/                  V P0                  W#4       V# )Ú
Nr  )r¤   r   re   rÑ   r©   rÚ   Úpopr  rá   rŸ   râ   r#   r   r‘   r  r�   r  r   r  r—   r  rp   r  ÚaddBothr  )r%   Úresr  r  rx   r  rŸ   r·   s   &&&&    r&   r  ÚStdioClient._cbGetMultipleNextF  s  € Ü�cœ7Ÿ?™?×+Ò+Ø×Ñ˜sÕ#ßØ×"Ñ" 3Ô'Ø—<‘< ×%Ò%Ø×&Ñ& tÔ,ßÙØ�I‰I�a‹L˜�OˆÜ”"—'‘'—,‘,˜u¤b§g¡g§m¡m°AÓ&6°qÕ&9Ó:¸DÀ!ÓDˆÜ˜×-Ñ-Ó.×4Ñ4°QÓ7ˆØ�K‰K× Ñ  §¡¬L×,AÑ,AÀ2ÓFˆØ	�‰�d×)Ñ)¨2Ô.Ø	�‰�T—_‘_ bÔ)Ø	�	‰	�$×)Ñ)¨5Ô8Øˆr)   c                ó&   € VP                  4        V# r=   )ré   )r%   rx   r  s   &&&r&   r  ÚStdioClient._ebCloseLfX  s   € Ø
�‰Œ
Øˆr)   c                óV   € VP                  4       P                  V P                  W4      # r=   )rô   r—   Ú_cbGetFileSize)r%   Úrfr  s   &&&r&   r  ÚStdioClient._cbGetOpenFile\  s!   € Ø�{‰{‹}×(Ñ(¨×)<Ñ)<¸bÓEÐEr)   c           
     ó´  € \         P                  ! VR ,          4      '       g4   VP                  4        VP                  4        RVP                  ,          # VR,          Vn        V P
                  P                  P                  P                  R,          pV P
                  P                  P                  P                  R,          pRVn	        . p. pV P                  P                  4       p\        V4       F)  p	V P                  RW#V^ WH4      p
VP                  V
4       K+  	  \        P                   ! V^R7      pVP#                  V P$                  W#4       V# )rú   zCan't get non-regular file: %sr‚   r   r7   r~   r   ©ÚfireOnOneErrback)ÚstatÚS_ISREGré   rê   r‚   r�   r¦   rr   r   r   r   ÚsecondsÚrangeÚ
_cbGetReadÚappendr   ÚDeferredListr—   Ú
_cbGetDone)r%   r  r)  r  Ú
bufferSizeÚnumRequestsÚdListÚchunksÚ	startTimer]   r·   Údls   &&&&        r&   r(  ÚStdioClient._cbGetFileSize_  s   € Ü�|Š|˜E -Õ0×1Ò1Ø�H‰HŒJØ�H‰HŒJØ3°b·g±gÕ=Ð=Ø˜•-ˆŒØ—[‘[×*Ñ*×/Ñ/×7Ñ7¸ÕEˆ
Ø—k‘k×+Ñ+×0Ñ0×8Ñ8¸ÕDˆØˆŒØˆØˆØ—L‘L×(Ñ(Ó*ˆ	Ü�{Ö#ˆAØ—‘  B¨F°A°zÓMˆAØ�L‰L˜ŽOñ $ô ×Ò ¸Ô:ˆØ
�‰�t—‘¨Ô/Øˆ	r)   c                ó€  € ^ pV Fa  pVR8X  d    R# W#^ ,          8w  d?   VP                  V4      pVP                  WBV^ ,          34       W#^ ,          V,
          3u # V^,          pKc  	  \        V P                  P                  P
                  P                  R,          4      pVP                  W"V,           34       W%3# )é    ÚeofNr   )rQ   Úinsertr.   r�   r¦   rr   r   r3  )r%   r9  ÚendÚchunkr]   ÚbufSizes   &&    r&   Ú_getNextChunkÚStdioClient._getNextChunkr  s¢   € ØˆÛˆEØ�eŒ|ÚØ˜A•hŒØ—L‘L Ó'�Ø—‘˜a u¨Q¥x Ô1Ø 1�X¨�^Ð,Ò,Ø˜•(ŠCñ ô �d—k‘k×+Ñ+×0Ñ0×8Ñ8¸ÕFÓGˆØ�‰�s '�MÐ*Ô+Øˆ~Ðr)   c           	     ó  € V'       d„   \        V\        P                  4      '       dd   \        P                  ! R V,          4       TpVP                  \        4       VP                  WUV,           34      p	WI VP                  W•R34       MèV'       dá   \        P                  ! R\        V4      ,          4       VP                  V4       VP                  V4       \        V4      V8w  dg   \        P                  ! R\        V4      V3,          4       VP                  WUV,           34      p	WI VP                  W•V\        V4      ,           34       V;P                  \        V4      ,          un        V P                  '       d   V P                  W'4       V P                  V4      p
V
'       g   R# V
w  r[\        P                  ! RWUV,           3,          4       VP!                  W[4      pVP#                  V P$                  W#WEW·4       V# )zget read err: %sr?  zget read data: %iz#got less than we asked for: %i < %iNzasking for %i -> %i)r¤   r   re   r   r¨   rÇ   ÚEOFErrorrQ   r@  Úlenr€   r§   r   r“   Ú_printProgressBarrD  Ú	readChunkr"  r2  )r%   Údatar)  r  r9  Ústartr‚   r:  Úreasonr]   rB  Úlengthr·   s   &&&&&&&&     r&   r2  ÚStdioClient._cbGetRead€  sw  € ß”J˜t¤W§_¡_×5Ò5Ü�GŠGÐ&¨Õ-Ô.ØˆFØ�K‰KœÔ!Ø—‘˜e¨T¥\Ð2Ó3ˆAØ�	Ø�M‰M˜! U˜^Õ,ßÜ�GŠGÐ'¬#¨d«)Õ3Ô4Ø�G‰G�EŒNØ�H‰H�TŒNÜ�4‹y˜DÔ Ü—’Ð=ÄÀTÃÈDÐ@QÕQÔRØ—L‘L %°­Ð!6Ó7�Ø�IØ—‘˜a¨´°T³Õ):Ð!;Ô<Ø�HŠHœ˜D›	Õ!�HØ××ÐØ×"Ñ" 2Ô1Ø×"Ñ" 6Ó*ˆßÙà!‰MˆEÜ�ŠÐ%¨¸µÐ(?Õ?Ô@Ø�L‰L˜Ó'ˆØ	�	‰	�$—/‘/ 2¨6¸&ÔLØˆr)   c                óì   € \         P                  ! R 4       VP                  4        VP                  4        V P                  '       d   V P	                  R4       RVP
                   RVP
                   2# )zget doner   úTransferred ú to )r   r¨   ré   r“   r©   rê   ©r%   Úignoredr)  r  s   &&&&r&   r5  ÚStdioClient._cbGetDonež  sU   € Ü�Š�
ÔØ
�‰Œ
Ø
�‰Œ
Ø××ÐØ×"Ñ" 4Ô(Ø˜bŸg™g˜Y d¨2¯7©7¨)Ð4Ð4r)   c                óÈ  € V P                  V4      w  r!RV9   g   RV9   dp   V'       d?   V P                  V4      w  r1\        P                  P                  V P                  V4      pMRp\
        P
                  ! V4      pV P                  WC4      # V'       d   V P                  V4      w  r1M&\        P                  P                  V4      ^,          pV P                  W#4      # )zó
Do an upload request for a single local file or a globing expression.

@param rest: Requested command line for the PUT command.
@type rest: L{str}

@return: A deferred which fires with L{None} when transfer is done.
@rtype: L{defer.Deferred}
r
  r  r   )	rà   rá   rŸ   râ   r‘   ÚglobÚ_putMultipleFilesr#   Ú_putSingleFile)r%   rÃ   r  r  r  s   &&   r&   Úcmd_PUTÚStdioClient.cmd_PUT¦  s¹   € ð ×'Ñ'¨Ó-‰ˆð �%Œ<˜3 %œ<ßØ#×0Ñ0°Ó6‘�ÜŸ™Ÿ™ d×&;Ñ&;¸VÓD‘à�ä—I’I˜eÓ$ˆEØ×)Ñ)¨%Ó8Ð8÷ Ø#×0Ñ0°Ó6‘�˜äŸ™Ÿ™ uÓ-¨aÕ0�Ø×&Ñ& uÓ5Ð5r)   c                ó.   € V P                  RV.VRR7      # )a  
Perform an upload for a single file.

@param local: Path to local file.
@type local: L{str}.

@param remote: Remote path for the request relative to current working
    directory.
@type remote: L{str}

@return: A deferred which fires when transfer is done.
NT)Úsingle©Ú_cbPutMultipleNext)r%   r  r  s   &&&r&   rY  ÚStdioClient._putSingleFileÅ  s    € ð ×&Ñ& t¨e¨W°fÀTÐ&ÓJÐJr)   c                ó&   € V P                  RW4      # )a  
Perform an upload for a list of local files.

@param files: List of local files.
@type files: C{list} of L{str}.

@param remote: Remote path for the request relative to current working
    directory.
@type remote: L{str}

@return: A deferred which fires when transfer is done.
Nr^  )r%   r  r  s   &&&r&   rX  ÚStdioClient._putMultipleFilesÔ  s   € ð ×&Ñ& t¨UÓ;Ð;r)   c                óP  € \        V\        P                  4      '       d   V P                  V4       MhV'       da   \        V\        4      '       d   VP                  R4      pV P                  V4       VP                  R4      '       g   V P                  R4       RpV'       d)   V'       g!    VP                  ^ 4      p\        VR4      pK0  V'       g   R# V'       d   TpM]\        P                  P                  V4      ^,          p\        P                  P                  W84      p\        P                   ! W‡V34       V P#                  XV4      p	V	P%                  V P&                  W#4       V	#   \         d,    T P                  \        P                  ! 4       4       Rp EK  i ; i)a   
Perform an upload for the next file in the list of local files.

@param previousResult: Result form previous file form the list.
@type previousResult: L{str}

@param files: List of local files.
@type files: C{list} of L{str}

@param remotePath: Remote path for the request relative to current
    working directory.
@type remotePath: L{str}

@param single: A flag which signals if this is a transfer for a single
    file in which case we use the exact remote path
@type single: L{bool}

@return: A deferred which fires when transfer is done.
r£   r�   NÚrb)r¤   r   re   rÑ   r-   r¥   r©   rÚ   r!  r  rc   rá   rŸ   r#   râ   r   r¨   Ú_putRemoteFiler"  r_  )
r%   ÚpreviousResultr  r   r]  ÚcurrentFileÚlocalStreamr  rê   r·   s
   &&&&&     r&   r_  ÚStdioClient._cbPutMultipleNextã  s8  € ô( �n¤g§o¡o×6Ò6Ø×Ñ˜~Õ.ßÜ˜.¬#×.Ò.Ø!/×!6Ñ!6°wÓ!?�Ø×"Ñ" >Ô2Ø!×*Ñ*¨5×1Ò1Ø×&Ñ& uÔ-àˆßŸKð#Ø#Ÿi™i¨›l�Ü" ;°Ó5’÷ ÙçØ‰Fä—7‘7—=‘= Ó-¨aÕ0ˆDÜ—W‘W—\‘\ *Ó3ˆFÜ�GŠG�T :Ð.Ô/à×Ñ ¨VÓ4ˆØ	�	‰	�$×)Ñ)¨5Ô=Øˆøô# !ô #Ø×"Ñ"¤7§?¢?Ó#4Ô5Ø"”ð#ús   Â.E/ Å/1F%Æ$F%c                óv  € \         P                  P                  V P                  V4      p\        P
                  \        P                  ,          \        P                  ,          pV P                  P                  W4/ 4      pVP                  V P                  V4       VP                  V P                  V4       V# )a  
Do an upload request.

@param localStream: Local stream from where data is read.
@type localStream: File like object.

@param remotePath: Remote path for the request relative to current working directory.
@type remotePath: L{str}

@return: A deferred which fires when transfer is done.
)rá   rŸ   râ   r‘   r   Ú	FXF_WRITEÚ	FXF_CREATÚ	FXF_TRUNCr�   r  r—   Ú_cbPutOpenFilerp   r  )r%   rh  r   r  Úflagsr·   s   &&&   r&   re  ÚStdioClient._putRemoteFile  s€   € ô —‘—‘˜d×3Ñ3°ZÓ@ˆÜ×&Ñ&¬×)?Ñ)?Õ?Ä,×BXÑBXÕXˆØ�K‰K× Ñ  °Ó3ˆØ	�‰�d×)Ñ)¨;Ô7Ø	�‰�T—_‘_ kÔ2Øˆr)   c                óÆ  € V P                   P                  P                  P                  R ,          pV P                  '       d   \        V4      p. p. pV P                  P                  4       p\        V4       F1  pV P                  RWWV4      pV'       g   K   VP                  V4       K3  	  \        P                  ! V^R7      p	V	P                  V P                  W4       V	# )r7   Nr,  )r�   r¦   rr   r   r“   r|   r   r0  r1  Ú_cbPutWriter3  r   r4  r—   Ú
_cbPutDone)
r%   r)  r  r7  r8  r9  r:  r]   r·   r;  s
   &&&       r&   rn  ÚStdioClient._cbPutOpenFile+  s±   € Ø—k‘k×+Ñ+×0Ñ0×8Ñ8¸ÕDˆØ××ÐÜ˜R“ˆBØˆØˆØ—L‘L×(Ñ(Ó*ˆ	Ü�{Ö#ˆAØ× Ñ   r¨vÓAˆAß‰qØ—‘˜Q–ñ $ô ×Ò ¸Ô:ˆØ
�‰�t—‘¨Ô/Øˆ	r)   c                ón  € V P                  V4      pVw  rxVP                  V4       VP                  V4      p	V P                  '       d4   V;P                  \        V	4      ,          un        V P                  W54       V	'       d1   VP                  Wy4      p
V
P                  V P                  W#WE4       V
# R # r=   )
rD  r€   Úreadr“   r   rH  rI  Ú
writeChunkr—   rr  )r%   rT  r)  r  r9  r:  rB  rL  r‚   rK  r·   s   &&&&&&     r&   rr  ÚStdioClient._cbPutWrite:  sŒ   € Ø×"Ñ" 6Ó*ˆØ‰ˆØ
�‰�ŒØ�w‰w�t‹}ˆØ××ÐØ�HŠHœ˜D›	Õ!�HØ×"Ñ" 2Ô1ßØ—‘˜eÓ*ˆAØ�M‰M˜$×*Ñ*¨B°FÔFØˆHár)   c                óÀ   € VP                  4        VP                  4        V P                  '       d   V P                  R 4       RVP                   RVP                   2# )r   rQ  rR  )ré   r“   r©   rê   rS  s   &&&&r&   rs  ÚStdioClient._cbPutDoneI  sI   € Ø
�‰Œ
Ø
�‰Œ
Ø××ÐØ×"Ñ" 4Ô(Ø˜bŸg™g˜Y d¨2¯7©7¨)Ð4Ð4r)   c                ó2   € \         P                  ! V4       R # r=   )rá   Úchdirrž   s   &&r&   Úcmd_LCDÚStdioClient.cmd_LCDP  s   € Ü
�Š�Žr)   c                óÒ   a € S P                  V4      w  r!S P                  V4      w  r1\        V 3R  lW#34      w  r#S P                  P                  W#4      P	                  \
        4      # )c                 óX   <€ \         P                  P                  SP                  V 4      # r=   ©rá   rŸ   râ   r‘   ©Úxr%   s   &€r&   Ú<lambda>Ú$StdioClient.cmd_LN.<locals>.<lambda>W  ó   ø€ ”b—g‘g—l‘l 4×#8Ñ#8¸!Ô<r)   )rà   Úmapr�   ÚmakeLinkr—   rz   )r%   rÃ   ÚlinkpathÚ
targetpaths   f&  r&   Úcmd_LNÚStdioClient.cmd_LNS  s_   ø€ Ø×*Ñ*¨4Ó0‰ˆØ×,Ñ,¨TÓ2Ñˆ
Ü"Ü<¸xÐ>Tó 
Ñˆð �{‰{×#Ñ# HÓ9×EÑEÄgÓNÐNr)   c                ób  € . pVP                  4       pV'       d~   V^ ,          '       do   V^ ,          ^ ,          R8X  dZ   VP                  ^ 4      R,          pV F9  pVR8X  d   VP                  ! R4       K  VR8X  g   K'  VP                  ! R4       K;  	  K…  RP                  V4      pV P	                  V4      w  rQV'       g   V P
                  R,           pM*\        P                  P                  V P
                  V4      pV P                  V4      pVP                  V P                  V4       V# )	r>  r¬   rM   r×   ÚverboseÚaÚallr»   r    )r#   r!  r3  râ   rà   r‘   rá   rŸ   r  r—   Ú_cbDisplayFiles)r%   rÃ   r   ÚoptsÚorŸ   ÚfullPathr·   s   &&      r&   Úcmd_LSÚStdioClient.cmd_LS[  sæ   € ð ˆØ�z‰z‹|ˆß�t˜A—w”w 4¨¥7¨1¥:°Ô#4Ø—8‘8˜A“;˜r•?ˆDÛ�Ø˜”8Ø—N’N 9Ö-Ø˜#–XØ—N’N 5Ö)ó	 ð
 �x‰x˜‹~ˆØ×&Ñ& tÓ,‰
ˆßØ×,Ñ,¨sÕ2‰Hä—w‘w—|‘| D×$9Ñ$9¸4Ó@ˆHØ×Ñ˜XÓ&ˆØ	�‰�d×*Ñ*¨GÔ4Øˆr)   c                óP  € VP                  4        R V9  d1   V Uu. uF$  q3^ ,          P                  R4      '       d   K"  VNK&  	  ppRV9   d   V Uu. uF  q3^,          NK  	  ppMV Uu. uF  q3^ ,          NK  	  ppV'       g   R# RP                  V4      # u upi u upi u upi )r�  ó   .rŽ  Nr�   )Úsortr±   râ   )r%   r  r   rx   Úliness   &&&  r&   r‘  ÚStdioClient._cbDisplayFilest  s‘   € Ø�
‰
ŒØ˜ÔÙ %ÓC¡˜1¨q­T¯_©_¸T×-B—Q�Q¡ˆEÐCØ˜ÔÙ#(Ó)¡5˜a�q—T�T¡5ˆEÐ)ˆEá#(Ó)¡5˜a�q—T�T¡5ˆEÐ)ßÙà—:‘:˜eÓ$Ð$ùò Dùâ)ùâ)s   œBÁ BÁBÁ+B#c                óÚ   € V P                  V4      w  r\        P                  P                  V P                  V4      pV P
                  P                  V/ 4      P                  \        4      # r=   )	rà   rá   rŸ   râ   r‘   r�   ÚmakeDirectoryr—   rz   ©r%   rŸ   rÃ   s   && r&   Ú	cmd_MKDIRÚStdioClient.cmd_MKDIR�  sP   € Ø×&Ñ& tÓ,‰
ˆÜ�w‰w�|‰|˜D×1Ñ1°4Ó8ˆØ�{‰{×(Ñ(¨¨rÓ2×>Ñ>¼wÓGÐGr)   c                óØ   € V P                  V4      w  r\        P                  P                  V P                  V4      pV P
                  P                  V4      P                  \        4      # r=   )	rà   rá   rŸ   râ   r‘   r�   ÚremoveDirectoryr—   rz   rž  s   && r&   Ú	cmd_RMDIRÚStdioClient.cmd_RMDIR†  sN   € Ø×&Ñ& tÓ,‰
ˆÜ�w‰w�|‰|˜D×1Ñ1°4Ó8ˆØ�{‰{×*Ñ*¨4Ó0×<Ñ<¼WÓEÐEr)   c                ó@   € \         P                  ! R V,          4       R# )zmkdir %sN©rá   Úsystemrž   s   &&r&   Ú
cmd_LMKDIRÚStdioClient.cmd_LMKDIR‹  s   € Ü
�	Š	�*˜tÕ#Ö$r)   c                óØ   € V P                  V4      w  r\        P                  P                  V P                  V4      pV P
                  P                  V4      P                  \        4      # r=   )	rà   rá   rŸ   râ   r‘   r�   Ú
removeFiler—   rz   rž  s   && r&   Úcmd_RMÚStdioClient.cmd_RMŽ  sN   € Ø×&Ñ& tÓ,‰
ˆÜ�w‰w�|‰|˜D×1Ñ1°4Ó8ˆØ�{‰{×%Ñ% dÓ+×7Ñ7¼Ó@Ð@r)   c                ó@   € \         P                  ! R V,          4       R# )zls %sNr¦  )r%   rÃ   s   &&r&   Úcmd_LLSÚStdioClient.cmd_LLS“  s   € Ü
�	Š	�'˜D•.Ö!r)   c                óÒ   a € S P                  V4      w  r!S P                  V4      w  r1\        V 3R  lW#34      w  r#S P                  P                  W#4      P	                  \
        4      # )c                 óX   <€ \         P                  P                  SP                  V 4      # r=   r�  r‚  s   &€r&   r„  Ú(StdioClient.cmd_RENAME.<locals>.<lambda>š  r†  r)   )rà   r‡  r�   Ú
renameFiler—   rz   )r%   rÃ   ÚoldpathÚnewpaths   f&  r&   Ú
cmd_RENAMEÚStdioClient.cmd_RENAME–  s^   ø€ Ø×)Ñ)¨$Ó/‰ˆØ×)Ñ)¨$Ó/‰ˆÜÜ<¸wÐ>Pó
Ñˆð �{‰{×%Ñ% gÓ7×CÑCÄGÓLÐLr)   c                óN   € V P                   P                  P                  4        R # r=   )r�   r¦   rÖ   ©r%   rT  s   &&r&   Úcmd_EXITÚStdioClient.cmd_EXITž  s   € Ø�‰×Ñ×,Ñ,Ö.r)   c                óŽ   € R V P                   P                  ,          p\        V\        4      '       d   VP	                  R4      pV# )zSFTP version %ir£   )r�   Úversionr¤   r-   r¥   )r%   rT  r¾  s   && r&   Úcmd_VERSIONÚStdioClient.cmd_VERSION£  s6   € Ø# d§k¡k×&9Ñ&9Õ9ˆÜ�gœs×#Ò#Ø—n‘n WÓ-ˆGØˆr)   c                ó   € R # )ae  Available commands:
cd path                         Change remote directory to 'path'.
chgrp gid path                  Change gid of 'path' to 'gid'.
chmod mode path                 Change mode of 'path' to 'mode'.
chown uid path                  Change uid of 'path' to 'uid'.
exit                            Disconnect from the server.
get remote-path [local-path]    Get remote file.
help                            Get a list of available commands.
lcd path                        Change local directory to 'path'.
lls [ls-options] [path]         Display local directory listing.
lmkdir path                     Create local directory.
ln linkpath targetpath          Symlink remote file.
lpwd                            Print the local working directory.
ls [-l] [path]                  Display remote directory listing.
mkdir path                      Create remote directory.
progress                        Toggle progress bar.
put local-path [remote-path]    Put local file.
pwd                             Print the remote working directory.
quit                            Disconnect from the server.
rename oldpath newpath          Rename remote file.
rmdir path                      Remove remote directory.
rm path                         Remove remote file.
version                         Print the SFTP version.
?                               Synonym for 'help'.
r3   rº  s   &&r&   rË   ÚStdioClient.cmd_HELP©  s   € ñr)   c                ó   € V P                   # r=   rï   rº  s   &&r&   Úcmd_PWDÚStdioClient.cmd_PWDÄ  s   € Ø×$Ñ$Ð$r)   c                ó,   € \         P                  ! 4       # r=   )rá   Úgetcwdrº  s   &&r&   Úcmd_LPWDÚStdioClient.cmd_LPWDÇ  s   € Ü�yŠy‹{Ðr)   c                ó|   € V P                   '       * V n         R V P                   ;'       d    R;'       g    R,          # )z%ssing progess bar.ÚUzNot u)r“   rº  s   &&r&   Úcmd_PROGRESSÚStdioClient.cmd_PROGRESSÊ  s4   € Ø"&×"5Ñ"5Ô5ˆÔØ$¨×(;Ñ(;×(CÐ(CÀ×(NÐ(NÀwÕOÐOr)   c                óø   € V P                   P                  \        P                  ! 4       4      ^,          pV'       g   RpV'       d   RV.p\        P
                  ! W#^R7      # \        P                  ! V4       R# )zJ
Run C{rest} using the user's shell (or /bin/sh if they do not have
one).
z/bin/shz-c)ÚerrortooN)Ú_pwdÚgetpwnamrk   rl   r   ÚgetProcessOutputrá   r§  )r%   rÃ   ÚshellÚcmdss   &&  r&   r½   ÚStdioClient.cmd_EXECÎ  sW   € ð
 —	‘	×"Ñ"¤7§?¢?Ó#4Ó5°aÕ8ˆßØˆEßØ˜$�<ˆDÜ×)Ò)¨%ÀÔBÐBä�IŠI�eÖr)   c                óà  € \         P                  ! R V,          4       \        P                  P	                  V4      w  r#RV9   g   RV9   d   ^pM^ pV'       d^   V'       gV   V P
                  P                  V4      pVP                  V P                  R4       VP                  V P                  W#4       V# V P
                  P                  V4      pVP                  V P                  V4       V# )zlooking up %sr
  r  r   )r   r¨   rá   rŸ   r#   r�   rã   r—   Ú_cbOpenListrp   Ú_ebNotADirectory)r%   r”  ÚheadÚtailrW  r·   s   &&    r&   r  ÚStdioClient._remoteGlobÞ  sµ   € Ü�Š� (Õ*Ô+Ü—W‘W—]‘] 8Ó,‰
ˆØ�$Œ;˜# œ+Ø‰DàˆDßŸà—‘×)Ñ)¨(Ó3ˆAØ�M‰M˜$×*Ñ*¨BÔ/Ø�L‰L˜×.Ñ.°Ô;ð ˆð —‘×)Ñ)¨$Ó/ˆAØ�M‰M˜$×*Ñ*¨DÔ1Øˆr)   c                ód   € . pVP                  4       pVP                  V P                  W1V4       V# r=   )rv  r"  Ú_cbReadFile)r%   rì   rW  r  r·   s   &&&  r&   r×  ÚStdioClient._cbOpenListï  s.   € ØˆØ�N‰NÓˆØ	�	‰	�$×"Ñ" E°dÔ;Øˆr)   c                ót   € V P                   P                  V4      pVP                  V P                  V4       V# r=   )r�   rã   r—   r×  )r%   rM  rŸ   rW  r·   s   &&&& r&   rØ  ÚStdioClient._ebNotADirectoryõ  s/   € Ø�K‰K×%Ñ% dÓ+ˆØ	�‰�d×&Ñ&¨Ô-Øˆr)   c           	     óâ  € \        V\        P                  4      '       g£   V'       d[   VP                  ! R 4      pTP	                  V Uu. uF+  p\
        P
                  ! V^ ,          V4      '       g   K)  VNK-  	  up4       MVP	                  V4       VP                  4       pVP                  V P                  W#V4       V# TpVP                  \        4       VP                  4        V# u upi r¢   )r¤   r   re   r¥   ÚextendÚfnmatchrv  r"  rÝ  rÇ   rG  ré   )r%   r  ÚmatchedFilesrì   rW  rx   r·   rM  s   &&&&&   r&   rÝ  ÚStdioClient._cbReadFileú  s°   € Ü˜%¤§¡×1Ò1ßØ—{’{ 7Ó+�Ø×#Ñ#±Ó$U±¨1¼¿ºÈÈ1ÍÈt×9T§Q Q±Ñ$UÕVà×#Ñ# EÔ*Ø—‘Ó ˆAØ�I‰I�d×&Ñ&¨ÀÔFØˆHàˆFØ�K‰KœÔ!Ø�O‰OÔØÐùò %Vs   Á
&C,Á5C,c                ó^   € . ROpV F  w  r4W8”  g   K   M	  RVX,          ,          X,           # )rN   z%.1f))l           ÚPB)l        ÚTB)i   @ÚGB)i   ÚMB)i   ÚkB)rN   r4   r3   )r%   r‚   Ú_abbrevsÚfactorÚsuffixs   &&   r&   Ú_abbrevSizeÚStdioClient._abbrevSize
  s5   € ò
ˆó '‰NˆFØŽ}Ùñ 'ð ˜ �Õ'¨&Õ0Ð0r)   c                ó  € VR 8”  dP   \        VR ,          4      pVR V,          ,          p\        V^<,          4      pV^<V,          ,          pRW#V3,          # \        V^<,          4      pV^<V,          ,          pRW13,          # )i  z%i:%02i:%02iz	%02i:%02i)r.   )r%   ÚtÚhoursÚminss   &&  r&   Ú_abbrevTimeÚStdioClient._abbrevTime  su   € ØˆtŒ8Ü˜˜D�“MˆEØ�˜•ÕˆAÜ�q˜2•v“;ˆDØ��d•�NˆAØ! U°!Ð$4Õ4Ð4ä�q˜2•v“;ˆDØ��d•�NˆAØ $ Õ*Ð*r)   c                óü  € V P                   P                  4       V,
          pVP                  p \        P                  ! R\
        P                  ! ^ \        P                  R4      4      pVR8X  d   RpMWC,          pV'       d   VP                  V,
          V,          pM^ pVP                  pVP                  '       d   WAP                  ,          ^d,          p	M^dp	RV	V P                  V4      V P                  V4      V P                  V4      3,          p
V^,          \        V4      \        V
4      ,           ^,           ,
          R,          pRV V V
 2pV P                  V4       R#   \         d	    R^P.p ELi ; i)a£  
Update a console progress bar on this L{StdioClient}'s transport, based
on the difference between the start time of the operation and the
current time according to the reactor, and appropriate to the size of
the console window.

@param f: a wrapper around the file which is being written or read
@type f: L{FileWrapper}

@param startTime: The time at which the operation being tracked began.
@type startTime: L{float}
Ú4HÚ12345679Nr~   z%3i%% %s %sps %s r»   Ú)r   r0  r   ÚstructÚunpackÚfcntlÚioctlÚttyÚ
TIOCGWINSZrÉ   r‚   rê   rï  rõ  rH  r©   )r%   rx   r:  Údiffr   ÚwinSizeÚspeedÚtimeLeftÚfrontÚ
percentageÚbackÚspacesrÂ   s   &&&          r&   rI  ÚStdioClient._printProgressBar&  s?  € ð �|‰|×#Ñ#Ó%¨	Õ1ˆØ—‘ˆð	!Ü—m’m D¬%¯+ª+°a¼¿¹ÈÓ*TÓUˆGð �3Œ;Ø‰Eà•LˆEßØŸ™ �¨%Õ/‰HàˆHØ—‘ˆØ�6�6ˆ6Ø§&¡&�.¨CÕ/‰JàˆJØ"ØØ×Ñ˜UÓ#Ø×Ñ˜UÓ#Ø×Ñ˜XÓ&ð	&
õ 
ˆð ˜!•*¤ E£
¬S°«YÕ 6¸Õ :Õ;¸sÕBˆØ�u�g˜f˜X d VÐ,ˆØ×Ñ˜wÖ'øô/ ô 	!Ø˜R�j‹Gð	!ús   ¯;E( Å(E;Å:E;c                ó¬  € VP                  4       pV'       g   R# V^ ,          R9   dÕ   . p\        V4      p \        ^\        V4      4       F­  pW,          pWA^ ,          8X  d<   RP	                  V4      RP	                  W^,           R 4      P                  4       3u # VR8X  d=   W W,          R9  d   \        RW,           24      hVP                  W,          4       K–  VP                  W,          4       K¯  	  VP                  R^4      p\        V4      ^8X  d   V^ ,          R3# V^ ,          V^,          3#   \         d    \        R4      hi ; i)	a  
Parse line received as command line input and return first filename
together with the remaining line.

@param line: Arguments received from command line input.
@type line: L{str}

@return: Tupple with filename and rest. Return empty values when no path was not found.
@rtype: C{tupple}
r   z'"NÚ\z'"\zbad quote: \zunterminated quote)r   r   )	r¾   Úlistr1  rH  râ   r°   Ú
IndexErrorr3  r#   )r%   r¶   Úretr]   Úcs   &&   r&   rà   ÚStdioClient._getFilenameP  s(  € ð �z‰z‹|ˆßØˆMØ��7�eÔØˆCÜ˜“:ˆDð7Ü˜q¤# d£)Ö,�AØ��AØ �G”|Ø!Ÿw™w s›|¨R¯W©W°T¸a½%¸'°]Ó-C×-JÑ-JÓ-LÐLÒLØ˜dœØ ˜GØ�7¨'Ô1Ü",¨}¸T½W¸IÐ-FÓ"GÐGØŸ
™
 4¥7Ö+àŸ
™
 4¥7Ö+ñ -ð �j‰j˜˜qÓ!ˆÜˆs‹8�qŒ=Ø�q•6˜2�:Ðà�q•6˜3˜q�6�>Ð!øô ô 7Ü Ð!5Ó6Ð6ð7ús   ·A'D< ÂAD< Ä<E)r�   r‘   r’   r²   r“   r=   )NN)F)Gr>   r?   r@   rA   ÚpwdrÐ  rÔ   Ú	delimiterr   r„   rš   r˜   r©   r¸   r³   rÑ   r�   r´   rµ   ræ   rä   rë   rö   rý   r  rõ   r  r  r  r  r  r(  rD  r2  r5  rZ  rY  rX  r_  re  rn  rr  rs  r}  r‹  r•  r‘  rŸ  r£  r¨  r¬  r¯  r·  r»  Úcmd_QUITr¿  rË   rÄ  rÈ  rÌ  r½   r  r×  rØ  rÝ  rï  rõ  rI  rà   rI   rJ   rK   s   @r&   rŒ   rŒ   �   sW  ø‡ € Ø€Dà	€BØ€Ià€Gô1ò@òò)ò
*ò(ò(
+ò-òòòòò%òòòôòò0;òò$òFòò&òò<5ò6ò>Kò<ô3òjò&òò5òòOòò2%òHò
Fò
%òAò
"òMò/ð €Hòòò6%òòPòò ò"òò
 ò 1ò 
+ò((÷T#"ð #"r)   rŒ   zcmd_?c                   ó&   a € ] tR tRt o R tRtV tR# )rm   iy  c                ó8   € V P                  \        4       4       R # r=   )ÚopenChannelÚ
SSHSessionr™   s   &r&   ÚserviceStartedÚSSHConnection.serviceStartedz  s   € Ø×Ñœ›Ö&r)   r3   N)r>   r?   r@   rA   r  rI   rJ   rK   s   @r&   rm   rm   y  s   ø‡ € ÷'ð 'r)   rm   c                   ó„   a € ] tR tRt o Rt]P                  tR tR tV 3R lR lt	R t
R tR	 tR
 tR tV 3R ltRtV tR# )r  i~  s   sessionc                ó¼  € \         P                  ! R V P                  ,          4       V P                  P                  R,          P                  R4      '       d   RpMRpV P                  P                  W\        P                  ! V P                  P                  R,          4      ^R7      pVP                  V P                  4       VP                  \        4       R# )zsession %s openr:   r    Úexec)Ú	wantReplyN)r   r¨   Úidrr   r   r±   ÚsendRequestr
   ÚNSr—   Ú_cbSubsystemrp   rq   )r%   ÚfooÚrequestr·   s   &&  r&   ÚchannelOpenÚSSHSession.channelOpen‚  s›   € Ü�ŠÐ! D§G¡GÕ+Ô,Ø�9‰9×Ñ˜[Õ)×4Ñ4°S×9Ò9Ø‰Gà!ˆGØ�I‰I×!Ñ!Øœ6Ÿ9š9 T§Y¡Y×%6Ñ%6°{Õ%CÓDÐPQð "ó 
ˆð 	
�‰�d×'Ñ'Ô(Ø	�‰”WÖr)   c                ó¬  € \         P                  ! 4       V n        V P                  P                  V 4       V P                  P                  V n        R pV P
                  P                  R,          '       d0   V P
                  P                  R,          pVR8w  d   \        V4      p\        P                  ! \        V P                  V4      4      V n        R # )Nr5   r¬   )r   ÚFileTransferClientr�   ÚmakeConnectionÚdataReceivedrr   r   r  r   Ú
StandardIOrŒ   )r%   rÛ   rx   Úfns   &&  r&   r!  ÚSSHSession._cbSubsystemŽ  s‘   € Ü"×5Ò5Ó7ˆŒØ�‰×"Ñ" 4Ô(Ø ŸK™K×4Ñ4ˆÔØˆØ�9‰9×Ñ˜[×)Ô)Ø—‘×"Ñ" ;Õ/ˆBØ�SŒyÜ˜“H�Ü×%Ò%¤k°$·+±+¸qÓ&AÓBˆŽ
r)   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r+   rò  rK  ÚreturnN)r.   r®   )r/   r0   s   "€r&   r1   ÚSSHSession.__annotate__™  s"   ø€ ÷ 9 ñ 9 ™Sð 9 ©ð 9 °$ñ 9 r)   c                ó
  € V\         P                  8X  dn   \        P                  ! R \	        V4      ,          4       V P
                  P                  VP                  RR4      4       V P
                  P                  4        R# R# )zgot %s stderr datar£   ÚbackslashreplaceN)	r   ÚEXTENDED_DATA_STDERRr   r¨   rH  rX   r§   r¯   Úflush)r%   rò  rK  s   &&&r&   ÚextReceivedÚSSHSession.extReceived™  s]   € Ø”
×/Ñ/Ô/Ü�GŠGÐ(¬3¨t«9Õ4Ô5ðl �K‰K×Ñ˜dŸk™k¨'Ð3EÓFÔGØ�K‰K×ÑÖñq 0r)   c                óf   € \         P                  ! R 4       V P                  P                  4        R# )zgot eofN)r   r¨   r   ÚloseWriteConnectionr™   s   &r&   ÚeofReceivedÚSSHSession.eofReceivedÔ  s   € Ü�Š�	ÔØ�
‰
×&Ñ&Ö(r)   c                óv   € \         P                  ! R V ,          4       V P                  P                  V 4       R# )zremote side closed %sN)r   r¨   rr   Ú	sendCloser™   s   &r&   ÚcloseReceivedÚSSHSession.closeReceivedØ  s&   € Ü�ŠÐ'¨$Õ.Ô/Ø�	‰	×Ñ˜DÖ!r)   c                óV   €  \         P                  ! 4        R #   \         d     R # i ; ir=   )r   rb   rc   r™   s   &r&   ÚclosedÚSSHSession.closedÜ  s"   € ð	Ü�LŠLŽNøÜô 	Úð	ús   ‚ ™(§(c                ó:   € V P                   P                  4        R # r=   )r   ÚpauseProducingr™   s   &r&   ÚstopWritingÚSSHSession.stopWritingâ  s   € Ø�
‰
×!Ñ!Ö#r)   c                ó:   € V P                   P                  4        R # r=   )r   ÚresumeProducingr™   s   &r&   ÚstartWritingÚSSHSession.startWritingå  s   € Ø�
‰
×"Ñ"Ö$r)   c                ó2   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   # )r+   rê   rX   )r®   r   )r/   r0   s   "€r&   r1   r/  ~  s   ø‡ ‚ Ù
Ññ áÑò r)   )r�   r)  r   N)r>   r?   r@   rA   rê   rO   rX   r$  r!  r4  r8  r<  r?  rC  rG  rH   rI   rJ   rK   s   @r&   r  r  ~  sJ   ø‡ € Ø€DØ—Z‘Z€Fò
ò	C÷9 ð 9 òv)ò"òò$ò%÷O ƒ r)   r  Ú__main__)6Ú__doc__rý  rã  rk   rW  rá   r  r.  rû  rO   rÿ  Útypingr   r   r   r   Útwisted.conch.clientr   r   r   Útwisted.conch.sshr	   r
   r   r   Útwisted.internetr   r   r   r   Útwisted.protocolsr   Útwisted.pythonr   r   r   Útwisted.python.filepathr   ÚConchOptionsr   r[   rf   rZ   rq   rz   r|   ÚLineReceiverrŒ   ÚsetattrrË   rm   Ú
SSHChannelr  r>   r3   r)   r&   Ú<module>rW     sé   ðñ
ó Û Û Û Û 	Û 
Û Û Û 
Û 
ß 0Ó 0ç :Ñ :ß GÓ Gß 9Ó 9Ý #ß .Ñ .Ý ,ô&�G×(Ñ(ô &òDò,
òGò&	ò	÷%ñ %ôf"�%×$Ñ$ô f"ñR ˆ�W˜k×2Ñ2Ô 3ô'�J×,Ñ,ô 'ô
h%�×#Ñ#ô h%ðV ˆzÔÙ†Eñ r)   