Ë
    (üàg€~  ã                   óæ   — d Z ddlZddlZddlmZ ddl­ ddlmZ  G d„ dej                  «      Z	 G d„ d	e	«      Z
 G d
„ dej                  «      Zi fd„Zedk(  rd„ Z ej                  d¬«       yy)zSelf-test for Math.Numbersé    N)Úlist_test_cases)Ú*)ÚIntegerNativec                   óJ  — 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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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+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4d3„ Z5d4„ Z6d5„ Z7y6)7ÚTestIntegerBasec                 ó   — t        d«      ‚)NzTo be implemented)ÚNotImplementedError©Úselfs    ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/Crypto/SelfTest/Math/test_Numbers.pyÚsetUpzTestIntegerBase.setUp0   s   € Ü!Ð"5Ó6Ð6ó    c                 ó.   — t        | j                  |«      S ©N)ÚmapÚInteger)r   Úargs     r   ÚIntegerszTestIntegerBase.Integers3   s   € Ü�4—<‘< Ó%Ð%r   c                 óž  — | j                   } |d«      } ||«      } |d«      }| j                  t        |d«        |d«      } |d«      } |d«      } |d«      } |d«      }	| j                  ||«       | j                  |d«       | j                  ||«       | j                  |d«       | j                  |d«       | j                  |d«       | j                  |d«       | j                  |d«       | j                  |	d«       | j	                  ||k(  «        ||«      }| j                  ||«       | j	                   |d	«      d k(  «       y )
Né   é÷ÿÿÿg      ð?l    d(	 lýÿÿÿ d(	 éÿÿ  l   ÿÿ l   ÿÿÿÿ r   )r   ÚassertRaisesÚ
ValueErrorÚassertEqualÚassertFalse)
r   r   Úv1Úv2Úv3Úv4Úv5Úv6Úv7Úv8s
             r   Útest_init_and_equalityz&TestIntegerBase.test_init_and_equality6   s>  € Ø—,‘,ˆá�R‹[ˆÙ�R‹[ˆÙ�R‹[ˆØ×Ñœ* g¨sÔ3á�V‹_ˆÙ�WÓˆá�V‹_ˆÙ�ZÓ ˆÙÐ'Ó(ˆà×Ñ˜˜RÔ Ø×Ñ˜˜RÔ Ø×Ñ˜˜RÔ Ø×Ñ˜˜RÔ Ø×Ñ˜˜XÔ&Ø×Ñ˜˜YÔ'Ø×Ñ˜˜VÔ$Ø×Ñ˜˜ZÔ(Ø×Ñ˜Ð/Ô0à×Ñ˜˜r™Ô"ñ �R‹[ˆØ×Ñ˜˜RÔ à×Ñ™ › tÑ+Õ,r   c                 ó¦   — | j                  dddz  «      \  }}| j                  t        |«      d«       | j                  t        |«      ddz  «       y )Niéÿÿÿé   éè  )r   r   Úint©r   r   r   s      r   Útest_conversion_to_intz&TestIntegerBase.test_conversion_to_intW   sF   € Ø—‘˜s A¨¡IÓ.‰ˆˆBØ×Ñœ˜R› #Ô&Ø×Ñœ˜R› ! t¡)Õ,r   c                 óÞ   — | j                  ddddz  «      \  }}}| j                  |dk(  «       | j                  |dk(  «       | j                  |dk(  «       | j                  |ddz  k(  «       y )Nr   i§ÿÿÿr'   r(   é   ©r   Ú
assertTruer   ©r   r   r   r   s       r   Útest_equality_with_intsz'TestIntegerBase.test_equality_with_ints\   sd   € Ø—]‘] 2 s¨A°©IÓ6‰
ˆˆB�Ø�‰˜˜b™Ô!Ø�‰˜˜c™	Ô"Ø×Ñ˜˜r™Ô"Ø�‰˜˜a 4™i™Õ(r   c                 ó$  — | j                  dddddz  «      \  }}}}| j                  t        |«      dk(  «       | j                  t        |«      dk(  «       | j                  t        |«      dk(  «       | j                  t        |«      d	k(  «       y )
Né   r   iìÿÿÿr'   r(   Ú20Ú0z-20Á.  10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376)r   r/   Ústr©r   r   r   r   r    s        r   Útest_conversion_to_strz&TestIntegerBase.test_conversion_to_strc   s~   € ØŸ™ r¨1¨c°1¸±9Ó=‰ˆˆB��BØ�‰œ˜B› 4™Ô(Ø�‰œ˜B› 3™Ô'Ø�‰œ˜B› 5Ñ(Ô)Ø�‰œ˜B›ð  $Tñ  Tõ  	Ur   c                 ó    — | j                  dddz  «      \  }}| j                  t        |«      d«       | j                  t        |«      d«       y )Néÿÿÿÿr'   éP   zInteger(-1)z"Integer(1208925819614629174706176))r   r   Úreprr*   s      r   Ú	test_reprzTestIntegerBase.test_reprj   sC   € Ø—‘˜r 1 b¡5Ó)‰ˆˆBØ×Ñœ˜b› =Ô1Ø×Ñœ˜b›Ð#GÕHr   c                 ó  — | j                   } |d«      }| j                  d|j                  «       «        |d«      }| j                  d|j                  «       «        |d«      }| j                  d|j                  «       «       | j                  d|j                  d«      «       | j                  t        |j                  d	«       | j                  d
|j                  d¬«      «       | j                  d|j                  dd¬«      «        |d«      }| j                  d|j                  «       «       | j                  d|j                  d¬«      «       | j                  d|j                  d«      «       | j                  d|j                  dd¬«      «       | j                  t        |j                  d«        |d«      }| j                  t        |j                  «       | j                  t        |j                  d¬«       y )Nr   ó    r   ó   iþÿ  s   ÿþs    ÿþé   é   s   þÿÚlittle©Ú	byteorders   þÿ l   "Ü;3oUðs	   ÿ ª»ÌÝî"s	   "îÝÌ»ª ÿs
    ÿ ª»ÌÝî"é
   s
   "îÝÌ»ª ÿ é   é¦ÿÿÿÚbittle)r   r   Úto_bytesr   r   )r   r   Úv0r   r   r   r    s          r   Útest_conversion_to_bytesz(TestIntegerBase.test_conversion_to_byteso   s˜  € Ø—,‘,ˆá�Q‹ZˆØ×Ñ˜ "§+¡+£-Ô0á�T‹]ˆØ×Ñ˜ "§+¡+£-Ô0á�V‹_ˆØ×Ñ˜ b§k¡k£mÔ4Ø×Ñ˜¨"¯+©+°a«.Ô9Ø×Ñœ* b§k¡k°1Ô5à×Ñ˜ b§k¡k¸H kÓ&EÔFØ×Ñ˜¨"¯+©+°aÀ8¨+Ó*LÔMáÐ)Ó*ˆØ×ÑÐ@À"Ç+Á+Ã-ÔPØ×ÑÐ@ØŸ™¨x˜Ó8ô	:à×ÑÐDØŸ™ R›ô	*à×ÑÐDØŸ™ R°8˜Ó<ô	>à×Ñœ* b§k¡k°1Ô5á�S‹\ˆØ×Ñœ* b§k¡kÔ2Ø×Ñœ* b§k¡k¸XÐÕFr   c                 óD  — | j                   }|j                  d«      }| j                  t        ||«      «       | j	                  d|«       |j                  d«      }| j	                  d|«       |j                  d«      }| j	                  d|«       |j                  dd«      }| j	                  d|«       |j                  dd¬«      }| j	                  d|«       |j                  dd	¬«      }| j	                  d
|«       | j                  t        |j                  dd«       y )Nr@   r   s    rC   s   ÿÿr   ÚbigrE   rD   é   ó   	rJ   )r   Ú
from_bytesr/   Ú
isinstancer   r   r   )r   r   r   r   r   r    r!   r"   s           r   Útest_conversion_from_bytesz*TestIntegerBase.test_conversion_from_bytesŽ   s  € Ø—,‘,ˆà×Ñ Ó(ˆØ�‰œ
 2 wÓ/Ô0Ø×Ñ˜˜BÔà×Ñ Ó,ˆØ×Ñ˜˜BÔà×Ñ Ó,ˆØ×Ñ˜ Ô$à×Ñ ¨UÓ3ˆØ×Ñ˜˜BÔà×Ñ °uÐÓ=ˆØ×Ñ˜˜BÔà×Ñ °xÐÓ@ˆØ×Ñ˜ Ô$à×Ñœ* g×&8Ñ&8¸'À8ÕLr   c                 ól  — | j                  dddd«      \  }}}}| j                  ||k7  «       | j                  |dk7  «       | j                  ||k7  «       | j                  |dk7  «       | j                  ||k7  «       | j                  ||k7  «       | j                  | j                  d«      d k7  «       y )NéY   éZ   éøÿÿÿr   )r   r/   r   r   r8   s        r   Útest_inequalityzTestIntegerBase.test_inequality¦   s›   € àŸ™ r¨2¨r°2Ó6‰ˆˆB��BØ�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø×Ñ˜˜r™Ô"Ø×Ñ˜˜r™Ô"Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜Ÿ™ Q›¨4Ñ/Õ0r   c                 óz  — | j                  ddddd«      \  }}}}}| j                  ||k  «       | j                  |dk  «       | j                  ||k  «       | j                  |dk  «       | j                  ||k  «       | j                  ||k  «       | j                  ||k  «       | j                  ||k  «       y ©Né   é   rX   é   r.   ©r   r   r   r   r    r!   s         r   Útest_less_thanzTestIntegerBase.test_less_than±   s«   € à!Ÿ]™]¨2¨r°2°r¸7ÓCÑˆˆB��B˜Ø�‰˜˜R™Ô Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Ô!Ø×Ñ˜˜b™Ô!Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Ô!Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Õ!r   c                 óz  — | j                  ddddd«      \  }}}}}| j                  ||k  «       | j                  |dk  «       | j                  ||k  «       | j                  |dk  «       | j                  ||k  «       | j                  ||k  «       | j                  ||k  «       | j                  ||k  «       y )Nr\   r]   éüÿÿÿr^   r.   r_   s         r   Útest_less_than_or_equalz'TestIntegerBase.test_less_than_or_equal½   s§   € à!Ÿ]™]¨2¨r°2°r¸7ÓCÑˆˆB��B˜Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø×Ñ˜˜r™Ô"Ø�‰˜˜b™Ô!Ø×Ñ˜˜r™Õ"r   c                 ó¢  — | j                  ddddd«      \  }}}}}| j                  ||kD  «       | j                  |dkD  «       | j                  ||kD  «       | j                  ||kD  «       | j                  |dkD  «       | j                  ||kD  «       | j                  ||kD  «       | j                  ||kD  «       | j                  ||kD  «       y r[   r.   r_   s         r   Útest_more_thanzTestIntegerBase.test_more_thanÉ   s½   € à!Ÿ]™]¨2¨r°2°r¸7ÓCÑˆˆB��B˜Ø�‰˜˜R™Ô Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Ô!Ø×Ñ˜˜b™Ô!Ø×Ñ˜˜b™Ô!Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Ô!Ø�‰˜˜R™Ô Ø×Ñ˜˜b™Õ!r   c                 ó&  — | j                  dddd«      \  }}}}| j                  ||k\  «       | j                  |dk\  «       | j                  ||k\  «       | j                  ||k\  «       | j                  |dk\  «       | j                  ||k\  «       y )Nr\   r]   rb   r.   r8   s        r   Útest_more_than_or_equalz'TestIntegerBase.test_more_than_or_equalÖ   s€   € àŸ™ r¨2¨r°2Ó6‰ˆˆB��BØ�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø�‰˜˜b™Ô!Ø×Ñ˜˜r™Õ"r   c                 ó&  — | j                  dddd«      \  }}}}| j                  |«       | j                  t        |«      «       | j                  |«       | j                  t        |«      «       | j                  |«       | j                  |«       y )Nr   rG   r   r^   )r   r   Úboolr/   r8   s        r   Ú	test_boolzTestIntegerBase.test_boolà   sr   € ØŸ™ q¨"¨b°'Ó:‰ˆˆB��BØ×Ñ˜ÔØ×Ñœ˜b›Ô"Ø�‰˜ÔØ�‰œ˜R›Ô!Ø�‰˜ÔØ�‰˜Õr   c                 ó@  — | j                  ddz   dddddz  «      \  }}}}}| j                  |j                  «       «       | j                  |j                  «       «       | j                  |j                  «       «       | j                  |j                  «       «       y )NrB   éd   éýÿÿÿr   )r   r/   Úis_negativer   r_   s         r   Útest_is_negativez TestIntegerBase.test_is_negativeé   s}   € Ø!Ÿ]™]¨A°©H¨9°b¸!¸QÀÀ3ÁÓGÑˆˆB��B˜Ø�‰˜Ÿ™Ó(Ô)Ø�‰˜Ÿ™Ó(Ô)Ø×Ñ˜Ÿ™Ó)Ô*Ø×Ñ˜Ÿ™Ó)Õ*r   c                 óT  — | j                  ddd«      \  }}}| j                  t        ||z   | j                  «      «       | j	                  ||z   d«       | j	                  |dz   d«       | j	                  ||z   d«       | j	                  |dz   d«       | j	                  |dz   d«       y )Né   rW   éùÿÿÿéa   r   r^   i  ©r   r/   rS   r   r   r0   s       r   Útest_additionzTestIntegerBase.test_additionð   s™   € à—]‘] 1 b¨"Ó-‰
ˆˆB�Ø�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜b™ !Ô$Ø×Ñ˜˜r™ AÔ&Ø×Ñ˜˜g™ {Õ3r   c                 óT  — | j                  ddd«      \  }}}| j                  t        ||z
  | j                  «      «       | j	                  ||z
  d«       | j	                  |dz
  d«       | j	                  ||z
  d«       | j	                  |dz
  d«       | j	                  |dz
  d«       y )	Nrq   rW   rr   éS   rs   r]   r^   iüÿÿrt   r0   s       r   Útest_subtractionz TestIntegerBase.test_subtractionú   s™   € à—]‘] 1 b¨"Ó-‰
ˆˆB�Ø�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜a™ Ô$Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜r™ BÔ'Ø×Ñ˜˜g™ {Õ3r   c                 ó.  — | j                  dddd«      \  }}}}| j                  t        ||z  | j                  «      «       | j	                  ||z  d«       | j	                  |dz  d«       | j	                  |dz  d«       | j	                  |dz  d«       y )Né   é   éþÿÿÿr^   r3   rX   i   rt   r8   s        r   Útest_multiplicationz#TestIntegerBase.test_multiplication  s‰   € àŸ™ q¨!¨R°Ó9‰ˆˆB��BØ�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜a™ Ô$Ø×Ñ˜˜b™ "Ô%Ø×Ñ˜˜g™ }Õ5r   c                 ój  ‡— | j                  ddddz  «      \  Š}}| j                  t        ‰|z  | j                  «      «       | j	                  |‰z  d«       | j	                  |dz  d«       | j	                  |dz  d«       | j	                  |ddz  z  d«       | j                  t        ˆfd„«       y )NrB   rH   r'   r<   rm   éO   c                  ó   •— ‰ dz  S ©Nr   © ©r   s   €r   ú<lambda>z0TestIntegerBase.test_floor_div.<locals>.<lambda>  s   ø€ °R¸1±W€ r   )r   r/   rS   r   r   r   ÚZeroDivisionError©r   r   r   r   s      @r   Útest_floor_divzTestIntegerBase.test_floor_div  sŸ   ø€ Ø—]‘] 1 a¨¨b©Ó1‰
ˆˆB�Ø�‰œ
 2¨¡8¨T¯\©\Ó:Ô;Ø×Ñ˜˜r™ 1Ô%Ø×Ñ˜˜q™ !Ô$Ø×Ñ˜˜r™ 2Ô&Ø×Ñ˜˜q B™w™¨Ô*Ø×ÑÔ+«_Õ=r   c                 ó�  ‡— | j                  ddd«      \  Š}}| j                  t        ‰|z  | j                  «      «       | j	                  ‰|z  d«       | j	                  ‰dz  d«       | j	                  |dz  d«       | j	                  ‰dz  d«       | j                  t        ˆfd„«       | j                  t        ˆfd„«       y )	Nr   r{   rb   rB   rC   r^   c                  ó   •— ‰ dz  S r�   r‚   rƒ   s   €r   r„   z0TestIntegerBase.test_remainder.<locals>.<lambda>  s   ø€ °R¸!±V€ r   c                  ó   •— ‰ dz  S )Néúÿÿÿr‚   rƒ   s   €r   r„   z0TestIntegerBase.test_remainder.<locals>.<lambda>  s   ø€ ¨b°2©g€ r   )r   r/   rS   r   r   r   r…   r   r†   s      @r   Útest_remainderzTestIntegerBase.test_remainder  s§   ø€ à—]‘] 2 q¨"Ó-‰
ˆˆB�Ø�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ !Ô$Ø×Ñ˜˜a™ Ô#Ø×Ñ˜˜a™ Ô#Ø×Ñ˜˜g™ rÔ*Ø×ÑÔ+«^Ô<Ø×Ñœ*£oÕ6r   c                 óÒ  — | j                  ddd«      \  }}}| j                  t        ||z  | j                  «      «       | j	                  ||z  d«       | j	                  t        ||«      d«       | j	                  |dz  d«       | j	                  t        |d«      d«       | j	                  |dz  d«       | j	                  |dz  d«       | j                  t        t
        |d«       y )Nrz   rB   r|   é@   r'   rX   rm   )r   r/   rS   r   r   Úpowr   r   r0   s       r   Útest_simple_exponentiationz*TestIntegerBase.test_simple_exponentiation!  sÅ   € Ø—]‘] 1 a¨Ó,‰
ˆˆB�Ø�‰œ
 2¨¡8¨T¯\©\Ó:Ô;Ø×Ñ˜˜r™ 2Ô&Ø×Ñœ˜R › bÔ)Ø×Ñ˜˜q™ "Ô%Ø×Ñœ˜R › RÔ(Ø×Ñ˜˜q™ !Ô$Ø×Ñ˜˜q™ "Ô%à×Ñœ*¤c¨2¨rÕ2r   c           	      óâ  — | j                  ddd«      \  }}}| j                  t        t        |||«      | j                  «      «       | j                  t        |||«      d«       | j                  t        |d|«      d«       | j                  t        ||d«      d«       | j                  t        |dd«      d«       | j                  t        |dd«      d«       | j                  t        |dddz  «      d«       | j                  t        |ddz  d	«      d
«       | j                  t        t        |dd«       | j                  t        t        |dd«       | j                  t        t        |dd«       y )Nr   r{   é   rq   r   rC   r'   r<   iÒ\ iE  rb   rm   rH   )	r   r/   rS   r�   r   r   r   r…   r   r0   s       r   Útest_modular_exponentiationz+TestIntegerBase.test_modular_exponentiation-  s.  € Ø—]‘] 2 q¨"Ó-‰
ˆˆB�à�‰œ
¤3 r¨2¨r£?°D·L±LÓAÔBØ×Ñœ˜R  R›¨!Ô,Ø×Ñœ˜R  R›¨!Ô,Ø×Ñœ˜R  R›¨!Ô,Ø×Ñœ˜R  R›¨!Ô,Ø×Ñœ˜R  R›¨!Ô,Ø×Ñœ˜R  Q¨"¡WÓ-¨rÔ2Ø×Ñœ˜R  b¡¨5Ó1°5Ô9à×ÑÔ+¬S°"°a¸Ô;Ø×Ñœ*¤c¨2¨q°"Ô5Ø×Ñœ*¤c¨2¨r°1Õ5r   c                 óÖ   — | j                  d«      }|j                  d«       | j                  |d«       | j                  d«      }|j                  dd«       | j                  |d«       y )Nrz   r'   é   é   rC   )r   Úinplace_powr   ©r   r   s     r   Útest_inplace_exponentiationz+TestIntegerBase.test_inplace_exponentiation=  sV   € Ø�\‰\˜!‹_ˆØ
�‰�qÔØ×Ñ˜˜RÔ à�\‰\˜!‹_ˆØ
�‰�q˜"ÔØ×Ñ˜˜QÕr   c                 ób  — | j                  ddz   dddddz  «      \  }}}}}| j                  t        |«      ddz  «       | j                  t        |«      d«       | j                  t        |«      d«       | j                  t        |«      d«       | j                  t        |«      ddz  «       y )Nr'   rl   r|   r   )r   r   Úabsr_   s         r   Útest_abszTestIntegerBase.test_absF  s™   € Ø!Ÿ]™]¨A°©H¨9°b¸!¸QÀÀSÁÓIÑˆˆB��B˜Ø×Ñœ˜R› ! s¡(Ô+Ø×Ñœ˜R› !Ô$Ø×Ñœ˜R› !Ô$Ø×Ñœ˜R› !Ô$Ø×Ñœ˜R› ! s¡(Õ+r   c                 óB  — | j                  dddddz  «      \  }}}}| j                  t        |j                  «       | j	                  |j                  «       d«       | j	                  |j                  «       d«       | j	                  |j                  «       ddz  «       y )Nr|   r   é1   rG   rl   rq   é2   )r   r   r   Úsqrtr   r8   s        r   Ú	test_sqrtzTestIntegerBase.test_sqrtN  s|   € ØŸ™ r¨1¨b°"°c±'Ó:‰ˆˆB��Bà×Ñœ* b§g¡gÔ.Ø×Ñ˜Ÿ™› AÔ&Ø×Ñ˜Ÿ™› AÔ&Ø×Ñ˜Ÿ™› B¨¡FÕ+r   c                 ó<  — | j                  t        | j                  d«      j                  d«       | j                  t        | j                  d«      j                  d«       | j                  d«      j                  d«      dk(  sJ ‚| j                  d«      j                  d«      dv sJ ‚dD ]F  }t	        d|«      D ]5  }|dz  |z  }| j                  |«      j                  |«      }||||z
  fv rŒ5J ‚ ŒH | j                  t        | j                  d«      j                  d«       | j                  t        | j                  d	«      j                  d
«       | j                  d«      j                  d«      dv sJ ‚| j                  d«      j                  d«      dv sJ ‚y )Nr{   r   r;   rC   )rC   rz   )é   r\   r’   é   r   é   é   é%   é)   é+   é/   é5   r'   r£   rz   rG   r‹   )rz   rq   r•   )r   r   r   r    Úrange)r   ÚpÚiÚsquareÚress        r   Útest_sqrt_modulez TestIntegerBase.test_sqrt_moduleV  su  € ð 	×Ñœ* d§l¡l°1£o×&:Ñ&:¸AÔ>Ø×Ñœ* d§l¡l°1£o×&:Ñ&:¸BÔ?ð �|‰|˜A‹×#Ñ# AÓ&¨!Ò+Ð+Ð+Ø�|‰|˜A‹×#Ñ# AÓ&¨&Ñ0Ð0Ð0ð Bò 	)ˆAÜ˜1˜a“[ò )�Ø˜A™ ™�Ø—l‘l 6Ó*×/Ñ/°Ó2�Ø˜q ! a¡%˜jÒ(Ð(Ð(ñ)ð	)ð 	×Ñœ* d§l¡l°1£o×&:Ñ&:¸BÔ?ð 	×Ñœ* d§l¡l°1£o×&:Ñ&:¸BÔ?ð �|‰|˜FÓ#×(Ñ(¨Ó,°Ñ6Ð6Ð6Ø�|‰|˜FÓ#×(Ñ(¨Ó,°Ñ6Ð6Ñ6r   c                 óø   — | j                  dd«      \  }}||z  }| j                  |d«       |dz  }| j                  |d«       |dz  }| j                  |d«       |ddz  z  }| j                  |dddz  z   «       y )	NrG   r3   é   é(   r;   é'   r'   r(   ©r   r   r*   s      r   Útest_in_place_addz!TestIntegerBase.test_in_place_addq  s†   € Ø—‘˜r 2Ó&‰ˆˆBà
ˆb‰ˆØ×Ñ˜˜RÔ Ø
ˆb‰ˆØ×Ñ˜˜RÔ Ø
ˆb‰ˆØ×Ñ˜˜RÔ Ø
ˆa�4‰i‰ˆØ×Ñ˜˜R ! t¡)™^Õ,r   c                 óæ   — | j                  dd«      \  }}||z  }| j                  |d«       |dz  }| j                  |d«       |dz  }| j                  |d«       |dz  }| j                  |d	«       y )
NrG   r3   iöÿÿÿiœÿÿÿrW   i�_ iÊ þÿi`yþÿij'  r¶   r*   s      r   Útest_in_place_subz!TestIntegerBase.test_in_place_sub}  sz   € Ø—‘˜r 2Ó&‰ˆˆBà
ˆb‰ˆØ×Ñ˜˜SÔ!Ø
ˆd‰
ˆØ×Ñ˜˜RÔ Ø
ˆe‰ˆØ×Ñ˜˜VÔ$Ø
ˆg‰ˆØ×Ñ˜˜UÕ#r   c                 óø   — | j                  dd«      \  }}||z  }| j                  |d«       |dz  }| j                  |d«       |dz  }| j                  |d«       |ddz  z  }| j                  |dddz  z  «       y )	NrB   r{   r–   r'   r³   r|   iÄÿÿÿr(   r¶   r*   s      r   Útest_in_place_mulz!TestIntegerBase.test_in_place_mul‰  s‡   € Ø—‘˜q !Ó$‰ˆˆBà
ˆb‰ˆØ×Ñ˜˜RÔ Ø
ˆa‰ˆØ×Ñ˜˜RÔ Ø
ˆb‰ˆØ×Ñ˜˜SÔ!Ø
ˆa�4‰i‰ˆØ×Ñ˜˜S A¨¡IÑ.Õ/r   c                 óö   ‡ — ‰ j                  dd«      \  }}||z  }‰ j                  |d«       |ddz  z  }‰ j                  |d«       |dz  }‰ j                  |d«       ˆ fd„}‰ j                  t        |«       y )Nr3   rq   é   r'   r(   r   c                  ó2   •— ‰j                  d«      } | dz  } y )Né	   r   ©r   )r   r   s    €r   Útz0TestIntegerBase.test_in_place_modulus.<locals>.tž  s   ø€ Ø—‘˜a“ˆBØ�!‰G‰Br   )r   r   r   r…   )r   r   r   rÁ   s   `   r   Útest_in_place_modulusz%TestIntegerBase.test_in_place_modulus•  s~   ø€ Ø—‘˜r 1Ó%‰ˆˆBà
ˆb‰ˆØ×Ñ˜˜QÔØ
ˆa�4‰i‰ˆØ×Ñ˜˜QÔØ
ˆa‰ˆØ×Ñ˜˜QÔô	ð 	×ÑÔ+¨QÕ/r   c                 óŠ  — | j                  ddd«      \  }}}| j                  t        ||z  | j                  «      «       | j	                  ||z  d«       | j	                  |dz  d«       | j	                  ||z  d«       | j	                  |dz  d«       | j	                  |dz  d«       | j	                  |ddz  dz   z  d«       y )Néô   rž   éñÿÿÿé0   éð   r'   r(   rt   r0   s       r   Útest_andzTestIntegerBase.test_and£  s·   € Ø—]‘] 4¨¨tÓ4‰
ˆˆB�Ø�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ $Ô'Ø×Ñ˜˜d™ DÔ)Ø×Ñ˜˜b™ $Ô'Ø×Ñ˜˜d™ DÔ)Ø×Ñ˜˜d™ DÔ)Ø×Ñ˜˜q D™y¨4Ñ/Ñ0°$Õ7r   c                 ó<  — | j                  ddd«      \  }}}| j                  t        ||z  | j                  «      «       | j	                  ||z  d«       | j	                  |dz  d«       | j	                  ||z  d«       | j	                  |ddz  z  ddz  dz   «       y )NrŽ   é‚   rÅ   éÂ   ióÿÿÿr'   r(   rt   r0   s       r   Útest_orzTestIntegerBase.test_or­  s’   € Ø—]‘] 4¨¨tÓ4‰
ˆˆB�Ø�‰œ
 2¨¡7¨D¯L©LÓ9Ô:Ø×Ñ˜˜b™ $Ô'Ø×Ñ˜˜d™ DÔ)Ø×Ñ˜˜b™ $Ô'Ø×Ñ˜˜a 4™i™¨¨d©°TÑ)9Õ:r   c                 ó¾  ‡— | j                  ddd«      \  Š}}| j                  ‰dz	  ‰«       | j                  t        ‰|z	  | j                  «      «       | j                  ‰|z	  d«       | j                  ‰dz	  d«       | j                  t        ˆfd„«       | j                  ‰ddz  z	  d«       | j                  |dz	  d	«       | j                  |ddz  z	  d
«       y )Nr•   rC   éðÿÿÿr   rH   c                  ó   •— ‰ dz	  S ©Nr;   r‚   rƒ   s   €r   r„   z2TestIntegerBase.test_right_shift.<locals>.<lambda>»  ó   ø€ ¨b°B©h€ r   r'   r(   rX   r;   ©r   r   r/   rS   r   r   r   r†   s      @r   Útest_right_shiftz TestIntegerBase.test_right_shiftµ  sÉ   ø€ Ø—]‘] 4¨¨EÓ2‰
ˆˆB�Ø×Ñ˜˜q™ "Ô%Ø�‰œ
 2¨¡8¨T¯\©\Ó:Ô;Ø×Ñ˜˜r™ 4Ô(Ø×Ñ˜˜q™ $Ô'Ø×Ñœ*Ó&6Ô7Ø×Ñ˜  T¡	Ñ*¨AÔ.à×Ñ˜˜q™ %Ô(Ø×Ñ˜  T¡	Ñ*¨BÕ/r   c                 ó’  ‡ — ‰ j                  ddd«      \  }}}|dz  }‰ j                  |d«       |dz  }‰ j                  |d«       ||z  }‰ j                  |d«       |dz  }‰ j                  |d«       ˆ fd„}‰ j                  t        |«       ˆ fd	„}‰ j                  d |«       «       ˆ fd
„}‰ j                  d |«       «       y )Nr•   rC   rÎ   r   rH   rz   rX   c                  ó2   •— ‰j                  d«      } | dz  } y ©Né�   r;   rÀ   ©r    r   s    €r   Úlz4TestIntegerBase.test_in_place_right_shift.<locals>.lË  ó   ø€ Ø—‘˜dÓ#ˆBØ�2‰I‰Br   c                  ó:   •— ‰j                  d«      } | ddz  z  } | S ©Nr×   r'   r(   rÀ   rØ   s    €r   Úm1z5TestIntegerBase.test_in_place_right_shift.<locals>.m1Ï  s$   ø€ Ø—‘˜dÓ#ˆBØ�1˜‘9ÑˆBØˆIr   c                  ó:   •— ‰j                  d«      } | ddz  z  } | S )Nr;   r'   r(   rÀ   rØ   s    €r   Úm2z5TestIntegerBase.test_in_place_right_shift.<locals>.m2Ô  s$   ø€ Ø—‘˜bÓ!ˆBØ�1˜‘9ÑˆBØˆIr   r;   ©r   r   r   r   )r   r   r   r   rÙ   rÝ   rß   s   `      r   Útest_in_place_right_shiftz)TestIntegerBase.test_in_place_right_shiftÁ  sÈ   ø€ Ø—]‘] 4¨¨EÓ2‰
ˆˆB�Ø
ˆq‰ˆØ×Ñ˜˜TÔ"Ø
ˆq‰ˆØ×Ñ˜˜TÔ"Ø
ˆr‰	ˆØ×Ñ˜˜TÔ"Ø
ˆq‰ˆØ×Ñ˜˜UÔ#ô	ð 	×Ñœ* aÔ(ô	ð 	×Ñ˜™B›DÔ!ô	ð 	×Ñ˜™R›TÕ"r   c                 ó�  ‡— | j                  ddd«      \  Š}}| j                  ‰dz  ‰«       | j                  t        ‰|z  | j                  «      «       | j                  ‰|z  d«       | j                  ‰dz  d«       | j                  |dz  d«       | j                  t        ˆfd„«       | j                  t        ˆfd„«       y )	Nr•   rC   rÎ   r   é    éàÿÿÿc                  ó   •— ‰ dz  S rÐ   r‚   rƒ   s   €r   r„   z2TestIntegerBase._test_left_shift.<locals>.<lambda>á  rÑ   r   c                  ó   •— ‰ ddz  z  S )Nr'   r(   r‚   rƒ   s   €r   r„   z2TestIntegerBase._test_left_shift.<locals>.<lambda>â  s   ø€ ¨b°Q¸$±YÑ.?€ r   rÒ   r†   s      @r   Ú_test_left_shiftz TestIntegerBase._test_left_shiftÚ  s¨   ø€ Ø—]‘] 4¨¨EÓ2‰
ˆˆB�Ø×Ñ˜˜q™ "Ô%Ø�‰œ
 2¨¡8¨T¯\©\Ó:Ô;Ø×Ñ˜˜r™ 4Ô(Ø×Ñ˜˜q™ $Ô'Ø×Ñ˜˜q™ %Ô(Ø×Ñœ*Ó&6Ô7Ø×Ñœ*Ó&?Õ@r   c                 óX  ‡ — ‰ j                  ddd«      \  }}}|dz  }‰ j                  |d«       |dz  }‰ j                  |d«       ||z  }‰ j                  |d«       |dz  }‰ j                  |d«       ˆ fd„}‰ j                  t        |«       ˆ fd	„}‰ j                  t        |«       y )
Nr•   rC   rÎ   r   rã   rŽ   rä   c                  ó2   •— ‰j                  d«      } | dz  } y rÖ   rÀ   rØ   s    €r   rÙ   z3TestIntegerBase.test_in_place_left_shift.<locals>.lî  rÚ   r   c                  ó8   •— ‰j                  d«      } | ddz  z  } y rÜ   rÀ   rØ   s    €r   Úmz3TestIntegerBase.test_in_place_left_shift.<locals>.mò  s   ø€ Ø—‘˜dÓ#ˆBØ�1˜‘9Ñ‰Br   rà   )r   r   r   r   rÙ   rë   s   `     r   Útest_in_place_left_shiftz(TestIntegerBase.test_in_place_left_shiftä  s­   ø€ Ø—]‘] 4¨¨EÓ2‰
ˆˆB�Ø
ˆq‰ˆØ×Ñ˜˜TÔ"Ø
ˆq‰ˆØ×Ñ˜˜TÔ"Ø
ˆr‰	ˆØ×Ñ˜˜TÔ"Ø
ˆq‰ˆØ×Ñ˜˜UÔ#ô	ð 	×Ñœ* aÔ(ô	ð 	×Ñœ* aÕ(r   c                 ó  — | j                  ddd«      \  }}}| j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  t        |j                  d«       | j                  |j                  dd	z  «      d«       | j                  t        |j                  d«       | j                  t        |j                  d«       | j                  t        |j                  d«       | j                  t        |j                  d
«       y )Ni  rm   rC   r   rH   r¿   r;   r'   r(   iÐ  )r   r   Úget_bitr   r   r0   s       r   Útest_get_bitzTestIntegerBase.test_get_bitø  s  € Ø—]‘] 5¨"¨aÓ0‰
ˆˆB�Ø×Ñ˜Ÿ™ A›¨Ô*Ø×Ñ˜Ÿ™ A›¨Ô*Ø×Ñ˜Ÿ™ B›¨Ô+Ø×Ñ˜Ÿ™ A›¨Ô*Ø×Ñ˜Ÿ™ A›¨Ô*à×Ñœ* b§j¡j°"Ô5Ø×Ñ˜Ÿ™ A¨¡IÓ.°Ô2à×Ñœ* b§j¡j°"Ô5Ø×Ñœ* b§j¡j°!Ô4Ø×Ñœ* b§j¡j°!Ô4Ø×Ñœ* b§j¡j°(Õ;r   c                 ó¦  — | j                  ddddd«      \  }}}}}| j                  |j                  «       «       | j                  |j                  «       «       | j                  |j                  «       «       | j                  |j                  «       «       | j                  |j                  «       «       | j                  |j	                  «       «       | j                  |j	                  «       «       | j                  |j	                  «       «       | j                  |j	                  «       «       | j                  |j	                  «       «       y )Nr   rz   r’   rb   iïÿÿÿ)r   r/   Úis_evenr   Úis_oddr_   s         r   Útest_odd_evenzTestIntegerBase.test_odd_even  sá   € Ø!Ÿ]™]¨1¨a°°R¸Ó=ÑˆˆB��B˜à�‰˜Ÿ
™
›Ô%Ø�‰˜Ÿ
™
›Ô%Ø×Ñ˜Ÿ™›Ô&Ø�‰˜Ÿ
™
›Ô%Ø×Ñ˜Ÿ™›Ô&à×Ñ˜Ÿ™›Ô%Ø×Ñ˜Ÿ™›Ô%Ø�‰˜Ÿ	™	›Ô$Ø×Ñ˜Ÿ™›Ô%Ø�‰˜Ÿ	™	›Õ$r   c                 ó6  — | j                  dddd«      \  }}}}| j                  |j                  «       d«       | j                  |j                  «       d«       | j                  |j                  «       d«       | j                  t        |j                  «       y )Nr   rC   rP   rI   r¿   )r   r   Úsize_in_bitsr   r   r8   s        r   Útest_size_in_bitsz!TestIntegerBase.test_size_in_bits  sw   € ØŸ™ q¨!¨U°CÓ8‰ˆˆB��BØ×Ñ˜Ÿ™Ó*¨AÔ.Ø×Ñ˜Ÿ™Ó*¨AÔ.Ø×Ñ˜Ÿ™Ó*¨AÔ.Ø×Ñœ* b§o¡oÕ6r   c                 ó¾  — | j                  dddddd«      \  }}}}}}| j                  |j                  «       d«       | j                  |j                  «       d«       | j                  |j                  «       d«       | j                  |j                  «       d«       | j                  |j                  «       d«       | j                  t        |j
                  «       y )	Nr   rC   éÿ   iÿ  i   r   r'   rB   )r   r   Úsize_in_bytesr   r   rõ   ©r   r   r   r   r    r!   r"   s          r   Útest_size_in_bytesz"TestIntegerBase.test_size_in_bytes  s¸   € Ø!%§¡¨q°!°T¸5À'È2Ó!NÑˆˆB��B˜˜BØ×Ñ˜×)Ñ)Ó+¨QÔ/Ø×Ñ˜×)Ñ)Ó+¨QÔ/Ø×Ñ˜×)Ñ)Ó+¨QÔ/Ø×Ñ˜×)Ñ)Ó+¨QÔ/Ø×Ñ˜×)Ñ)Ó+¨QÔ/Ø×Ñœ* b§o¡oÕ6r   c                 óÐ  — | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       | j                  | j                  d«      j                  «       «       t	        d	d
«      D ]g  }| j                  | j                  |dz  dz   «      j                  «       «       | j                  | j                  |dz  «      j                  «       «       Œi y )Nr   r   rC   r'   rB   rz   iñ  iò  rl   r(   )r   r   Úis_perfect_squarer/   r¬   )r   Úxs     r   Útest_perfect_squarez#TestIntegerBase.test_perfect_square'  sW  € à×Ñ˜Ÿ™ bÓ)×;Ñ;Ó=Ô>Ø�‰˜Ÿ™ Q›×9Ñ9Ó;Ô<Ø�‰˜Ÿ™ Q›×9Ñ9Ó;Ô<Ø×Ñ˜Ÿ™ a›×:Ñ:Ó<Ô=Ø×Ñ˜Ÿ™ a›×:Ñ:Ó<Ô=Ø�‰˜Ÿ™ Q›×9Ñ9Ó;Ô<Ø�‰˜Ÿ™ UÓ+×=Ñ=Ó?Ô@Ø×Ñ˜Ÿ™ gÓ.×@Ñ@ÓBÔCä�s˜DÓ!ò 	DˆAØ×Ñ˜TŸ\™\¨!¨Q©$¨q©&Ó1×CÑCÓEÔFØ�O‰O˜DŸL™L¨¨A©Ó.×@Ñ@ÓBÕCñ	Dr   c                 ó"  — | j                  ddd«      \  }}}|j                  d«       |j                  d«       |j                  ddz  «       | j                  t        |j                  d«       | j                  t        |j                  |«       y )Né   iôÿÿÿrz   rq   r'   r<   )r   Úfail_if_divisible_byr   r   r0   s       r   Útest_fail_if_divisible_byz)TestIntegerBase.test_fail_if_divisible_by6  s|   € Ø—]‘] 2 s¨AÓ.‰
ˆˆB�ð 	×Ñ Ô"Ø
×Ñ Ô"Ø
×Ñ  R¡Ô(ð 	×Ñœ* b×&=Ñ&=¸qÔAØ×Ñœ* b×&=Ñ&=¸rÕBr   c                 óN  — | j                  ddd«      \  }}}|j                  ||«       | j                  |d«       |j                  |d«       | j                  |d«       |j                  d|«       | j                  |d«       |j                  dd«       | j                  |d	«       |j                  dd«       | j                  |d
«       |j                  dddz  «       | j                  |d
ddz  z   «       |j                  ddz  d«       | j                  |d
ddz  z   «       y )Nrz   rB   r'   rG   r•   é   rC   r|   r3   é   r(   éé  )r   Úmultiply_accumulater   r0   s       r   Útest_multiply_accumulatez(TestIntegerBase.test_multiply_accumulateB  s  € Ø—]‘] 1 a¨Ó+‰
ˆˆB�Ø
×Ñ˜r 2Ô&Ø×Ñ˜˜RÔ Ø
×Ñ˜r 1Ô%Ø×Ñ˜˜RÔ Ø
×Ñ˜q "Ô%Ø×Ñ˜˜RÔ Ø
×Ñ˜q "Ô%Ø×Ñ˜˜RÔ Ø
×Ñ˜r 1Ô%Ø×Ñ˜˜RÔ Ø
×Ñ˜q ! t¡)Ô,Ø×Ñ˜˜R ! t¡)™^Ô,Ø
×Ñ˜q D™y¨!Ô,Ø×Ñ˜˜R ! t¡)™^Õ,r   c                 óR  — | j                  dd«      \  }}|j                  |«       | j                  |d«       |j                  d«       | j                  |d«       |j                  d«       | j                  |d«       |j                  ddz  «       | j                  |ddz  «       y )NrB   r½   r¿   r|   r'   r(   )r   Úsetr   r*   s      r   Útest_setzTestIntegerBase.test_setS  s‹   € Ø—‘˜q !Ó$‰ˆˆBØ
�‰ˆrŒ
Ø×Ñ˜˜QÔØ
�‰ˆqŒ	Ø×Ñ˜˜QÔØ
�‰ˆrŒ
Ø×Ñ˜˜RÔ Ø
�‰ˆq�D‰yÔØ×Ñ˜˜Q $™YÕ'r   c                 óø  — | j                  dddddd«      \  }}}}}}| j                  t        |j                  |«      | j                  «      «       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d	«       | j                  |j                  d
«      d«       | j                  t        |j                  d«       | j                  t        |j                  d«       | j                  t        |j                  d«       | j                  t        |j                  d«       y )Nr'   r{   rm   r   i  ii  rB   i�ÿ‰iKS~i¸&  ié  rG   )	r   r/   rS   Úinverser   r   r   r   r…   rú   s          r   Útest_inversezTestIntegerBase.test_inverse^  s  € Ø!%§¡¨q°!°R¸¸FÀDÓ!IÑˆˆB��B˜˜Bà�‰œ
 2§:¡:¨b£>°4·<±<Ó@ÔAØ×Ñ˜Ÿ™ B›¨Ô+Ø×Ñ˜Ÿ™ A›¨Ô*Ø×Ñ˜Ÿ™ A›¨Ô*Ø×Ñ˜Ÿ™ HÓ-¨xÔ8Ø×Ñ˜Ÿ™ DÓ)¨4Ô0à×Ñœ* b§j¡j°"Ô5Ø×Ñœ* b§j¡j°"Ô5Ø×Ñœ* b§j¡j°"Ô5Ø×ÑÔ+¨R¯Z©Z¸Õ;r   c                 ót   — | j                  dd«      \  }}|j                  |«       | j                  |d«       y )Nr'   r{   rB   )r   Úinplace_inverser   r*   s      r   Útest_inplace_inversez$TestIntegerBase.test_inplace_inversem  s4   € Ø—‘˜q !Ó$‰ˆˆBà
×Ñ˜2ÔØ×Ñ˜˜QÕr   c                 óè  — | j                  dddd«      \  }}}}| j                  t        |j                  |«      | j                  «      «       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       y )Nr½   rG   r’   r|   r'   rC   )r   r/   rS   Úgcdr   r   r8   s        r   Útest_gcdzTestIntegerBase.test_gcds  sµ   € ØŸ™ q¨"¨b°"Ó5‰ˆˆB��BØ�‰œ
 2§6¡6¨"£:¨t¯|©|Ó<Ô=Ø×Ñ˜Ÿ™ › QÔ'Ø×Ñ˜Ÿ™ › QÔ'Ø×Ñ˜Ÿ™ › QÔ'Ø×Ñ˜Ÿ™ › QÔ'Ø×Ñ˜Ÿ™ › AÕ&r   c                 óp  — | j                  ddddd«      \  }}}}}| j                  t        |j                  |«      | j                  «      «       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  |«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       | j                  |j                  d«      d«       y )Nr½   rG   r’   r|   r   r³   éf   )r   r/   rS   Úlcmr   r   r_   s         r   Útest_lcmzTestIntegerBase.test_lcm|  sê   € Ø!Ÿ]™]¨1¨b°"°b¸!Ó<ÑˆˆB��B˜Ø�‰œ
 2§6¡6¨"£:¨t¯|©|Ó<Ô=Ø×Ñ˜Ÿ™ › RÔ(Ø×Ñ˜Ÿ™ › RÔ(Ø×Ñ˜Ÿ™ › SÔ)Ø×Ñ˜Ÿ™ › QÔ'Ø×Ñ˜Ÿ™ › AÔ&Ø×Ñ˜Ÿ™ › AÔ&Ø×Ñ˜Ÿ™ › AÕ&r   c           
      ót  — d}| j                   j                  }t        dd«      D ]  }| j                   ||d«      d«       Œ t        ddd«      D ]  }| j                   |d|«      d«       Œ | j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd«       | j	                  t
        |dd	«       | j	                  t
        |dd«       | j	                  t
        |dd
«       |D ]†  }| j                   ||d   |d   «      |d   «       | j                   || j                  |d   «      |d   «      |d   «       | j                   ||d   | j                  |d   «      «      |d   «       Œˆ y )N))r  rC   rC   )r¤   é-   rC   )rH   é   r;   )r{   r  rC   )ib  iÛ  r;   )r  i³&  r;   )r{   l   -& r;   rC   r³   r'   r½   r|   r;   r   rz   rH   )r   Újacobi_symbolr¬   r   r   r   )r   ÚdataÚjsÚkÚnÚtvs         r   Útest_jacobi_symbolz"TestIntegerBase.test_jacobi_symbol‡  s¢  € ðˆð �\‰\×'Ñ'ˆô �q˜"“ò 	*ˆAØ×Ñ™R  1›X qÕ)ð	*ä�q˜"˜a“ò 	*ˆAØ×Ñ™R  1›X qÕ)ð	*ð 	×Ñœ* b¨!¨RÔ0Ø×Ñœ* b¨!¨RÔ0Ø×Ñœ* b¨!¨QÔ/Ø×Ñœ* b¨!¨QÔ/Ø×Ñœ* b¨!¨QÔ/Ø×Ñœ* b¨!¨QÔ/Ø×Ñœ* b¨!¨QÔ/Ø×Ñœ* b¨!¨QÔ/àò 	DˆBØ×Ñ™R  1¡ r¨!¡uÓ-¨r°!©uÔ5Ø×Ñ™R §¡¨R°©UÓ 3°R¸±UÓ;¸RÀ¹UÔCØ×Ñ™R  1¡ t§|¡|°B°q±EÓ':Ó;¸RÀ¹UÕCñ	Dr   c                 ó  — dg d¢fdg d¢fdg d¢fdg d¢fd	g d
¢fdg d¢fdg d¢fdg d¢fdg d¢fdg d¢fdg d¢fdg d¢fdg d¢fdg d¢fg}| j                   j                  }|D ](  \  }}|D ]  \  }}| j                   |||«      |«       Œ  Œ* y )NrB   )©rC   rC   ©r'   r;   ©rB   r   ©rz   rC   ©r{   r;   ©r½   r   ©rq   rC   ©rH   r;   ©r¿   r   ©rG   rC   ©r£   r;   ©r  r   ©r\   rC   ©r]   r;   ©r–   r   ©r•   rC   ©r’   r;   ©r  r   ©r¤   rC   ©r3   r;   ©r  r   ©r  rC   ©r   r;   ©r-   r   ©é   rC   ©é   r;   ©é   r   ©é   rC   ©r¥   r;   ©r³   r   r{   )r%  r&  ©rB   r;   r(  ©r{   r   ©r½   rC   ©rq   r;   r,  ©r¿   rC   ©rG   r   ©r£   rC   ©r  r;   ©r\   r;   ©r]   rC   r3  r4  r5  ©r  r;   r7  ©r3   r   ©r  rC   ©r  r;   r;  ©r-   rC   ©r>  r   ©r@  rC   ©rB  r;   ©rD  r;   ©r¥   rC   rF  rq   )r%  ©r'   rC   rG  r(  r)  ©r½   r;   ©rq   r   ©rH   rC   rK  ©rG   r;   rM  rN  rO  ©r]   r   ©r–   rC   r4  r5  ©r  rC   ©r¤   r;   r8  r9  r:  ©r   rC   ©r-   r;   r=  r?  rX  ©rD  r   rZ  ©r³   rC   r¿   )r%  r[  r'  r(  ©r{   rC   r*  r+  r^  r-  r.  rM  r0  r1  rP  r3  r4  ©r’   rC   r6  r7  ©r3   rC   r9  r:  rd  r<  r=  rW  rA  rC  rZ  rF  r£   )r%  r&  ©rB   rC   r(  rh  r\  rJ  r,  rK  r_  )r£   r   ©r  rC   rO  rP  ra  r4  r5  rQ  rc  rj  ©r  r;   )r  r   rd  re  r=  rW  ©rB  rC   rY  rE  ©r³   r;   r\   )r%  r&  rk  r(  r)  r\  rJ  r,  rK  r.  r/  rl  )r\   r   rP  ©r–   r;   r4  ri  rQ  rc  r8  rm  r:  rd  re  r=  )r@  r   rn  rY  rZ  rg  r–   )r%  r[  r'  r(  rH  r*  rJ  r^  r-  rL  r/  r0  rO  r2  r3  r4  ri  r6  r7  rR  r9  rT  rd  r<  rV  r?  rA  rY  rE  rF  r’   )r%  r[  rG  r(  r)  r\  rJ  r^  rK  r_  r/  rN  r1  r2  ra  r4  )r’   r   rb  r7  r8  rS  rT  r;  re  r=  rW  rX  rY  rE  rg  r¤   )r%  r&  rG  r(  rh  rI  r+  r,  rK  r_  rM  rN  rO  r2  rp  r4  ri  rQ  )r¤   r   rj  rm  rT  rd  rU  r=  rW  rX  rC  rE  rg  r  )r%  r&  r'  r(  rh  r*  r]  r,  r-  r_  r/  r0  rO  r`  r3  r4  ri  r6  rc  rj  r9  r:  r;  r<  r=  rW  rA  rf  rE  rF  r   )r%  r[  rk  r(  r)  rI  rJ  r^  rK  r_  r/  rl  r1  r2  rp  r4  r5  rb  rc  r8  rm  rT  )r   r   rU  r=  rW  rn  rY  rZ  ro  r>  )r%  r[  rk  r(  rH  rI  r+  r^  rK  rL  rM  rl  r1  rP  r3  r4  ri  rb  r7  rR  rS  r:  rd  rU  rV  rW  rn  rC  rZ  rF  rB  r¥   )r%  r&  rG  r(  rh  rI  r+  r,  rK  r_  r/  rN  r1  r2  rp  r4  r5  rQ  rc  rj  rm  r:  rd  rU  r=  r?  rX  rC  )r¥   r   rg  )r   r  r   )r   r"  r  r!  Úkjr   Újs          r   Útest_jacobi_symbol_wikipediaz,TestIntegerBase.test_jacobi_symbol_wikipediaª  s*  € ð ò  `ð  aØò  bð  cØò  bð  cØò  Vð  WØò  eð  fØò  dð  eØò  _ð  `Øò  fð  gØò  dð  eØò  _ð  `Øò  dð  eØò  Wð  XØò  að  bØò  eð  fðˆð" �\‰\×'Ñ'ˆàò 	.‰EˆAˆrØò .‘��1Ø× Ñ ¡ A q£¨1Õ-ñ.ñ	.r   c                 ó`   — | j                  d«      \  }| j                  t        |«      d«       y )Nr•   Ú0x10)r   r   Úhexr˜   s     r   Útest_hexzTestIntegerBase.test_hexÄ  s&   € Ø�m‰m˜DÓ!‰ˆØ×Ñœ˜R› &Õ)r   c                 ó:  — | j                   j                  } |ddd«      }| j                  |d«        |ddd«      }| j                  |d«        |ddd«      }| j                  |d«        |ddd«      }| j                  |d«        |ddd«      }| j                  |d«       d	d
z  dz
  }ddz  }ddz  }d}| j                  | ||||«      «       | j                  t        |ddd«       | j                  t
        |ddd«       | j                  t
        |ddd«       y )Nrz   r{   r¤   ó   rÅ   iòÿÿÿr   r-   r'   i   rC   r\   rl   r’   s@   ú²‡Ã(yøñnÞpqÊóÓB,ïòûfÌ)�Z*•˜r–¨ÕÃ}âq:¢'zô8Þ%ï	¼Ä[C‹UE2�ï�ª:r   r;   )r   Ú_mult_modulo_bytesr   r   r…   r   )r   Úmodmultr°   ÚmodulusÚt1Út2Úexpects          r   Útest_mult_modulo_bytesz&TestIntegerBase.test_mult_modulo_bytesÈ  s*  € Ø—,‘,×1Ñ1ˆá�a˜˜BÓˆØ×Ñ˜˜gÔ&á�f˜a Ó$ˆØ×Ñ˜˜gÔ&á�a˜ Ó$ˆØ×Ñ˜˜gÔ&á�f˜a Ó$ˆØ×Ñ˜˜gÔ&á�a˜ Ó$ˆØ×Ñ˜˜gÔ&à�S‘&˜1‘*ˆØ�‰WˆØ�‰Wˆð HˆØ×Ñ˜¡¨¨R°Ó!9Ô:à×ÑÔ+¨W°a¸¸AÔ>Ø×Ñœ* g¨q°!°RÔ8Ø×Ñœ* g¨q°!°QÕ7r   N)8Ú__name__Ú
__module__Ú__qualname__r   r   r%   r+   r1   r9   r>   rM   rT   rY   r`   rc   re   rg   rj   ro   ru   rx   r}   r‡   rŒ   r�   r“   r™   rœ   r¡   r±   r·   r¹   r»   rÂ   rÈ   rÌ   rÓ   rá   rç   rì   rï   ró   rö   rû   rÿ   r  r	  r  r  r  r  r  r#  rs  rw  r€  r‚   r   r   r   r   .   s  „ ò7ò&ò-òB-ò
)òUòIò
Gò>Mò0	1ò
"ò
#ò"ò#òò+ò4ò4ò6ò>ò	7ò
3ò6ò  ò,ò,ò7ò6
-ò
$ò
0ò0ò8ò;ò
0ò#ò2Aò)ò(<ò %ò7ò7òDò
Cò-ò"	(ò<ò ò'ò	'ò!DòF.ò4*ó8r   r   c                   ó   — e Zd Zd„ Zy)ÚTestIntegerIntc                 ó   — t         | _        y r   )r   r   r
   s    r   r   zTestIntegerInt.setUpç  s	   € Ü$ˆ�r   N©r�  r‚  rƒ  r   r‚   r   r   r…  r…  å  s   „ ó%r   r…  c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚtestIntegerRandomc                 óP  — t        d«      D ]@  }t        j                  d¬«      }| j                  |dk  «       | j                  |dk\  «       ŒB t        dd«      D ]I  }t        j                  |¬«      }| j                  |d|d	z
  z  k  «       | j                  |d|z  k\  «       ŒK y )
Nr(   rH   )Ú
exact_bitsé€   rP   r^   é  r'   rC   )r¬   r   Úrandomr   )r   Ú_ÚaÚ
bits_values       r   Útest_random_exact_bitsz(testIntegerRandom.test_random_exact_bitsí  s¤   € ä�t“ò 	'ˆAÜ×$Ñ$°Ô2ˆAØ×Ñ˜Q ™WÔ%Ø×Ñ˜Q #™XÕ&ð	'ô
    hÓ/ò 	1ˆJÜ×$Ñ$°
Ô;ˆAØ×Ñ˜Q  Z°!¡^Ñ!4Ñ4Ô5Ø×Ñ˜Q ! Z¡-Ñ/Õ0ñ	1r   c                 ó,  — d}t        d«      D ]5  }t        j                  d¬«      }|xs |dk  }| j                  |dk\  «       Œ7 | j	                  |«       t        dd«      D ]/  }t        j                  |¬«      }| j                  |d	|z  k\  «       Œ1 y )
NFr(   rH   )Úmax_bitsrŒ  rP   r^   r�  r'   )r¬   r   rŽ  r   r/   )r   Úflagr�  r�  r‘  s        r   Útest_random_max_bitsz&testIntegerRandom.test_random_max_bitsù  s”   € àˆÜ�t“ò 	%ˆAÜ×$Ñ$¨aÔ0ˆAØ’?˜1˜s™7ˆDØ×Ñ˜Q ™VÕ$ð	%ð 	�‰˜Ôä  hÓ/ò 	1ˆJÜ×$Ñ$¨jÔ9ˆAØ×Ñ˜Q ! Z¡-Ñ/Õ0ñ	1r   c                 ó–   —  G d„ dt         «      } |«       }t        j                  d|¬«      }| j                  |j                  d«       y )Nc                   ó   — e Zd Zd„ Zd„ Zy)ú@testIntegerRandom.test_random_bits_custom_rng.<locals>.CustomRNGc                 ó   — d| _         y r�   )Úcounterr
   s    r   Ú__init__zItestIntegerRandom.test_random_bits_custom_rng.<locals>.CustomRNG.__init__	  s	   € Ø �•r   c                 óH   — | xj                   |z  c_         t        d«      |z  S r�   )r›  Úbchr)r   Úsizes     r   Ú__call__zItestIntegerRandom.test_random_bits_custom_rng.<locals>.CustomRNG.__call__  s   € Ø—’ Ñ$•Ü˜A“w ‘~Ð%r   N)r�  r‚  rƒ  rœ  r   r‚   r   r   Ú	CustomRNGr™    s   „ ò!ó&r   r¡  rã   )r‹  Úrandfuncrz   )Úobjectr   rŽ  r   r›  )r   r¡  Ú
custom_rngr�  s       r   Útest_random_bits_custom_rngz-testIntegerRandom.test_random_bits_custom_rng  s?   € ô	&œô 	&ñ “[ˆ
Ü× Ñ ¨B¸ÔDˆØ×Ñ˜×+Ñ+¨QÕ/r   c                 ón  — t         j                  }t        d«      D ]+  } |dd¬«      }| j                  d|cxk  xr dk  nc «       Œ- t        d«      D ]+  } |dd¬«      }| j                  d|cxk  xr dk  nc «       Œ- | j	                  t
        |ddd¬«       | j	                  t
        |dd¬	«       y )
NéÈ   rC   r–   )Úmin_inclusiveÚmax_inclusive)r¨  Úmax_exclusiver'   rB   )r¨  r©  rª  )r©  rª  )r   Úrandom_ranger¬   r/   r   r   )r   Úfuncrþ   r�  s       r   Útest_random_rangez#testIntegerRandom.test_random_range  s¬   € ä×)Ñ)ˆä�s“ò 	*ˆAÙ 1°BÔ7ˆAØ�O‰O˜A žL bœLÕ)ð	*ô �s“ò 	)ˆAÙ 1°BÔ7ˆAØ�O‰O˜A žK RœKÕ(ð	)ð 	×Ñœ* d¸!È1Ø:;ð 	ô 	=à×Ñœ* d¸!È1ÐÕMr   N)r�  r‚  rƒ  r’  r–  r¥  r­  r‚   r   r   r‰  r‰  ë  s   „ ò
1ò1ò0óNr   r‰  c                 óp  ‡‡— g }|t        t        «      z  }	 ddlmŠ  G ˆfd„dt        «      }|t        |«      z  }	 ddlmŠ  G ˆfd	„d
t        «      }|t        |«      z  }|t        t        «      z  }|S # t
        t        f$ rh}t        j                  dk(  r t        j                  j                  d«       n+t        j                  j                  dt        |«      z  «       Y d }~Œ¬d }~ww xY w# t
        t        f$ r5}t        j                  j                  dt        |«      z  «       Y d }~ŒÍd }~ww xY w)Nr   ©Ú
IntegerGMPc                   ó   •— e Zd Zˆ fd„Zy)ú!get_tests.<locals>.TestIntegerGMPc                 ó   •— ‰| _         y r   rÀ   )r   r°  s    €r   r   z'get_tests.<locals>.TestIntegerGMP.setUp,  s
   ø€ Ø)�•r   Nr‡  r¯  s   €r   ÚTestIntegerGMPr²  +  s   ø„ õ*r   r´  Úwin32zSkipping GMP tests on Windows
zSkipping GMP tests (%s)
©ÚIntegerCustomc                   ó   •— e Zd Zˆ fd„Zy)ú*get_tests.<locals>.TestIntegerCustomModexpc                 ó   •— ‰| _         y r   rÀ   )r   r·  s    €r   r   z0get_tests.<locals>.TestIntegerCustomModexp.setUp:  s
   ø€ Ø,�•r   Nr‡  r¶  s   €r   ÚTestIntegerCustomModexpr¹  9  s   ø„ õ-r   r»  z"Skipping custom modexp tests (%s)
)r   r…  ÚCrypto.Math._IntegerGMPr°  r   ÚImportErrorÚOSErrorÚsysÚplatformÚstdoutÚwriter7   ÚCrypto.Math._IntegerCustomr·  r‰  )ÚconfigÚtestsr´  Úer»  r·  r°  s        @@r   Ú	get_testsrÇ  $  s  ù€ Ø€EØ	Œ_œ^Ó,Ñ,€EðDÝ6ö	*œ_ô 	*ð 	” Ó0Ñ0ˆð	JÝ<ö	-¤oô 	-ð 	”Ð!8Ó9Ñ9ˆð 
Œ_Ô.Ó/Ñ/€EØ€Løô% œÐ!ò DÜ�<‰<˜7Ò"Ü�J‰J×ÑÐ>Õ?ä�J‰J×ÑÐ8¼3¸q»6ÑAÔCÿøð	Dûô œÐ!ò JÜ�
‰
×ÑÐ>ÄÀQÃÑG×IÑIûðJús/   ˜%A7 ¾%C1 Á7C.ÂAC)Ã)C.Ã1D5Ä +D0Ä0D5Ú__main__c                  ó<   — t        j                  t        «       «      S r   )ÚunittestÚ	TestSuiterÇ  r‚   r   r   r„   r„   E  s   € ”H×&Ñ&¤y£{Ó3€ r   Úsuite)ÚdefaultTest)Ú__doc__r¿  rÊ  ÚCrypto.SelfTest.st_commonr   ÚCrypto.Util.py3compatÚCrypto.Math._IntegerNativer   ÚTestCaser   r…  r‰  rÇ  r�  rÌ  Úmainr‚   r   r   ú<module>rÔ     s}   ðñD !ã 
Û å 5ä #å 4ôt
8�h×'Ñ'ô t
8ôn%�_ô %ô7N˜×)Ñ)ô 7Nðr ó ð@ ˆzÒÙ3€EØ€H‡M�M˜gÖ&ð r   