Ë
    7^(h©A  ã                   óÆ  — d dl mZ d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZ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) d dl m*Z* d dl+Z+d dl,m-Z-m.Z.  ed«      \  Z/Z0Z1Z2 ed«      Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d „ Z?d!„ Z@d"„ ZAd#„ ZBd$„ ZCed%„ «       ZDd&„ ZEd'„ ZFed(„ «       ZGy))é    )Úslow)Údiff)Úexpand)ÚEÚIÚRationalÚpi)ÚS)ÚSymbolÚsymbols)ÚAbsÚ	conjugateÚimÚreÚsign)Úlog)Úsqrt)ÚacosÚasinÚcosÚsinÚatan2Úatan)Ú	integrate)ÚMatrix)Úsimplify)Útrigsimp)Ú
Quaternion)ÚraisesN)ÚpermutationsÚproductzw:zÚphic                  óÐ  ‡— t        t        t        t        t        «      } | | z   t        dt        z  dt        z  dt        z  dt        z  «      k(  sJ ‚t        j
                  t        d«      dz  t        d«      dz  t        d«      dz  ft        t        dd«      z  «      }|t        t        j                  t        j                  t        j                  t        j                  «      k(  sJ ‚t        t        t        «      t        t        «       dgt        t        «      t        t        «      dgg d¢g«      }t        t        j                   |«      «      }|t        t        d«      t        t        t        «      dz   «      z  dz  ddt        ddt        t        «      z  z
  «      t#        t        t        «      «      z  dz  «      k(  sJ ‚t%        dd¬«      Št'        t(        ˆfd	„«       y )
Né   é   r   ©r   r   é   r'   ÚncF©Úcommutativec                  ó8   •— t        t        t        ‰ t        «      S ©N)r   ÚwÚxÚz)r(   s   €úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/algebras/tests/test_quaternion.pyú<lambda>z.test_quaternion_construction.<locals>.<lambda>&   s   ø€ œz¬!¬Q°´AÓ6€ ó    )r   r-   r.   Úyr/   Úfrom_axis_angler   r	   r   r
   ÚHalfr   r   r"   r   r   Úfrom_rotation_matrixr   r   r   Ú
ValueError)ÚqÚq2ÚMÚq3r(   s       @r0   Útest_quaternion_constructionr<      sw  ø€ Ü”1”aœœAÓ€AØˆq‰5”J˜q¤™s A¤a¡C¨¬1©¨a´©cÓ2Ò2Ð2Ð2ä	×	#Ñ	#¤T¨!£W¨Q¡Y´°Q³¸±	¼4À»7À1¹9Ð$EÜ$&¤x°°1£~Ñ$5ó
7€Bà”œAŸF™F¤A§F¡FÜŸF™F¤A§F¡Fó,ò ,ð ,ð ,ô 	””S“œC¤›H˜9 aÐ(¬3¬s«8´S¼³X¸qÐ*AÂ9ÐMÓN€AÜ	”*×1Ñ1°!Ó4Ó	5€BØ”ÜˆQ‹””Sœ“X ‘\Ó"Ñ" 1Ñ$ a¨¬D°°Q´s¼3³x±Z±Ó,@ÄÄcÌ#ÃhÃÑ,OÐPQÑ,QóSò Sð Sð Sô 
� %Ô	(€BÜ
Œ:Ó6Õ7r2   c                  ó†  — t        t        d«      Ž } t        t        t        t        t
        «      }t        | |z  j                  «       dz  | j                  «       dz  |j                  «       dz  z  z
  «      dk(  sJ ‚t        t        t        t        t
        d¬«      }| |z  j                  «       | j                  «       k(  sJ ‚y )Núa:dr$   r   r'   )Únorm)r   r   r-   r.   r3   r/   r   r?   )Úq1r9   r;   s      r0   Ú!test_quaternion_construction_normrA   )   s‘   € Ü	”W˜U“^Ð	$€Bä	”A”qœ!œQÓ	€BÜ�2�b‘5—,‘,“. !Ñ# r§w¡w£y°!¡|°b·g±g³iÀ±lÑ'BÑCÓDÈÒIÐIÐIä	”A”qœ!œQ QÔ	'€BØ�‰G�>‰>Ó˜rŸw™w›yÒ(Ð(Ñ(r2   c                  óÔ   — t        dddd«      } t        j                  ddt        j                  z  dz  «      }|j	                  «       }|| z  |z  }|| z
  j                  «       dk  sJ ‚y )Nr'   r   ©r'   r'   r'   r%   é   g»½×Ùß|Û=)r   r4   Úmathr	   Úinverser?   )Úpr8   ÚqiÚtests       r0   Útest_issue_25254rJ   3   sc   € ô 	�1�a˜˜AÓ€AÜ×"Ñ" 9¨a´$·'±'©k¸!©mÓ<€AØ	
�‰‹€BØˆq‰5�2‰:€DØ�A‰X�O‰OÓ Ò%Ð&Ñ%r2   c                  ó>  — t        t        t        t        t        «      } t        j
                  | j                  «       «      }t        j
                  | j                  d«      «      }| |z
  j                  «       sJ ‚| j                  «       |z
  j                  «       sJ ‚y )NT)	r   r-   r.   r3   r/   Úfrom_MatrixÚ	to_MatrixÚis_zero_quaternionÚvector_part)r8   Úq_fullÚq_vects      r0   Útest_to_and_from_MatrixrR   =   st   € Ü”1”aœœAÓ€AÜ×#Ñ# A§K¡K£MÓ2€FÜ×#Ñ# A§K¡K°Ó$5Ó6€FØ�‰J×*Ñ*Ô,Ð,Ð,Ø�M‰M‹O˜fÑ$×8Ñ8Ô:Ð:Ñ:r2   c                  óî  — t        t        t        t        t        «      } t        t        d«      Ž }| |z  j                  «       | j                  |j                  «       z  k(  sJ ‚| |z  j                  «       |j                  | j                  «       z  k(  sJ ‚| j                  | j                  j                  z  dd …dd …f   }t        | j                  «       | j                  «       dz  z  «      }||k(  sJ ‚y )Nr>   r'   r$   )r   r-   r.   r3   r/   r   rM   Úproduct_matrix_leftÚproduct_matrix_rightÚTr   Úto_rotation_matrixr?   )r@   r9   ÚR1ÚR2s       r0   Útest_product_matricesrZ   E   sÎ   € Ü	”A”qœ!œQÓ	€BÜ	”g˜e“nÐ	&€BØ�‰G×ÑÓ  B×$:Ñ$:¸R¿\¹\»^Ñ$KÒKÐKÐKØ�‰G×ÑÓ  B×$;Ñ$;¸b¿l¹l»nÑ$LÒLÐLÐLà
×
 Ñ
  2×#:Ñ#:×#<Ñ#<Ñ
<¸a¹bÀ!Á"¸fÑ	E€BÜ	�"×'Ñ'Ó)¨"¯'©'«)°Q©,Ñ6Ó	7€BØ�Š8€O‰8r2   c                  ó¾  — ddt         dz  t        d«      dz  t        d«      dz  ddffdt         dz  t        d«      dz  dt        d«      dz  dffdt         dz  t        d«      dz  ddt        d«      dz  ffdt         dfdt         dfdt         d	fd
t         ddt        d«      z  dt        d«      z  dt        d«      z  fft        d«      dz  t        d«      dz  t        d«      dz  ft         dz  dz  t        j                  t        j                  t        j                  t        j                  ffg	} | D ]'  \  }}}t	        j
                  ||«      t	        |Ž k(  rŒ'J ‚ y )N)©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'   rC   r'   r%   )r	   r   r
   r5   r   r4   )Ú	test_dataÚaxisÚangleÚexpecteds       r0   Útest_quaternion_axis_anglerc   P   sP  € ð 	%Ø	”B�q‘Dœ4 ›7 1™9¤d¨1£g¨a¡i°°AÐ6Ð7Ø	”B�q‘Dœ4 ›7 1™9 a¬¨a«°©°AÐ6Ð7Ø	”B�q‘Dœ4 ›7 1™9 a¨¬D°«G°A©IÐ6Ð7Ø	”B˜Ð%Ø	”B˜Ð%Ø	”B˜Ð%Ø	”B˜˜Aœd 1›g™I a¬¨Q«¡i°´$°q³'±	Ð:Ð;Ü
ˆq‹'�!‰)”T˜!“W˜Q‘Y¤ Q£¨¡	Ð	*¬B¨q©D°©F´Q·V±V¼Q¿V¹VÄQÇVÁVÌQÏVÉVÐ4TÐUð
€Ið "+ò PÑˆˆe�XÜ×)Ñ)¨$°Ó6¼*ÀhÐ:OÓOÐOÐOñPr2   c                  óÒ  — t        j                  dt        d«      «      } | j                  t	        t        d«      dz  «      k(  sJ ‚| j
                  t        d«      t        t        d«      dz  «      z  dz  k(  sJ ‚| j                  t        d«      t        t        d«      dz  «      z  dz  k(  sJ ‚| j                  dt        d«      z  t        t        d«      dz  «      z  dz  k(  sJ ‚y )N)r'   r$   r%   rD   r$   é   é   r%   )
r   r4   r   Úar   Úbr   r   ÚcÚd)Úresults    r0   Ú)test_quaternion_axis_angle_simplificationrl   b   s¾   € Ü×'Ñ'¨	´4¸³7Ó;€FØ�8‰8”sœ4 ›7 1™9“~Ò%Ð%Ð%Ø�8‰8”t˜B“x¤¤D¨£G¨A¡I£Ñ.¨rÑ1Ò1Ð1Ð1Ø�8‰8”t˜B“x¤¤D¨£G¨A¡I£Ñ.¨qÑ0Ò0Ð0Ð0Ø�8‰8�qœ˜b›‘z¤#¤d¨1£g¨a¡i£.Ñ0°Ñ3Ò3Ð3Ñ3r2   c            
      ó†  ‡‡— t        dd¬«      } t        dd¬«      }t        dd¬«      Št        t        t        t        t
        «      Š| ‰z   t        t        t        | «      z   t        t        | «      z   t        t
        «      k(  sJ ‚d	‰z   t        d	t        z   t        t        t
        «      k(  sJ ‚t        ‰z   t        t        d	t        z   t        t
        «      k(  sJ ‚|‰z   t        t        |z   t        t        t
        «      k(  sJ ‚t        t        ˆˆfd
„«       t        t        ˆˆfd„«       t        t        ˆˆfd„«       ‰ t        t         t         t         t
         «      k(  sJ ‚t        ddt        z  z   ddt        z  z   dddt        z  z   d¬«      }t        d	ddd«      }|ddt        z  z   z   t        ddt        z  z   ddt        z  z   dddt        z  z   «      k(  sJ ‚|ddt        z  z   z   t        dddd«      k(  sJ ‚|ddt        z  z   z  t        ddt        z  z   ddt        z  z   z  ddt        z  z   ddt        z  z   z  dddt        z  z   ddt        z  z   z  «      k(  sJ ‚|ddt        z  z   z  t        dddd«      k(  sJ ‚t        d	ddd«      }t        dddd«      }||z   |k(  sJ ‚||z
  |k(  sJ ‚||z
  |k(  sJ ‚y )Nrg   T©Úcomplexrh   ©Úrealri   Fr)   r'   c                  ó   •— ‰ ‰z   S r,   © ©ri   r8   s   €€r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>t   ó   ø€ ˜q 1™u€ r2   c                  ó   •— ‰‰ z  S r,   rs   rt   s   €€r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>u   ru   r2   c                  ó   •— ‰ ‰z  S r,   rs   rt   s   €€r0   r1   z7test_quaternion_complex_real_addition.<locals>.<lambda>v   ru   r2   r%   rD   r$   é   r   rf   é   ©Ú
real_fieldiöÿÿÿé   é&   éûÿÿÿ)r   r   r-   r.   r3   r/   r   r   r   r   r7   )rg   rh   r@   r9   Úq0ri   r8   s        @@r0   Ú%test_quaternion_complex_real_additionr€   i   s‡  ù€ Ü�˜TÔ"€AÜ�˜$Ô€Aä� Ô'€Aä”1”aœœAÓ€AØˆq‰5”Jœq¤2 a£5™y¬!¬b°«e©)´Q¼Ó:Ò:Ð:Ð:Øˆq‰5”J˜q¤1™u¤a¬¬AÓ.Ò.Ð.Ð.Üˆq‰5”Jœq !¤a¡%¬¬AÓ.Ò.Ð.Ð.Øˆq‰5”Jœq 1™u¤a¬¬AÓ.Ò.Ð.Ð.Ü
Œ:”}Ô%Ü
Œ:”}Ô%Ü
Œ:”}Ô%àˆ2”œQ˜B¤ ¤Q B¬¨Ó+Ò+Ð+Ð+ä	�A˜œ!™‘G˜Q ¤1¡™W a¨¨Q¬q©S©¸uÔ	E€BÜ	�A�q˜!˜QÓ	€Bà��Q”q‘S‘‰>œZ¨¨A¬a©C©°°Q´q±S±¸!¸QÀÄ1Á¹WÓEÒEÐEÐEØ��Q”q‘S‘‰>œZ¨¨1¨a°Ó3Ò3Ð3Ð3Ø��Q”q‘S‘‰>Ü��A”a‘C‘˜!˜a¤™c™'Ñ" Q¨¬1©¡W¨q°1´Q±3©wÑ$7¸¸QÀÄ1Á¹WÀqÈ1ÌQÉ3ÁwÑ<OÓPòQð Qð Qà��Q”q‘S‘‰>œZ¨¨R°°RÓ8Ò8Ð8Ð8ä	�A�q˜!˜QÓ	€BÜ	�A�q˜!˜QÓ	€BØ�‰7�bŠ=Ðˆ=Ø�‰7�bŠ=Ðˆ=Ø�‰7�bŠ=Ð‰=r2   c                  ó†   — t        j                  dt        «      } | j                  t        d«      t        dddd«      k(  sJ ‚y )Nr&   r   r'   )r   r4   r"   Úsubs©r8   s    r0   Útest_quaternion_subsr„   Š   s7   € Ü×"Ñ" 9¬cÓ2€AØ�6‰6”#�q‹>œZ¨¨1¨a°Ó3Ò3Ð3Ñ3r2   c            
      óÐ  — t        t        d«      ddt        d«      «      j                  «       t        t        d«      j                  «       ddt        d«      j                  «       «      k(  sJ ‚t        dt        d«      z  dddt        d«      z  «      j                  «       t        dt        d«      z  j                  «       dddt        d«      z  j                  «       «      k(  sJ ‚y )Nr$   r   r%   r'   )r   r   Úevalfrs   r2   r0   Útest_quaternion_evalfr‡   �   s¼   € Ü”t˜A“w  1¤d¨1£gÓ.×4Ñ4Ó6Ü”t˜A“w—}‘}“¨¨1¬d°1«g¯m©m«oÓ>ò?ð @ð ?ä�qœ˜a›‘y ! Q¨¬$¨q«'©	Ó2×8Ñ8Ó:Ü˜œ$˜q›'™	×(Ñ(Ó*¨A¨q°1´T¸!³W±9×2CÑ2CÓ2EÓFòGð Hñ Gr2   c                  ó2   ‡‡‡— t        t        t        t        t        «      } t        dddd«      Št        dddd«      Št        | «      t        t        t         t         t         «      k(  sJ ‚| j                  «       t        t        dz  t        dz  z   t        dz  z   t        dz  z   «      k(  sJ ‚| j                  «       t        t        t        t        t        «      t        t        dz  t        dz  z   t        dz  z   t        dz  z   «      z  k(  sJ ‚| j                  «       t        t        t         t         t         «      t        dz  t        dz  z   t        dz  z   t        dz  z   z  k(  sJ ‚| j                  «       | j                  d«      k(  sJ ‚t        t        ˆfd„«       | j                  d«      t        t        dz  t        dz  z
  t        dz  z
  t        dz  z
  dt        z  t        z  dt        z  t        z  dt        z  t        z  «      k(  sJ ‚| dz  t        t        dz  t        dz  z
  t        dz  z
  t        dz  z
  dt        z  t        z  dt        z  t        z  dt        z  t        z  «      k(  sJ ‚‰j                  d«      t        t        d	d
«      t        dd
«      t        dd«      t        dd
«      «      k(  sJ ‚‰dz  t        t        d	d
«      t        dd
«      t        dd«      t        dd
«      «      k(  sJ ‚‰j                  d«      t        k(  sJ ‚t        t        ˆfd„«       ‰j!                  «       t        t"        t%        t        d«      «      z  dt        d«      z  t"        z  t'        t        d«      «      z  dz  dt        d«      z  t"        z  t'        t        d«      «      z  dz  dt        d«      z  t"        z  t'        t        d«      «      z  dz  «      k(  sJ ‚‰j)                  «       t        t)        t        d«      «      dt        d«      z  t+        t        d«      dz  «      z  dz  dt        d«      z  t+        t        d«      dz  «      z  dz  dt        d«      z  t+        t        d«      dz  «      z  dz  «      k(  sJ ‚‰j-                  d«      t        dt%        dt+        t        d«      dz  «      z  «      z  dt        d«      z  t'        dt+        t        d«      dz  «      z  «      z  dz  dt        d«      z  t'        dt+        t        d«      dz  «      z  «      z  dz  dt        d«      z  t'        dt+        t        d«      dz  «      z  «      z  dz  «      k(  sJ ‚t/        t        t        t        t        t        «      t        «      t        dddd«      k(  sJ ‚t1        t        t        t        t        t        «      t        «      t        t        dz  dz  t        dz  dz  t        dz  dz  t        dz  dz  «      k(  sJ ‚t        dt        t        dz  t        dz  «      j1                  t        «      t        t        t        dz  dz  t        dz  dz  t        dz  dz  «      k(  sJ ‚t        t'        t        «      t%        t        «      t'        dt        z  «      t%        dt        z  «      «      j1                  t        «      t        t%        t        «       t'        t        «      t%        dt        z  «       dz  t'        dt        z  «      dz  «      k(  sJ ‚t        t        dz  t        dz  t        dz  t        t        z  t        z  «      j1                  t        t        «      t        t        dz  t        z  dz  t        t        dz  z  dz  t        t        z  t        dz  z  t        dz  t        dz  z  t        z  dz  «      k(  sJ ‚t        j2                  d‰«      t4        j6                  dz  dt5        d«      dz  fk(  sJ ‚t9        d«      Št        t        ˆˆfd„«       t9        dd¬«      Št        t        ˆˆfd„«       t        dddd«      j;                  «       dk(  sJ ‚t        t        t        t        t        «      j;                  «       t        k(  sJ ‚t        dddd«      j=                  «       t        dddd«      k(  sJ ‚t        t        t        t        t        «      j=                  «       t        dt        t        t        «      k(  sJ ‚‰j?                  «       t        ddt        d«      z  dz  dt        d«      z  dz  dt        d«      z  dz  «      k(  sJ ‚‰j?                  «       j                  d«      t        dddd«      k(  sJ ‚‰j?                  «       j;                  «       dk(  sJ ‚| j?                  «       t        dt        t        t        dz  t        dz  z   t        dz  z   «      z  t        t        t        dz  t        dz  z   t        dz  z   «      z  t        t        t        dz  t        dz  z   t        dz  z   «      z  «      k(  sJ ‚‰jA                  «       du sJ ‚‰jA                  «       du sJ ‚t        dddd«      jA                  «       du sJ ‚t        ddd d«      jA                  «       du sJ ‚t        t        dd d«      jA                  «       �J ‚‰jC                  «       dtE        t        d«      «      z  k(  sJ ‚| jC                  «       dtG        t        t        dz  t        dz  z   t        dz  z   «      t        «      z  k(  sJ ‚t        jH                  ‰t        ddd!d«      «      du sJ ‚t        jH                  ‰t        ddd"d#«      «      du sJ ‚t        jH                  ‰t        ddd$d%«      «      du sJ ‚t        jH                  ‰t        dddd«      «      du sJ ‚t        jH                  ‰t        t        dd!d«      «      du sJ ‚t        jH                  ‰t        dddd«      «      du sJ ‚t        jH                  ‰t        t        t        t        t        «      «      �J ‚t        t        ˆˆfd&„«       t        jJ                  t        ddd$d%«      t        ddd!d«      t        dddd«      «      du sJ ‚t        jJ                  t        dddd«      t        ddd!d«      t        dddd«      «      du sJ ‚t        jJ                  t        dddd!«      t        ddd!d!«      t        dddd«      «      du sJ ‚t        jJ                  t        dddd«      t        ddt        d!«      t        dd!dd«      «      	 �J ‚t        t        ˆˆfd'„«       t        dddd«      jM                  t        dddd!«      «      du sJ ‚t        dddd«      jM                  t        dddd!«      «      du sJ ‚t        dddd«      jM                  t        t        t        t        d!«      «      �J ‚t        t        ˆˆfd(„«       t        dddd«      jO                  t        dddd«      «      du sJ ‚t        dddd«      jO                  t        dddd!«      «      du sJ ‚t        dddd«      jO                  t        t        t        t        d!«      «      �J ‚t        t        ˆˆfd)„«       ‰jQ                  «       t        ddt        d*«      z  dz  dt        d*«      z  dz  dt        d*«      z  dz  «      k(  sJ ‚t        ddd+d«      jQ                  «       t        ddd+d«      k(  sJ ‚t        ddd+d«      jS                  «       t)        t        d,«      «      k(  sJ ‚t        dddd«      jS                  «       t)        t        d«      «      k(  sJ ‚‰jU                  «       du sJ ‚‰jU                  «       du sJ ‚t        t        ddd«      jU                  «       �J ‚y )-Nr'   r$   r%   rD   r   éÿÿÿÿc                  ó$   •— ‰ j                  «       S r,   ©rF   ©r   s   €r0   r1   z+test_quaternion_functions.<locals>.<lambda>    s   ø€ ˜rŸz™z›|€ r2   éþÿÿÿiùÿÿÿéá   é–   ç      à¿c                  ó   •— ‰ dz  S )Nr�   rs   )r@   s   €r0   r1   z+test_quaternion_functions.<locals>.<lambda>¨   s   ø€ ˜b 4™j€ r2   é   é   é<   éZ   éx   rC   rx   rf   Únc                  ó   •— ‰‰ z  S r,   rs   ©r—   r@   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>Ë   ó   ø€ ˜b !™e€ r2   T)Úintegerc                  ó   •— ‰‰ z  S r,   rs   r™   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>Í   rš   r2   é   é   é7   ry   Fé
   é   éýÿÿÿéüÿÿÿé   é   c                  ó0   •— t        j                  ‰‰ «      S r,   )r   Úarc_coplanar©r   r@   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>í   s   ø€ œz×6Ñ6°r¸2Ó>€ r2   c            	      óJ   •— t        j                  ‰ t        dddd«      ‰«      S )Nr   rD   r¡   ry   )r   Úvector_coplanarr¨   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>û   s%   ø€ Ü×"Ñ" 2¤z°!°Q¸¸1Ó'=¸rÓBð r2   c                  ó&   •— ‰ j                  ‰«      S r,   )Úparallelr¨   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>  s   ø€ ˜rŸ{™{¨2›€ r2   c                  ó&   •— ‰ j                  ‰«      S r,   )Ú
orthogonalr¨   s   €€r0   r1   z+test_quaternion_functions.<locals>.<lambda>  s   ø€ ˜rŸ}™}¨RÓ0€ r2   if  é	   éz   )+r   r-   r.   r3   r/   r   r?   r   Ú	normalizerF   Úpowr   r7   r   ÚNotImplementedÚ	TypeErrorÚexpr   r   r   r   r   Úpow_cos_sinr   r   Úrotate_pointr
   ÚOner   Úscalar_partrO   r`   Úis_purera   r   r   r§   rª   r¬   r®   Úindex_vectorÚmensorrN   )r8   r—   r   r@   s    @@@r0   Útest_quaternion_functionsr½   –   sü  ú€ Ü”1”aœœAÓ€AÜ	�A�q˜!˜QÓ	€BÜ	�A�q˜!˜QÓ	€Bä�Q‹<œ:¤a¬!¨¬a¨R´!°Ó4Ò4Ð4Ð4Ø�6‰6‹8”tœA˜q™D¤1 a¡4™K¬!¨Q©$Ñ.´°A±Ñ5Ó6Ò6Ð6Ð6Ø�;‰;‹=œJ¤q¬!¬Q´Ó2´T¼!¸Q¹$ÄÀAÁ¹+ÌÈ1ÉÑ:LÌqÐRSÉtÑ:SÓ5TÑTÒTÐTÐTØ�9‰9‹;œ*¤Q¬¨¬Q¨B´°Ó3´q¸!±t¼aÀ¹d±{ÄQÈÁTÑ7IÌAÈqÉDÑ7PÑQÒQÐQÐQØ�9‰9‹;˜!Ÿ%™% ›)Ò#Ð#Ð#Ü
Œ:Ó+Ô,Ø�5‰5�‹8”z¤! Q¡$¬¨A©¡+´°1±Ñ"4´q¸!±tÑ";¸Q¼q¹SÄ¹UÀAÄaÁCÌÁEÈ1ÌQÉ3ÌqÉ5ÓQÒQÐQÐQØˆq‰6”Z¤ 1¡¤q¨!¡t¡¬a°©dÑ 2´Q¸±TÑ 9¸1¼Q¹3¼q¹5À!ÄAÁ#ÄaÁ%ÈÌ1ÉÌQÉÓOÒOÐOÐOØ�6‰6�"‹:œÜ��SÓœ8 B¨Ó,¬h°r¸3Ó.?ÄÈ"ÈcÓARóTò Tð Tð Tà�‰8”zÜ��SÓœ8 B¨Ó,¬h°r¸3Ó.?ÄÈ"ÈcÓARóTò Tð Tð Tà�6‰6�$‹<œ>Ò)Ð)Ð)Ü
Œ9Ó(Ô)à�6‰6‹8ÜŒq”3”t˜B“x“=Ñ Ø”4˜“8‰|œaÑ¤#¤d¨2£h£-Ñ/°"Ñ4Ø”4˜“8‰|œaÑ¤#¤d¨2£h£-Ñ/°"Ñ4Ø”4˜“8‰|œaÑ¤#¤d¨2£h£-Ñ/°"Ñ4ó6ò6ð 6ð 6ð
 �6‰6‹8ÜŒs”4˜“8‹}Ø”4˜“8‰|œd¤4¨£8¨B¡;Ó/Ñ/°"Ñ4Ø”4˜“8‰|œd¤4¨£8¨B¡;Ó/Ñ/°"Ñ4Ø”4˜“8‰|œd¤4¨£8¨B¡;Ó/Ñ/°"Ñ4ó6ò6ð 6ð 6ð �>‰>˜!ÓÜˆr”C˜œD¤ b£¨"¡Ó-Ñ-Ó.Ñ.Ø”D˜“H‰}œs 1¤t¬D°«H°R©KÓ'8Ñ#8Ó9Ñ9¸BÑ>Ø”D˜“H‰}œs 1¤t¬D°«H°R©KÓ'8Ñ#8Ó9Ñ9¸BÑ>Ø”T˜"“X‰~¤ A¬¬T°"«X°b©[Ó(9Ñ$9Ó :Ñ:¸RÑ?óAòAð Að Aô ”
œ1œa¤¤AÓ&¬Ó*¬j¸¸A¸qÀ!Ó.DÒDÐDÐDä”Z¤¤1¤a¬Ó+¬QÓ/ÜŒq�!‰t�a‰xœ˜A™ ™¤1 a¡4¨!¡8¬Q°©T°A©XÓ6ò7ð 7ð 7ô �aœœA˜q™D¤! Q¡$Ó'×1Ñ1´!Ó4ÜŒq”!�Q‘$�q‘&œ!˜Q™$˜q™&¤! Q¡$ q¡&Ó)ò*ð *ð *ô ”cœ!“fœc¤!›f¤c¨!¬A©#£h´°A´a±C³Ó9×CÑCÄAÓFÜ””A“ˆwœœA›¤ Q¤q¡S£ 	¨!¡¬S°´1±«X°a©ZÓ8ò9ð 9ð 9ô ”a˜‘dœA˜q™D¤! Q¡$¬¬!©¬A©Ó.×8Ñ8¼¼AÓ>ÜŒq�!‰t”A‰v�a‰xœœ1˜a™4™ ™¤1¤Q¡3¤q¨!¡t¡8¬Q°©T´!°Q±$©Y´q©[¸©]Ó;ò<ð <ð <ô ×"Ñ" 9¨bÓ1´a·e±e¸a±iÀÄAÀaÃDÈ1ÁHÐ5MÒMÐMÐMÜˆs‹€AÜ
Œ9”mÔ$Üˆs˜DÔ!€AÜ
Œ9”mÔ$ä�b˜"˜b !Ó$×0Ñ0Ó2°bÒ8Ð8Ð8Ü”aœœAœqÓ!×-Ñ-Ó/´1Ò4Ð4Ð4ä�b˜"˜b !Ó$×0Ñ0Ó2´jÀÀBÈÈAÓ6NÒNÐNÐNÜ”aœœAœqÓ!×-Ñ-Ó/´:¸aÄÄAÄqÓ3IÒIÐIÐIà�7‰7‹9œ
 1 a¬¨R«¡j°¡m°Q´t¸B³x±ZÀ±]ÀAÄdÈ2ÃhÁJÈrÁMÓRÒRÐRÐRØ�7‰7‹9�=‰=˜Óœz¨"¨a°°AÓ6Ò6Ð6Ð6Ø�7‰7‹9× Ñ Ó" aÒ'Ð'Ð'Ø�F‰F‹Hœ
 1Ü#$¤T¬!¨Q©$´°A±©+¼¸1¹Ñ*<Ó%=Ñ#=Ü#$¤T¬!¨Q©$´°A±©+¼¸1¹Ñ*<Ó%=Ñ#=Ü#$¤T¬!¨Q©$´°A±©+¼¸1¹Ñ*<Ó%=Ñ#=ó?ò ?ð @ð ?ð
 �:‰:‹<˜4ÑÐÐØ�:‰:‹<˜5Ñ Ð Ð Ü�a˜˜A˜qÓ!×)Ñ)Ó+¨tÑ3Ð3Ð3Ü�a˜˜B Ó"×*Ñ*Ó,°Ñ4Ð4Ð4Ü”a˜˜B Ó"×*Ñ*Ó,Ð4Ð4Ð4à�8‰8‹:˜œ4¤ R£›>Ñ)Ò)Ð)Ð)Ø�7‰7‹9˜œ%¤¤Q¨¡T¬A¨q©D¡[´1°a±4Ñ%7Ó 8¼!Ó<Ñ<Ò<Ð<Ð<ä×"Ñ" 2¤z°!°Q¸¸1Ó'=Ó>À$ÑFÐFÐFÜ×"Ñ" 2¤z°!°R¸¸RÓ'@ÓAÀTÑIÐIÐIÜ×"Ñ" 2¤z°!°Q¸¸BÓ'?Ó@ÀDÑHÐHÐHÜ×"Ñ" 2¤z°!°Q¸¸1Ó'=Ó>À$ÑFÐFÐFÜ×"Ñ" 2¤z´!°Q¸¸1Ó'=Ó>À$ÑFÐFÐFÜ×"Ñ" 2¤z°!°Q¸¸1Ó'=Ó>À%ÑGÐGÐGÜ×"Ñ" 2¤z´!´Q¼¼1Ó'=Ó>ÐFÐFÐFÜ
Œ:Ô>Ô?ä×%Ñ%Ü�1�a˜˜RÓ Ü�1�a˜˜AÓÜ�1�a˜˜AÓó ð $(ñ(ð (ð (ô ×%Ñ%Ü�1�a˜˜AÓ¤
¨1¨a°°AÓ 6¼
À1ÀaÈÈAÓ8NóPØSWñXð Xð Xä×%Ñ%Ü�1�a˜˜AÓ¤
¨1¨a°°AÓ 6¼
À1ÀaÈÈAÓ8NóPØSXñYð Yð Yä×%Ñ%Ü�1�a˜˜AÓÜ�1�aœ˜AÓÜ�1�a˜˜AÓó ð $(ð(ð (ð (ô Œ:ô Cô Dô �a˜˜A˜qÓ!×*Ñ*¬:°a¸¸A¸qÓ+AÓBÀdÑJÐJÐJÜ�a˜˜A˜qÓ!×*Ñ*¬:°a¸¸A¸qÓ+AÓBÀeÑKÐKÐKÜ�a˜˜A˜qÓ!×*Ñ*¬:´a¼¼A¸qÓ+AÓBÐJÐJÐJÜ
Œ:Ô.Ô/ä�a˜˜A˜qÓ!×,Ñ,¬Z¸¸2¸qÀ!Ó-DÓEÈÑMÐMÐMÜ�a˜˜A˜qÓ!×,Ñ,¬Z¸¸1¸aÀÓ-CÓDÈÑMÐMÐMÜ�a˜˜A˜qÓ!×,Ñ,¬Z¼¼1¼aÀÓ-CÓDÐLÐLÐLÜ
Œ:Ô0Ô1à�?‰?Ó¤
Ø	ˆ1ŒT�#‹Y‰;�r‰>Ø	Œ$ˆs‹)‰�B‰Ø	Œ$ˆs‹)‰�B‰ó!ò ð ð ô �a˜˜A˜qÓ!×.Ñ.Ó0´J¸qÀ!ÀQÈÓ4JÒJÐJÐJä�a˜˜A˜qÓ!×(Ñ(Ó*¬c´$°s³)«nÒ<Ð<Ð<Ü�a˜˜A˜qÓ!×(Ñ(Ó*¬c´$°r³(«mÒ;Ð;Ð;à× Ñ Ó" dÑ*Ð*Ð*Ø× Ñ Ó" eÑ+Ð+Ð+Ü”a˜˜A˜qÓ!×4Ñ4Ó6Ð>Ð>Ñ>r2   c                  ó�  — t        dddd«      } | j                  «       dt        d«      z  dz  dt        d«      z  dz  dt        d«      z  dz  fdt        t        d«      dz  «      z  fk(  sJ ‚| j	                  «       t        t        dd«      t        dd«      t        d	d«      gt        dd«      t        d
d«      t        dd«      gt        dd«      t        dd«      t        dd«      gg«      k(  sJ ‚| j	                  d«      t        t        dd«      t        dd«      t        d	d«      t        dd«      gt        dd«      t        d
d«      t        dd«      t        j                  gt        dd«      t        dd«      t        dd«      t        dd«      gt        j                  t        j                  t        j                  t        j                  gg«      k(  sJ ‚t        dd¬«      }t        t        |dz  «      ddt        |dz  «      «      }t        |j	                  «       «      t        t        |«      t        |«       dgt        |«      t        |«      dgg d¢g«      k(  sJ ‚|j                  «       ddt        |dz  «      t        t        |dz  «      «      z  fdt        t        |dz  «      «      z  fk(  sJ ‚t        |j	                  d«      «      t        t        |«      t        |«       dt        |«      t        |«      z
  dz   gt        |«      t        |«      dt        |«       t        |«      z
  dz   gg d¢g d¢g«      k(  sJ ‚y )Nr'   r$   r%   rD   r’   r“   r�   é   r|   r‰   re   rC   rx   ÚthetaTrp   r   r&   r]   r^   )r   Úto_axis_angler   r   rW   r   r   r
   ÚZeror¸   r   r   r   r   r   )r@   rÀ   r9   s      r0   Útest_quaternion_conversionsrÃ     s  € Ü	�A�q˜!˜QÓ	€Bà×ÑÓ 1¤t¨B£x¡<°¡?Ø#$¤t¨B£x¡<°¡?Ø#$¤t¨B£x¡<°¡?ð#4ð $%¤t¬D°«H°R©KÓ'8Ñ#8ð":ò :ð :ð :ð
 ×!Ñ!Ó#Ü”X˜b !“_¤h¨q°"£o´xÀÀBÓ7GÐHÜ˜a “^¤X¨b°!£_´h¸qÀ!³nÐEÜ˜a “^¤X¨b°"Ó%5´xÀÀ2³ÐGðIó JòJð Kð Jð
 ×!Ñ! )Ó,ÜÜ˜"˜a“¤(¨1¨b£/´8¸BÀÓ3CÄXÈaÐQRÃ^ÐTÜ˜!˜Q“¤¨"¨a£´(¸1¸a³.Ä!Ç&Á&ÐIÜ˜!˜Q“¤¨"¨bÓ!1´8¸A¸r³?ÄHÈRÐQRÃOÐTÜ—‘œŸ™¤§¡¬¯©Ð/ð	1ó 2ò2ð 3ð 2ô �G $Ô'€EÜ	”C˜˜a™“L ! Q¬¨E°!©G«Ó	5€Bä�B×)Ñ)Ó+Ó,´Ü03°E³
¼SÀ»Z¸KÈÐ/KÜ03°E³
¼SÀ»ZÈÐ/KÚ/Kð8Mó 1Nò Nð Nð Nð
 ×ÑÓ 1 a¬¨U°1©W«´c¼#¸eÀA¹g»,Ó6GÑ)GÐ"HØ#$¤T¬#¨e°A©g«,Ó%7Ñ#7ð"9ò 9ð 9ð 9ô �B×)Ñ)¨)Ó4Ó5¼Ü�E“
œS ›Z˜K¨¬C°«J¼¸U»Ñ,CÀaÑ,GÐHÜ�E“
œS ›Z¨¬S°«Z¨K¼#¸e»*Ñ,DÀqÑ,HÐIÚ/Ú/ð	A1ó :2ò 2ð 2ñ 2r2   c                  óø   — t        t        t        t        t        «      } | j                  d¬«      | j                  «       dz  z  }t        | j                  d¬«      | j                  «       dz  z  «      }||k(  sJ ‚y )NT)Úhomogeneousr$   F)r   r-   r.   r3   r/   rW   r?   r   )r8   rX   rY   s      r0   Ú test_rotation_matrix_homogeneousrÆ   ;  sf   € Ü”1”aœœAÓ€AØ	
×	Ñ	¨$Ð	Ó	/°!·&±&³(¸A±+Ñ	=€BÜ	�!×&Ñ&°5Ð&Ó9¸A¿F¹F»HÀa¹KÑGÓ	H€BØ�Š8€O‰8r2   c            
      ó.  — t        t        t        dz  «      t        t        dz  «      dd«      } t	        | j                  «       «      t        g d¢dt        t        «      t        t        «       gdt        t        «      t        t        «      gg«      k(  sJ ‚y)a3  
    There was a sign mistake in the definition,
    of the rotation matrix. This tests that particular sign mistake.
    See issue 1593 for reference.
    See wikipedia
    https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Quaternion-derived_rotation_matrix
    for the correct definition
    r$   r   r\   N)r   r   r"   r   r   rW   r   rƒ   s    r0   Ú test_quaternion_rotation_iss1593rÈ   B  sy   € ô 	”3”s˜1‘u“:œs¤3 q¡5›z¨1¨aÓ0€AÜ�A×(Ñ(Ó*Ó+¬vÚ(Ø”Cœ“Hœs¤3›x˜iÐ(Ø”Cœ“Hœs¤3›xÐ(ð7*ó 0+ò +ð ,ñ +r2   c            	      óX  — t        ddt        z  z   ddt        z  z   dddt        z  z   d¬	«      } t        d
ddd«      }t        d
d
d
t        «      }t        j                  t	        d«      t        j
                  «      dk(  sJ ‚t        j                  t	        d«      | «      t        ddt        z  z   ddt        z  z   dddt        z  z   «      k(  sJ ‚|j                  d«      t        dddd«      k(  sJ ‚|j                  |«      t        dt        z  dz
  dt        z  dz
  ddt        z  z
  t        dz   «      k(  sJ ‚|j                  |«      ||z  k(  sJ ‚t        dd¬«      }t        t        |«      t        |«      dd«      }t        t        dd¬«      Ž }||z  ||z  k(  sJ ‚||z  ||z  k(  sJ ‚y )Nr%   rD   r$   rx   r   rf   ry   Frz   r'   r¤   r¥   é   é   é    r¡   r    r~   r¯   r/   Trn   zq:4rp   )
r   r   r3   Ú_generic_mulr
   r¸   Úmulr   r   r   )r@   r9   r;   r/   Úz_quatr8   s         r0   Útest_quaternion_multiplicationrÐ   R  s‘  € Ü	�A˜œ!™‘G˜Q ¤1¡™W a¨¨Q¬q©S©¸uÔ	E€BÜ	�A�q˜!˜QÓ	€BÜ	�A�q˜!œQÓ	€Bä×"Ñ"¤1 Q£4¬¯©Ó/°1Ò4Ð4Ð4Ü×#Ñ#¤A a£D¨"Ó-Ü�r˜Bœq™D‘y ! b¬¡d¡(¨A¨r°B´q±D©yÓ9ò:ð ;ð :à�6‰6�!‹9œ
 1 a¨¨BÓ/Ò/Ð/Ð/Ø�6‰6�"‹:œ B¤q¡D¨1¡H¨a´©c°A©g°q¸1¼Q¹3±wÄÀAÁÓFÒFÐFÐFØ�6‰6�"‹:˜˜B™ÒÐÐä�˜TÔ"€AÜœ˜1›œr !›u a¨Ó+€FÜ”G˜E¨Ô-Ð.€Aàˆq‰5�F˜Q‘JÒÐÐØˆq‰5�A˜‘JÒÐÑr2   c                  ó¾  ‡— t        dddd«      Št        t        ˆfd„«       t        dddd«      } | j                  «       \  }}t        j                  d||f«      t
        j                  dz  dt        d	«      dz  fk(  sJ ‚t        d
ddd«      } t        d«       dz  t        d«       dz  t        d«       dz  f}dt        z  dz  }||f| j                  «       k(  sJ ‚y )Nr   c                  ó   •— d‰ z  S )Nr'   rs   rŒ   s   €r0   r1   z"test_issue_16318.<locals>.<lambda>i  s   ø€ ˜q ™t€ r2   r'   r$   r%   rD   rC   rx   rf   r‰   )	r   r   r7   rÁ   r·   r
   r¸   r   r	   )r8   r`   ra   r   s      @r0   Útest_issue_16318rÓ   f  sÕ   ø€ ä	�A�q˜!˜QÓ	€BÜ
Œ:“|Ô$ä�1�a˜˜AÓ€AØ—O‘OÓ%�M€Tˆ5Ü×"Ñ" 9¨t°U¨mÓ<ÄÇÁÈÁÈAÌqÐQRËtÐVWÉxÐ@XÒXÐXÐXä�2�q˜!˜QÓ€AÜ�!‹WˆH�Q‰Jœ˜a›˜ ™
¤T¨!£W H¨Q¡JÐ/€DØŒb‰D�‰F€EØ�%ˆ=˜AŸO™OÓ-Ò-Ð-Ñ-r2   c                  ó0  — t        t        t        t        t        «      } | j                  «       }g d¢}||D �cg c]  }|j                  «       ‘Œ c}z  }|D ]9  }| j                  |«      }t        t        j                  ||«      «      }||k(  rŒ9J ‚ y c c}w )N)ÚzxyÚzyxÚzyzÚzxz)
r   r-   r.   r3   r/   r±   ÚupperÚto_eulerr   Ú
from_euler)r8   Úq_normalizedÚseqsÚseqÚeuler_from_qÚq_backs         r0   Útest_to_eulerrá   u  sƒ   € ä”1”aœœAÓ€AØ—;‘;“=€Lâ'€DØ DÖ)˜SˆS�Y‰Y�[Ò)Ñ)€Dàò &ˆØ—z‘z #“ˆÜœ*×/Ñ/°¸cÓBÓCˆØ˜Ó%Ð%Ð%ñ&ùò *s   ¸Bc                  óŽ   — t        j                  t        ddfd«      } t        | j	                  d«      d¬«      t        ddfk(  sJ ‚y)z_
    There was a mistake in the degenerate case testing
    See issue 24504 for reference.
    r   r×   Tr‹   N)r   rÛ   r"   r   rÚ   rƒ   s    r0   Útest_to_euler_iss24504rã   ƒ  s@   € ô
 	×Ñœs A q˜k¨5Ó1€AÜ�A—J‘J˜uÓ%¨tÔ4¼¸aÀ¸ÒCÐCÑCr2   c                  ó†  — d„ }  | t         dz  ddfd«        | t         dz  ddfd«        | t         dz  t         dfd«        | t         dz  t         dfd«        | t         dz  t         dz  dfd«        | t         dz  t          dz  dfd«        | t         dz  t         dz  dfd«        | t         dz  t          dz  dfd«       y )Nc                 ó\   — t        j                  | |«      }|j                  |«      | k(  sJ ‚y r,   )r   rÛ   rÚ   )ÚanglesrÞ   r8   s      r0   Útest_one_casez<test_to_euler_numerical_singilarities.<locals>.test_one_caseŽ  s*   € Ü×!Ñ! &¨#Ó.ˆØ�z‰z˜#‹ &Ò(Ð(Ñ(r2   r$   r   r×   ÚZYZrÖ   ÚZYX)r	   )rç   s    r0   Ú%test_to_euler_numerical_singilaritiesrê   Œ  sÃ   € ò)ñ
 ”2�a‘4˜!˜Q�- Ô'Ù”2�a‘4˜!˜Q�- Ô'Ù”2�a‘4œ"˜a�. %Ô(Ù”2�a‘4œ"˜a�. %Ô(ñ ”2�a‘4œ"˜Q™$ Ð" EÔ*Ù”2�a‘4œ2˜#˜a™% Ð# UÔ+Ù”2�a‘4œ"˜Q™$ Ð" EÔ*Ù”2�a‘4œ2˜#˜a™% Ð# UÕ+r2   c            	      ó  ‡— ˆfd„} dD ]  }t        |«      D ]o  }dD ]h  }|rdj                  |d   |d   |d   g«      Šndj                  |«      Št        g d¢d¬	«      D ]#  }t        |Ž }|j	                  «       rŒ | |«       Œ% Œj Œq Œ� y )
Nc                 óþ   •— t        | j                  ‰dd«      «      }t        | j                  ‰dd«      «      }t        ||z
  «      j                  «       }|D ]#  }|t        z   dt        z  z  t        z
  }|dk  rŒ#J ‚ y )NTFr$   g�íµ ÷Æ°>)r   rÚ   r   r†   r	   )r8   Úangles1Úangles2Úangle_errorsÚangle_errorrÞ   s        €r0   rç   z,test_to_euler_options.<locals>.test_one_case¡  s}   ø€ Ü˜Ÿ™ C¨¨tÓ4Ó5ˆÜ˜Ÿ™ C¨°Ó6Ó7ˆÜ ¨¡Ó0×6Ñ6Ó8ˆØ'ò 	'ˆKà&¬Ñ+°´B±Ñ7¼"Ñ<ˆKØ Ó&Ð&Ð&ñ	'r2   )ÚxyzÚXYZ)TFÚ r   r'   )r‰   r   r'   rD   )Úrepeat)r    Újoinr!   r   rN   )rç   rñ   Ú	seq_tupleÚ	symmetricÚelementsr8   rÞ   s         @r0   Útest_to_euler_optionsrù   Ÿ  s¢   ø€ ô'ð ò )ˆÜ% cÓ*ò 
	)ˆIØ*ò 	)�	ÙØŸ'™' 9¨Q¡<°¸1±¸yÈ¹|Ð"LÓM‘CàŸ'™' )Ó,�Cä 'ª
¸1Ô =ò )�HÜ" HÐ-�AØ×/Ñ/Õ1Ù% aÕ(ñ)ñ	)ñ
	)ñ)r2   )HÚsympy.testing.pytestr   Úsympy.core.functionr   r   Úsympy.core.numbersr   r   r   r	   Úsympy.core.singletonr
   Úsympy.core.symbolr   r   Ú$sympy.functions.elementary.complexesr   r   r   r   r   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   r   r   r   r   r   Úsympy.integrals.integralsr   Úsympy.matrices.denser   Úsympy.simplifyr   Úsympy.simplify.trigsimpr   Úsympy.algebras.quaternionr   r   rE   Ú	itertoolsr    r!   r-   r.   r3   r/   r"   r<   rA   rJ   rR   rZ   rc   rl   r€   r„   r‡   r½   rÃ   rÆ   rÈ   rÐ   rÓ   rá   rã   rê   rù   rs   r2   r0   ú<module>r	     sç   ðÝ %Ý $Ý &ß 3Ó 3Ý "ß /ß OÕ OÝ 6Ý 9ß X× XÝ /Ý 'Ý #Ý ,Ý 0Ý 'Û ß +á�U‹^�
€€1€aˆÙˆeƒn€ò8ò$)ò'ò;òòPò$4òòB4ò
Hò}?ò~#2òLò,ò ò(.ð ñ
&ó ð
&òDò,ð& ñ)ó ñ)r2   