Ë
    åÞËjOc  ã                   ó¤  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
Z
ddlmZ d dlmZ  edd«      ZdKd	„Z e
j$                  d
¬«      d„ «       Z e
j$                  d
¬«      d„ «       Z e
j$                  d
¬«      d„ «       Z e
j$                  d
¬«      d„ «       Z e
j$                  d
¬«      d„ «       Z e
j$                  d
¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
j>                  jA                   e	jB                  «       dk7  xs ejD                  dk  d¬«      d„ «       Z#e
j>                  jA                   e	jB                  «       dk7  xs ejD                  dk  d¬«      d„ «       Z$e
j>                  jJ                  d„ «       Z&d„ Z'd „ Z(d!„ Z)d"„ Z*d#„ Z+d$„ Z,d%„ Z-d&„ Z.d'„ Z/d(„ Z0d)„ Z1d*„ Z2d+„ Z3d,„ Z4e
j>                  jK                  d-¬«      d.„ «       Z5d/„ Z6d0„ Z7d1„ Z8d2„ Z9d3„ Z:d4„ Z;d5„ Z<d6„ Z=d7„ Z>e
j>                  jK                  d-¬«      d8„ «       Z?d9„ Z@d:„ ZAd;„ ZBd<„ ZCd=„ ZDd>„ ZEd?„ ZFd@„ ZGdA„ ZHdB„ ZIdC„ ZJdD„ ZKdE„ ZLdF„ ZMdG„ ZNdH„ ZOdI„ ZPdJ„ ZQy)Lé    N)ÚPath)Ú
namedtupleé   )Úutil)ÚmainÚPPathsz(finp, f90inp, pyf, wrap77, wrap90, cmodfc                 ó   — t        | «      }t        |j                  d«      |j                  d«      |j                  d«      |j                  |› d�«      |j                  |› d�«      |j                  |› d�«      ¬«      S )ax  Takes in a temporary file for testing and returns the expected output and input paths

    Here expected output is essentially one of any of the possible generated
    files.

    ..note::

         Since this does not actually run f2py, none of these are guaranteed to
         exist, and module names are typically incorrect

    Parameters
    ----------
    fname_inp : str
                The input filename
    mname : str, optional
                The name of the module, untitled by default

    Returns
    -------
    genp : NamedTuple PPaths
            The possible paths which are generated, not all of which exist
    z.fz.f90ú.pyfz-f2pywrappers.fz-f2pywrappers2.f90úmodule.c)ÚfinpÚf90inpÚpyfÚwrap77Úwrap90Úcmodf)r   r   Úwith_suffixÚ	with_name)Ú	fname_inpÚmnameÚbpaths      úY/var/www/photos/backend/venv/lib/python3.12/site-packages/numpy/f2py/tests/test_f2py2e.pyÚget_io_pathsr      s~   € ô. �‹O€EÜØ×Ñ˜tÓ$Ø× Ñ  Ó(Ø×Ñ˜fÓ%Ø�‰ % ¨Ð8Ó9Ø�‰ % Ð(:Ð;Ó<Ø�o‰o   xÐ0Ó1ôð ó    Úsession)Úscopec                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )ú'Generates a single f90 file for testingÚtestsÚsrcÚclizhiworld.f90z	hello.f90Úascii©Úencoding©r   ÚgetpathÚ	read_textÚgetbasetempÚ
write_text©Útmpdir_factoryÚfdatÚfns      r   Úhello_world_f90r-   9   sI   € ô �<‰<˜ ¨¨}Ó=×GÑGÓI€DØ	×	#Ñ	#Ó	%¨Ñ	3€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )z(F90 file for testing warnings in gh23598r   r   Úcrackfortranzgh23598Warn.f90r!   r"   r$   r)   s      r   Úgh23598_warnr0   B   sK   € ô �<‰<˜ ¨Ð8IÓJ×TÑTÓV€DØ	×	#Ñ	#Ó	%Ð(9Ñ	9€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )z8F90 file for testing disallowed CLI arguments in ghff819r   r   r    zgh_22819.pyfr!   r"   r$   r)   s      r   Úgh22819_clir2   K   sI   € ô �<‰<˜ ¨¨~Ó>×HÑHÓJ€DØ	×	#Ñ	#Ó	%¨Ñ	6€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )ú'Generates a single f77 file for testingr   r   r    zhi77.fzhello.fr!   r"   r$   r)   s      r   Úhello_world_f77r5   T   sI   € ô �<‰<˜ ¨¨xÓ8×BÑBÓD€DØ	×	#Ñ	#Ó	%¨	Ñ	1€BØ‡M�M�$ €MÔ)Ø€Ir   c                 óž   — t        j                  dddd«      j                  «       }| j                  «       dz  }|j	                  |d¬«       |S )r4   r   r   Úreturn_realzfoo77.fzfoo.fr!   r"   r$   r)   s      r   Úretreal_f77r8   ]   sI   € ô �<‰<˜ ¨°yÓA×KÑKÓM€DØ	×	#Ñ	#Ó	%¨Ñ	/€BØ‡M�M�$ €MÔ)Ø€Ir   c                 ó6  — t        j                  dddd«      j                  «       }t        j                  dddd«      j                  «       }| j                  «       dz  }| j                  «       dz  }|j	                  |d¬	«       |j	                  |d¬	«       |S )
r   r   r   Úf2cmapzisoFortranEnvMap.f90z.f2py_f2cmapz
f2cmap.f90Úmapfiler!   r"   r$   )r*   r+   r:   r,   Úfmaps        r   Ú
f2cmap_f90r=   e   sŠ   € ô �<‰<˜ ¨Ð2HÓI×SÑSÓU€DÜ�\‰\˜' 5¨(°NÓC×MÑMÓO€FØ	×	#Ñ	#Ó	%¨Ñ	4€BØ×%Ñ%Ó'¨)Ñ3€DØ‡M�M�$ €MÔ)Ø‡O�O�F W€OÔ-Ø€Ir   c                 ó¨  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        «        |j                  j                  d«      D �cg c]  }|j                  «       sŒ|j                  ‘Œ! }}d|vsJ ‚d|vsJ ‚d|v sJ ‚d|v sJ ‚	 ddd«       yc c}w # 1 sw Y   yxY w)	zÝCheck that module names are handled correctly
    gh-22819
    Essentially, the -m name cannot be used to import the module, so the module
    named in the .pyf needs to be used instead

    CLI :: -m and a .pyf file
    Úargvúf2py -m blah Ú*zblahmodule.czblah-f2pywrappers.fztest_22819-f2pywrappers.fztest_22819module.cN)r   ÚsetattrÚsysÚsplitr   Ú	switchdirÚparentÚf2pycliÚrglobÚis_fileÚname)Úcapfdr2   ÚmonkeypatchÚipathÚitemÚ	gen_pathss         r   Útest_gh22819_clirP   q   sË   € ô �Ó€EØ×Ñœ˜V }°U°GÐ%<×%BÑ%BÓ%DÔEÜ	�‰˜Ÿ™Ó	%ñ ÜŒ	Ø+0¯<©<×+=Ñ+=¸cÓ+BÖU 4ÀdÇlÁlÅn�T—Y“YÐUˆ	ÐUØ YÑ.Ð.Ð.Ø$¨IÑ5Ð5Ð5Ø*¨iÑ7Ð7Ð7Ø# yÑ0Ð0Ð0Ø÷ð ùâU÷ð ús$   Á(CÁ;CÂCÂCÃCÃCc                 óH  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        j                  t        d¬«      5  t        «        ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)zBOnly one .pyf file allowed
    gh-22819
    CLI :: .pyf files
    r?   r@   z
 hello.pyfzOnly one .pyf file per call)ÚmatchN)r   rB   rC   rD   r   rE   rF   ÚpytestÚraisesÚ
ValueErrorrG   )rK   r2   rL   rM   s       r   Útest_gh22819_many_pyfrV   …   s…   € ô
 �Ó€EØ×Ñœ˜V }°U°G¸:Ð%F×%LÑ%LÓ%NÔOÜ	�‰˜Ÿ™Ó	%ñ Ü�]‰]œ:Ð-JÔKñ 	ÜŒI÷	÷ð ÷	ð 	ú÷ð ús$   ÁBÁ0BÁ;BÂB	ÂBÂB!c                 óF  — t        |d¬«      }|j                  }|j                  t        dd|› d�j	                  «       «       t        j                  |j                  «      5  t        «        |j                  j                  «       }d|vsJ ‚	 d d d «       y # 1 sw Y   y xY w)NÚtest©r   r?   úf2py z -m testzintproductf2pywrap, intpr)r   r   rB   rC   rD   r   rE   rF   rG   r   r&   )rK   r0   rL   ÚfoutlrM   Úwrappers         r   Útest_gh23598_warnr]   ‘   s‹   € Ü˜¨VÔ4€EØ�L‰L€EØ×ÑÜˆVØ
�ˆw�hÐ×%Ñ%Ó'ô)ô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ø—,‘,×(Ñ(Ó*ˆØ*°'Ñ9Ð9Ñ9÷:÷ :ñ :ús   Á"+BÂB c                 óˆ  — t        |«      }t        |«      j                  dz   }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        |› «      j                  «       sJ ‚	 ddd«       y# 1 sw Y   yxY w)zIEnsures that a signature file is generated via the CLI
    CLI :: -h
    r
   r?   zf2py -h ú úSaving signatures to fileN)r   ÚstemrB   rC   rD   r   rE   rF   rG   Ú
readouterrÚexists)rK   r-   rL   rM   ÚopathÚoutÚ_s          r   Útest_gen_pyfrg   ž   s®   € ô �Ó!€EÜ�Ó!×&Ñ&¨Ñ/€EØ×Ñœ˜V x°¨w°a¸°wÐ%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ )ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ð1Ü�u�gÓ×&Ñ&Ô(Ð(Ñ(÷	)÷ )ñ )ús   Á.A B8Â8Cc                 ó&  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚d|v sJ ‚	 ddd«       y# 1 sw Y   yxY w)zHEnsures that a signature file can be dumped to stdout
    CLI :: -h
    r?   zf2py -h stdout r`   zfunction hi() ! in N©	r   rB   rC   rD   r   rE   rF   rG   rb   ©rK   r-   rL   rM   re   rf   s         r   Útest_gen_pyf_stdoutrk   ­   sˆ   € ô �Ó!€EØ×Ñœ˜V °u°gÐ%>×%DÑ%DÓ%FÔGÜ	�‰˜Ÿ™Ó	%ñ ,ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ð1Ø$¨Ñ+Ð+Ñ+÷	,÷ ,ñ ,ús   Á*BÂBc                 ó®  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        d«      j                  dd¬«       t        j                  t        «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)	zjEnsures that the CLI refuses to overwrite signature files
    CLI :: -h without --overwrite-signature
    r?   úf2py -h faker.pyf ú	faker.pyfú	Fake newsr!   r"   z&Use --overwrite-signature to overwriteN)r   rB   rC   rD   r   rE   rF   r(   rS   rT   Ú
SystemExitrG   rb   )rK   r-   rL   rM   rf   Úerrs         r   Útest_gen_pyf_no_overwriterr   º   sÂ   € ô �Ó!€EØ×Ñœ˜VÐ'9¸%¸Ð%A×%GÑ%GÓ%IÔJä	�‰˜Ÿ™Ó	%ñ CÜˆ[Ó×$Ñ$ [¸7Ð$ÔCÜ�]‰]œ:Ó&ñ 	CÜŒIØ×%Ñ%Ó'‰FˆAˆsØ;¸sÑBÐBÑB÷	C÷Cð C÷	Cð 	Cú÷Cð Cús$   Á6CÂ	$B?Â.CÂ?C	ÃCÃCÚLinux)é   é   zCompiler and 3.12 required)Úreasonc                 ó  — t        |«      }|j                  t        dd|› �j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   yxY w)z@Check that modules are named correctly

    CLI :: defaults
    r?   zf2py --backend meson -c zuntitledmodule.cNri   rj   s         r   Útest_untitled_clirx   É   s{   € ô �Ó!€EØ×Ñœ˜VÐ'?À¸wÐ%G×%MÑ%MÓ%OÔPÜ	�‰˜Ÿ™Ó	%ñ )ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ! SÑ(Ð(Ñ(÷)÷ )ñ )ús   Á$BÂB
c           	      óF  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       |j                  t        ddj	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d	|v sJ ‚	 ddd«       d
}|j                  t        dd|› d|› d�j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   ŒõxY w# 1 sw Y   Œ�xY w# 1 sw Y   yxY w)zqCheck that no distutils imports are performed on 3.12
    CLI :: --fcompiler --help-link --backend distutils
    ÚhirY   r?   rZ   z -c --fcompiler=gfortran -m z%--fcompiler cannot be used with mesonNzf2py --help-linkzUse --dep for meson buildsÚhi2z -c -m z --backend distutilsz.Cannot use distutils backend with Python>=3.12)
r   r   rB   rC   rD   r   rE   rF   rG   rb   )rK   r-   rL   ÚMNAMEr[   rM   re   rf   s           r   Ú!test_no_py312_distutils_fcompilerr}   Ø   sŽ  € ð
 €EÜ˜°Ô6€EØ�L‰L€EØ×ÑÜˆV�u˜U˜GÐ#?À¸wÐG×MÑMÓOôô 
�‰˜Ÿ™Ó	%ñ >ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ6¸#Ñ=Ð=Ñ=÷>ð ×ÑÜˆVÐ'×.Ñ.Ó0ôô 
�‰˜Ÿ™Ó	%ñ 3ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ+¨sÑ2Ð2Ñ2÷3ð €EØ×ÑÜˆV�u˜U˜G 7¨5¨'Ð1EÐF×LÑLÓNôô 
�‰˜Ÿ™Ó	%ñ GÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ?À3ÑFÐFÑF÷Gð G÷>ð >ú÷3ð 3ú÷Gð Gús$   Á&$E?Ã$FÅ$FÅ?FÆFÆF c                 ó´  — t        |d¬«      }|j                  }d}d}|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j	                  «       D ]  }	d|	› d	�|v rŒJ ‚ |j	                  «       D ]  }
d
|
› d�|v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)z9Tests that functions can be skipped
    CLI :: skip:
    rX   rY   út0 t4 t8 sd s8 s4útd s0r?   rZ   z -m test skip: z=buildmodule: Could not found the body of interfaced routine "ú". Skipping.úConstructing wrapper function "ú"N©
r   r   rB   rC   rD   r   rE   rF   rG   rb   )rK   r8   rL   r[   rM   ÚtoskipÚ	remainingre   rq   ÚskeyÚrkeys              r   Útest_f2py_skipr‰   ø   s÷   € ô
 ˜¨FÔ3€EØ�J‰J€EØ €FØ€IØ×ÑÜˆVØ
�ˆw�o f XÐ.×4Ñ4Ó6ô8ô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàOÐPTÈvÐUaÐbØòððð	ð —O‘OÓ%ò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ Dúó   Á(9CÂ"CÃCÃCc                 ó´  — t        |d¬«      }|j                  }d}d}|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j	                  «       D ]  }	d|	› d	�|v rŒJ ‚ |j	                  «       D ]  }
d
|
› d�|v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)z>Test that functions can be kept by only:
    CLI :: only:
    rX   rY   r   r€   r?   rZ   z -m test only: ú<buildmodule: Could not find the body of interfaced routine "r�   r‚   rƒ   Nr„   )rK   r8   rL   r[   rM   r…   Útokeepre   rq   r‡   rˆ   s              r   Útest_f2py_onlyrŽ     sõ   € ô ˜¨FÔ3€EØ�J‰J€EØ €FØ€FØ×ÑÜˆVØ
�ˆw�o f XÐ.×4Ñ4Ó6ô8ô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàNÈtÈfÐT`ÐaØòððð	ð —L‘L“Nò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ DúrŠ   c                 óÚ  — t        |d¬«      }|j                  }d}t        |«      }d}d}	|j                  t        dd|› d|	› d	|› d
|› �j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }
}|j                  «       D ]  }d|› d�|v rŒJ ‚ |j                  «       D ]  }d|› d�|
v rŒJ ‚ 	 ddd«       y# 1 sw Y   yxY w)zfTests that it is possible to return to file processing mode
    CLI :: :
    BUG: numpy-gh #20520
    rX   rY   r   ztd s0 hiÚblahr?   rZ   ú -m z only: z : rŒ   r�   r‚   rƒ   N)r   r   r   rB   rC   rD   r   rE   rF   rG   rb   )rK   r-   r8   rL   r[   rM   r…   Úipath2r�   r   re   rq   r‡   rˆ   s                 r   Útest_file_processing_switchr“   '  s  € ô ˜¨FÔ3€EØ�J‰J€EØ €FÜ�/Ó"€FØ€FØ€EØ×ÑÜØØ
�ˆw�d˜5˜' ¨¨°°F°8Ð<×BÑBó 	
ôô 
�‰˜Ÿ™Ó	%ñ DÜŒ	Ø×#Ñ#Ó%‰ˆˆSØ—L‘L“Nò 	ˆDàNÈtÈfÐT`ÐaØòððð	ð —L‘L“Nò 	DˆDØ4°T°F¸!Ð<ÀÒCÐCÐCñ	D÷D÷ Dñ Dús   Á;9C!Â5C!ÃC!Ã!C*c                 ó�  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› �j	                  «       «       t        j                  |j                  «      5  t        «        ddd«       t        j                  |j                  «      sJ ‚t        j                  |j                  «      sJ ‚y# 1 sw Y   ŒLxY w)zHChecks the generation of files based on a module name
    CLI :: -m
    rz   rY   r?   rZ   r‘   N)r   r   rB   rC   rD   r   rE   rF   rG   r   rc   r   r   )rK   r-   rL   r|   r[   rM   s         r   Útest_mod_gen_f77r•   E  sž   € ð €EÜ˜°Ô6€EØ�L‰L€EØ×Ñœ˜V u¨U¨G°4¸°wÐ%?×%EÑ%EÓ%GÔHÜ	�‰˜Ÿ™Ó	%ñ ÜŒ	÷ô �;‰;�u—{‘{Ô#Ð#Ð#ä�;‰;�u—|‘|Ô$Ð$Ñ$÷ð ús   Á&B<Â<Cc           	      ó˜  — d}t        ||¬«      }|j                  }|j                  t        dd|› d|› d�j	                  «       «       t        j                  |j                  «      5  t        «        t        d«      j                  «       5 }|j                  «       }d|v sJ ‚	 d	d	d	«       d	d	d	«       y	# 1 sw Y   ŒxY w# 1 sw Y   y	xY w)
z�Check that pyf files are correctly generated with module structure
    CLI :: -m <name> -h pyf_file
    BUG: numpy-gh #20520
    rz   rY   r?   rZ   r‘   z
 -h hi.pyfzhi.pyfzpython module hiN)r   r   rB   rC   rD   r   rE   rF   rG   r   ÚopenÚread)rK   r5   rL   r|   r[   rM   ÚhipyfÚpyfdats           r   Útest_mod_gen_gh25263r›   V  s·   € ð
 €EÜ˜°Ô6€EØ�J‰J€EØ×Ñœ˜V u¨U¨G°4¸°w¸jÐ%I×%OÑ%OÓ%QÔRÜ	�‰˜Ÿ™Ó	%ñ 0ÜŒ	Ü�(‹^× Ñ Ó"ð 	0 eØ—Z‘Z“\ˆFØ%¨Ñ/Ð/Ñ/÷	0÷0ð 0÷	0ð 	0ú÷0ð 0ús$   Á'$C ÂB4Â#C Â4B=	Â9C Ã C	c                 ó  — t        |d¬«      }|j                  }t        j                  d«      }t        j                  d«      }|j	                  t
        dd|› d�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      €J ‚|j                  |«      �J ‚	 ddd«       |j	                  t
        dd|› d	�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      �J ‚|j                  |«      €J ‚	 ddd«       y# 1 sw Y   ŒŸxY w# 1 sw Y   yxY w)
zHLowers cases by flag or when -h is present

    CLI :: --[no-]lower
    rX   rY   zHI\(\)zhi\(\)r?   rZ   z -m test --lowerNz -m test --no-lower)r   r   ÚreÚcompilerB   rC   rD   r   rE   rF   rG   rb   Úsearch©	rK   r5   rL   r[   rM   ÚcapshiÚcapslore   rf   s	            r   Útest_lower_cmodr£   f  sV  € ô
 ˜°Ô7€EØ�J‰J€EÜ�Z‰Z˜	Ó"€FÜ�Z‰Z˜	Ó"€Fà×Ñœ˜V u¨U¨GÐ3CÐ%D×%JÑ%JÓ%LÔMÜ	�‰˜Ÿ™Ó	%ñ *ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð-Ð-Ð-Ø�}‰}˜SÓ!Ð)Ð)Ñ)÷	*ð ×Ñœ˜VØ ˜wÐ&9Ð:×@Ñ@ÓBôDä	�‰˜Ÿ™Ó	%ñ .ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð)Ð)Ð)Ø�}‰}˜SÓ!Ð-Ð-Ñ-÷	.ð .÷*ð *ú÷.ð .ús   ÂAE/Ä!AE;Å/E8Å;Fc           	      óB  — t        |d¬«      }|j                  }t        j                  d«      }t        j                  d«      }|j	                  t
        dd|› d|j                  › d�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      €J ‚|j                  |«      �J ‚	 d	d	d	«       |j	                  t
        dd|› d|j                  › d
�j                  «       «       t        j                  |j                  «      5  t        «        | j                  «       \  }}|j                  |«      �J ‚|j                  |«      €J ‚	 d	d	d	«       y	# 1 sw Y   Œ¬xY w# 1 sw Y   y	xY w)z^Lowers cases in signature files by flag or when -h is present

    CLI :: --[no-]lower -h
    rX   rY   z	Block: HIz	Block: hir?   rZ   z -h z -m test --overwrite-signatureNz) -m test --overwrite-signature --no-lower)r   r   r�   rž   rB   rC   r   rD   r   rE   rF   rG   rb   rŸ   r    s	            r   Útest_lower_sigr¥   €  st  € ô
 ˜°Ô7€EØ�J‰J€Eä�Z‰Z˜Ó%€FÜ�Z‰Z˜Ó%€Fð ×ÑÜØØ
�ˆw�d˜5Ÿ9™9˜+Ð%CÐD×JÑJÓLôô 
�‰˜Ÿ™Ó	%ñ *ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð-Ð-Ð-Ø�}‰}˜SÓ!Ð)Ð)Ñ)÷	*ð ×ÑÜØØ
�ˆw�d˜5Ÿ9™9˜+Ð%NÐOß	‰‹ô	ô 
�‰˜Ÿ™Ó	%ñ .ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ�}‰}˜SÓ!Ð)Ð)Ð)Ø�}‰}˜SÓ!Ð-Ð-Ñ-÷	.ð .÷*ð *ú÷.ð .ús   ÂAF	Ä;AFÆ	FÆFc           
      ó6  — t        |«      }d}d}|j                  t        dd|› d|› d|› �j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|› d�|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zNEnsures that the build directory can be specified

    CLI :: --build-dir
    r�   Útttmpr?   úf2py -m r_   z --build-dir zWrote C/API module "rƒ   Nri   )rK   r-   rL   rM   r   Úodirre   rf   s           r   Útest_build_dirrª   §  sŸ   € ô
 �Ó!€EØ€EØ€DØ×Ñœ˜VØ" 5 '¨¨5¨'°¸t¸fÐE×KÑKÓMôOô 
�‰˜Ÿ™Ó	%ñ 8ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ& u g¨RÐ0°CÑ7Ð7Ñ7÷8÷ 8ñ 8ús   Á(BÂBc                 óT  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        d«      j                  dd¬«       t        «        | j                  «       \  }}d|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zXEnsures that the build directory can be specified

    CLI :: --overwrite-signature
    r?   rm   z --overwrite-signaturern   ro   r!   r"   r`   N)
r   rB   rC   rD   r   rE   rF   r(   rG   rb   rj   s         r   Útest_overwriter¬   ¸  sœ   € ô
 �Ó!€EØ×ÑÜˆVØ
˜U˜GÐ#9Ð:×@Ñ@ÓBôDô 
�‰˜Ÿ™Ó	%ñ 2Üˆ[Ó×$Ñ$ [¸7Ð$ÔCÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ*¨cÑ1Ð1Ñ1÷	2÷ 2ñ 2ús   ÁA BÂB'c           	      ó°  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        |› d�«      j                  «       5 }d|j                  «       v sJ ‚	 d	d	d	«       d	d	d	«       y	# 1 sw Y   ŒxY w# 1 sw Y   y	xY w)
zJEnsures that TeX documentation is written out

    CLI :: --latex-doc
    r�   r?   r¨   r_   z --latex-docúDocumentation is saved to fileú
module.texú\documentclassN©r   rB   rC   rD   r   rE   rF   rG   rb   r—   r˜   ©rK   r-   rL   rM   r   re   rf   Úotexs           r   Útest_latexdocr´   É  sÕ   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð>×DÑDÓFôHô 
�‰˜Ÿ™Ó	%ñ 4ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°3Ñ6Ð6Ð6Ü�U�G˜:Ð&Ó'×,Ñ,Ó.ð 	4°$Ø$¨¯	©	«Ñ3Ð3Ñ3÷	4÷	4ð 4÷	4ð 	4ú÷	4ð 4ús%   ÁA CÂC Â/CÃ C		ÃCÃCc           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zMEnsures that TeX documentation is written out

    CLI :: --no-latex-doc
    r�   r?   r¨   r_   z --no-latex-docr®   Nri   ©rK   r-   rL   rM   r   re   rf   s          r   Útest_nolatexdocr·   Û  s�   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°ÐA×GÑGÓIôKô 
�‰˜Ÿ™Ó	%ñ ;ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°sÑ:Ð:Ñ:÷;÷ ;ñ ;úó   Á$BÂBc           	      ó²  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        d|› d�«      j                  «       5 }d	|j                  «       vsJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zžEnsures that truncated documentation is written out

    TODO: Test to ensure this has no effect without --latex-doc
    CLI :: --latex-doc --short-latex
    r�   r?   r¨   r_   z --latex-doc --short-latexr®   ú./r¯   r°   Nr±   r²   s           r   Útest_shortlatexr»   ë  sÙ   € ô �Ó!€EØ€EØ×ÑÜØØ
�5�'˜˜5˜'Ð!;Ð<×BÑBÓDôô 
�‰˜Ÿ™Ó	%ñ 8ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ/°3Ñ6Ð6Ð6Ü�B�u�g˜ZÐ(Ó)×.Ñ.Ó0ð 	8°DØ$¨D¯I©I«KÑ7Ð7Ñ7÷	8÷	8ð 8÷	8ð 	8ú÷	8ð 8úó%   ÁACÂCÂ0CÃC
	ÃCÃCc           	      ó²  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚t        d|› d�«      j                  «       5 }d	|j                  «       v sJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zIEnsures that RsT documentation is written out

    CLI :: --rest-doc
    r�   r?   r¨   r_   z --rest-docú#ReST Documentation is saved to filerº   zmodule.restz.. -*- rest -*-Nr±   )rK   r-   rL   rM   r   re   rf   Úorsts           r   Útest_restdocrÀ     s×   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð=×CÑCÓEôGô 
�‰˜Ÿ™Ó	%ñ 5ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ4¸Ñ;Ð;Ð;Ü�B�u�g˜[Ð)Ó*×/Ñ/Ó1ð 	5°TØ%¨¯©«Ñ4Ð4Ñ4÷	5÷	5ð 5÷	5ð 	5ú÷	5ð 5úr¼   c           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zLEnsures that TeX documentation is written out

    CLI :: --no-rest-doc
    r�   r?   r¨   r_   z --no-rest-docr¾   Nri   r¶   s          r   Útest_norestexdocrÂ     s‘   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð@×FÑFÓHôJô 
�‰˜Ÿ™Ó	%ñ @ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ4¸CÑ?Ð?Ñ?÷@÷ @ñ @úr¸   c           	      ó€  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        d|› d�«      j                  «       5 }d|j                  «       v sJ ‚	 d	d	d	«       d	d	d	«       y	# 1 sw Y   ŒxY w# 1 sw Y   y	xY w)
zIEnsures that debugging wrappers are written

    CLI :: --debug-capi
    r�   r?   r¨   r_   z --debug-capirº   r   z#define DEBUGCFUNCSN©
r   rB   rC   rD   r   rE   rF   rG   r—   r˜   )rK   r-   rL   rM   r   Úocmods         r   Útest_debugcapirÆ   #  s·   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'°Ð?×EÑEÓGôIô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ü�B�u�g˜XÐ&Ó'×,Ñ,Ó.ð 	:°%Ø)¨U¯Z©Z«\Ñ9Ð9Ñ9÷	:÷:ð :÷	:ð 	:ú÷:ð :ús$   Á(B4ÂB(ÂB4Â(B1	Â-B4Â4B=zConsistently fails on CI.c           	      óÀ  — t        | «      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  d«      }t        j                  |dd¬	«      }d
}t        j                  d«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)zEEnsures that debugging wrappers work

    CLI :: --debug-capi -c
    r�   r?   r¨   r_   z -c --debug-capiz#python3 -c "import blah; blah.hi()"TúUTF-8©Úcapture_outputr#   ú Hello World
a   debug-capi:Python C/API function blah.hi()
debug-capi:float hi=:output,hidden,scalar
debug-capi:hi=0
debug-capi:Fortran subroutine `f2pywraphi(&hi)'
debug-capi:hi=0
debug-capi:Building return value.
debug-capi:Python C/API function blah.hi: successful.
debug-capi:Freeing memory.
        N)r   rB   rC   rD   r   rE   rF   rG   ÚshlexÚ
subprocessÚrunÚtextwrapÚdedentÚstdoutÚstderr)r-   rL   rM   r   Úcmd_runÚroutÚeoutÚeerrs           r   Útest_debugcapi_bldr×   3  sÍ   € ô �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'Ð1AÐB×HÑHÓJôLô 
�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+ÐEÓFˆÜ�~‰~˜g°dÀWÔMˆØˆÜ�‰ð 	 ó 	ˆð �{‰{˜dÒ"Ð"Ð"Ø�{‰{˜dÒ"Ð"Ñ"÷!#÷ #ñ #ús   ÁA1CÃCc           	      ó*  — t        |«      }d}|j                  t        dd|› d|› �j                  «       «       t	        j
                  |j                  «      5  t        «        ddd«       | j                  «       \  }}d|v sJ ‚|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   Œ›xY w# 1 sw Y   yxY w)zoEnsures that fortran subroutine wrappers for F77 are included by default

    CLI :: --[no]-wrap-functions
    r�   r?   r¨   r_   Nú Fortran 77 wrappers are saved toz --wrap-functionsri   r¶   s          r   Útest_wrapfunc_defrÚ   Q  s  € ô �Ó!€EØ€EØ×Ñœ˜V x°¨w°a¸°wÐ%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ ÜŒ	÷à×ÑÓ�F€CˆØ.°#Ñ5Ð5Ð5ð ×Ñœ˜VØ" 5 '¨¨5¨'Ð1BÐC×IÑIÓKôMô 
�‰˜Ÿ™Ó	%ñ :ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2°cÑ9Ð9Ñ9÷:ð :÷ð ú÷:ð :ús   ÁC=Ã$D	Ã=DÄ	Dc           	      ó&  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|vsJ ‚	 ddd«       y# 1 sw Y   yxY w)zeEnsures that fortran subroutine wrappers for F77 can be disabled

    CLI :: --no-wrap-functions
    r�   r?   r¨   r_   z --no-wrap-functionsrÙ   Nri   r¶   s          r   Útest_nowrapfuncrÜ   j  sŽ   € ô
 �Ó!€EØ€EØ×Ñœ˜VØ" 5 '¨¨5¨'Ð1EÐF×LÑLÓNôPô 
�‰˜Ÿ™Ó	%ñ >ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2¸#Ñ=Ð=Ñ=÷>÷ >ñ >úr¸   c           	      ó�  — t        |«      }d}|j                  t        dd|› d|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        d|› d�«      j                  «       5 }|j                  «       }d|v sJ ‚d	|v sJ ‚	 d
d
d
«       d
d
d
«       y
# 1 sw Y   ŒxY w# 1 sw Y   y
xY w)zcAdd to the include directories

    CLI :: -include
    TODO: Document this in the help string
    r�   r?   r¨   r_   z' -include<stdbool.h> -include<stdio.h> rº   r   z#include <stdbool.h>z#include <stdio.h>NrÄ   )rK   r-   rL   rM   r   rÅ   Úocmrs          r   Útest_inclheaderrß   z  sÊ   € ô �Ó!€EØ€EØ×ÑÜØØ
�5�'˜˜5˜'Ð!HÐIß‰‹ô	ô 
�‰˜Ÿ™Ó	%ñ 0ÜŒ	Ü�B�u�g˜XÐ&Ó'×,Ñ,Ó.ð 	0°%Ø—:‘:“<ˆDØ)¨TÑ1Ð1Ð1Ø'¨4Ñ/Ð/Ñ/÷	0÷0ð 0÷	0ð 	0ú÷0ð 0ús$   Á(B<ÂB0ÂB<Â0B9	Â5B<Â<Cc                   ó   — y)z?Add to the include directories

    CLI :: --include-paths
    N© rá   r   r   Útest_inclpathrâ   ‘  ó   € ð 	r   c                   ó   — y)z;Add to the include directories

    CLI :: --help-link
    Nrá   rá   r   r   Ú
test_hlinkrå   š  rã   r   c                 óL  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚d|v sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
zOCheck that Fortran-to-Python KIND specs can be passed

    CLI :: --f2cmap
    r?   r@   z --f2cmap mapfilez!Reading f2cmap from 'mapfile' ...z&Mapping "real(kind=real32)" to "float"z'Mapping "real(kind=real64)" to "double"z,Mapping "integer(kind=int64)" to "long_long"z0Successfully applied user defined f2cmap changesNri   )rK   r=   rL   rM   re   rf   s         r   Útest_f2cmaprç   £  s¹   € ô
 �Ó€EØ×Ñœ˜V }°U°GÐ;LÐ%M×%SÑ%SÓ%UÔVä	�‰˜Ÿ™Ó	%ñ IÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ2°cÑ9Ð9Ð9Ø;¸sÑBÐBÐBØ<ÀÑCÐCÐCØAÀSÑHÐHÐHØAÀSÑHÐHÑH÷I÷ Iñ Iús   Á<BÂB#c                 ó0  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}t        |«      dk(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z)Reduce verbosity

    CLI :: --quiet
    r?   r@   z --quietr   N)
r   rB   rC   rD   r   rE   rF   rG   rb   Úlenrj   s         r   Ú
test_quietrê   µ  s~   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸8Ð%D×%JÑ%JÓ%LÔMä	�‰˜Ÿ™Ó	%ñ ÜŒ	Ø×!Ñ!Ó#‰ˆˆQÜ�3‹x˜1Š}Ð‰}÷÷ ñ ús   Á.BÂBc                 ó  — t        |«      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        | j                  «       \  }}d|v sJ ‚	 ddd«       y# 1 sw Y   yxY w)z-Increase verbosity

    CLI :: --verbose
    r?   r@   z
 --verboseÚanalyzelineNri   rj   s         r   Útest_verboserí   Ã  s|   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸:Ð%F×%LÑ%LÓ%NÔOä	�‰˜Ÿ™Ó	%ñ $ÜŒ	Ø×!Ñ!Ó#‰ˆˆQØ Ñ#Ð#Ñ#÷$÷ $ñ $ús   Á$BÂBc                 ó,  — |j                  t        ddj                  «       «       t        j                  t
        «      5  t        «        | j                  «       \  }}ddl}|j                  |j                  «       k(  sJ ‚	 ddd«       y# 1 sw Y   yxY w)z"Ensure version

    CLI :: -v
    r?   zf2py -vr   N)rB   rC   rD   rS   rT   rp   rG   rb   ÚnumpyÚ__version__Ústrip)rK   rL   re   rf   Únps        r   Útest_versionró   Ñ  sp   € ð
 ×Ñœ˜V Y§_¡_Ó%6Ô7ä	�‰”zÓ	"ñ -ÜŒ	Ø×!Ñ!Ó#‰ˆˆQÛØ�~‰~ §¡£Ò,Ð,Ñ,÷	-÷ -ñ -ús   ¿AB
Â
Bc                 ój  — t        | «      }|j                  t        dd|› d�j                  «       «       t	        j
                  |j                  «      5  t        «        t        j                  d«      }t        j                  |dd¬«      }d}|j                  |k(  sJ ‚	 d	d	d	«       y	# 1 sw Y   y	xY w)
z
    CLI :: -c
    r?   r@   z -cz"python -c "import blah; blah.hi()"TrÈ   rÉ   rË   N)r   rB   rC   rD   r   rE   rF   rG   rÌ   rÍ   rÎ   rÑ   )r-   rL   rM   rÓ   rÔ   rÕ   s         r   Útest_npdistoprõ   ß  s”   € ô
 �Ó!€EØ×Ñœ˜V }°U°G¸3Ð%?×%EÑ%EÓ%GÔHä	�‰˜Ÿ™Ó	%ñ #ÜŒ	Ü—+‘+ÐDÓEˆÜ�~‰~˜g°dÀWÔMˆØˆØ�{‰{˜dÒ"Ð"Ñ"÷#÷ #ñ #ús   ÁAB)Â)B2c                   ó   — y)z
    CLI :: -c --fcompiler
    Nrá   rá   r   r   Útest_npd_fcompilerr÷   ó  ó   € ð
 	r   c                   ó   — y)z
    CLI :: -c --compiler
    Nrá   rá   r   r   Útest_npd_compilerrú   û  rø   r   c                   ó   — y)z$
    CLI :: -c --help-fcompiler
    Nrá   rá   r   r   Útest_npd_help_fcompilerrü     rø   r   c                   ó   — y)z
    CLI :: -c --f77exec
    Nrá   rá   r   r   Útest_npd_f77execrþ     rø   r   c                   ó   — y)z
    CLI :: -c --f90exec
    Nrá   rá   r   r   Útest_npd_f90execr     rø   r   c                   ó   — y)z
    CLI :: -c --f77flags
    Nrá   rá   r   r   Útest_npd_f77flagsr    rø   r   c                   ó   — y)z
    CLI :: -c --f90flags
    Nrá   rá   r   r   Útest_npd_f90flagsr  #  rø   r   c                   ó   — y)z
    CLI :: -c --opt
    Nrá   rá   r   r   Útest_npd_optr  +  rø   r   c                   ó   — y)z
    CLI :: -c --arch
    Nrá   rá   r   r   Útest_npd_archr  3  rø   r   c                   ó   — y)z
    CLI :: -c --noopt
    Nrá   rá   r   r   Útest_npd_nooptr
  ;  rø   r   c                   ó   — y)z
    CLI :: -c --noarch
    Nrá   rá   r   r   Útest_npd_noarchr  C  rø   r   c                   ó   — y)z
    CLI :: -c --debug
    Nrá   rá   r   r   Útest_npd_debugr  K  rø   r   c                   ó   — y)z%
    CLI :: -c --link-<resource>
    Nrá   rá   r   r   Útest_npd_link_autor  S  rø   r   c                   ó   — y)z/
    CLI :: -c -L/path/to/lib/ -l<libname>
    Nrá   rá   r   r   Útest_npd_libr  [  rø   r   c                   ó   — y)z
    CLI :: -D<define>
    Nrá   rá   r   r   Útest_npd_definer  c  rø   r   c                   ó   — y)z
    CLI :: -U<name>
    Nrá   rá   r   r   Útest_npd_undefiner  k  rø   r   c                   ó   — y)z$
    CLI :: -I/path/to/include/
    Nrá   rá   r   r   Útest_npd_inclr  s  rø   r   c                   ó   — y)z8
    CLI :: <filename>.o <filename>.so <filename>.a
    Nrá   rá   r   r   Útest_npd_linkerr  {  rø   r   )Úuntitled)RrÏ   r�   rC   rÍ   rÌ   Úpathlibr   Úcollectionsr   ÚplatformrS   Ú r   Únumpy.f2py.f2py2er   rG   r   r   Úfixturer-   r0   r2   r5   r8   r=   rP   rV   r]   rg   rk   rr   ÚmarkÚskipifÚsystemÚversion_inforx   r}   Úxfailr‰   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  r  r  r
  r  r  r  r  r  r  r  r  rá   r   r   ú<module>r'     sã  ðß +× +Ó +Ý Ý "Û ã å Ý -ñ 
�HÐHÓ	I€óðN €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðð €‡��iÔ ñó !ðòò(	ò
:ò)ò
,òCð ‡�×Ñ�_�X—_‘_Ó&¨'Ñ1ÒS°s×7GÑ7GÈ7Ñ7RØ7ð ó 9ñ
)ó9ð
)ð ‡�×Ñ�_�X—_‘_Ó&¨'Ñ1ÒS°s×7GÑ7GÈ7Ñ7RÐ\xÐÓyñGó zðGð> ‡�×ÑñDó ðDò.Dò.Dò<%ò"0ò .ò4$.òN8ò"2ò"4ò$;ò 8ò,5ò$@ò :ð  ‡�×ÑÐ5ÐÓ6ñ#ó 7ð#ò::ò2>ò 0ò.	ò	òIò$ò$ò-ð ‡�×ÑÐ5ÐÓ6ñ#ó 7ð#ò&	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ò	ó	r   