+
    üÐj2  ã                  ó
  € R t ^ RIHt ^ RIHt ^ RIHt  ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt Rt^ RIHt  ! R R]4      tRR R llt]! ]]4       ! R R]4      4       tR#   ] d    Rt]t L?i ; i)z
Test ssh/channel.py.
)Úannotations)ÚskipIf)ÚverifyObject)Úchannel)ÚSSHTransportAddress)Ú
SSHService)ÚSSHServerTransport)Ú
interfaces)ÚIPv4Address)ÚStringTransportÚ zConch SSH not supported.)ÚTestCasec                  óV   € ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )ÚMockConnectiona¹  
A mock for twisted.conch.ssh.connection.SSHConnection.  Record the data
that channels send, and when they try to close the connection.

@ivar data: a L{dict} mapping channel id #s to lists of data sent by that
    channel.
@ivar extData: a L{dict} mapping channel id #s to lists of 2-tuples
    (extended data type, data) sent by that channel.
@ivar closes: a L{dict} mapping channel id #s to True if that channel sent
    a close message.
c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "ÚA/usr/lib/python3/dist-packages/twisted/conch/test/test_channel.pyÚ__annotate__ÚMockConnection.__annotate__*   s   € ÷ 9ñ 9˜$ñ 9ó    c                	ó0   € / V n         / V n        / V n        R # )N)ÚdataÚextDataÚcloses©Úselfs   &r   Ú__init__ÚMockConnection.__init__*   s   € Ø;=ˆŒ	ØJLˆŒØ68ˆŽr   c               ó   € V ^8„  d   QhRR/# )r   r   Ústrr   )r   s   "r   r   r   /   s   € ÷  ñ  ˜3ñ  r   c                ó   € R# )z
Return our logging prefix.
r   r   r   s   &r   Ú	logPrefixÚMockConnection.logPrefix/   s   € ñ  r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   úchannel.SSHChannelr   Úbytesr   r   r   )r   s   "r   r   r   5   s"   € ÷ 7ñ 7Ð 2ð 7¸%ð 7ÀDñ 7r   c                ó\   € V P                   P                  V. 4      P                  V4       R# )z
Record the sent data.
N)r   Ú
setdefaultÚappend)r    r   r   s   &&&r   ÚsendDataÚMockConnection.sendData5   s#   € ð 	�	‰	×Ñ˜W bÓ)×0Ñ0°Ö6r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r   r)   ÚtypeÚintr   r*   r   r   r   )r   s   "r   r   r   ;   s2   € ÷ Bñ BØ)ðBØ14ðBØ<AðBà	ñBr   c                ó^   € V P                   P                  V. 4      P                  W#34       R# )z 
Record the sent extended data.
N)r   r,   r-   )r    r   r1   r   s   &&&&r   ÚsendExtendedDataÚMockConnection.sendExtendedData;   s%   € ð 	�‰×Ñ ¨Ó,×3Ñ3°T°LÖAr   c               ó    € V ^8„  d   QhRRRR/# )r   r   r)   r   r   r   )r   s   "r   r   r   C   s   € ÷ $ñ $Ð!3ð $¸ñ $r   c                ó$   € RV P                   V&   R# )z/
Record that the channel sent a close message.
TN)r   )r    r   s   &&r   Ú	sendCloseÚMockConnection.sendCloseC   s   € ð  $ˆ�‰�GÓr   )r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r!   r&   r.   r4   r8   Ú__static_attributes__r   r   r   r   r      s&   † ñ
õ9õ
 õ7õB÷$ñ $r   r   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úservicer   ÚhostAddresszinterfaces.IAddress | NoneÚpeerAddressr   r   r   )r   s   "r   r   r   J   s0   € ÷ "ñ "Øð"à+ð"ð ,ð"ð 
ñ	"r   c                ór   € \        4       pVP                  \        WR7      4       VP                  V 4       R# )a‹  
Connect a SSHTransport which is already connected to a remote peer to
the channel under test.

@param service: Service used over the connected transport.
@type service: L{SSHService}

@param hostAddress: Local address of the connected transport.
@type hostAddress: L{interfaces.IAddress}

@param peerAddress: Remote address of the connected transport.
@type peerAddress: L{interfaces.IAddress}
)rB   rC   N)r   ÚmakeConnectionr   Ú
setService)rA   rB   rC   Ú	transports   &&& r   ÚconnectSSHTransportrH   J   s2   € ô$ #Ó$€IØ×ÑÜ KÔIôð ×Ñ˜Ö!r   c                  óÎ   € ] tR t^ctRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR tR!# )"ÚChannelTestsz
Tests for L{SSHChannel}.
c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚChannelTests.__annotate__i   s   € ÷ 'ñ '�tñ 'r   c                ó”   € \        4       V n        \        P                  ! V P                  ^
R7      V n        RV P                  n        R# )z–
Initialize the channel.  remoteMaxPacket is 10 so that data is able
to be sent (the default of 0 means no data is sent because no packets
are made).
)ÚconnÚremoteMaxPackets   channelN)r   rN   r   Ú
SSHChannelÚnamer   s   &r   ÚsetUpÚChannelTests.setUpi   s2   € ô #Ó$ˆŒ	Ü×)Ò)¨t¯y©yÈ"ÔMˆŒØ&ˆ�‰Ör   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   s   s   € ÷ Kñ K ñ Kr   c                ól   € V P                  \        \        P                  V P                  4      4       R# )z;
L{SSHChannel} instances provide L{interfaces.ITransport}.
N)Ú
assertTruer   r	   Ú
ITransportr   r   s   &r   Útest_interfaceÚChannelTests.test_interfaces   s!   € ð 	�‰œ¤Z×%:Ñ%:¸D¿L¹LÓIÖJr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   y   s   € ÷ 'ñ '˜4ñ 'r   c           	     ó  € \         P                  ! V P                  R7      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  R4       V P                  VP                  ^ 4       V P                  VP                  ^ 4       V P                  VP                  V P                  4       V P                  VP                  4       V P                  VP                  4       \         P                  ! ^^^^^^^4      pV P                  VP                  ^4       V P                  VP
                  ^4       V P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  ^4       V P                  VP                  ^4       R# )aS  
Test that SSHChannel initializes correctly.  localWindowSize defaults
to 131072 (2**17) and localMaxPacket to 32768 (2**15) as reasonable
defaults (what OpenSSH uses for those variables).

The values in the second set of assertions are meaningless; they serve
only to verify that the instance variables are assigned in the correct
order.
)rN   i   i €  N)r   rP   rN   ÚassertEqualÚlocalWindowSizeÚlocalWindowLeftÚlocalMaxPacketÚremoteWindowLeftrO   ÚassertIsNoner   Úavatar)r    ÚcÚc2s   &  r   Ú	test_initÚChannelTests.test_inity   sˆ  € ô ×Ò D§I¡IÔ.ˆØ×Ñ˜×*Ñ*¨FÔ3Ø×Ñ˜×*Ñ*¨FÔ3Ø×Ñ˜×)Ñ)¨5Ô1Ø×Ñ˜×+Ñ+¨QÔ/Ø×Ñ˜×*Ñ*¨AÔ.Ø×Ñ˜Ÿ™ §¡Ô+Ø×Ñ˜!Ÿ&™&Ô!Ø×Ñ˜!Ÿ(™(Ô#ä×Ò  1 a¨¨A¨q°!Ó4ˆØ×Ñ˜×+Ñ+¨QÔ/Ø×Ñ˜×+Ñ+¨QÔ/Ø×Ñ˜×*Ñ*¨AÔ.Ø×Ñ˜×,Ñ,¨aÔ0Ø×Ñ˜×+Ñ+¨QÔ/Ø×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ AÖ&r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   —   s   € ÷ 
ñ 
˜$ñ 
r   c                ó°   € V P                  \        V P                  4      R4       V P                  \        \        P                  ! ^R7      4      R4       R# )zc
Test that str(SSHChannel) works gives the channel name and local and
remote windows at a glance..
z%<SSHChannel channel (lw 131072 rw 0)>©ÚlocalWindowz<SSHChannel None (lw 1 rw 0)>N)r\   r$   r   rP   r   s   &r   Útest_strÚChannelTests.test_str—   sB   € ð
 	×Ñœ˜TŸ\™\Ó*Ð,SÔTØ×ÑÜ”×"Ò"¨qÔ1Ó2Ð4Sö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   ¡   s   € ÷ 
ñ 
˜Dñ 
r   c                óÄ   € V P                  V P                  P                  4       R4       V P                  \        P                  ! ^R7      P                  4       R4       R# )zg
Test that bytes(SSHChannel) works, gives the channel name and
local and remote windows at a glance..

s%   <SSHChannel channel (lw 131072 rw 0)>ri   s   <SSHChannel None (lw 1 rw 0)>N)r\   r   Ú	__bytes__rP   r   s   &r   Ú
test_bytesÚChannelTests.test_bytes¡   sO   € ð 	×ÑØ�L‰L×"Ñ"Ó$Ð&Nô	
ð 	×ÑÜ×Ò¨1Ô-×7Ñ7Ó9Ø,ö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   ¯   s   € ÷ 
ñ 
 ñ 
r   c                óZ   € V P                  V P                  P                  4       R4       R# )zs
Test that SSHChannel.logPrefix gives the name of the channel, the
local channel ID and the underlying connection.
z.SSHChannel channel (unknown) on MockConnectionN)r\   r   r&   r   s   &r   Útest_logPrefixÚChannelTests.test_logPrefix¯   s%   € ð
 	×ÑØ�L‰L×"Ñ"Ó$Ð&Vö	
r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   ¸   s   € ÷  ñ   Tñ  r   c                ób  a€ R.oR V3R llpWP                   n        V P                   P                  R4       V P                   P                  ^R4       V P                   P	                  ^24       V P                  V P                   P                  ^*4       V P                  V P                   P                  4       V P                  S^ ,          4       V P                  V P                   P                  R4       V P                  V P                  P                  V P                   ,          R.4       V P                  V P                   P                  . 4       V P                  V P                  P                  V P                   ,          R.4       RS^ &   V P                   P	                  ^4       V P                  S^ ,          4       V P                   P                  R4       V P                   P                  4        V P                   P	                  ^4       V P                  S^ ,          4       R# )	zY
Test that addWindowBytes adds bytes to the window and resumes writing
if it was paused.
Fc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú6ChannelTests.test_addWindowBytes.<locals>.__annotate__¿   s   € ÷ 	ñ 	 $ñ 	r   c                 ó   <€ R S ^ &   R# ©TNr   ©Úcbs   €r   ÚstubStartWritingÚ:ChannelTests.test_addWindowBytes.<locals>.stubStartWriting¿   ó   ø€ ØˆBˆq‹Er   ó   testr   N)é   r�   sP   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)r   ÚstartWritingÚwriteÚwriteExtendedÚaddWindowBytesr\   r`   rV   Ú
areWritingÚbufrN   r   ÚextBufr   ÚassertFalseÚloseConnection)r    r~   r}   s   & @r   Útest_addWindowBytesÚ ChannelTests.test_addWindowBytes¸   s‰  ø€ ð
 ˆWˆ÷	ð 	ð %5�‰Ô!Ø�‰×Ñ˜7Ô#Ø�‰×"Ñ" 1 gÔ.Ø�‰×#Ñ# BÔ'Ø×Ñ˜Ÿ™×6Ñ6¸
ÔCØ�‰˜Ÿ™×/Ñ/Ô0Ø�‰˜˜1�ÔØ×Ñ˜Ÿ™×)Ñ)¨3Ô/Ø×Ñ˜Ÿ™Ÿ™¨¯©Õ5¸°yÔAØ×Ñ˜Ÿ™×,Ñ,¨bÔ1Ø×Ñ˜Ÿ™×*Ñ*¨4¯<©<Õ8¸<¸.ÔIàˆˆ1‰Ø�‰×#Ñ# BÔ'Ø×Ñ˜˜A�Ôà�‰×Ñ˜9Ô%Ø�‰×#Ñ#Ô%Ø�‰×#Ñ# BÔ'Ø×Ñ˜˜A�Ör   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   ×   s   € ÷ Kñ K dñ Kr   c                ó,  € R V P                   n        V P                  V P                   P                  RR4      4       V P	                  V P                   P                  RR4      4       V P	                  V P                   P                  RR4      4       R# )zV
Test that requestReceived handles requests by dispatching them to
request_* methods.
c                ó   € V R 8H  # )r   r   )r   s   &r   Ú<lambda>Ú3ChannelTests.test_requestReceived.<locals>.<lambda>Ü   s   € ¸Àºr   s   test-methodr   ó   as
   bad-methodN)r   Úrequest_test_methodrV   ÚrequestReceivedrŠ   r   s   &r   Útest_requestReceivedÚ!ChannelTests.test_requestReceived×   sl   € ñ
 ,Dˆ�‰Ô(Ø�‰˜Ÿ™×4Ñ4°^ÀSÓIÔJØ×Ñ˜Ÿ™×5Ñ5°nÀdÓKÔLØ×Ñ˜Ÿ™×5Ñ5°mÀSÓIÖJr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   á   s   € ÷ .ñ . Tñ .r   c                óÎ   € V P                  V P                  P                  4       V P                  P                  4        V P	                  V P                  P                  4       R# )z=
Test that the default closeReceieved closes the connection.
N)rŠ   r   ÚclosingÚcloseReceivedrV   r   s   &r   Útest_closeReceievedÚ ChannelTests.test_closeReceievedá   sB   € ð 	×Ñ˜Ÿ™×-Ñ-Ô.Ø�‰×"Ñ"Ô$Ø�‰˜Ÿ™×,Ñ,Ö-r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   é   s   € ÷ ";ñ ";˜Dñ ";r   c                óx  a€ R.oR V3R llpWP                   n        V P                   P                  R4       V P                   P                  R4       V P                  V P                   P                  4       V P                  S^ ,          4       V P                   P                  ^4       V P                   P                  R4       V P                  P                  V P                   ,          pV P                  VRR.4       V P                  V P                   P                  ^4       V P                   P                  R4       V P                  V. RO4       V P                  V P                   P                  ^4       RS^ &   V P                   P                  R	4       V P                  V P                   P                  4       V P                  S^ ,          4       V P                  V. RO4       V P                  V P                   P                  R
4       V P                  V P                   P                  ^ 4       R# )z”
Test that write handles data correctly.  Send data up to the size
of the remote window, splitting the data into packets of length
remoteMaxPacket.
Fc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú-ChannelTests.test_write.<locals>.__annotate__ñ   ó   € ÷ 	ñ 	 ñ 	r   c                 ó   <€ R S ^ &   R# r{   r   r|   s   €r   ÚstubStopWritingÚ0ChannelTests.test_write.<locals>.stubStopWritingñ   r€   r   ó   dr“   ó   taó   daó   12345678901ó   123456ó   6N)r¨   r§   ó
   1234567890ó   1)r¨   r§   r¬   r­   ó   12345)r   ÚstopWritingr„   rŠ   r‡   rV   r†   rN   r   r\   r`   rˆ   ©r    r¤   r   r}   s   &  @r   Ú
test_writeÚChannelTests.test_writeé   s›  ø€ ð ˆWˆ÷	ð 	ð $3�‰Ô Ø�‰×Ñ˜4Ô Ø�‰×Ñ˜4Ô Ø×Ñ˜Ÿ™×0Ñ0Ô1Ø�‰˜˜1�Ôà�‰×#Ñ# BÔ'Ø�‰×Ñ˜5Ô!Ø�y‰y�~‰~˜dŸl™lÕ+ˆØ×Ñ˜  u˜~Ô.Ø×Ñ˜Ÿ™×6Ñ6¸Ô;à�‰×Ñ˜>Ô*Ø×Ñ˜ÒBÔCØ×Ñ˜Ÿ™×6Ñ6¸Ô:àˆˆ1‰Ø�‰×Ñ˜9Ô%Ø×Ñ˜Ÿ™×0Ñ0Ô1Ø�‰˜˜1�ÔØ×Ñ˜ÒLÔMØ×Ñ˜Ÿ™×)Ñ)¨4Ô0Ø×Ñ˜Ÿ™×6Ñ6¸Ö:r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL     s   € ÷ /;ñ /; Dñ /;r   c                óÀ  a€ R.oR V3R llpWP                   n        V P                   P                  ^R4       V P                   P                  ^R4       V P                   P                  ^R4       V P                  V P                   P                  4       V P                  S^ ,          4       V P                   P                  ^4       V P                   P                  ^R4       V P                  P                  V P                   ,          pV P                  V. RO4       V P                  V P                   P                  ^4       V P                   P                  ^R4       V P                  V. RO4       V P                  V P                   P                  ^4       RS^ &   V P                   P                  ^R4       V P                  V P                   P                  4       V P                  S^ ,          4       V P                  V. RO4       V P                  V P                   P                  ^R	..4       V P                  V P                   P                  ^ 4       R
# )z§
Test that writeExtended handles data correctly.  Send extended data
up to the size of the window, splitting the extended data into packets
of length remoteMaxPacket.
Fc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú5ChannelTests.test_writeExtended.<locals>.__annotate__  r¢   r   c                 ó   <€ R S ^ &   R# r{   r   r|   s   €r   r¤   Ú8ChannelTests.test_writeExtended.<locals>.stubStopWriting  r€   r   r¦   r“   ó   tr©   rª   r«   N)©r‚   r¨   ©r   r¹   ©r   r“   )rº   r»   r¼   ©é   r¬   ©r¾   r­   )rº   r»   r¼   r½   r¿   )é   r®   )r   r¯   r…   rŠ   r‡   rV   r†   rN   r   r\   r`   r‰   r°   s   &  @r   Útest_writeExtendedÚChannelTests.test_writeExtended  sÊ  ø€ ð ˆWˆ÷	ð 	ð $3�‰Ô Ø�‰×"Ñ" 1 dÔ+Ø�‰×"Ñ" 1 dÔ+Ø�‰×"Ñ" 1 dÔ+Ø×Ñ˜Ÿ™×0Ñ0Ô1Ø�‰˜˜1�Ôà�‰×#Ñ# BÔ'Ø�‰×"Ñ" 1 dÔ+Ø�y‰y× Ñ  §¡Õ.ˆØ×Ñ˜ÒAÔBØ×Ñ˜Ÿ™×6Ñ6¸Ô;à�‰×"Ñ" 1 nÔ5Ø×ÑØÒSô	
ð 	×Ñ˜Ÿ™×6Ñ6¸Ô:àˆˆ1‰Ø�‰×"Ñ" 1 iÔ0Ø×Ñ˜Ÿ™×0Ñ0Ô1Ø�‰˜˜1�ÔØ×ÑØòô
	
ð 	×Ñ˜Ÿ™×,Ñ,°°4¨y¨kÔ:Ø×Ñ˜Ÿ™×6Ñ6¸Ö:r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   >  s   € ÷ Hñ H Dñ Hr   c                ó  € V P                   P                  ^4       V P                   P                  R \        ^
4       4       4       V P	                  V P
                  P                  V P                   ,          R.4       R# )zC
Test that writeSequence is equivalent to write(''.join(sequece)).
c              3  ó6   "  € T F  pR V3,          x € K  	  R# 5i)s   %dNr   )Ú.0Úis   & r   Ú	<genexpr>Ú2ChannelTests.test_writeSequence.<locals>.<genexpr>C  s   é € Ð"C¹°A 5¨A¨4§<¢<»ùs   ‚s
   0123456789N)r   r†   ÚwriteSequenceÚranger\   rN   r   r   s   &r   Útest_writeSequenceÚChannelTests.test_writeSequence>  sU   € ð 	�‰×#Ñ# BÔ'Ø�‰×"Ñ"Ñ"C¼¸r¼Ó"CÔCØ×Ñ˜Ÿ™Ÿ™¨¯©Õ5¸°ÖGr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   F  s   € ÷ <ñ < Tñ <r   c                óˆ  € V P                   P                  R4       V P                   P                  ^R4       V P                   P                  4        V P	                  V P
                  P                  P                  V P                   4      4       V P                   P                  ^4       V P	                  V P
                  P                  P                  V P                   4      4       V P                   P                  ^4       V P                  V P
                  P                  P                  V P                   4      4       R# )zS
Tesyt that loseConnection() doesn't close the channel until all
the data is sent.
s   datas   datadataN)
r   r„   r…   r‹   ra   rN   r   Úgetr†   rV   r   s   &r   Útest_loseConnectionÚ ChannelTests.test_loseConnectionF  sÑ   € ð
 	�‰×Ñ˜7Ô#Ø�‰×"Ñ" 1 kÔ2Ø�‰×#Ñ#Ô%Ø×Ñ˜$Ÿ)™)×*Ñ*×.Ñ.¨t¯|©|Ó<Ô=Ø�‰×#Ñ# AÔ&Ø×Ñ˜$Ÿ)™)×*Ñ*×.Ñ.¨t¯|©|Ó<Ô=Ø�‰×#Ñ# AÔ&Ø�‰˜Ÿ	™	×(Ñ(×,Ñ,¨T¯\©\Ó:Ö;r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   T  ó   € ÷ Lñ L˜dñ Lr   c                óÈ   € \        RRR4      p\        V P                  P                  VR7       V P	                  \        V4      V P                  P                  4       4       R# )zh
L{SSHChannel.getPeer} returns the same object as the underlying
transport's C{getPeer} method returns.
ÚTCPz192.168.0.1i1Ô  )rA   rC   N)r
   rH   r   rN   r\   r   ÚgetPeer)r    Úpeers   & r   Útest_getPeerÚChannelTests.test_getPeerT  sI   € ô
 ˜5 -°Ó7ˆÜ D§L¡L×$5Ñ$5À4ÕHà×ÑÔ,¨TÓ2°D·L±L×4HÑ4HÓ4JÖKr   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rL   ^  rÔ   r   c                óÈ   € \        RRR4      p\        V P                  P                  VR7       V P	                  \        V4      V P                  P                  4       4       R# )zh
L{SSHChannel.getHost} returns the same object as the underlying
transport's C{getHost} method returns.
rÖ   z	127.0.0.1i90  )rA   rB   N)r
   rH   r   rN   r\   r   ÚgetHost)r    Úhosts   & r   Útest_getHostÚChannelTests.test_getHost^  sI   € ô
 ˜5 +¨uÓ5ˆÜ D§L¡L×$5Ñ$5À4ÕHà×ÑÔ,¨TÓ2°D·L±L×4HÑ4HÓ4JÖKr   )r   rN   N)r:   r;   r<   r=   r>   rR   rX   re   rk   rp   rt   rŒ   r–   rœ   r±   rÁ   rÌ   rÑ   rÙ   rß   r?   r   r   r   rJ   rJ   c   s_   † ñõ'õKõ'õ<
õ
õ
õ õ>Kõ.õ";õH/;õbHõ<õL÷Lñ Lr   rJ   )NN)r>   Ú
__future__r   Úunittestr   Úzope.interface.verifyr   Útwisted.conch.sshr   Útwisted.conch.ssh.addressr   Útwisted.conch.ssh.servicer   Útwisted.conch.ssh.transportr   Útwisted.internetr	   Útwisted.internet.addressr
   Útwisted.internet.testingr   ÚskipTestÚImportErrorÚobjectÚtwisted.trial.unittestr   r   rH   rJ   r   r   r   Ú<module>rï      s�   ðñõ #å å .ðÝ)Ý=Ý4Ý>Ý+Ý4Ý8à€Hõ ,ô*$�Zô *$÷Z"ñ2 ˆ�(ÓôBL�8ó BLó òBLøð[ ô Ø)€HØ‚Jðús   –,A4 Á4BÂB