U v`@sddZddlmZddlZddlmZGdddejZGdd d ejZd d Z d d Z ddZ dS)zAOL Instant Messenger.)absolute_importN)dpktc@seZdZdZdZddZdS)FLAPzFrame Layer Protocol. See more about the FLAP on https://en.wikipedia.org/wiki/OSCAR_protocol#FLAP_header Attributes: __hdr__: Header fields of FLAP. data: Message data. ))astB*)typerr)seqHr)lenr rcCsPtj|||jdkr"tdt|j|jkrLtdt|j|jfdS)Nrinvalid FLAP header%d left, %d needed)rPacketunpackr UnpackErrorr dataNeedData)selfbufr`/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/aim.pyr s   z FLAP.unpackN)__name__ __module__ __qualname____doc____hdr__rrrrrrs rc@seZdZdZdZdS)SNACzSimple Network Atomic Communication. See more about the SNAC on https://en.wikipedia.org/wiki/OSCAR_protocol#SNAC_data Attributes: __hdr__: Header fields of SNAC. ))familyr r)subtyper r)flagsr r)reqidIrN)rrrrrrrrrr(s rcCsd}ztd|d|\}}Wn tjk r@tdYnX||||}t||krttdt||f|||d}||||fS)Nz>HHinvalid type, length fieldsr)structrerrorrrr r)rntl_vrrrtlv:s r+cCs d}t|}|jdkst|jdks(t|jdks6t|jdksDt|jdksRtt|j}|jdksjt|j dksxt|j d kst|j d kst|jd kst|jd d}d }|rt |\}}}}|d 7}|d kr|d kst|dkst|dkst|dkstq|dkstdS)Ns* EUdusrnameremoved DXT6E!}}A7 $rr+*+ris EUdusrnameremoved DXT6E!}}A7 $rr+*+ rldUtswusrnameremoved DXT6E!}}A7 $rr+*+rss^DXT6E!}}A7 $rr+*+ ) rrAssertionErrorr r r rrrrr r!r+)testdataZflapZsnacZtlvdataZtlvCountr(r)r*rrrtestAIMKs>      r4c Cs(d}z t|Wn4tjk rD}zt|dks4tW5d}~XYnXd}z t|Wn4tjk r}zt|dksztW5d}~XYnXztd\}}}}Wn4tjk r}zt|dkstW5d}~XYnXztd\}}}}Wn8tjk r"}zt|dkstW5d}~XYnXdS)Nsxxxxxxr s*4z0 left, 255 neededxr$s)rrrstrr2rr+)r3er(r)r*_rrrtestExceptionss$ " ""r9) r __future__rr%rrrrr+r4r9rrrrs  ?