Ë
    oj—T  ã                   ó„  — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZ	d dl
mZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ 	 d dl m!Z!m"Z"  G d„ de«      Z$dddddddœZ%d-d„Z&d„ Z' G d„ de«      Z( G d„ d«      Z) G d„ d«      Z* G d„ de«      Z+ G d„ de«      Z, G d„ de«      Z- G d „ d!e«      Z. G d"„ d#«      Z/ G d$„ d%ej`                  «      Z1 ee! d&«       e ejd                  ed«       d&«       G d'„ d(e«      «       «       Z3 G d)„ d*e/e«      Z4 G d+„ d,e«      Z5y# e#$ r dZ!dZ"Y ŒÞw xY w).é    N)ÚList)ÚskipIf)ÚdirectlyProvides)ÚdeferÚerrorÚ
interfacesÚprotocolÚreactor)ÚStringTransport)ÚAdvancedPOP3ClientÚ InsecureAuthenticationDisallowedÚServerErrorResponse)Úpop3testserver)ÚbasicÚloopback)Úlog)ÚTestCase)ÚClientTLSContextÚServerTLSContextc                   ó   — e Zd Zd„ Zy)Ú#StringTransportWithConnectionLosingc                 ó^   — | j                   j                  t        j                  «       «       y ©N)r	   ÚconnectionLostr   ÚConnectionDone©Úselfs    úC/usr/lib/python3/dist-packages/twisted/mail/test/test_pop3client.pyÚloseConnectionz2StringTransportWithConnectionLosing.loseConnection!   s   € Ø�‰×$Ñ$¤U×%9Ñ%9Ó%;Õ<ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r    r   r   r       s   „ ó=r    r   s   180s   LOGIN)s   TOPs   LOGIN-DELAYs   UIDLó   STLSs   USERs   SASLc                 óž   — t        «       }t        |_        t        «       }||_        |j                  |«       | r|j                  d«       ||fS )Ns   +OK Hello!
)Ú
POP3ClientÚcapCacheÚ	_capCacher   r	   ÚmakeConnectionÚdataReceived)ÚgreetÚpÚts      r   ÚsetUpr/   /   sH   € Ü‹€Aô €A„Kä+Ó-€AØ€A„JØ×Ñ�QÔáØ	�‰Ð(Ô)àˆaˆ4€Kr    c                 ó   — | fd„S )Nc                 ó   —  |«       S r   r$   )ÚresultÚfs     r   ú<lambda>zstrip.<locals>.<lambda>A   s   € ™q›s€ r    r$   )r3   s    r   Ústripr5   @   s   € ØÒ"Ð"r    c                   óZ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚPOP3ClientLoginTestsc                 óÆ   ‡ — t        d¬«      \  }}d|_        |j                  dd«      }|j                  d«       ‰ j	                  |t
        «      j                  ˆ fd„«      S )NF©r,   Tó   usernameó   passwords   -ERR Offline for maintenance
c                 óB   •— ‰j                  | j                  d   d«      S )Nr   s   Offline for maintenance©ÚassertEqualÚargs©Úexcr   s    €r   r4   z;POP3ClientLoginTests.testNegativeGreeting.<locals>.<lambda>K   s   ø€ ˜×(Ñ(¨¯©°!©Ð6PÓQ€ r    )r/   ÚallowInsecureLoginÚloginr+   ÚassertFailurer   ÚaddCallback©r   r-   r.   Úds   `   r   ÚtestNegativeGreetingz)POP3ClientLoginTests.testNegativeGreetingE   sZ   ø€ Ü˜5Ô!‰ˆˆ1Ø#ˆÔØ�G‰G�K Ó-ˆØ	�‰Ð:Ô;Ø×!Ñ! !Ô%8Ó9×EÑEÛQó
ð 	
r    c                 óØ   — t        «       \  }}|j                  d«      }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )Nr:   ó   USER username
s   +OK send password
s   send password)r/   Úuserr>   Úvaluer+   rE   rF   s       r   Ú
testOkUserzPOP3ClientLoginTests.testOkUserN   sW   € Ü‹w‰ˆˆ1Ø�F‰F�;ÓˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð/Ô0Ø�}‰}˜T×-Ñ-Ð/?Ó@Ð@r    c                 óò   ‡ — t        «       \  }}|j                  d«      }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nr:   rJ   s   -ERR account suspended
c                 óB   •— ‰j                  | j                  d   d«      S )Nr   s   account suspendedr=   r@   s    €r   r4   z2POP3ClientLoginTests.testBadUser.<locals>.<lambda>[   s   ø€ ˜×(Ñ(¨¯©°!©Ð6JÓK€ r    )r/   rK   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestBadUserz POP3ClientLoginTests.testBadUserU   sd   ø€ Ü‹w‰ˆˆ1Ø�F‰F�;ÓˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð4Ô5Ø×!Ñ! !Ô%8Ó9×EÑEÛKó
ð 	
r    c                 óØ   — t        «       \  }}|j                  d«      }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )Nr;   ó   PASS password
s   +OK you're in!
s
   you're in!)r/   Úpasswordr>   rL   r+   rE   rF   s       r   Ú
testOkPasszPOP3ClientLoginTests.testOkPass^   sV   € Ü‹w‰ˆˆ1Ø�J‰J�{Ó#ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð,Ô-Ø�}‰}˜T×-Ñ-¨}Ó=Ð=r    c                 óò   ‡ — t        «       \  }}|j                  d«      }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nr;   rR   s   -ERR go away
c                 óB   •— ‰j                  | j                  d   d«      S )Nr   s   go awayr=   r@   s    €r   r4   z2POP3ClientLoginTests.testBadPass.<locals>.<lambda>k   s   ø€ ˜×(Ñ(¨¯©°!©°jÓA€ r    )r/   rS   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestBadPassz POP3ClientLoginTests.testBadPasse   sd   ø€ Ü‹w‰ˆˆ1Ø�J‰J�{Ó#ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð*Ô+Ø×!Ñ! !Ô%8Ó9×EÑEÛAó
ð 	
r    c                 óJ  — t        «       \  }}d|_        |j                  dd«      }| j                  |j	                  «       d«       |j                  d«       | j                  |j	                  «       d«       |j                  d«       |j                  | j                  d«      S )	NTr:   r;   rJ   s   +OK go ahead
ó   USER username
PASS password
s   +OK password accepted
s   password accepted)r/   rB   rC   r>   rL   r+   rE   rF   s       r   ÚtestOkLoginz POP3ClientLoginTests.testOkLoginn   s…   € Ü‹w‰ˆˆ1Ø#ˆÔØ�G‰G�K Ó-ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð*Ô+Ø×Ñ˜Ÿ™›Ð$IÔJØ	�‰Ð3Ô4Ø�}‰}˜T×-Ñ-Ð/CÓDÐDr    c                 ód  ‡ — t        «       \  }}d|_        |j                  dd«      }‰ j                  |j	                  «       d«       |j                  d«       ‰ j                  |j	                  «       d«       |j                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )	NTr:   r;   rJ   s   +OK waiting on you
rY   ó   -ERR bogus login
c                 óB   •— ‰j                  | j                  d   d«      S ©Nr   s   bogus loginr=   r@   s    €r   r4   z;POP3ClientLoginTests.testBadPasswordLogin.<locals>.<lambda>�   ó   ø€ ˜×(Ñ(¨¯©°!©°nÓE€ r    ©	r/   rB   rC   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestBadPasswordLoginz)POP3ClientLoginTests.testBadPasswordLoginx   s’   ø€ Ü‹w‰ˆˆ1Ø#ˆÔØ�G‰G�K Ó-ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð0Ô1Ø×Ñ˜Ÿ™›Ð$IÔJØ	�‰Ð.Ô/Ø×!Ñ! !Ô%8Ó9×EÑEÛEó
ð 	
r    c                 ó  ‡ — t        «       \  }}d|_        |j                  dd«      }‰ j                  |j	                  «       d«       |j                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )NTr:   r;   rJ   r\   c                 óB   •— ‰j                  | j                  d   d«      S r^   r=   r@   s    €r   r4   z;POP3ClientLoginTests.testBadUsernameLogin.<locals>.<lambda>‹   r_   r    r`   rF   s   `   r   ÚtestBadUsernameLoginz)POP3ClientLoginTests.testBadUsernameLogin„   sn   ø€ Ü‹w‰ˆˆ1Ø#ˆÔØ�G‰G�K Ó-ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Ð.Ô/Ø×!Ñ! !Ô%8Ó9×EÑEÛEó
ð 	
r    c                 ó|   — t        d¬«      \  }}|j                  d«       | j                  |j                  d «       y )NFr9   s"   +OK lalala this has no challenge
©r/   r+   r>   ÚserverChallenge©r   r-   r.   s      r   ÚtestServerGreetingz'POP3ClientLoginTests.testServerGreetingŽ   s3   € Ü˜5Ô!‰ˆˆ1Ø	�‰Ð>Ô?Ø×Ñ˜×*Ñ*¨DÕ1r    c                 ó|   — t        d¬«      \  }}|j                  d«       | j                  |j                  d«       y )NFr9   s   +OK <here is the challenge>
s   <here is the challenge>rf   rh   s      r   ÚtestServerGreetingWithChallengez4POP3ClientLoginTests.testServerGreetingWithChallenge“   s4   € Ü˜5Ô!‰ˆˆ1Ø	�‰Ð9Ô:Ø×Ñ˜×*Ñ*Ð,FÕGr    c                 ó   — t        d¬«      \  }}|j                  d«       |j                  dd«      }| j                  |j	                  «       d«       |j                  d«       |j                  | j                  d«      S )	NFr9   s"   +OK <challenge string goes here>
r:   r;   s0   APOP username f34f1e464d0d7927607753129cabe39a
s   +OK Welcome!
s   Welcome!)r/   r+   rC   r>   rL   rE   rF   s       r   ÚtestAPOPzPOP3ClientLoginTests.testAPOP˜   sm   € Ü˜5Ô!‰ˆˆ1Ø	�‰Ð>Ô?Ø�G‰G�K Ó-ˆØ×ÑØ�G‰G‹IÐLô	
ð 	
�‰Ð*Ô+Ø�}‰}˜T×-Ñ-¨{Ó;Ð;r    c                 óÐ   — t        d¬«      \  }}|j                  d«       |j                  dd«      }| j                  |j	                  «       «       | j                  |t        «      S )NFr9   ó   +OK Howdy
r:   r;   )r/   r+   rC   ÚassertFalserL   rD   r   rF   s       r   Ú testInsecureLoginRaisesExceptionz5POP3ClientLoginTests.testInsecureLoginRaisesException¢   sU   € Ü˜5Ô!‰ˆˆ1Ø	�‰Ð'Ô(Ø�G‰G�K Ó-ˆØ×Ñ˜Ÿ™›Ô#Ø×!Ñ! !Ô%EÓFÐFr    c                 ó‚  — t        d¬«      \  }}t        |t        j                  «       |j	                  d«       |j                  dd«      }| j                  |j                  «       d«       |j                  «        |j	                  d«       | j                  |j                  «       d«       |j	                  d«       |S )	zÕ
        If a server doesn't offer APOP but the transport is secured using
        SSL or TLS, a plaintext login should be allowed, not rejected with
        an InsecureAuthenticationDisallowed exception.
        Fr9   ro   r:   r;   rJ   s   +OK
rR   )	r/   r   r   ÚISSLTransportr+   rC   r>   rL   ÚclearrF   s       r   Ú testSSLTransportConsideredSecurez5POP3ClientLoginTests.testSSLTransportConsideredSecure©   s“   € ô ˜5Ô!‰ˆˆ1Ü˜œJ×4Ñ4Ô5Ø	�‰Ð'Ô(Ø�G‰G�K Ó-ˆØ×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰Œ	Ø	�‰�zÔ"Ø×Ñ˜Ÿ™›Ð$8Ô9Ø	�‰�zÔ"Øˆr    N)r!   r"   r#   rH   rM   rP   rT   rW   rZ   ra   rd   ri   rk   rm   rq   ru   r$   r    r   r7   r7   D   sG   „ ò
òAò
ò>ò
òEò

ò
ò2ò
Hò
<òGór    r7   c                   ó   — e Zd Zd„ Zd„ Zy)ÚListConsumerc                 ó   — i | _         y r   ©Údatar   s    r   Ú__init__zListConsumer.__init__¼   ó	   € Øˆ�	r    c                 ód   — |\  }}| j                   j                  |g «      j                  |«       y r   )rz   Ú
setdefaultÚappend)r   r2   ÚitemrL   s       r   ÚconsumezListConsumer.consume¿   s*   € Ø‰ˆˆuØ�	‰	×Ñ˜T 2Ó&×-Ñ-¨eÕ4r    N©r!   r"   r#   r{   r�   r$   r    r   rw   rw   »   s   „ òó5r    rw   c                   ó   — e Zd Zd„ Zd„ Zy)ÚMessageConsumerc                 ó   — g | _         y r   ry   r   s    r   r{   zMessageConsumer.__init__Å   r|   r    c                 ó:   — | j                   j                  |«       y r   )rz   r   ©r   Úlines     r   r�   zMessageConsumer.consumeÈ   s   € Ø�	‰	×Ñ˜Õr    Nr‚   r$   r    r   r„   r„   Ä   s   „ òór    r„   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚPOP3ClientListTestsc                 óü   — t        «       \  }}|j                  «       }| j                  |j                  «       d«       |j	                  d«       |j	                  d«       |j                  | j                  g d¢«      S )Nó   LIST
ó   +OK Here it comes
s   1 3
2 2
3 1
.
)é   é   é   )r/   ÚlistSizer>   rL   r+   rE   rF   s       r   ÚtestListSizez POP3ClientListTests.testListSizeÍ   s_   € Ü‹w‰ˆˆ1Ø�J‰J‹LˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð/Ô0Ø	�‰Ð4Ô5Ø�}‰}˜T×-Ñ-ªyÓ9Ð9r    c           
      ó  — t        «       \  }}t        «       }|j                  }|j                  |«      }| j	                  |j                  «       d«       |j                  d«       |j                  d«       | j	                  |j                  dgdgdgdœ«       |j                  d«       | j	                  |j                  dgdgdgdgdgdgd	œ«       |j                  d
«       |j                  | j                  |«      S )NrŒ   r�   s   1 3
2 2
3 1
rŽ   r�   r�   )r   r�   r�   s   5 3
6 2
7 1
)r   r�   r�   é   é   é   ó   .
)
r/   rw   r�   r‘   r>   rL   r+   rz   rE   ÚassertIdentical©r   r-   r.   Úcr3   rG   s         r   ÚtestListSizeWithConsumerz,POP3ClientListTests.testListSizeWithConsumerÕ   sØ   € Ü‹w‰ˆˆ1Ü‹NˆØ�I‰IˆØ�J‰J�q‹MˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð/Ô0Ø	�‰Ð/Ô0Ø×Ñ˜Ÿ™ a S¨a¨S°a°SÑ!9Ô:Ø	�‰Ð/Ô0Ø×Ñ˜Ÿ™ a S¨a¨S°a°S¸a¸SÀaÀSÈaÈSÑ!QÔRØ	�‰�xÔ Ø�}‰}˜T×1Ñ1°1Ó5Ð5r    c                 óð   ‡ — t        «       \  }}|j                  «       }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )NrŒ   ó!   -ERR Fatal doom server exploded
c                 óB   •— ‰j                  | j                  d   d«      S ©Nr   s   Fatal doom server explodedr=   r@   s    €r   r4   z8POP3ClientListTests.testFailedListSize.<locals>.<lambda>é   ó   ø€ ˜×(Ñ(¨¯©°!©Ð6SÓT€ r    )r/   r‘   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestFailedListSizez&POP3ClientListTests.testFailedListSizeã   s`   ø€ Ü‹w‰ˆˆ1Ø�J‰J‹LˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð=Ô>Ø×!Ñ! !Ô%8Ó9×EÑEÛTó
ð 	
r    c                 óü   — t        «       \  }}|j                  «       }| j                  |j                  «       d«       |j	                  d«       |j	                  d«       |j                  | j                  g d¢«      S )Nó   UIDL
r�   s   1 abc
2 def
3 ghi
.
)ó   abcs   defs   ghi)r/   ÚlistUIDr>   rL   r+   rE   rF   s       r   ÚtestListUIDzPOP3ClientListTests.testListUIDì   s`   € Ü‹w‰ˆˆ1Ø�I‰I‹KˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð/Ô0Ø	�‰Ð:Ô;Ø�}‰}˜T×-Ñ-Ò/GÓHÐHr    c                 óŽ  — t        «       \  }}t        «       }|j                  }|j                  |«      }| j	                  |j                  «       d«       |j                  d«       |j                  d«       | j	                  |j                  dgdgdgdœ«       |j                  d«       |j                  | j                  |«      S )	Nr£   r�   s   1 xyz
2 abc
5 mno
s   xyzr¤   s   mno)r   r�   r”   r—   )
r/   rw   r�   r¥   r>   rL   r+   rz   rE   r˜   r™   s         r   ÚtestListUIDWithConsumerz+POP3ClientListTests.testListUIDWithConsumerô   sž   € Ü‹w‰ˆˆ1Ü‹NˆØ�I‰IˆØ�I‰I�a‹LˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð/Ô0Ø	�‰Ð5Ô6Ø×Ñ˜Ÿ™ f X°6°(À¸xÑ!HÔIØ	�‰�xÔ Ø�}‰}˜T×1Ñ1°1Ó5Ð5r    c                 óð   ‡ — t        «       \  }}|j                  «       }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nr£   r�   c                 óB   •— ‰j                  | j                  d   d«      S rŸ   r=   r@   s    €r   r4   z7POP3ClientListTests.testFailedListUID.<locals>.<lambda>  r    r    )r/   r¥   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestFailedListUIDz%POP3ClientListTests.testFailedListUID   s`   ø€ Ü‹w‰ˆˆ1Ø�I‰I‹KˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð=Ô>Ø×!Ñ! !Ô%8Ó9×EÑEÛTó
ð 	
r    N)	r!   r"   r#   r’   r›   r¡   r¦   r¨   r«   r$   r    r   rŠ   rŠ   Ì   s!   „ ò:ò6ò
òIò
6ó
r    rŠ   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚPOP3ClientMessageTestsc                 óB  — t        «       \  }}|j                  d«      }| j                  |j                  «       d«       |j	                  d«       |j	                  d«       |j	                  d«       |j	                  d«       |j                  | j                  ddg«      S )	Né   ó   RETR 8
ó   +OK Message incoming
ó   La la la here is message text
s"   ..Further message text tra la la
r—   ó   La la la here is message texts   .Further message text tra la la©r/   Úretriever>   rL   r+   rE   rF   s       r   ÚtestRetrievez#POP3ClientMessageTests.testRetrieve  s†   € Ü‹w‰ˆˆ1Ø�J‰J�q‹MˆØ×Ñ˜Ÿ™› MÔ2Ø	�‰Ð2Ô3Ø	�‰Ð;Ô<Ø	�‰Ð>Ô?Ø	�‰�xÔ Ø�}‰}Ø×ÑØ-Ð/QÐRó
ð 	
r    c                 óL  — t        «       \  }}t        «       }|j                  }|j                  d|«      }| j	                  |j                  «       d«       |j                  d«       |j                  d«       |j                  d«       |j                  | j                  ||«      S )Nr¯   r°   r±   r²   s   ..Further message text
.
)	r/   r„   r�   rµ   r>   rL   r+   rE   Ú_cbTestRetrieveWithConsumerr™   s         r   ÚtestRetrieveWithConsumerz/POP3ClientMessageTests.testRetrieveWithConsumer  s„   € Ü‹w‰ˆˆ1ÜÓˆØ�I‰IˆØ�J‰J�q˜!ÓˆØ×Ñ˜Ÿ™› MÔ2Ø	�‰Ð2Ô3Ø	�‰Ð;Ô<Ø	�‰Ð9Ô:Ø�}‰}˜T×=Ñ=¸qÀ!ÓDÐDr    c                 ód   — | j                  ||«       | j                  |j                  ddg«       y )Nr³   s   .Further message text©r˜   r>   rz   ©r   r2   r3   rš   s       r   r¸   z2POP3ClientMessageTests._cbTestRetrieveWithConsumer#  s0   € Ø×Ñ˜V QÔ'Ø×ÑØ�F‰FÐ5Ð7OÐPõ	
r    c                 óF  — t        «       \  }}|j                  dd¬«      }| j                  |j                  «       d«       |j	                  d«       |j	                  d«       |j	                  d«       |j	                  d«       |j                  | j                  d	d
g«      S )Nr¯   r�   ©Úlinesó	   TOP 8 2
ó   +OK 2 lines on the way
ó   Line the first!  Woop
ó   Line the last!  Bye
r—   ó   Line the first!  Woopó   Line the last!  Byer´   rF   s       r   ÚtestPartialRetrievez*POP3ClientMessageTests.testPartialRetrieve)  s‹   € Ü‹w‰ˆˆ1Ø�J‰J�q ˆJÓ"ˆØ×Ñ˜Ÿ™› NÔ3Ø	�‰Ð4Ô5Ø	�‰Ð3Ô4Ø	�‰Ð1Ô2Ø	�‰�xÔ Ø�}‰}Ø×ÑÐ7Ð9OÐPó
ð 	
r    c                 ór  — t        «       \  }}t        «       }|j                  }|j                  d|d¬«      }| j	                  |j                  «       d«       |j                  d«       |j                  d«       |j                  d«       |j                  d«       |j                  | j                  ||«      S )	Nr¯   r�   r¾   rÀ   rÁ   rÂ   rÃ   r—   )	r/   r„   r�   rµ   r>   rL   r+   rE   Ú"_cbTestPartialRetrieveWithConsumerr™   s         r   ÚtestPartialRetrieveWithConsumerz6POP3ClientMessageTests.testPartialRetrieveWithConsumer5  s”   € Ü‹w‰ˆˆ1ÜÓˆØ�I‰IˆØ�J‰J�q˜! 1ˆJÓ%ˆØ×Ñ˜Ÿ™› NÔ3Ø	�‰Ð4Ô5Ø	�‰Ð3Ô4Ø	�‰Ð1Ô2Ø	�‰�xÔ Ø�}‰}˜T×DÑDÀaÈÓKÐKr    c                 ód   — | j                  ||«       | j                  |j                  ddg«       y )NrÄ   rÅ   r»   r¼   s       r   rÈ   z9POP3ClientMessageTests._cbTestPartialRetrieveWithConsumerA  s-   € Ø×Ñ˜V QÔ'Ø×Ñ˜Ÿ™Ð":Ð<RÐ!SÕTr    c                 óò   ‡ — t        «       \  }}|j                  d«      }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nr   s   RETR 1
r�   c                 óB   •— ‰j                  | j                  d   d«      S rŸ   r=   r@   s    €r   r4   z;POP3ClientMessageTests.testFailedRetrieve.<locals>.<lambda>K  r    r    )r/   rµ   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestFailedRetrievez)POP3ClientMessageTests.testFailedRetrieveE  sb   ø€ Ü‹w‰ˆˆ1Ø�J‰J�q‹MˆØ×Ñ˜Ÿ™› MÔ2Ø	�‰Ð=Ô>Ø×!Ñ! !Ô%8Ó9×EÑEÛTó
ð 	
r    c           
      óX  — t        «       \  }}t        d«      D �cg c]=  }|j                  |«      j                  | j                  d|dz   fz  d|dz   fz  g«      ‘Œ? }}t        dd«      D ]¢  }| j	                  |j                  «       d|fz  «       |j                  «        |j                  d«       |j                  d|fz  «       |j                  d	|fz  «       | j	                  |j                  «       d
«       |j                  d«       Œ¤ t        j                  |d¬«      S c c}w )z‘
        Issue three retrieve calls immediately without waiting for any to
        succeed and make sure they all do succeed eventually.
        rŽ   s   First line of %d.r�   s   Second line of %d.r”   s	   RETR %d
rÁ   s   First line of %d.
s   Second line of %d.
r    r—   T)ÚfireOnOneErrback)
r/   Úrangerµ   rE   r>   rL   rt   r+   r   ÚDeferredList)r   r-   r.   ÚiÚmessagess        r   Útest_concurrentRetrievesz/POP3ClientMessageTests.test_concurrentRetrievesN  s  € ô
 ‹w‰ˆˆ1ô ˜1“Xö
ð
 ð	 �J‰J�q‹M×%Ñ%Ø× Ñ Ø%¨¨Q©¨Ñ0Ð2GÈ1ÈqÉ5È(Ñ2RÐSõð
ˆð 
ô �q˜!“ò 	%ˆAØ×Ñ˜QŸW™W›Y¨¸!¸Ñ(=Ô>Ø�G‰GŒIØ�N‰NÐ8Ô9Ø�N‰NÐ3°q°dÑ:Ô;Ø�N‰NÐ4¸°tÑ;Ô<Ø×Ñ˜QŸW™W›Y¨Ô,Ø�N‰N˜8Õ$ð	%ô ×!Ñ! (¸TÔBÐBùò#
s   ›AD'N)r!   r"   r#   r¶   r¹   r¸   rÆ   rÉ   rÈ   rÍ   rÔ   r$   r    r   r­   r­   
  s.   „ ò
ò	Eò
ò

ò
LòUò
óCr    r­   c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚPOP3ClientMiscTestsc           
      ó  — t        «       \  }}|j                  d¬«      }| j                  |j                  «       d«       |j	                  d«       |j	                  d«       |j                  | j                  d d d g d¢ddgdgd	œ«      S )
Nr   ©ÚuseCacheó   CAPA
s   +OK Capabilities on the way
s!   X
Y
Z
A 1 2 3
B 1 2
C 1
.
)ó   1ó   2ó   3rÛ   rÜ   )ó   Xó   Yó   Zó   Aó   Bó   C©r/   Úcapabilitiesr>   rL   r+   rE   rF   s       r   ÚtestCapabilityz"POP3ClientMiscTests.testCapabilityi  s„   € Ü‹w‰ˆˆ1Ø�N‰N AˆNÓ&ˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð9Ô:Ø	�‰ÐIÔJØ�}‰}Ø×ÑàØØÚ(Ø˜T�lØ�fñó

ð 
	
r    c                 óÚ   — t        «       \  }}|j                  d¬«      }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  i «      S )Nr   rØ   rÚ   ó   -ERR This server is lame!
rä   rF   s       r   ÚtestCapabilityErrorz'POP3ClientMiscTests.testCapabilityError{  sW   € Ü‹w‰ˆˆ1Ø�N‰N AˆNÓ&ˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð7Ô8Ø�}‰}˜T×-Ñ-¨rÓ2Ð2r    c                 óÖ   — t        «       \  }}|j                  «       }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )Nó   STAT
s   +OK 1 1212
)r�   i¼  )r/   Ústatr>   rL   r+   rE   rF   s       r   ÚtestStatzPOP3ClientMiscTests.testStat‚  sR   € Ü‹w‰ˆˆ1Ø�F‰F‹HˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð(Ô)Ø�}‰}˜T×-Ñ-¨yÓ9Ð9r    c                 óð   ‡ — t        «       \  }}|j                  «       }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nrë   rè   c                 óB   •— ‰j                  | j                  d   d«      S ©Nr   s   This server is lame!r=   r@   s    €r   r4   z3POP3ClientMiscTests.testStatError.<locals>.<lambda>�  ó   ø€ ˜×(Ñ(¨¯©°!©Ð6MÓN€ r    )r/   rì   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestStatErrorz!POP3ClientMiscTests.testStatError‰  ó`   ø€ Ü‹w‰ˆˆ1Ø�F‰F‹HˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð7Ô8Ø×!Ñ! !Ô%8Ó9×EÑEÛNó
ð 	
r    c                 óÖ   — t        «       \  }}|j                  «       }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )Nó   NOOP
s   +OK No-op to you too!
s   No-op to you too!)r/   Únoopr>   rL   r+   rE   rF   s       r   ÚtestNoopzPOP3ClientMiscTests.testNoop’  sS   € Ü‹w‰ˆˆ1Ø�F‰F‹HˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð3Ô4Ø�}‰}˜T×-Ñ-Ð/CÓDÐDr    c                 óð   ‡ — t        «       \  }}|j                  «       }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nrõ   rè   c                 óB   •— ‰j                  | j                  d   d«      S rð   r=   r@   s    €r   r4   z3POP3ClientMiscTests.testNoopError.<locals>.<lambda>Ÿ  rñ   r    )r/   rö   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestNoopErrorz!POP3ClientMiscTests.testNoopError™  ró   r    c                 óÖ   — t        «       \  }}|j                  «       }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )Nó   RSET
s   +OK Reset state
s   Reset state)r/   Úresetr>   rL   r+   rE   rF   s       r   ÚtestRsetzPOP3ClientMiscTests.testRset¢  sR   € Ü‹w‰ˆˆ1Ø�G‰G‹IˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð-Ô.Ø�}‰}˜T×-Ñ-¨~Ó>Ð>r    c                 óð   ‡ — t        «       \  }}|j                  «       }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )Nrü   rè   c                 óB   •— ‰j                  | j                  d   d«      S rð   r=   r@   s    €r   r4   z3POP3ClientMiscTests.testRsetError.<locals>.<lambda>¯  rñ   r    )r/   rý   r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestRsetErrorz!POP3ClientMiscTests.testRsetError©  s`   ø€ Ü‹w‰ˆˆ1Ø�G‰G‹IˆØ×Ñ˜Ÿ™› KÔ0Ø	�‰Ð7Ô8Ø×!Ñ! !Ô%8Ó9×EÑEÛNó
ð 	
r    c                 óØ   — t        «       \  }}|j                  d«      }| j                  |j                  «       d«       |j	                  d«       |j                  | j                  d«      S )NrŽ   ó   DELE 4
s   +OK Hasta la vista
s   Hasta la vista)r/   Údeleter>   rL   r+   rE   rF   s       r   Ú
testDeletezPOP3ClientMiscTests.testDelete²  sU   € Ü‹w‰ˆˆ1Ø�H‰H�Q‹KˆØ×Ñ˜Ÿ™› MÔ2Ø	�‰Ð0Ô1Ø�}‰}˜T×-Ñ-Ð/@ÓAÐAr    c                 óò   ‡ — t        «       \  }}|j                  d«      }‰ j                  |j                  «       d«       |j	                  d«       ‰ j                  |t        «      j                  ˆ fd„«      S )NrŽ   r  s   -ERR Winner is not you.
c                 óB   •— ‰j                  | j                  d   d«      S )Nr   s   Winner is not you.r=   r@   s    €r   r4   z5POP3ClientMiscTests.testDeleteError.<locals>.<lambda>¿  s   ø€ ˜×(Ñ(¨¯©°!©Ð6KÓL€ r    )r/   r  r>   rL   r+   rD   r   rE   rF   s   `   r   ÚtestDeleteErrorz#POP3ClientMiscTests.testDeleteError¹  sb   ø€ Ü‹w‰ˆˆ1Ø�H‰H�Q‹KˆØ×Ñ˜Ÿ™› MÔ2Ø	�‰Ð5Ô6Ø×!Ñ! !Ô%8Ó9×EÑEÛLó
ð 	
r    N)r!   r"   r#   ræ   ré   rí   rò   r÷   rú   rþ   r  r  r  r$   r    r   rÖ   rÖ   h  s6   „ ò
ò$3ò:ò
òEò
ò?ò
òBó
r    rÖ   c                   ó   — e Zd Zdd„Zd„ Zy)ÚSimpleClientNc                 ó    — || _         d| _        y )NT)ÚdeferredrB   )r   r  ÚcontextFactorys      r   r{   zSimpleClient.__init__Ä  s   € Ø ˆŒØ"&ˆÕr    c                 ó:   — | j                   j                  d «       y r   )r  Úcallback)r   Ú	challenges     r   ÚserverGreetingzSimpleClient.serverGreetingÈ  s   € Ø�‰×Ñ˜tÕ$r    r   )r!   r"   r#   r{   r  r$   r    r   r
  r
  Ã  s   „ ó'ó%r    r
  c                   ó2   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	y)ÚPOP3HelperMixinNc                 óÞ   — t        j                  «       }t        j                  | j                  ¬«      | _        t        || j                  ¬«      | _        d| j                  _	        || _
        y )N)r  é   )r   ÚDeferredr   ÚPOP3TestServerÚ	serverCTXÚserverr
  Ú	clientCTXÚclientÚtimeoutÚ	connected)r   rG   s     r   r/   zPOP3HelperMixin.setUpÐ  sI   € Ü�N‰NÓˆÜ$×3Ñ3À4Ç>Á>ÔRˆŒÜ" 1°T·^±^ÔDˆŒØ ˆ�‰ÔØˆ�r    c                 ó   — | ` | `| `y r   )r  r  r  r   s    r   ÚtearDownzPOP3HelperMixin.tearDown×  s   € ØˆKØˆKØ‰Nr    c                 óL   — | j                   j                  j                  «        y r   )r  Ú	transportr   )r   Úignores     r   Ú_cbStopClientzPOP3HelperMixin._cbStopClientÜ  s   € Ø�‰×Ñ×,Ñ,Õ.r    c                 ó–   — | j                   j                  j                  «        | j                  j                  j                  «        |S r   )r  r!  r   r  )r   Úfailures     r   Ú
_ebGeneralzPOP3HelperMixin._ebGeneralß  s3   € Ø�‰×Ñ×,Ñ,Ô.Ø�‰×Ñ×,Ñ,Ô.Øˆr    c                 óZ   — t        j                  | j                  | j                  d¬«      S )NF)Únoisy)r   ÚloopbackTCPr  r  r   s    r   r   zPOP3HelperMixin.loopbackä  s   € Ü×#Ñ# D§K¡K°·±ÀEÔJÐJr    )
r!   r"   r#   r  r  r/   r  r#  r&  r   r$   r    r   r  r  Ì  s&   „ Ø€IØ€Iòòò
/òó
Kr    r  c                   ó6   — e Zd Z G d„ dej                  «      Zy)ÚTLSServerFactoryc                   ó2   — e Zd ZU dZg Zee   ed<   d„ Zd„ Z	y)úTLSServerFactory.protocolNÚoutputc                 ó°   — g | j                   _        | j                  d d  | _        | j                  j                  d«      D ]  }| j	                  |«       Œ y )Nr   )ÚfactoryÚinputr.  ÚpopÚsendLiner‡   s     r   ÚconnectionMadez(TLSServerFactory.protocol.connectionMadeí  sE   € Ø!#ˆD�L‰LÔØŸ+™+¡a˜.ˆDŒKØŸ™Ÿ™¨Ó*ò $�Ø—‘˜dÕ#ñ$r    c                 ó  — | j                   j                  j                  |«       | j                  j	                  d«      D �cg c]  }| j                  |«      ‘Œ c} |dk(  r&| j                  j                  | j                  «       y y c c}w )Nr   r%   )	r0  r1  r   r.  r2  r3  r!  ÚstartTLSÚcontext)r   rˆ   Úls      r   ÚlineReceivedz&TLSServerFactory.protocol.lineReceivedó  se   € Ø�L‰L×Ñ×%Ñ% dÔ+Ø'+§{¡{§¡°qÓ'9Ö: !ˆT�]‰]˜1ÕÓ:Ø�wŠØ—‘×'Ñ'¨¯©Õ5ð ùò ;s   ÁB
)
r!   r"   r#   r7  r.  r   ÚbytesÚ__annotations__r4  r9  r$   r    r   r	   r-  é  s   … ØˆØ ˆ��U‘Ó ò	$ó	6r    r	   N)r!   r"   r#   r   ÚLineReceiverr	   r$   r    r   r+  r+  è  s   „ ô6�5×%Ñ%õ 6r    r+  zOpenSSL not presentc                   ó   — e Zd ZdZd„ Zy)ÚPOP3TLSTestsz=
    Tests for POP3Client's support for TLS connections.
    c                 ón  ‡ ‡
‡‡‡— t        «       Šdgg d¢dgddgdgg‰j                  _        t        «       ‰j                  _        t        j                  d‰d¬«      }‰ j                  |j                  «       |j                  «       j                  }|j                  «       j                  }t        j                  «       Št        t        j                  «       t        «       «      Šˆˆfd„}|‰_        t        j"                  «       }ˆfd„|_        t        j$                  |||«      Š
ˆfd	„}ˆfd
„}ˆ ˆfd„}ˆ
ˆfd„}	‰j&                  j)                  |«       ‰j&                  j)                  |«       ‰j&                  j)                  |«       ‰j&                  j+                  |	«       ‰j&                  S )zd
        POP3Client.startTLS starts a TLS session over its existing TCP
        connection.
        ó   +OK)r@  r%   ó   .rA  r   z	127.0.0.1)Ú	interfacec                 óT   •— t         j                  ‰| «       ‰j                  d «       y r   )r
  r   r  )ÚreasonÚconnLostDeferredÚcps    €€r   r   z2POP3TLSTests.test_startTLS.<locals>.connectionLost  s!   ø€ Ü×'Ñ'¨¨FÔ3Ø×%Ñ% dÕ+r    c                  ó   •— ‰ S r   r$   )rF  s   €r   r4   z,POP3TLSTests.test_startTLS.<locals>.<lambda>  s   ø€ ˜b€ r    c                 óN   •— t        j                  d«       ‰j                  «       S )Nz!Connected to server; starting TLS)r   Úmsgr6  ©ÚignoredrF  s    €r   ÚcbConnectedz/POP3TLSTests.test_startTLS.<locals>.cbConnected!  s   ø€ Ü�G‰GÐ7Ô8Ø—;‘;“=Ð r    c                 óN   •— t        j                  d«       ‰j                  «       S )NzStarted TLS; disconnecting)r   rI  ÚquitrJ  s    €r   ÚcbStartedTLSz0POP3TLSTests.test_startTLS.<locals>.cbStartedTLS%  s   ø€ Ü�G‰GÐ0Ô1Ø—7‘7“9Ðr    c                 ól   •— t        j                  d«       ‰j                  ‰j                  g d¢«       y )Nz.Disconnected; asserting correct input received)ó   CAPAr%   rQ  s   QUIT)r   rI  r>   r1  )Úignr   Úsfs    €€r   ÚcbDisconnectedz2POP3TLSTests.test_startTLS.<locals>.cbDisconnected)  s%   ø€ Ü�G‰GÐDÔEØ×Ñ˜RŸX™XÒ'KÕLr    c                 óR   •— t        j                  d«       ‰j                  «        ‰S )NzEAsserted correct input; disconnecting client and shutting down server)r   rI  Ú
disconnect)r2   ÚconnrE  s    €€r   Úcleanupz+POP3TLSTests.test_startTLS.<locals>.cleanup-  s&   ø€ Ü�G‰Gð2ôð �O‰OÔØ#Ð#r    )r+  r	   r.  r   r7  r
   Ú	listenTCPÚ
addCleanupÚstopListeningÚgetHostÚhostÚportr   r  r
  r   r   ÚClientFactoryÚ
connectTCPr  rE   ÚaddBoth)r   r^  ÚHÚPr   ÚcfrL  rO  rT  rX  rW  rE  rF  rS  s   `         @@@@r   Útest_startTLSzPOP3TLSTests.test_startTLS  sR  ü€ ô
 ÓˆàˆHÚ#ØˆHØ�TˆNØˆHð
ˆ�‰Ôô /Ó0ˆ�‰ÔÜ× Ñ   B°+Ô>ˆØ�‰˜×*Ñ*Ô+Ø�L‰L‹N×ÑˆØ�L‰L‹N×Ñˆä Ÿ>™>Ó+ÐÜœ%Ÿ.™.Ó*Ô,<Ó,>Ó?ˆõ	,ð +ˆÔÜ×#Ñ#Ó%ˆÛ ˆŒä×!Ñ! ! Q¨Ó+ˆô	!ô	õ	Mõ	$ð 	�‰×Ñ Ô,Ø
�‰×Ñ Ô-Ø
�‰×Ñ Ô/Ø
�‰×Ñ˜GÔ$à�{‰{Ðr    N)r!   r"   r#   Ú__doc__re  r$   r    r   r>  r>  ú  s   „ ñó9r    r>  c                   ó   — e Zd Zd„ Zy)ÚPOP3TimeoutTestsc                 ó„  ‡ ‡‡— ˆˆ ˆfd„}ˆ fd„Šˆ fd„Šˆ fd„}d‰ j                   _        dt        _        ||g}t	        ‰ j
                  j                  t	        t        |«      «       ‰ j
                  j                  ‰ j                  «       ‰ j
                  j                  ‰ j                  «       ‰ j                  «       S )Nc                  ó„   •— ‰j                   j                  dd«      } | j                  ‰«       | j                  ‰«       | S )NÚtestÚtwisted)r  rC   rE   Ú
addErrback)rG   ÚloggedInr   ÚtimedOuts    €€€r   rC   z+POP3TimeoutTests.testTimeout.<locals>.login?  s6   ø€ Ø—‘×!Ñ! &¨)Ó4ˆAØ�M‰M˜(Ô#Ø�L‰L˜Ô"ØˆHr    c                 ó(   •— ‰j                  d«       y )Nz%Successfully logged in!?  Impossible!)Úfail)r2   r   s    €r   rn  z.POP3TimeoutTests.testTimeout.<locals>.loggedInE  s   ø€ Ø�I‰IÐ=Õ>r    c                 óf   •— | j                  t        j                  «       ‰j                  d «       y r   )Útrapr   ÚTimeoutErrorr#  )r%  r   s    €r   ro  z.POP3TimeoutTests.testTimeout.<locals>.timedOutH  s#   ø€ Ø�L‰Lœ×+Ñ+Ô,Ø×Ñ˜tÕ$r    c                  ó8   •— ‰ j                   j                  «       S r   )r  rN  r   s   €r   rN  z*POP3TimeoutTests.testTimeout.<locals>.quitL  s   ø€ Ø—;‘;×#Ñ#Ó%Ð%r    g{®Gáz„?T)r  r  r   ÚTIMEOUT_RESPONSEÚmapr  rE   r5   r#  rm  r&  r   )r   rC   rN  Úmethodsrn  ro  s   `   @@r   ÚtestTimeoutzPOP3TimeoutTests.testTimeout>  s�   ú€ ö	ô	?ô	%ô	&ð #ˆ�‰Ôð +/ŒÔ'à˜$�-ˆÜˆD�N‰N×&Ñ&¬¬E°7Ó(;Ô<Ø�‰×"Ñ" 4×#5Ñ#5Ô6Ø�‰×!Ñ! $§/¡/Ô2Ø�}‰}‹Ðr    N)r!   r"   r#   ry  r$   r    r   rh  rh  =  s   „ ór    rh  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚPOP3ClientModuleStructureTestszt
    Miscellaneous tests more to do with module/package structure than
    anything to do with the POP3 client.
    c                 ól   — | j                  t        j                  j                  j                  g «       y)zŒ
        twisted.mail._pop3client.__all__ should be empty because all classes
        should be imported through twisted.mail.pop3.
        N)r>   rl  ÚmailÚ_pop3clientÚ__all__r   s    r   Útest_allz'POP3ClientModuleStructureTests.test_allb  s$   € ð
 	×ÑœŸ™×1Ñ1×9Ñ9¸2Õ>r    c                 óÐ  — t        j                  t        j                  d   t         j                  «      D �cg c]  }|d   d   dk(  s|d   ‘Œ }}|D ]Œ  }|dk(  sR| j                  t        t        j                  j                  |«      |› dt        j                  j                  › �«       ŒZ| j                  t        t        j                  j                  d«      «       ŒŽ yc c}w )a  
        Every public class in twisted.mail._pop3client should be available as
        a member of twisted.mail.pop3 with the exception of
        twisted.mail._pop3client.POP3Client which should be available as
        twisted.mail.pop3.AdvancedClient.
        ztwisted.mail._pop3clientr   Ú_r'   z not in r   N)
ÚinspectÚ
getmembersÚsysÚmodulesÚisclassÚ
assertTrueÚhasattrrl  r}  Úpop3)r   rš   ÚpublicClassesÚpcs       r   Útest_importz*POP3ClientModuleStructureTests.test_importi  sÍ   € ô ×'Ñ'Ü—‘Ð6Ñ7¼¿¹óö
àð �Q‘4˜‘7˜c’>ð	 ˆa‹Dð
ˆð 
ð  ò 	RˆBØ˜Ò%Ø—‘ÜœGŸL™L×-Ñ-¨rÓ2Ø�d˜(¤7§<¡<×#4Ñ#4Ð"5Ð6õð
 —‘¤¬¯©×(9Ñ(9Ð;OÓ PÕQñ	Rùò
s   ¸C#N)r!   r"   r#   rf  r€  r�  r$   r    r   r{  r{  \  s   „ ñò
?óRr    r{  )T)6rƒ  r…  Útypingr   Úunittestr   Úzope.interfacer   Útwisted.mail._pop3clientrl  Útwisted.internetr   r   r   r	   r
   Útwisted.internet.testingr   Útwisted.mail.pop3r   r'   r   r   Útwisted.mail.testr   Útwisted.protocolsr   r   Útwisted.pythonr   Útwisted.trial.unittestr   Útwisted.test.ssl_helpersr   r   ÚImportErrorr   r(   r/   r5   r7   rw   r„   rŠ   r­   rÖ   r
  r  ÚServerFactoryr+  ÚIReactorSSLr>  rh  r{  r$   r    r   ú<module>r�     ss  ðó
 Û 
Ý Ý å +ã ß HÕ HÝ 4÷ñ õ
 -ß -Ý Ý +ðßKô=¨/ô =ð ØØØØØñ€óò"#ôt˜8ô t÷n5ñ 5÷ñ ô;
˜(ô ;
ô|[C˜Xô [Cô|X
˜(ô X
ôv%�:ô %÷Kñ Kô86�x×-Ñ-ô 6ñ$ ÐÐÐ3Ó4ÙÐ"ˆJ×"Ñ" 7¨DÓ1Ð1Ð3HÓIô>�8ó >ó Jó 5ð>ôB�¨ô ô>#R Xõ #RøðC ò ØÐØÒðús   ÁD3 Ä3	D?Ä>D?