Ë
    íU.j¡-  ã                   óF   — d dl Z d dlmZmZmZmZ d dlmZ  G d„ de«      Zy)é    N)Ú
iter_rangeÚbordÚbchrÚABC)ÚRandomc                   ó  — e Zd Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d4d„«       Ze	ej                  d5d„«       «       Z
ej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d	„ «       Zej                  d
„ «       Zej                  d„ «       Zej                  d„ «       ZeZej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d6d„«       Zej                  d6d„«       Zej                  d„ «       Zej                  d6d„«       Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Zej                  d„ «       Z ej                  d„ «       Z!ej                  d„ «       Z"ej                  d„ «       Z#ej                  d„ «       Z$ej                  d „ «       Z%ej                  d!„ «       Z&ej                  d"„ «       Z'ej                  d#„ «       Z(ej                  d$„ «       Z)ej                  d%„ «       Z*ej                  d&„ «       Z+ej                  d'„ «       Z,ej                  d(„ «       Z-ej                  d)„ «       Z.ej                  d*„ «       Z/ej                  d+„ «       Z0ej                  d,„ «       Z1ej                  d-„ «       Z2ej                  d.„ «       Z3e	ej                  d/„ «       «       Z4e	d0„ «       Z5e6d1„ «       Z7e6d2„ «       Z8e	ej                  d3„ «       «       Z9y)7ÚIntegerBasec                  ó   — y ©N© ©Úselfs    úZC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\Crypto/Math/_IntegerBase.pyÚ__int__zIntegerBase.__int__)   ó   € àó    c                  ó   — y r   r   r   s    r   Ú__str__zIntegerBase.__str__-   r   r   c                  ó   — y r   r   r   s    r   Ú__repr__zIntegerBase.__repr__1   r   r   c                  ó   — y r   r   )r   Ú
block_sizeÚ	byteorders      r   Úto_byteszIntegerBase.to_bytes5   r   r   c                  ó   — y r   r   )Úbyte_stringr   s     r   Ú
from_byteszIntegerBase.from_bytes9   ó   € ð 	r   c                  ó   — y r   r   ©r   Úterms     r   Ú__eq__zIntegerBase.__eq__?   r   r   c                  ó   — y r   r   r    s     r   Ú__ne__zIntegerBase.__ne__C   r   r   c                  ó   — y r   r   r    s     r   Ú__lt__zIntegerBase.__lt__G   r   r   c                  ó   — y r   r   r    s     r   Ú__le__zIntegerBase.__le__K   r   r   c                  ó   — y r   r   r    s     r   Ú__gt__zIntegerBase.__gt__O   r   r   c                  ó   — y r   r   r    s     r   Ú__ge__zIntegerBase.__ge__S   r   r   c                  ó   — y r   r   r   s    r   Ú__nonzero__zIntegerBase.__nonzero__W   r   r   c                  ó   — y r   r   r   s    r   Úis_negativezIntegerBase.is_negative\   r   r   c                  ó   — y r   r   r    s     r   Ú__add__zIntegerBase.__add__a   r   r   c                  ó   — y r   r   r    s     r   Ú__sub__zIntegerBase.__sub__e   r   r   c                  ó   — y r   r   )r   Úfactors     r   Ú__mul__zIntegerBase.__mul__i   r   r   c                  ó   — y r   r   ©r   Údivisors     r   Ú__floordiv__zIntegerBase.__floordiv__m   r   r   c                  ó   — y r   r   r9   s     r   Ú__mod__zIntegerBase.__mod__q   r   r   Nc                  ó   — y r   r   ©r   ÚexponentÚmoduluss      r   Úinplace_powzIntegerBase.inplace_powu   r   r   c                  ó   — y r   r   r?   s      r   Ú__pow__zIntegerBase.__pow__y   r   r   c                  ó   — y r   r   r   s    r   Ú__abs__zIntegerBase.__abs__}   r   r   c                  ó   — y r   r   ©r   rA   s     r   ÚsqrtzIntegerBase.sqrt�   r   r   c                  ó   — y r   r   r    s     r   Ú__iadd__zIntegerBase.__iadd__…   r   r   c                  ó   — y r   r   r    s     r   Ú__isub__zIntegerBase.__isub__‰   r   r   c                  ó   — y r   r   r    s     r   Ú__imul__zIntegerBase.__imul__�   r   r   c                  ó   — y r   r   r    s     r   Ú__imod__zIntegerBase.__imod__‘   r   r   c                  ó   — y r   r   r    s     r   Ú__and__zIntegerBase.__and__–   r   r   c                  ó   — y r   r   r    s     r   Ú__or__zIntegerBase.__or__š   r   r   c                  ó   — y r   r   ©r   Úposs     r   Ú
__rshift__zIntegerBase.__rshift__ž   r   r   c                  ó   — y r   r   rW   s     r   Ú__irshift__zIntegerBase.__irshift__¢   r   r   c                  ó   — y r   r   rW   s     r   Ú
__lshift__zIntegerBase.__lshift__¦   r   r   c                  ó   — y r   r   rW   s     r   Ú__ilshift__zIntegerBase.__ilshift__ª   r   r   c                  ó   — y r   r   )r   Úns     r   Úget_bitzIntegerBase.get_bit®   r   r   c                  ó   — y r   r   r   s    r   Úis_oddzIntegerBase.is_odd³   r   r   c                  ó   — y r   r   r   s    r   Úis_evenzIntegerBase.is_even·   r   r   c                  ó   — y r   r   r   s    r   Úsize_in_bitszIntegerBase.size_in_bits»   r   r   c                  ó   — y r   r   r   s    r   Úsize_in_byteszIntegerBase.size_in_bytes¿   r   r   c                  ó   — y r   r   r   s    r   Úis_perfect_squarezIntegerBase.is_perfect_squareÃ   r   r   c                  ó   — y r   r   )r   Úsmall_primes     r   Úfail_if_divisible_byz IntegerBase.fail_if_divisible_byÇ   r   r   c                  ó   — y r   r   )r   ÚaÚbs      r   Úmultiply_accumulatezIntegerBase.multiply_accumulateË   r   r   c                  ó   — y r   r   )r   Úsources     r   ÚsetzIntegerBase.setÏ   r   r   c                  ó   — y r   r   rH   s     r   Úinplace_inversezIntegerBase.inplace_inverseÓ   r   r   c                  ó   — y r   r   rH   s     r   ÚinversezIntegerBase.inverse×   r   r   c                  ó   — y r   r   r    s     r   ÚgcdzIntegerBase.gcdÛ   r   r   c                  ó   — y r   r   r    s     r   ÚlcmzIntegerBase.lcmß   r   r   c                  ó   — y r   r   )rq   ra   s     r   Újacobi_symbolzIntegerBase.jacobi_symbolã   r   r   c                 óÎ  — | dv r| S |dz  dk(  r0t        | |dz   dz  |«      }t        |d|«      | k7  rt        d«      ‚|S d}|dz
  dz  }|dz  s|dz  }|dz  }|dz  sŒ| j                  d«      }	 t        ||dz
  dz  |«      }|dk(  r|dz  }Œ||dz
  k(  rnt        d«      ‚|}t        |||«      }t        | ||«      }	t        | |dz   dz  |«      }
|	dk7  rtt        d|«      D ]  }t        |	d|z  |«      dk(  sŒ n |k(  rt        d| |fz  «      ‚t        |d||z
  dz
  z  |«      }|}|dz  |z  }|	|dz  z  |z  }	|
|z  |z  }
|	dk7  rŒtt        |
d|«      | k7  rt        d«      ‚|
S )	a®  Tonelli-shanks algorithm for computing the square root
        of n modulo a prime p.

        n must be in the range [0..p-1].
        p must be at least even.

        The return value r is the square root of modulo p. If non-zero,
        another solution will also exist (p-r).

        Note we cannot assume that p is really a prime: if it's not,
        we can either raise an exception or return the correct value.
        )r   é   é   é   r‚   é   zCannot compute square rootr   z'Cannot compute square root of %d mod %d)ÚpowÚ
ValueErrorÚ	__class__r   )ra   ÚpÚrootÚsÚqÚzÚeulerÚmÚcÚtÚrÚirr   s                r   Ú_tonelli_shankszIntegerBase._tonelli_shanksè   sÔ  € ð" �‰;ØˆHàˆq‰5�AŠ:Ü�q˜1˜q™5 Q™,¨Ó*ˆDÜ�4˜˜A‹ !Ò#Ü Ð!=Ó>Ð>ØˆKàˆØ�‰U�q‰LˆØ�q’5Ø�‰FˆAØ�!‰GˆAð �q“5ð �K‰K˜‹NˆØÜ˜˜A ™E a™<¨Ó+ˆEØ˜ŠzØ�Q‘�ØØ˜˜A™Š~ØäÐ9Ó:Ð:àˆÜ��1�a‹LˆÜ��1�a‹LˆÜ��A˜‘E˜a‘< Ó#ˆà�1ŠfÜ  1Ö%�Ü�q˜!˜Q™$ “? aÓ'Ùð &ð �AŠvÜ Ð!JÈaÐQRÈVÑ!SÓTÐTÜ�A�q˜1˜q™5 1™9‘~ qÓ)ˆAØˆAØ�1‘�q‘ˆAØ�Q˜‘T‘˜Q‘ˆAØ�Q‘˜!‘ˆAð �1‹fô ˆq�!�Q‹<˜1ÒÜÐ9Ó:Ð:àˆr   c                 óÆ  — |j                  dd«      }|j                  dd«      }|j                  dd«      }|€t        j                  «       j                  }|€|€t	        d«      ‚|�|�t	        d«      ‚|xs |}|dz
  dz  dz   }d|dz  |z
  z
  }t         |d«      d	   «      }|�|d|dz
  z  z  }|d|z  dz
  z  }| j                  t        |«       ||dz
  «      z   «      S )
a!  Generate a random natural integer of a certain size.

        :Keywords:
          exact_bits : positive integer
            The length in bits of the resulting random Integer number.
            The number is guaranteed to fulfil the relation:

                2^bits > result >= 2^(bits - 1)

          max_bits : positive integer
            The maximum length in bits of the resulting random Integer number.
            The number is guaranteed to fulfil the relation:

                2^bits > result >=0

          randfunc : callable
            A function that returns a random byte string. The length of the
            byte string is passed as parameter. Optional.
            If not provided (or ``None``), randomness is read from the system RNG.

        :Return: a Integer object
        Ú
exact_bitsNÚmax_bitsÚrandfuncz3Either 'exact_bits' or 'max_bits' must be specifiedz2'exact_bits' and 'max_bits' are mutually exclusiver‚   é   r   )Úpopr   ÚnewÚreadr‡   r   r   r   )	ÚclsÚkwargsr–   r—   r˜   ÚbitsÚbytes_neededÚsignificant_bits_msbÚmsbs	            r   ÚrandomzIntegerBase.random)  s  € ð2 —Z‘Z ¨dÓ3ˆ
Ø—:‘:˜j¨$Ó/ˆØ—:‘:˜j¨$Ó/ˆàÐÜ—z‘z“|×(Ñ(ˆHàÐ (Ð"2ÜÐRÓSÐSàÐ! hÐ&:ÜÐQÓRÐRàÒ%˜XˆØ ™ a™¨1Ñ,ˆØ  L°1Ñ$4°tÑ$;Ñ<ÐÜ‘8˜A“;˜q‘>Ó"ˆØÐ!Ø�1Ð-°Ñ1Ñ2Ñ2ˆCØ�Ð)Ñ)¨QÑ.Ñ.ˆà�~‰~œd 3›i©(°<À!Ñ3CÓ*DÑDÓEÐEr   c                 ó  — |j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|r!t        dt        |j                  «      z   «      ‚d||fvrt        d«      ‚|�|dz
  }d||fv rt        d	«      ‚|€t	        j
                  «       j                  }||z
  } | |«      j                  «       }d
}d|cxk  r|k  s(n | j                  ||¬«      }d|cxk  r
|k  sŒ||z   S  Œ&||z   S )a¢  Generate a random integer within a given internal.

        :Keywords:
          min_inclusive : integer
            The lower end of the interval (inclusive).
          max_inclusive : integer
            The higher end of the interval (inclusive).
          max_exclusive : integer
            The higher end of the interval (exclusive).
          randfunc : callable
            A function that returns a random byte string. The length of the
            byte string is passed as parameter. Optional.
            If not provided (or ``None``), randomness is read from the system RNG.
        :Returns:
            An Integer randomly taken in the given interval.
        Úmin_inclusiveNÚmax_inclusiveÚmax_exclusiver˜   zUnknown keywords: z8max_inclusive and max_exclusive cannot be both specifiedr‚   z(Missing keyword to identify the intervaléÿÿÿÿr   )r—   r˜   )	rš   r‡   ÚstrÚkeysr   r›   rœ   rh   r£   )	r�   rž   r¥   r¦   r§   r˜   Únorm_maximumÚbits_neededÚnorm_candidates	            r   Úrandom_rangezIntegerBase.random_rangeY  s6  € ð& Ÿ
™
 ?°DÓ9ˆØŸ
™
 ?°DÓ9ˆØŸ
™
 ?°DÓ9ˆØ—:‘:˜j¨$Ó/ˆáÜÐ1´C¸¿¹Ó4DÑDÓEÐEØ˜ }Ð5Ñ5Üð &ó 'ð 'àÐ$Ø)¨AÑ-ˆMØ�M =Ð1Ñ1ÜÐGÓHÐHàÐÜ—z‘z“|×(Ñ(ˆHà$ }Ñ4ˆÙ˜,Ó'×4Ñ4Ó6ˆàˆØ�~Ô5¨Ô5Ø ŸZ™ZØ-8Ø-5ð (ó &ˆNð �~Ô5¨Ó5ð
  Ñ-Ð-ñ 6ð
  Ñ-Ð-r   c                  ó   — y)a€  Multiply two integers, take the modulo, and encode as big endian.
        This specialized method is used for RSA decryption.

        Args:
          term1 : integer
            The first term of the multiplication, non-negative.
          term2 : integer
            The second term of the multiplication, non-negative.
          modulus: integer
            The modulus, a positive odd number.
        :Returns:
            A byte string, with the result of the modular multiplication
            encoded in big endian mode.
            It is as long as the modulus would be, with zero padding
            on the left if needed.
        Nr   )Úterm1Úterm2rA   s      r   Ú_mult_modulo_byteszIntegerBase._mult_modulo_bytes‰  s   € ð& 	r   )r   Úbig)r³   r   ):Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r   r   Ústaticmethodr   r"   r$   r&   r(   r*   r,   r.   Ú__bool__r0   r2   r4   r7   r;   r=   rB   rD   rF   rI   rK   rM   rO   rQ   rS   rU   rY   r[   r]   r_   rb   rd   rf   rh   rj   rl   ro   rs   rv   rx   rz   r|   r~   r€   r”   Úclassmethodr£   r®   r²   r   r   r   r	   r	   &   s$  „ ð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ñòó ðð Ø×Ñòó ó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðà€Hà×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ñòó ðð 	×Ñòó ðð 	×Ññó ðð 	×Ñòó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð 	×Ññó ðð Ø×Ññó ó ðð ñ>ó ð>ð@ ñ-Fó ð-Fð^ ñ-.ó ð-.ð^ Ø×Ññó ó ñr   r	   )	r·   ÚCrypto.Util.py3compatr   r   r   r   ÚCryptor   r	   r   r   r   Ú<module>r¾      s!   ðó> ç =Ó =å ôv�#õ vr   