Ë
    (üàgPw  ã                   ó¶  — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ d d	lmZmZmZmZmZ  G d
„ dej2                  «      Z edddd„ d„ d„ d„ d„ dœ«      xs g Z ee«      D ]¸  \  ZZ eee «      r) e jB                  de«      Z"e"sJ ‚e"jG                  d«      Z$Œ8 ejJ                  e$ejL                  ejN                  ¬«      Z( ejJ                  e$ejR                  ¬«      Z*ejV                  Z,e(e*e,fd„Z-e(e*e,fd„Z. e/edez  e-«       edk(  sŒ¬ e/edez  e.«       Œº  G d„ dej2                  «      Z0 G d„ d ej2                  «      Z1 G d!„ d"ej2                  «      Z2 G d#„ d$ej2                  «      Z3 G d%„ d&ej2                  «      Z4 G d'„ d(ej2                  «      Z5i fd)„Z6e7d*k(  rd+„ Z8 ejr                  d,¬-«       yy).é    N)ÚhexlifyÚ	unhexlify)Úbord)ÚSHA256)ÚECC)Úlist_test_cases)Úload_test_vectorsÚload_test_vectors_wycheproof)ÚDH)Úkey_agreementÚimport_x25519_public_keyÚimport_x25519_private_keyÚimport_x448_public_keyÚimport_x448_private_keyc                   ó   — e Zd Zy)ÚFIPS_ECDH_Tests_KATN)Ú__name__Ú
__module__Ú__qualname__© ó    ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Protocol/test_ecdh.pyr   r      s   „ Ør   r   )ÚProtocolzKAS_ECC_CDH_PrimitiveTest.txtz-ECC CDH Primitive (SP800-56A Section 5.7.1.2)c                 ó   — t        | d«      S ©Né   ©Úint©Úxs    r   ú<lambda>r!      ó   € ¼CÀÀ2»J€ r   c                 ó   — t        | d«      S r   r   r   s    r   r!   r!      r"   r   c                 ó   — t        | d«      S r   r   r   s    r   r!   r!      s   € ¼#¸aÀ»*€ r   c                 ó   — t        | d«      S r   r   r   s    r   r!   r!       ó   € ¼3¸qÀ"»:€ r   c                 ó   — t        | d«      S r   r   r   s    r   r!   r!   !   r&   r   )ÚqcavsxÚqcavsyÚdiutÚqiutxÚqiutyz\[([A-Za-z0-9-]+)\]é   )ÚcurveÚpoint_xÚpoint_y©r.   Údc                 óF   — t        ||d„ ¬«      }| j                  ||«       y )Nc                 ó   — | S ©Nr   r   s    r   r!   zecdh_test.<locals>.<lambda>=   ó   € ˜a€ r   ©Ú
static_pubÚstatic_privÚkdf©r   ÚassertEqual©ÚselfÚ
public_keyÚprivate_keyÚexp_responseÚzs        r   Ú	ecdh_testrC   6   ó)   € ô Ø%Ø'Ùô!ˆð 	×Ñ˜˜LÕ)r   c                 óF   — t        ||d„ ¬«      }| j                  ||«       y )Nc                 ó   — | S r5   r   r   s    r   r!   zecdh_test_rev.<locals>.<lambda>G   r6   r   r7   r;   r=   s        r   Úecdh_test_revrG   @   rD   r   ztest_verify_positive_%dztest_verify_positive_rev_%dc                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestVectorsECDHWycheproofzWycheproof ECDH testsc                 óh   — d„ }d„ }t        d|d|z  d|id|i¬«      }| xj                  |z  c_        y )Nc                 ó   — | d   S )Nr.   r   ©Úgs    r   r.   z2TestVectorsECDHWycheproof.add_tests.<locals>.curveU   s   € Ø�W‘:Ðr   c                 ó    — t        | d   d«      S )NÚprivater   r   ©Úus    r   rO   z4TestVectorsECDHWycheproof.add_tests.<locals>.privateX   s   € Ü�q˜‘| RÓ(Ð(r   ©r   Ú
wycheproofúWycheproof ECDH (%s)r.   rO   ©Ú	group_tagÚunit_tag©r
   Útv)r>   Úfilenamer.   rO   Úresults        r   Ú	add_testsz#TestVectorsECDHWycheproof.add_testsS   sI   € ò	ò	)ô .Ð.HØ.6Ø.DØ08ñ/9à9@À%Ð8HØ8AÀ7Ð7Kô0ˆð 	�Š�6ÑŽr   c                 ó0  — g | _         d | _        | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       y )	Nz ecdh_secp224r1_ecpoint_test.jsonz ecdh_secp256r1_ecpoint_test.jsonz ecdh_secp384r1_ecpoint_test.jsonz ecdh_secp521r1_ecpoint_test.jsonzecdh_secp224r1_test.jsonzecdh_secp256r1_test.jsonzecdh_secp384r1_test.jsonzecdh_secp521r1_test.json)rY   Údescr\   ©r>   s    r   ÚsetUpzTestVectorsECDHWycheproof.setUpd   sx   € ØˆŒØˆŒ	à�‰Ð9Ô:Ø�‰Ð9Ô:Ø�‰Ð9Ô:Ø�‰Ð9Ô:à�‰Ð1Ô2Ø�‰Ð1Ô2Ø�‰Ð1Ô2Ø�‰Ð1Õ2r   c                 ó   — | j                   S r5   ©r^   r_   s    r   ÚshortDescriptionz*TestVectorsECDHWycheproof.shortDescriptionr   ó   € Ø�y‰yÐr   c                 ó¶  — t        |j                  «      dk(  ry 	 t        |j                  d   «      dk(  r,t        j                  |j                  |j
                  ¬«      }nt        j                  |j                  «      }t        j                  |j
                  |j                  ¬«      }	 t        ||d„ ¬«      }| j                  ||j                  «       |j                  sJ ‚y # t        $ r |j                  s|j                  rJ ‚Y y w xY w# t        $ r |j                  rJ ‚Y y t        $ r'}|j                  rJ ‚dt        |«      v sJ ‚Y d }~y d }~ww xY w)Nr   é   )Ú
curve_namer1   c                 ó   — | S r5   r   r   s    r   r!   z7TestVectorsECDHWycheproof.test_verify.<locals>.<lambda>ˆ   ó   € ¨A€ r   r7   úincompatible curve)ÚlenÚpublicr   r   Ú
import_keyr.   Ú
ValueErrorÚwarningÚvalidÚ	constructrO   r   r<   ÚsharedÚ	TypeErrorÚstr)r>   rY   r?   r@   rB   Úes         r   Útest_verifyz%TestVectorsECDHWycheproof.test_verifyu   s  € äˆr�y‰y‹>˜QÒØð	Ü�B—I‘I˜a‘LÓ! QÒ&Ü Ÿ^™^¨B¯I©IÀ"Ç(Á(ÔK‘
ä Ÿ^™^¨B¯I©IÓ6�
ô
 —m‘m¨"¯(©(°b·j±jÔAˆð	Ü¨Ø*5Ù"-ô/ˆAð ×Ñ˜Q §	¡	Ô*Ø—8’8ˆO‘8øô# ò 	Ø—:’: R§X¢XÐ-Ð-Ùð	ûô ò 	 Ø—x’xÐ�<‘xÜò 	2Ø—x’xÐ�<Ø'¬3¨q«6Ñ1Ð1Õ1ûð	2ús0   ›A&C' Â-D Ã'#DÄDÄEÄ)EÄ1EÅEc                 óž   — | j                   D ]>  }d|j                  |j                  |j                  fz  | _        | j                  |«       Œ@ y )Nz(Wycheproof ECDH Verify Test #%d (%s, %s)©rY   ÚidÚcommentrZ   r^   rv   ©r>   rY   s     r   ÚrunTestz!TestVectorsECDHWycheproof.runTest’   sE   € Ø—'‘'ò 	!ˆBØBÀbÇeÁeÈRÏZÉZÐY[×YdÑYdÐEeÑeˆDŒIØ×Ñ˜RÕ ñ	!r   N)	r   r   r   r^   r\   r`   rc   rv   r|   r   r   r   rI   rI   O   s    „ à"€Dòò"3òòó:!r   rI   c                   ó   — e Zd Z ej                  d«      Z ej                  d«      j                  «       Z ej                  d«      Z ej                  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)Ú
ECDH_Testszð-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9VHFVKh2a1aVFifH
+BiyNaRa2kttEg3165Ye/dJxJ7KhRANCAARImIEXro5ZOcyWU2mq/+d79FEZXtTA
bKkz1aICQXihQdCMzRNbeNtC9LFLzhu1slRKJ2xsDAlw9r6w6vwtkRzr
-----END PRIVATE KEY-----zð-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgHhmv8zmZ+Nw8fsZd
s8tlZflyfw2NE1CRS9DWr3Y3O46hRANCAAS3hZVUCbk+uk3w4S/YOraEVGG+WYpk
NO/vrwzufUUks2GV2OnBQESe0EBk4Jq8gn4ij8Lvs3rZX2yT+XfeATYd
-----END PRIVATE KEY-----zð-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGPdJmFFFKzLPspIr
E1T2cEjeIf4ajS9CpneP0e2b3AyhRANCAAQBexAA5BYDcXHs2KOksTYUsst4HhPt
kp0zkgI2virc3OGJFNGPaCCPfFCQJHwLRaEpiq3SoQlgoBwSc8ZPsl3y
-----END PRIVATE KEY-----zð-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghaVZXElSEGEojFKF
OU0JCpxWUWHvWQUR81gwWrOp76ShRANCAATi1Ib2K+YR3AckD8wxypWef7pw5PRw
tBaB3RDPyE7IjHZC6yu1DbcXoCdtaw+F5DM+4zpl59n5ZaIy/Yl1BdIy
-----END PRIVATE KEY-----c                 ó„   — d„ }t        || j                  | j                  ¬«      }| j                  t	        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   ©r   ÚnewÚdigestr   s    r   r!   z#ECDH_Tests.test_1.<locals>.<lambda>£   ó   € œŸ
™
 1›×,Ñ,Ó.€ r   )r:   r8   r9   s@   3960a1101d1193cbaffef4cc7202ebff783c22c6d2e0d5d530ffc66dc197ea9c)r   r8   r9   r<   r   ©r>   r:   rB   s      r   Útest_1zECDH_Tests.test_1¡   s>   € á.ˆÜØØŸ?™?Ø ×,Ñ,ô.ˆð 	×Ñœ ›Ø\õ	^r   c                 ó°   — d„ }t        || j                  | j                  | j                  | j                  ¬«      }| j                  t        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_2.<locals>.<lambda>­   r„   r   )r:   r8   r9   Úeph_pubÚeph_privs@   7447b733d40c8fab2c633b3dc61e4a8c742f3a6af7e16fb0cc486f5bdb5d6ba2)r   r8   r9   r‰   rŠ   r<   r   r…   s      r   Útest_2zECDH_Tests.test_2«   sL   € á.ˆÜØØŸ?™?Ø ×,Ñ,ØŸ™ØŸ™ô(ˆð 	×Ñœ ›Ø\õ	^r   c                 óš   — d„ }t        || j                  | j                  | j                  ¬«      }| j	                  t        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_3.<locals>.<lambda>¹   r„   r   )r:   r8   r9   rŠ   s@   9e977ae45f33bf67f285d064d83e6632bcafe3a7d33fe571233bab4794ace759)r   r8   r9   rŠ   r<   r   r…   s      r   Útest_3zECDH_Tests.test_3·   sE   € á.ˆÜØØŸ?™?Ø ×,Ñ,ØŸ™ô	(ˆð
 	×Ñœ ›Ø\õ	^r   c                 óš   — d„ }t        || j                  | j                  | j                  ¬«      }| j	                  t        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_4.<locals>.<lambda>Ä   r„   r   )r:   r8   r9   r‰   s@   c9532df6aa7e9dbe5fe85da31ee25ff19c179c88691ec4b8328cc2036dcdadf2)r   r8   r9   r‰   r<   r   r…   s      r   Útest_4zECDH_Tests.test_4Â   sE   € á.ˆÜØØŸ?™?Ø ×,Ñ,ØŸ™ô	&ˆð
 	×Ñœ ›Ø\õ	^r   c                 ó„   — d„ }| j                  t        t        || j                  | j                  | j
                  ¬«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_5.<locals>.<lambda>Ï   r„   r   )r:   r9   r‰   rŠ   )ÚassertRaisesrn   r   r9   r‰   rŠ   ©r>   r:   s     r   Útest_5zECDH_Tests.test_5Í   s9   € á.ˆØ×Ñœ*ÜØØ ×,Ñ,ØŸ™ØŸ™ð 	õ 	(r   c                 ó„   — d„ }| j                  t        t        || j                  | j                  | j
                  ¬«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_6.<locals>.<lambda>Ù   r„   r   )r:   r8   r‰   rŠ   )r”   rn   r   r8   r‰   rŠ   r•   s     r   Útest_6zECDH_Tests.test_6×   s7   € á.ˆØ×Ñœ*ÜØØŸ?™?ØŸ™ØŸ™ð 	õ 	(r   c                 ó„   — d„ }t        || j                  | j                  ¬«      }| j                  t	        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_7.<locals>.<lambda>ã   r„   r   )r:   r‰   rŠ   s@   feb257ebe063078b1391aac07913283d7b642ad7df61b46dfc9cd6f420bb896a)r   r‰   rŠ   r<   r   r…   s      r   Útest_7zECDH_Tests.test_7á   s<   € á.ˆÜØØŸ™ØŸ™ô(ˆð 	×Ñœ ›Ø\õ	^r   c                 ó„   — d„ }t        || j                  | j                  ¬«      }| j                  t	        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_8.<locals>.<lambda>í   r„   r   )r:   r9   r‰   s@   ee4dc995117476ed57fd17ff0ed44e9f0466d46b929443bc0db9380317583b04)r   r9   r‰   r<   r   r…   s      r   Útest_8zECDH_Tests.test_8ë   s>   € á.ˆÜØØ ×,Ñ,ØŸ™ô&ˆð 	×Ñœ ›Ø\õ	^r   c                 ó„   — d„ }t        || j                  | j                  ¬«      }| j                  t	        |«      d«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z#ECDH_Tests.test_9.<locals>.<lambda>÷   r„   r   )r:   r8   rŠ   s@   2351cc2014f7c40468fa072b5d30f706eeaeef7507311cd8e59bab3b43f03c51)r   r8   rŠ   r<   r   r…   s      r   Útest_9zECDH_Tests.test_9õ   s<   € á.ˆÜØØŸ?™?ØŸ™ô(ˆð 	×Ñœ ›Ø\õ	^r   c                 ón   — d„ }| j                  t        t        || j                  | j                  ¬«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z$ECDH_Tests.test_10.<locals>.<lambda>  r„   r   )r:   r8   r‰   )r”   rn   r   r8   r‰   r•   s     r   Útest_10zECDH_Tests.test_10ÿ   s0   € á.ˆØ×Ñœ*ÜØØŸ?™?ØŸ™ð	 	õ 	&r   c                 ón   — d„ }| j                  t        t        || j                  | j                  ¬«       y )Nc                 óH   — t        j                  | «      j                  «       S r5   r�   r   s    r   r!   z$ECDH_Tests.test_11.<locals>.<lambda>
  r„   r   )r:   r9   rŠ   )r”   rn   r   r9   rŠ   r•   s     r   Útest_11zECDH_Tests.test_11  s2   € á.ˆØ×Ñœ*ÜØØ ×,Ñ,ØŸ™ð	 	õ 	(r   c                 óf   — | j                  t        t        | j                  | j                  ¬«       y )N)r8   r9   )r”   rn   r   r8   r9   r_   s    r   Útest_12zECDH_Tests.test_12  s*   € à×Ñœ*ÜØŸ?™?Ø ×,Ñ,ð 	õ 	.r   N)r   r   r   r   rm   r9   r?   r8   rŠ   r‰   r†   r‹   rŽ   r‘   r–   r™   rœ   rŸ   r¢   r¥   r¨   rª   r   r   r   r~   r~   ˜   s³   „ à �#—.‘.ð  "Xó  Y€KØ�—‘ð  !Wó  X÷  cñ  có  e€Jàˆs�~‰~ð  Uó  V€Hàˆc�n‰nð  Tó  U€Gò^ò
^ò	^ò	^ò(ò(ò^ò^ò^ò&ò(ó.r   r~   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚX25519_Testsc                 óê   — d}|D ]l  \  }}}t        j                  t        |«      «      }t        j                  t        |«      «      }t	        ||d„ ¬«      }| j                  |t        |«      «       Œn y )N))Ú@a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4Ú@e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4cÚ@c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552)Ú@4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0dÚ@e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493Ú@95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957c                 ó   — | S r5   r   r   s    r   r!   z-X25519_Tests.test_rfc7748_1.<locals>.<lambda>*  ó   € °€ r   r7   ©r   r   r   r   r   r<   ©r>   ÚtvsÚtv1Útv2Útv3Úpriv_keyÚpub_keyr[   s           r   Útest_rfc7748_1zX25519_Tests.test_rfc7748_1  sp   € ð
ˆð !ò 	5‰MˆC��cÜ×3Ñ3´I¸c³NÓCˆHÜ×1Ñ1´)¸C³.ÓAˆGÜ"¨gØ/7Ù'2ô4ˆFð ×Ñ˜V¤Y¨s£^Õ4ñ	5r   c                 óŽ  — t        d«      }t        j                  |«      }t        j                  |«      }t	        ||d„ ¬«      }| j                  |t        d«      «       t        d«      D ]=  }t        j                  |«      }t        j                  |«      }|}t	        ||d„ ¬«      }Œ? | j                  |t        d«      «       y )NÚ@0900000000000000000000000000000000000000000000000000000000000000c                 ó   — | S r5   r   r   s    r   r!   z-X25519_Tests.test_rfc7748_2.<locals>.<lambda>4  ó   € ¨Q€ r   r7   Ú@422c8e7a6227d7bca1350b3e2bb7279f7897b87bb6854b783c60e80311ae3079éç  c                 ó   — | S r5   r   r   s    r   r!   z-X25519_Tests.test_rfc7748_2.<locals>.<lambda>@  rµ   r   Ú@684cf59ba83309552800ef566f2f4d3c1c3887c49360e3875f2eb94d99532c51)r   r   r   r   r   r<   Úrange©r>   Úkr¼   r½   r[   Ú_s         r   Útest_rfc7748_2zX25519_Tests.test_rfc7748_2-  sÃ   € ÜÐXÓYˆä×/Ñ/°Ó2ˆÜ×-Ñ-¨aÓ0ˆÜ¨'Ø+3Ù#.ô0ˆð 	×ÑØÜÐXÓYô	
ô
 �s“ò 	4ˆAÜ×3Ñ3°FÓ;ˆHÜ×1Ñ1°!Ó4ˆGØˆAÜ"¨gØ/7Ù'2ô4‰Fð		4ð 	×ÑØÜÐXÓYõ	
r   c                 ó¢  — d}d}d}d}d}t        j                  t        |«      «      }t        j                  t        |«      «      }t        j                  t        |«      «      }t        j                  t        |«      «      }	t        |«      }
t	        ||d„ ¬«      }t	        |	|d„ ¬«      }| j                  ||
«       | j                  ||
«       y )	NÚ@77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2aÚ@8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6aÚ@5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0ebÚ@de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4fÚ@4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742c                 ó   — | S r5   r   r   s    r   r!   z-X25519_Tests.test_rfc7748_3.<locals>.<lambda>V  ó   € ¨a€ r   r7   c                 ó   — | S r5   r   r   s    r   r!   z-X25519_Tests.test_rfc7748_3.<locals>.<lambda>Y  rÓ   r   r¶   ©r>   r¹   rº   r»   Útv4Útv5Úalice_priv_keyÚalice_pub_keyÚbob_priv_keyÚbob_pub_keyÚsecretÚresult1Úresult2s                r   Útest_rfc7748_3zX25519_Tests.test_rfc7748_3G  s¼   € ØPˆØPˆØPˆØPˆØPˆä×5Ñ5´iÀ³nÓEˆÜ×3Ñ3´I¸c³NÓCˆÜ×3Ñ3´I¸c³NÓCˆÜ×1Ñ1´)¸C³.ÓAˆÜ˜3“ˆä¨=Ø,8Ù$/ô1ˆô  ¨;Ø,:Ù$/ô1ˆð 	×Ñ˜ &Ô)Ø×Ñ˜ &Õ)r   c                 ór   — d}|D ]0  }| j                  t        t        j                  t	        |«      «       Œ2 y )N)Ú@0000000000000000000000000000000000000000000000000000000000000000Ú@0100000000000000000000000000000000000000000000000000000000000000Ú@e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800Ú@5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157Ú@ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fÚ@edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fÚ@eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f)r”   rn   r   r   r   ©r>   Ú	weak_keysr    s      r   Ú	test_weakzX25519_Tests.test_weak]  s:   € ð
ˆ	ð& ò 	,ˆAØ×ÑœjÜ ×9Ñ9Ü'¨›lõ,ñ	,r   N©r   r   r   r¾   rË   rß   rê   r   r   r   r¬   r¬     s   „ ò5ò$
ò4*ó,,r   r¬   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
X448_Testsc                 óê   — d}|D ]l  \  }}}t        j                  t        |«      «      }t        j                  t        |«      «      }t	        ||d„ ¬«      }| j                  |t        |«      «       Œn y )N))Úp3d262fddf9ec8e88495266fea19a34d28882acef045104d0d1aae121700a779c984c24f8cdd78fbff44943eba368f54b29259a4f1c600ad3Úp06fce640fa3487bfda5f6cf2d5263f8aad88334cbd07437f020f08f9814dc031ddbdc38c19c6da2583fa5429db94ada18aa7a7fb4ef8a086Úpce3e4ff95a60dc6697da1db1d85e6afbdf79b50a2412d7546d5f239fe14fbaadeb445fc66a01b0779d98223961111e21766282f73dd96b6f)Úp203d494428b8399352665ddca42f9de8fef600908e0d461cb021f8c538345dd77c3e4806e25f46d3315c44e0a5b4371282dd2c8d5be3095fÚp0fbcc2f993cd56d3305b0b7d9e55d4c1a8fb5dbb52f8e9a1e9b6201b165d015894e56c4d3570bee52fe205e28a78b91cdfbde71ce8d157dbÚp884a02576239ff7a2f2f63b2db6a9ff37047ac13568e1e30fe63c4a7ad1b3ee3a5700df34321d62077e63633c575c1c954514e99da7c179dc                 ó   — | S r5   r   r   s    r   r!   z+X448_Tests.test_rfc7748_1.<locals>.<lambda>‰  rµ   r   r7   ©r   r   r   r   r   r<   r·   s           r   r¾   zX448_Tests.test_rfc7748_1z  sp   € ð
ˆð !ò 	5‰MˆC��cÜ×1Ñ1´)¸C³.ÓAˆHÜ×/Ñ/´	¸#³Ó?ˆGÜ"¨gØ/7Ù'2ô4ˆFð ×Ñ˜V¤Y¨s£^Õ4ñ	5r   c                 óŽ  — t        d«      }t        j                  |«      }t        j                  |«      }t	        ||d„ ¬«      }| j                  |t        d«      «       t        d«      D ]=  }t        j                  |«      }t        j                  |«      }|}t	        ||d„ ¬«      }Œ? | j                  |t        d«      «       y )NÚp0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c                 ó   — | S r5   r   r   s    r   r!   z+X448_Tests.test_rfc7748_2.<locals>.<lambda>“  rÂ   r   r7   Úp3f482c8a9f19b01e6c46ee9711d9dc14fd4bf67af30765c2ae2b846a4d23a8cd0db897086239492caf350b51f833868b9bc2b3bca9cf4113rÄ   c                 ó   — | S r5   r   r   s    r   r!   z+X448_Tests.test_rfc7748_2.<locals>.<lambda>Ÿ  rµ   r   Úpaa3b4749d55b9daf1e5b00288826c467274ce3ebbdd5c17b975e09d4af6c67cf10d087202db88286e2b79fceea3ec353ef54faa26e219f38)r   r   r   r   r   r<   rÇ   rÈ   s         r   rË   zX448_Tests.test_rfc7748_2Œ  sÕ   € Üð  Ió  Jˆä×-Ñ-¨aÓ0ˆÜ×+Ñ+¨AÓ.ˆÜ¨'Ø+3Ù#.ô0ˆð 	×ÑØÜð  Ió  Jô	
ô
 �s“ò 	4ˆAÜ×1Ñ1°&Ó9ˆHÜ×/Ñ/°Ó2ˆGØˆAÜ"¨gØ/7Ù'2ô4‰Fð		4ð 	×ÑØÜð  Ió  Jõ	
r   c                 ó¢  — d}d}d}d}d}t        j                  t        |«      «      }t        j                  t        |«      «      }t        j                  t        |«      «      }t        j                  t        |«      «      }	t        |«      }
t	        ||d„ ¬«      }t	        |	|d„ ¬«      }| j                  ||
«       | j                  ||
«       y )	NÚp9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28dd9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726bÚp9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0Úp1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992dÚp3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b43027d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609Úp07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282bb60c0b56fd2464c335543936521c24403085d59a449a5037514a879dc                 ó   — | S r5   r   r   s    r   r!   z+X448_Tests.test_rfc7748_3.<locals>.<lambda>µ  rÓ   r   r7   c                 ó   — | S r5   r   r   s    r   r!   z+X448_Tests.test_rfc7748_3.<locals>.<lambda>¸  rÓ   r   rö   rÕ   s                r   rß   zX448_Tests.test_rfc7748_3¦  sË   € ð Aˆð Aˆð Aˆð Aˆð Aˆä×3Ñ3´I¸c³NÓCˆÜ×1Ñ1´)¸C³.ÓAˆÜ×1Ñ1´)¸C³.ÓAˆÜ×/Ñ/´	¸#³Ó?ˆÜ˜3“ˆä¨=Ø,8Ù$/ô1ˆô  ¨;Ø,:Ù$/ô1ˆð 	×Ñ˜ &Ô)Ø×Ñ˜ &Õ)r   c                 ór   — d}|D ]0  }| j                  t        t        j                  t	        |«      «       Œ2 y )N)Úp0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Úp0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ÚpfefffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffÚpfffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffÚp00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff)r”   rn   r   r   r   rè   s      r   rê   zX448_Tests.test_weak¼  s:   € ð
ˆ	ð ò 	,ˆAØ×ÑœjÜ ×7Ñ7Ü'¨›lõ,ñ	,r   Nrë   r   r   r   rí   rí   x  s   „ ò5ò$
ò4*ó,,r   rí   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestVectorsX25519WycheproofzWycheproof X25519 testsc                 óh   — d„ }d„ }t        d|d|z  d|id|i¬«      }| xj                  |z  c_        y )Nc                 ó   — | d   S ©NÚtyper   rL   s    r   Úencodingz;TestVectorsX25519Wycheproof.add_tests_hex.<locals>.encodingÒ  ó   € Ø�V‘9Ðr   c                 ó   — t        | d   «      S ©NrO   ©r   rP   s    r   rO   z:TestVectorsX25519Wycheproof.add_tests_hex.<locals>.privateÕ  ó   € Ü˜Q˜y™\Ó*Ð*r   rR   rT   r  rO   rU   rX   ©r>   rZ   r  rO   r[   s        r   Úadd_tests_hexz)TestVectorsX25519Wycheproof.add_tests_hexÐ  óI   € ò	ò	+ô .Ð.HØ.6Ø.DØ08ñ/9à9CÀXÐ8NØ8AÀ7Ð7Kô0ˆð 	�Š�6ÑŽr   c           	      óp   — d„ }d„ }d„ }t        d|d|z  d|i||dœ¬«      }| xj                  |z  c_        y )	Nc                 ó   — | d   S r  r   rL   s    r   r  z=TestVectorsX25519Wycheproof.add_tests_ascii.<locals>.encodingã  r  r   c                 ó   — | d   S ©Nrl   r   rP   s    r   rl   z;TestVectorsX25519Wycheproof.add_tests_ascii.<locals>.publicæ  ó   € Ø�X‘;Ðr   c                 ó   — | d   S r  r   rP   s    r   rO   z<TestVectorsX25519Wycheproof.add_tests_ascii.<locals>.privateé  ó   € Ø�Y‘<Ðr   rR   rT   r  ©rl   rO   rU   rX   ©r>   rZ   r  rl   rO   r[   s         r   Úadd_tests_asciiz+TestVectorsX25519Wycheproof.add_tests_asciiá  óR   € ò	ò	ò	 ô .Ð.HØ.6Ø.DØ08ñ/9à9CÀXÐ8NØBHØCJñ8Lô0ˆð 	�Š�6ÑŽr   c                 ó¨   — g | _         d | _        | j                  d«       | j                  d«       | j                  d«       | j                  d«       y )Nzx25519_test.jsonzx25519_asn_test.jsonzx25519_pem_test.jsonzx25519_jwk_test.json©rY   r^   r  r#  r_   s    r   r`   z!TestVectorsX25519Wycheproof.setUpö  sL   € ØˆŒØˆŒ	à×ÑÐ-Ô.Ø×ÑÐ1Ô2Ø×ÑÐ3Ô4Ø×ÑÐ3Õ4r   c                 ó   — | j                   S r5   rb   r_   s    r   rc   z,TestVectorsX25519Wycheproof.shortDescriptionÿ  rd   r   c                 óŠ  — |j                   dk(  r-	 t        |j                  «      }t        |j                  «      }�nB|j                   dv r@	 t        j                  |j                  «      }t        j                  |j                  «      }nô|j                   dk(  rÏd|j                  v ry d|j                  vry d|j                  vry |j                  j                  d	«      d
k7  ry |j                  j                  d«      dk7  ry |j                  j                  d«      dk7  ry d„ } ||j                  d   «      } ||j                  d   «      }	 t        |«      }t        |«      }nt        d|j                   «      ‚	 t        d„ ¬«      }| j                  ||j                   «       |j                  sJ ‚y # t        $ rE}|j                  sJ ‚|j
                  sJ ‚d|j                  v sJ ‚dt        |«      v sJ ‚Y d }~y d }~ww xY w# t        j                  $ r'}|j                  rJ ‚dt        |«      v sJ ‚Y d }~y d }~wt        $ r/ |j                  sJ ‚|j
                  sJ ‚d|j                  v sJ ‚Y y w xY w# t        $ rW}|j                  r2|j
                  sJ ‚d|j                  v sJ ‚dt        |«      v sJ ‚Y d }~y dt        |«      v sJ ‚Y d }~y d }~wt        $ r |j                  sJ ‚Y �Œww xY w# t        $ r |j                  rJ ‚Y y t"        $ r'}|j                  rJ ‚dt        |«      v sJ ‚Y d }~y d }~ww xY w)NÚXdhCompÚLowOrderPubliczInvalid Curve25519©Ú
XdhAsnCompÚ
XdhPemCompúUnsupported ECCÚ
XdhJwkCompÚyr    ÚktyÚOKPÚcrvÚX25519c                 ó°   — | j                  dd«      j                  dd«      } dt        | «      dz  z
  }|dk7  r| d|z  z  } t        j                  | «      }|S ©Nú-ú+rÊ   ú/rf   ú=©Úreplacerk   Úbase64Ú	b64decode©Ú	input_strÚpaddingÚdecoded_bytess      r   Úbase64url_decodezATestVectorsX25519Wycheproof.test_verify.<locals>.base64url_decode*  ó_   € Ø%×-Ñ-¨c°3Ó7×?Ñ?ÀÀSÓI�	Øœs 9›~°Ñ1Ñ2�Ø˜a’<Ø  w¡Ñ.�IÜ &× 0Ñ 0°Ó ;�Ø$Ð$r   r2   úIncorrect lengthúUnknown encodingc                 ó   — | S r5   r   r   s    r   r!   z9TestVectorsX25519Wycheproof.test_verify.<locals>.<lambda>I  ri   r   r7   rj   )r  r   rl   rn   rp   ro   Úflagsrt   r   rO   r   rm   ÚUnsupportedEccFeatureÚgetr   r<   rr   rs   ©	r>   rY   r?   ru   r@   rC  Ú
jwk_publicÚjwk_privaterB   s	            r   rv   z'TestVectorsX25519Wycheproof.test_verify  sð  € à�;‰;˜)Ò#ðÜ5°b·i±iÓ@�
ô 4°B·J±JÓ?ŠKØ�[‰[Ð8Ñ8ðÜ Ÿ^™^¨B¯I©IÓ6�
Ü!Ÿn™n¨R¯Z©ZÓ8‘ð �[‰[˜LÒ(à�b—i‘iÑØØ˜"Ÿ)™)Ñ#ØØ˜"Ÿ*™*Ñ$ØØ�y‰y�}‰}˜UÓ# uÒ,ØØ�y‰y�}‰}˜UÓ# xÒ/ØØ�z‰z�~‰~˜eÓ$¨Ò0Øò%ñ *¨"¯)©)°C©.Ó9ˆJÙ*¨2¯:©:°c©?Ó;ˆKð Ü5°jÓA�
Ü7¸ÓD‘ô Ð/°·±Ó=Ð=ð	Ü¨Ø*5Ù"-ô/ˆAð ×Ñ˜Q §	¡	Ô*Ø—8’8ˆO‘8øôU ò Ø—x’x��xØ—z’zÐ!�zØ'¨2¯8©8Ñ3Ð3Ð3Ø+¬s°1«vÑ5Ð5Ð5Üûðûô ×,Ñ,ò ØŸ8š8Ð#�|Ø(¬C°«FÑ2Ð2Ð2ÜûÜò Ø—x’x��xØ—z’zÐ!�zØ'¨2¯8©8Ñ3Ð3Ð3Ùð	ûôD ò Ø—8’8ØŸ:š:Ð%˜:Ø+¨r¯x©xÑ7Ð7Ð7Ø/´3°q³6Ñ9Ð9Ð9Üà-´°Q³Ñ7Ð7Ð7ÜûÜò  Ø—x’x�“xð ûô ò 	 Ø—x’xÐ�<‘xÜò 	2Ø—x’xÐ�<Ø'¬3¨q«6Ñ1Ð1Õ1ûð	2úsw   ‘F: Á>H ÅI> Æ K: Æ:	HÇ;HÈHÈI;ÈI É 8I;É:I;É>	K7Ê9KËKËK7Ë6K7Ë:MÌMÌL=Ì=Mc                 óž   — | j                   D ]>  }d|j                  |j                  |j                  fz  | _        | j                  |«       Œ@ y ©Nz)Wycheproof XECDH Verify Test #%d (%s, %s)rx   r{   s     r   r|   z#TestVectorsX25519Wycheproof.runTestS  óE   € Ø—'‘'ò 	!ˆBØCÀrÇuÁuÈbÏjÉjÐZ\×ZeÑZeÐFfÑfˆDŒIØ×Ñ˜RÕ ñ	!r   N©
r   r   r   r^   r  r#  r`   rc   rv   r|   r   r   r   r  r  Ì  s'   „ à$€Dòò"ò*5òòOób!r   r  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestVectorsX448WycheproofzWycheproof X448 testsc                 óh   — d„ }d„ }t        d|d|z  d|id|i¬«      }| xj                  |z  c_        y )Nc                 ó   — | d   S r  r   rL   s    r   r  z9TestVectorsX448Wycheproof.add_tests_hex.<locals>.encoding_  r  r   c                 ó   — t        | d   «      S r  r  rP   s    r   rO   z8TestVectorsX448Wycheproof.add_tests_hex.<locals>.privateb  r  r   rR   rT   r  rO   rU   rX   r  s        r   r  z'TestVectorsX448Wycheproof.add_tests_hex]  r  r   c           	      óp   — d„ }d„ }d„ }t        d|d|z  d|i||dœ¬«      }| xj                  |z  c_        y )	Nc                 ó   — | d   S r  r   rL   s    r   r  z;TestVectorsX448Wycheproof.add_tests_ascii.<locals>.encodingp  r  r   c                 ó   — | d   S r  r   rP   s    r   rl   z9TestVectorsX448Wycheproof.add_tests_ascii.<locals>.publics  r  r   c                 ó   — | d   S r  r   rP   s    r   rO   z:TestVectorsX448Wycheproof.add_tests_ascii.<locals>.privatev  r   r   rR   rT   r  r!  rU   rX   r"  s         r   r#  z)TestVectorsX448Wycheproof.add_tests_asciin  r$  r   c                 ó¨   — g | _         d | _        | j                  d«       | j                  d«       | j                  d«       | j                  d«       y )Nzx448_test.jsonzx448_asn_test.jsonzx448_pem_test.jsonzx448_jwk_test.jsonr&  r_   s    r   r`   zTestVectorsX448Wycheproof.setUpƒ  sL   € ØˆŒØˆŒ	à×ÑÐ+Ô,Ø×ÑÐ/Ô0Ø×ÑÐ1Ô2Ø×ÑÐ1Õ2r   c                 ó   — | j                   S r5   rb   r_   s    r   rc   z*TestVectorsX448Wycheproof.shortDescriptionŒ  rd   r   c                 ór  — |j                   dk(  r-	 t        |j                  «      }t        |j                  «      }�nB|j                   dv r@	 t        j                  |j                  «      }t        j                  |j                  «      }nô|j                   d	k(  rÏd
|j                  v ry d|j                  vry d|j                  vry |j                  j                  d«      dk7  ry |j                  j                  d«      dk7  ry |j                  j                  d«      dk7  ry d„ } ||j                  d   «      } ||j                  d   «      }	 t        |«      }t        |«      }nt        d|j                   «      ‚	 t        d„ ¬«      }| j!                  ||j"                  «       |j                  sJ ‚y # t        $ rl}|j                  sJ ‚|j
                  sJ ‚t        |j                  «      dk(  rd|j                  v sJ ‚dt        |«      v sJ ‚dt        |«      v sJ ‚Y d }~y d }~ww xY w# t        j                  $ r'}|j                  rJ ‚dt        |«      v sJ ‚Y d }~y d }~wt        $ rD}|j                  sJ ‚|j
                  sJ ‚d|j                  v sd|j                  v sJ ‚Y d }~y d }~ww xY w# t        $ r�}|j                  rj|j
                  sJ ‚t        |j                  d   «      dk(  r-d|j                  v sd|j                  v sJ ‚dt        |«      v sJ ‚dt        |«      v sJ ‚Y d }~y dt        |«      v sJ ‚Y d }~y d }~wt        $ r |j                  sJ ‚Y �Œëw xY w# t        $ r |j                  rJ ‚Y y t$        $ r'}|j                  rJ ‚dt        |«      v sJ ‚Y d }~y d }~ww xY w)Nr)  é8   r*  zInvalid Curve448zIncorrect Curve448r+  r.  ÚNonCanonicalPublicr/  r0  r    r1  r2  r3  ÚX448c                 ó°   — | j                  dd«      j                  dd«      } dt        | «      dz  z
  }|dk7  r| d|z  z  } t        j                  | «      }|S r6  r;  r?  s      r   rC  z?TestVectorsX448Wycheproof.test_verify.<locals>.base64url_decodeº  rD  r   r2   éK   rE  rF  c                 ó   — | S r5   r   r   s    r   r!   z7TestVectorsX448Wycheproof.test_verify.<locals>.<lambda>Ý  ri   r   r7   rj   )r  r   rl   rn   rp   ro   rk   rH  rt   r   rO   r   rm   rI  rJ  r   r<   rr   rs   rK  s	            r   rv   z%TestVectorsX448Wycheproof.test_verify�  sX  € à�;‰;˜)Ò#ð
Ü3°B·I±IÓ>�
ô 2°"·*±*Ó=ŠKØ�[‰[Ð8Ñ8ðÜ Ÿ^™^¨B¯I©IÓ6�
Ü!Ÿn™n¨R¯Z©ZÓ8‘ð �[‰[˜LÒ(à�b—i‘iÑØØ˜"Ÿ)™)Ñ#ØØ˜"Ÿ*™*Ñ$ØØ�y‰y�}‰}˜UÓ# uÒ,ØØ�y‰y�}‰}˜UÓ# vÒ-ØØ�z‰z�~‰~˜eÓ$¨Ò.Øò%ñ *¨"¯)©)°C©.Ó9ˆJÙ*¨2¯:©:°c©?Ó;ˆKð Ü3°JÓ?�
Ü5°kÓB‘ô" Ð/°·±Ó=Ð=ð	Ü¨Ø*5Ù"-ô/ˆAð ×Ñ˜Q §	¡	Ô*Ø—8’8ˆO‘8øôc ò Ø—x’x��xØ—z’zÐ!�zÜ�r—y‘y“> RÒ'Ø+¨r¯x©xÑ7Ð7Ð7Ø-´°Q³Ñ7Ð7Ð7à/´3°q³6Ñ9Ð9Ð9Üûðûô ×,Ñ,ò ØŸ8š8Ð#�|Ø(¬C°«FÑ2Ð2Ð2ÜûÜò Ø—x’x��xØ—z’zÐ!�zØ'¨2¯8©8Ñ3Ð7KÈrÏxÉxÑ7WÐWÐWÜûð	ûôD ò Ø—8’8ØŸ:š:Ð%˜:Ü˜2Ÿ9™9 S™>Ó*¨bÒ0Ø/°2·8±8Ñ;Ø3°r·x±xÑ?ð@ð  @à1´S¸³VÑ;Ð;Ð;à3´s¸1³vÑ=Ð=Ð=Üà-´°Q³Ñ7Ð7Ð7ÜûÜò  Ø—x’x�“xð ûô ò 	 Ø—x’xÐ�<‘xÜò 	2Ø—x’xÐ�<Ø'¬3¨q«6Ñ1Ð1Õ1ûð	2ús   ‘F: Á>H2 ÅJ: Æ M. Æ:	H/ÇA"H*È*H/È2J7ÉI'É'J7É3:J2Ê2J7Ê:	M+ËA1MÌ9MÍM+Í*M+Í.N6ÎN6ÎN1Î1N6c                 óž   — | j                   D ]>  }d|j                  |j                  |j                  fz  | _        | j                  |«       Œ@ y rO  rx   r{   s     r   r|   z!TestVectorsX448Wycheproof.runTestç  rP  r   NrQ  r   r   r   rS  rS  Y  s'   „ à"€Dòò"ò*3òòVóp!r   rS  c                 ó  — g }|t        t        «      z  }|t        «       gz  }|t        t        «      z  }|t        t        «      z  }|t        t
        «      z  }|t        «       gz  }|t        «       gz  }| j                  d«      }|r	 |S )NÚ
slow_tests)	r   r   rI   r~   r¬   rí   r  rS  rJ  )ÚconfigÚtestsrf  s      r   Ú	get_testsri  í  s�   € à€EØ	Œ_Ô0Ó1Ñ1€EØ	Ô'Ó)Ð*Ñ*€EØ	Œ_œZÓ(Ñ(€EØ	Œ_œ\Ó*Ñ*€EØ	Œ_œZÓ(Ñ(€EØ	Ô)Ó+Ð,Ñ,€EØ	Ô'Ó)Ð*Ñ*€Eà—‘˜LÓ)€JÙØà€Lr   Ú__main__c                  ó<   — t        j                  t        «       «      S r5   )ÚunittestÚ	TestSuiteri  r   r   r   Úsuitern     s   € Ü×!Ñ!¤)£+Ó.Ð.r   rn  )ÚdefaultTest):Úrer=  rl  Úbinasciir   r   ÚCrypto.Util.py3compatr   ÚCrypto.Hashr   ÚCrypto.PublicKeyr   ÚCrypto.SelfTest.st_commonr   ÚCrypto.SelfTest.loaderr	   r
   ÚCrypto.Protocolr   ÚCrypto.Protocol.DHr   r   r   r   r   ÚTestCaser   Útest_vectors_verifyÚ	enumerateÚidxrY   Ú
isinstancert   ÚmatchÚresÚgrouprg   rq   r(   r)   r?   r*   r@   ÚziutrA   rC   rG   ÚsetattrrI   r~   r¬   rí   r  rS  ri  r   rn  Úmainr   r   r   ú<module>r„     s  ðÛ 	Û Û ß 'å &å Ý  Ý 5ß Rå ÷9õ 9ô	˜(×+Ñ+ô 	ñ (¨Ø(GØ(Wá2FÙ2FÙ0DÙ1EÙ1Eñ)*ó	+ò 	1ð /1ð ñ Ð,Ó-ò (Y�G€Cˆñ �"�cÔØˆb�h‰hÐ-¨rÓ2ˆÙˆ
ˆsØ—Y‘Y˜q“\ˆ
Øà�—‘ ZØ')§y¡yØ')§y¡yô2€Jð  �#—-‘- jØ"$§'¡'ô+€Kð —7‘7€Lð (Ø)Ø+ó*ð ",Ø"-Ø#/ó*ñ ÐÐ!:¸SÑ!@À)ÔLØ
ˆaƒxÙÐ#Ð%BÀSÑ%HÈ-ÕXðQ(YôVF! × 1Ñ 1ô F!ôR~.�×"Ñ"ô ~.ôB\,�8×$Ñ$ô \,ô~Q,�×"Ñ"ô Q,ôhJ! (×"3Ñ"3ô J!ôZQ! × 1Ñ 1ô Q!ðh ó ð$ ˆzÒò/à€H‡M�M˜gÖ&ð r   