Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/python/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/python/otp.pyc


[XMc@sdZddlZddlZddlZejddedddZdZd	Zdd
l	m
Z
mZide
6de6Zd
Z
dZdefdYZdddYZdefdYZdddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd	d
ddd
dddddddgZdS(s
A One-Time Password System based on RFC 2289

The class Authenticator contains the hashing-logic, and the parser for the
readable output. It also contains challenge which returns a string describing
the authentication scheme for a client.

OTP is a password container for an user on a server.

NOTE: Does not take care of transmitting the shared secret password.

At the end there's a dict called dict which is dictionary contain 2048
words for storing pronouncable 11-bit values. Taken from RFC 1760.

Uses the MD5- and SHA-algorithms for hashing

Todo: RFC2444, SASL (perhaps), parsing hex-responses

This module is deprecated.  Consider using U{another Python OTP
library<http://labix.org/python-otp>} instead.
iNs3twisted.python.otp is deprecated since Twisted 8.3.tcategoryt
stacklevelicCs/d}x"|D]}d|t|}q
W|S(s Convert digest to long li(tord(tstresulttbyte((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytstringToLong%s
cCsqg}xdtt|dD]L}d}x&|dD]}d|t|}q4W|j||d }qW|S(s0 Convert digest to a list of four 32-bits words ilii(txrangetlenRtappend(RRtattmpR((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytstringToDWords,s
cCs;d}x.|dkr6t|d|}|d}q	W|S(s Convert long to digest tlil(tchr(tlR((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytlongToString7s
(tmd5tsha1RRii2tUnauthorizedcBseZdZRS(sthe Unauthorized exception

    This exception is raised when an action is not allowed, or a user is not
    authenticated properly.
    (t__name__t
__module__t__doc__(((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyREstOTPAuthenticatorcBsteZdZedZdZdZdZdZdZ	dZ
dZd	Zd
Z
dZRS(sF
    A One Time Password System

    Based on RFC 2289, which is based on a the S/KEY Authentication-scheme.
    It uses the MD5- and SHA-algorithms for hashing

    The variable OTP is at all times a 64bit string.

    @ivar hash: An object which can be used to compute hashes.  This is either
        L{md5} or L{sha1}.
    cCs
||_dS(s"Set the hash to either md5 or sha1N(thash(tselfR((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyt__init__XscCspd}x0tdD]"}|ttjdd}qWx0tdD]"}|ttjdd}qFW|S(sAReturn a 10 char random seed, with 6 lowercase chars and 4 digitsR
iiaizii0i9(trangeRtrandomt	randrange(Rtseedtx((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytgenerateSeed]s  cCs<|jtkr|j|S|jtkr8|j|SdS(N(RRt
foldDigest128Rt
foldDigest160(Rtotp((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyt
foldDigestfs
cCst|}|d|dA}|d|dA}d}x2tdD]$}t|d@|}|d?}qCWx2tdD]$}t|d@|}|d?}qxW|S(	sFold a 128 bit digest to 64 bitiiiiR
iii(RRR(Rtotp128tregstp0tp1tSR
((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyR!lscCst|}|d|dA}|d|dA}|d|dA}d}x2tdD]$}t|d@|}|d?}qUWx2tdD]$}t|d@|}|d?}qW|S(	sFold a 160 bit digest to 64 bitiiiiiR
ii(RRR(Rtotp160R&R'R(R)R
((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyR"zscCs"|j|}|j|jS(s'Run through the hash and fold to 64 bit(RR$tdigest(RR+th((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyt
hashUpdatescCsLtj|}|j||}x#t|D]}|j|}q/W|S(s`Return a 64 bit OTP based on inputs
        Run through makeReadable to get a 6 word pass-phrase(tstringtlowerR-R(RRtpasswdtsequenceR#R
((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytgenerateOTPs
cCs?d}x2tdddD]}||d@}|d?}qW|S(s%Calculate the parity from a 64bit OTPii@ii(R(RR#tparityti((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytcalculateParitys
cCst|}g}|j|}x;tdddD]'}|jt||dd?d@q4W|jt|d>d@|d@Btj|S(	s-Returns a 6 word pass-phrase from a 64bit OTPiiii	iiii(RR5RR	tdictR.tjoin(RR#R+tlistR3R4((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytmakeReadables%!cCsdt|j||fS(s=Return a challenge in the format otp-<hash> <sequence> <seed>sotp-%s %i %s(thashidR(RRR1((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyt	challengescCstj|}x1tt|D]}tj||||<q"Wd}xDtddD]3}|ttj||d|dd>B}qYWtj|d}||d@d?B}|d	@|j|krt	d
nt
|}|S(sDecode the phrase, and return a 64bit OTP
        I will raise Unauthorized if the parity is wrong
        TODO: Add support for hex (MUST) and the '2nd scheme'(SHOULD)liiill	iiisParity error(R.tsplitRRtuppertlongR6tindexR5RR(RtphrasetwordsR4tbRR+((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytparsePhrases1(RRRRRR R$R!R"R-R2R5R9R;RC(((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyRLs										
	tOTPcBsAeZdZdZdZdZeedZ	dZ
dZRS(sAn automatic version of the OTP-Authenticator

    Updates the sequence and the keeps last approved password on success
    On the next authentication, the stored password is hashed and checked
    up against the one given by the user. If they match, the sequencecounter
    is decreased and the circle is closed.

    This object should be glued to each user

    Note:
    It does NOT reset the sequence when the combinations left approach zero,
    This has to be done manuelly by instancing a new object
    icCsQtj|||j}tj||||d|_||_||_dS(s5Initialize the OTP-Sequence, and discard the passwordiN(RRR R2tlastotpRR1(RR0R1RR((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyRs
	cCstj||j|j}|S(sReturn a challenge string(RR;RR1(RR((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyR;scCsyl|j|}|j|}|j|kr_||_|jtkr[|jd|_ndStdWntk
r}t|nXdS(s1Test the phrase against the last challenge issueditoktFailedN(RCR-RER1tMINIMUMSEQUENCER(RR@R+thasheddigesttmsg((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pytauthenticates	N(RRRtNoneRR1REtINITIALSEQUENCERRR;RK(((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyRDs
		tAtABEtACEtACTtADtADAtADDtAGOtAIDtAIMtAIRtALLtALPtAMtAMYtANtANAtANDtANNtANTtANYtAPEtAPStAPTtARCtAREtARKtARMtARTtAStASHtASKtATtATEtAUGtAUKtAVEtAWEtAWKtAWLtAWNtAXtAYEtBADtBAGtBAHtBAMtBANtBARtBATtBAYtBEtBEDtBEEtBEGtBENtBETtBEYtBIBtBIDtBIGtBINtBITtBOBtBOGtBONtBOOtBOPtBOWtBOYtBUBtBUDtBUGtBUMtBUNtBUStBUTtBUYtBYtBYEtCABtCALtCAMtCANtCAPtCARtCATtCAWtCODtCOGtCOLtCONtCOOtCOPtCOTtCOWtCOYtCRYtCUBtCUEtCUPtCURtCUTtDABtDADtDAMtDANtDARtDAYtDEEtDELtDENtDEStDEWtDIDtDIEtDIGtDINtDIPtDOtDOEtDOGtDONtDOTtDOWtDRYtDUBtDUDtDUEtDUGtDUNtEARtEATtEDtEELtEGGtEGOtELItELKtELMtELYtEMtENDtESTtETCtEVAtEVEtEWEtEYEtFADtFANtFARtFATtFAYtFEDtFEEtFEWtFIBtFIGtFINtFIRtFITtFLOtFLYtFOEtFOGtFORtFRYtFUMtFUNtFURtGABtGADtGAGtGALtGAMtGAPtGAStGAYtGEEtGELtGEMtGETtGIGtGILtGINtGOtGOTtGUMtGUNtGUStGUTtGUYtGYMtGYPtHAtHADtHALtHAMtHANtHAPtHAStHATtHAWtHAYtHEtHEMtHENtHERtHEWtHEYtHItHIDtHIMtHIPtHIStHITtHOtHOBtHOCtHOEtHOGtHOPtHOTtHOWtHUBtHUEtHUGtHUHtHUMtHUTtItICYtIDAtIFtIKEtILLtINKtINNtIOtIONtIQtIRAtIREtIRKtIStITtITStIVYtJABtJAGtJAMtJANtJARtJAWtJAYtJETtJIGtJIMtJOtJOBtJOEtJOGtJOTtJOYtJUGtJUTtKAYtKEGtKENtKEYtKIDtKIMtKINtKITtLAtLABtLACtLADtLAGtLAMtLAPtLAWtLAYtLEAtLEDtLEEtLEGtLENtLEOtLETtLEWtLIDtLIEtLINtLIPtLITtLOtLOBtLOGtLOPtLOStLOTtLOUtLOWtLOYtLUGtLYEtMAtMACtMADtMAEtMANtMAOtMAPtMATtMAWtMAYtMEtMEGtMELtMENtMETtMEWtMIDtMINtMITtMOBtMODtMOEtMOOtMOPtMOStMOTtMOWtMUDtMUGtMUMtMYtNABtNAGtNANtNAPtNATtNAYtNEtNEDtNEEtNETtNEWtNIBtNILtNIPtNITtNOtNOBtNODtNONtNORtNOTtNOVtNOWtNUtNUNtNUTtOtOAFtOAKtOARtOATtODDtODEtOFtOFFtOFTtOHtOILtOKtOLDtONtONEtORtORBtOREtORRtOStOTTtOURtOUTtOVAtOWtOWEtOWLtOWNtOXtPAtPADtPALtPAMtPANtPAPtPARtPATtPAWtPAYtPEAtPEGtPENtPEPtPERtPETtPEWtPHItPItPIEtPINtPITtPLYtPOtPODtPOEtPOPtPOTtPOWtPROtPRYtPUBtPUGtPUNtPUPtPUTtQUOtRAGtRAMtRANtRAPtRATtRAWtRAYtREBtREDtREPtRETtRIBtRIDtRIGtRIMtRIOtRIPtROBtRODtROEtRONtROTtROWtROYtRUBtRUEtRUGtRUMtRUNtRYEtSACtSADtSAGtSALtSAMtSANtSAPtSATtSAWtSAYtSEAtSECtSEEtSENtSETtSEWtSHEtSHYtSINtSIPtSIRtSIStSITtSKItSKYtSLYtSOtSOBtSODtSONtSOPtSOWtSOYtSPAtSPYtSUBtSUDtSUEtSUMtSUNtSUPtTABtTADtTAGtTANtTAPtTARtTEAtTEDtTEEtTENtTHEtTHYtTICtTIEtTIMtTINtTIPtTOtTOEtTOGtTOMtTONtTOOtTOPtTOWtTOYtTRYtTUBtTUGtTUMtTUNtTWOtUNtUPtUStUSEtVANtVATtVETtVIEtWADtWAGtWARtWAStWAYtWEtWEBtWEDtWEEtWETtWHOtWHYtWINtWITtWOKtWONtWOOtWOWtWRYtWUtYAMtYAPtYAWtYEtYEAtYEStYETtYOUtABEDtABELtABETtABLEtABUTtACHEtACIDtACMEtACREtACTAtACTStADAMtADDStADENtAFARtAFROtAGEEtAHEMtAHOYtAIDAtAIDEtAIDStAIRYtAJARtAKINtALANtALECtALGAtALIAtALLYtALMAtALOEtALSOtALTOtALUMtALVAtAMENtAMEStAMIDtAMMOtAMOKtAMOStAMRAtANDYtANEWtANNAtANNEtANTEtANTItAQUAtARABtARCHtAREAtARGOtARIDtARMYtARTStARTYtASIAtASKStATOMtAUNTtAURAtAUTOtAVERtAVIDtAVIStAVONtAVOWtAWAYtAWRYtBABEtBABYtBACHtBACKtBADEtBAILtBAITtBAKEtBALDtBALEtBALItBALKtBALLtBALMtBANDtBANEtBANGtBANKtBARBtBARDtBAREtBARKtBARNtBARRtBASEtBASHtBASKtBASStBATEtBATHtBAWDtBAWLtBEADtBEAKtBEAMtBEANtBEARtBEATtBEAUtBECKtBEEFtBEENtBEERtBEETtBELAtBELLtBELTtBENDtBENTtBERGtBERNtBERTtBESStBESTtBETAtBETHtBHOYtBIAStBIDEtBIENtBILEtBILKtBILLtBINDtBINGtBIRDtBITEtBITStBLABtBLATtBLEDtBLEWtBLOBtBLOCtBLOTtBLOWtBLUEtBLUMtBLURtBOARtBOATtBOCAtBOCKtBODEtBODYtBOGYtBOHRtBOILtBOLDtBOLOtBOLTtBOMBtBONAtBONDtBONEtBONGtBONNtBONYtBOOKtBOOMtBOONtBOOTtBOREtBORGtBORNtBOSEtBOSStBOTHtBOUTtBOWLtBOYDtBRADtBRAEtBRAGtBRANtBRAYtBREDtBREWtBRIGtBRIMtBROWtBUCKtBUDDtBUFFtBULBtBULKtBULLtBUNKtBUNTtBUOYtBURGtBURLtBURNtBURRtBURTtBURYtBUSHtBUSStBUSTtBUSYtBYTEtCADYtCAFEtCAGEtCAINtCAKEtCALFtCALLtCALMtCAMEtCANEtCANTtCARDtCAREtCARLtCARRtCARTtCASEtCASHtCASKtCASTtCAVEtCEILtCELLtCENTtCERNtCHADtCHARtCHATtCHAWtCHEFtCHENtCHEWtCHICtCHINtCHOUtCHOWtCHUBtCHUGtCHUMtCITEtCITYtCLADtCLAMtCLANtCLAWtCLAYtCLODtCLOGtCLOTtCLUBtCLUEtCOALtCOATtCOCAtCOCKtCOCOtCODAtCODEtCODYtCOEDtCOILtCOINtCOKEtCOLAtCOLDtCOLTtCOMAtCOMBtCOMEtCOOKtCOOLtCOONtCOOTtCORDtCOREtCORKtCORNtCOSTtCOVEtCOWLtCRABtCRAGtCRAMtCRAYtCREWtCRIBtCROWtCRUDtCUBAtCUBEtCUFFtCULLtCULTtCUNYtCURBtCURDtCUREtCURLtCURTtCUTStDADEtDALEtDAMEtDANAtDANEtDANGtDANKtDAREtDARKtDARNtDARTtDASHtDATAtDATEtDAVEtDAVYtDAWNtDAYStDEADtDEAFtDEALtDEANtDEARtDEBTtDECKtDEEDtDEEMtDEERtDEFTtDEFYtDELLtDENTtDENYtDESKtDIALtDICEtDIEDtDIETtDIMEtDINEtDINGtDINTtDIREtDIRTtDISCtDISHtDISKtDIVEtDOCKtDOEStDOLEtDOLLtDOLTtDOMEtDONEtDOOMtDOORtDORAtDOSEtDOTEtDOUGtDOURtDOVEtDOWNtDRABtDRAGtDRAMtDRAWtDREWtDRUBtDRUGtDRUMtDUALtDUCKtDUCTtDUELtDUETtDUKEtDULLtDUMBtDUNEtDUNKtDUSKtDUSTtDUTYtEACHtEARLtEARNtEASEtEASTtEASYtEBENtECHOtEDDYtEDENtEDGEtEDGYtEDITtEDNAtEGANtELANtELBAtELLAtELSEtEMILtEMITtEMMAtENDStERICtEROStEVENtEVERtEVILtEYEDtFACEtFACTtFADEtFAILtFAINtFAIRtFAKEtFALLtFAMEtFANGtFARMtFASTtFATEtFAWNtFEARtFEATtFEEDtFEELtFEETtFELLtFELTtFENDtFERNtFESTtFEUDtFIEFtFIGStFILEtFILLtFILMtFINDtFINEtFINKtFIREtFIRMtFISHtFISKtFISTtFITStFIVEtFLAGtFLAKtFLAMtFLATtFLAWtFLEAtFLEDtFLEWtFLITtFLOCtFLOGtFLOWtFLUBtFLUEtFOALtFOAMtFOGYtFOILtFOLDtFOLKtFONDtFONTtFOODtFOOLtFOOTtFORDtFOREtFORKtFORMtFORTtFOSStFOULtFOURtFOWLtFRAUtFRAYtFREDtFREEtFRETtFREYtFROGtFROMtFUELtFULLtFUMEtFUNDtFUNKtFURYtFUSEtFUSStGAFFtGAGEtGAILtGAINtGAITtGALAtGALEtGALLtGALTtGAMEtGANGtGARBtGARYtGASHtGATEtGAULtGAURtGAVEtGAWKtGEARtGELDtGENEtGENTtGERMtGETStGIBEtGIFTtGILDtGILLtGILTtGINAtGIRDtGIRLtGISTtGIVEtGLADtGLEEtGLENtGLIBtGLOBtGLOMtGLOWtGLUEtGLUMtGLUTtGOADtGOALtGOATtGOERtGOEStGOLDtGOLFtGONEtGONGtGOODtGOOFtGOREtGORYtGOSHtGOUTtGOWNtGRABtGRADtGRAYtGREGtGREWtGREYtGRIDtGRIMtGRINtGRITtGROWtGRUBtGULFtGULLtGUNKtGURUtGUSHtGUSTtGWENtGWYNtHAAGtHAAStHACKtHAILtHAIRtHALEtHALFtHALLtHALOtHALTtHANDtHANGtHANKtHANStHARDtHARKtHARMtHARTtHASHtHASTtHATEtHATHtHAULtHAVEtHAWKtHAYStHEADtHEALtHEARtHEATtHEBEtHECKtHEEDtHEELtHEFTtHELDtHELLtHELMtHERBtHERDtHEREtHEROtHERStHESStHEWNtHICKtHIDEtHIGHtHIKEtHILLtHILTtHINDtHINTtHIREtHISStHIVEtHOBOtHOCKtHOFFtHOLDtHOLEtHOLMtHOLTtHOMEtHONEtHONKtHOODtHOOFtHOOKtHOOTtHORNtHOSEtHOSTtHOURtHOVEtHOWEtHOWLtHOYTtHUCKtHUEDtHUFFtHUGEtHUGHtHUGOtHULKtHULLtHUNKtHUNTtHURDtHURLtHURTtHUSHtHYDEtHYMNtIBIStICONtIDEAtIDLEtIFFYtINCAtINCHtINTOtIONStIOTAtIOWAtIRIStIRMAtIRONtISLEtITCHtITEMtIVANtJACKtJADEtJAILtJAKEtJANEtJAVAtJEANtJEFFtJERKtJESStJESTtJIBEtJILLtJILTtJIVEtJOANtJOBStJOCKtJOELtJOEYtJOHNtJOINtJOKEtJOLTtJOVEtJUDDtJUDEtJUDOtJUDYtJUJUtJUKEtJULYtJUNEtJUNKtJUNOtJURYtJUSTtJUTEtKAHNtKALEtKANEtKANTtKARLtKATEtKEELtKEENtKENOtKENTtKERNtKERRtKEYStKICKtKILLtKINDtKINGtKIRKtKISStKITEtKLANtKNEEtKNEWtKNITtKNOBtKNOTtKNOWtKOCHtKONGtKUDOtKURDtKURTtKYLEtLACEtLACKtLACYtLADYtLAIDtLAINtLAIRtLAKEtLAMBtLAMEtLANDtLANEtLANGtLARDtLARKtLASStLASTtLATEtLAUDtLAVAtLAWNtLAWStLAYStLEADtLEAFtLEAKtLEANtLEARtLEEKtLEERtLEFTtLENDtLENStLENTtLEONtLESKtLESStLESTtLETStLIARtLICEtLICKtLIEDtLIENtLIEStLIEUtLIFEtLIFTtLIKEtLILAtLILTtLILYtLIMAtLIMBtLIMEtLINDtLINEtLINKtLINTtLIONtLISAtLISTtLIVEtLOADtLOAFtLOAMtLOANtLOCKtLOFTtLOGEtLOIStLOLAtLONEtLONGtLOOKtLOONtLOOTtLORDtLOREtLOSEtLOSStLOSTtLOUDtLOVEtLOWEtLUCKtLUCYtLUGEtLUKEtLULUtLUNDtLUNGtLURAtLUREtLURKtLUSHtLUSTtLYLEtLYNNtLYONtLYRAtMACEtMADEtMAGItMAIDtMAILtMAINtMAKEtMALEtMALItMALLtMALTtMANAtMANNtMANYtMARCtMAREtMARKtMARStMARTtMARYtMASHtMASKtMASStMASTtMATEtMATHtMAULtMAYOtMEADtMEALtMEANtMEATtMEEKtMEETtMELDtMELTtMEMOtMENDtMENUtMERTtMESHtMESStMICEtMIKEtMILDtMILEtMILKtMILLtMILTtMIMItMINDtMINEtMINItMINKtMINTtMIREtMISStMISTtMITEtMITTtMOANtMOATtMOCKtMODEtMOLDtMOLEtMOLLtMOLTtMONAtMONKtMONTtMOODtMOONtMOORtMOOTtMOREtMORNtMORTtMOSStMOSTtMOTHtMOVEtMUCHtMUCKtMUDDtMUFFtMULEtMULLtMURKtMUSHtMUSTtMUTEtMUTTtMYRAtMYTHtNAGYtNAILtNAIRtNAMEtNARYtNASHtNAVEtNAVYtNEALtNEARtNEATtNECKtNEEDtNEILtNELLtNEONtNEROtNESStNESTtNEWStNEWTtNIBStNICEtNICKtNILEtNINAtNINEtNOAHtNODEtNOELtNOLLtNONEtNOOKtNOONtNORMtNOSEtNOTEtNOUNtNOVAtNUDEtNULLtNUMBtOATHtOBEYtOBOEtODINtOHIOtOILYtOINTtOKAYtOLAFtOLDYtOLGAtOLINtOMANtOMENtOMITtONCEtONEStONLYtONTOtONUStORALtORGYtOSLOtOTIStOTTOtOUCHtOUSTtOUTStOVALtOVENtOVERtOWLYtOWNStQUADtQUITtQUODtRACEtRACKtRACYtRAFTtRAGEtRAIDtRAILtRAINtRAKEtRANKtRANTtRAREtRASHtRATEtRAVEtRAYStREADtREALtREAMtREARtRECKtREEDtREEFtREEKtREELtREIDtREINtRENAtRENDtRENTtRESTtRICEtRICHtRICKtRIDEtRIFTtRILLtRIMEtRINGtRINKtRISEtRISKtRITEtROADtROAMtROARtROBEtROCKtRODEtROILtROLLtROMEtROODtROOFtROOKtROOMtROOTtROSAtROSEtROSStROSYtROTHtROUTtROVEtROWEtROWStRUBEtRUBYtRUDEtRUDYtRUINtRULEtRUNGtRUNStRUNTtRUSEtRUSHtRUSKtRUSStRUSTtRUTHtSACKtSAFEtSAGEtSAIDtSAILtSALEtSALKtSALTtSAMEtSANDtSANEtSANGtSANKtSARAtSAULtSAVEtSAYStSCANtSCARtSCATtSCOTtSEALtSEAMtSEARtSEATtSEEDtSEEKtSEEMtSEENtSEEStSELFtSELLtSENDtSENTtSETStSEWNtSHAGtSHAMtSHAWtSHAYtSHEDtSHIMtSHINtSHODtSHOEtSHOTtSHOWtSHUNtSHUTtSICKtSIDEtSIFTtSIGHtSIGNtSILKtSILLtSILOtSILTtSINEtSINGtSINKtSIREtSITEtSITStSITUtSKATtSKEWtSKIDtSKIMtSKINtSKITtSLABtSLAMtSLATtSLAYtSLEDtSLEWtSLIDtSLIMtSLITtSLOBtSLOGtSLOTtSLOWtSLUGtSLUMtSLURtSMOGtSMUGtSNAGtSNOBtSNOWtSNUBtSNUGtSOAKtSOARtSOCKtSODAtSOFAtSOFTtSOILtSOLDtSOMEtSONGtSOONtSOOTtSOREtSORTtSOULtSOURtSOWNtSTABtSTAGtSTANtSTARtSTAYtSTEMtSTEWtSTIRtSTOWtSTUBtSTUNtSUCHtSUDStSUITtSULKtSUMStSUNGtSUNKtSUREtSURFtSWABtSWAGtSWAMtSWANtSWATtSWAYtSWIMtSWUMtTACKtTACTtTAILtTAKEtTALEtTALKtTALLtTANKtTASKtTATEtTAUTtTEALtTEAMtTEARtTECHtTEEMtTEENtTEETtTELLtTENDtTENTtTERMtTERNtTESStTESTtTHANtTHATtTHEEtTHEMtTHENtTHEYtTHINtTHIStTHUDtTHUGtTICKtTIDEtTIDYtTIEDtTIERtTILEtTILLtTILTtTIMEtTINAtTINEtTINTtTINYtTIREtTOADtTOGOtTOILtTOLDtTOLLtTONEtTONGtTONYtTOOKtTOOLtTOOTtTOREtTORNtTOTEtTOURtTOUTtTOWNtTRAGtTRAMtTRAYtTREEtTREKtTRIGtTRIMtTRIOtTRODtTROTtTROYtTRUEtTUBAtTUBEtTUCKtTUFTtTUNAtTUNEtTUNGtTURFtTURNtTUSKtTWIGtTWINtTWITtULANtUNITtURGEtUSEDtUSERtUSEStUTAHtVAILtVAINtVALEtVARYtVASEtVASTtVEALtVEDAtVEILtVEINtVENDtVENTtVERBtVERYtVETOtVICEtVIEWtVINEtVISEtVOIDtVOLTtVOTEtWACKtWADEtWAGEtWAILtWAITtWAKEtWALEtWALKtWALLtWALTtWANDtWANEtWANGtWANTtWARDtWARMtWARNtWARTtWASHtWASTtWATStWATTtWAVEtWAVYtWAYStWEAKtWEALtWEANtWEARtWEEDtWEEKtWEIRtWELDtWELLtWELTtWENTtWEREtWERTtWESTtWHAMtWHATtWHEEtWHENtWHETtWHOAtWHOMtWICKtWIFEtWILDtWILLtWINDtWINEtWINGtWINKtWINOtWIREtWISEtWISHtWITHtWOLFtWONTtWOODtWOOLtWORDtWOREtWORKtWORMtWORNtWOVEtWRITtWYNNtYALEtYANGtYANKtYARDtYARNtYAWLtYAWNtYEAHtYEARtYELLtYOGAtYOKE((RtwarningsR.RtwarntDeprecationWarningRRRttwisted.python.hashlibRRR:RMRHt	ExceptionRRRDR6(((s6/usr/lib/python2.7/dist-packages/twisted/python/otp.pyt<module>s$			r2