Ë
    ímxi¿= ã                   ó  — d Z ddlZddlZddlZ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ZddlmZmZ ddl­ ej"                  adadadadadad	ad	adadadag ad	ad	ada i a!d	a"da#da$da%tJ        g ia&d	a'g a(d
a)g a*da+d
a,g a-g a.g a/d„ Z0dÅd„Z1de_2        i Z3dD ]	  Z4ddie3e4<   Œ dD ]	  Z4ddie3e4<   Œ i Z5i Z6dD ]  Z7e7dz   e5e7<   e7e6e7dz   <   Œ d„ Z8d„ Z9d„ Z:d„ Z; ejx                  dejz                  «      j|                  Z? ejx                  dejz                  «      j|                  Z@ ejx                  dejz                  «      j|                  ZA ejx                  dejz                  «      j„                  ZCg d¢ZDg d¢ZEd„ ZFd „ ZGeHdfd!„ZId"ZJd#ZK ejx                  eJd	eKeKd$fz  ejz                  «      d%fZL ejx                  eJd	eKd&z   eKd&z   d$fz  ejz                  «      ZM ejx                  eJd'z  ejz                  «      d(fZN ejx                  eJd)z  ejz                  «      d(fZOd*ZP ejx                  eJd	ePePd$fz  ejz                  «      d(fZQePd+z   ZR ejx                  eJd	eReRd$fz  ejz                  «      d(fZSd,ZT ejx                  eJd	eTeTd$fz  ejz                  «      d-fZUd.ZV ejx                  eJd/eVeVd$fz  ejz                  «      d0fZWd1ZX ejx                  eJd	eXeXd$fz  ejz                  «      d2fZY ejx                  eJd3z  ejz                  «      d4fZZ ejx                  eJd5z  ejz                  «      d6fZ[ ejx                  eJd7z  ejz                  «      d8fZ\ ejx                  eJd9z  ejz                  «      d:fZ] ejx                  eJd;z  ejz                  «      d<fZ^ ejx                  eJd=z  ejz                  «      d>fZ_ ejx                  eJd?z  ejz                  «      d@fZ` ejx                  eJdAz  ejz                  «      dBfZa ejx                  eJdCz  ejz                  «      dDfZb ejx                  eJdEz  ejz                  «      dFfZc ejx                  eJdGz  ejz                  «      dHfZd ejx                  eJdIz  ejz                  «      dJfZe ejx                  eJdKz  ejz                  «      dLfZf ejx                  eJdMz  ejz                  «      dNfZg ejx                  eJdOz  ejz                  «      dPfZh ejx                  eJdQz  ejz                  «      dRfZi ejx                  eJdSz  ejz                  «      dTfZj ejx                  eJdUz  ejz                  «      dVfZk ejx                  eJdWz  ejz                  ejØ                  z  «      dXfZm ejx                  dYejØ                  «      dZfZnd[„ Zod\„ Zp ejx                  d]ejz                  «      Zq ejx                  d^ejz                  «      Zr ejx                  d_ejz                  «      ZsdÆd`„Ztda„ ZudÇdb„Zvdc„ ZwdÅdd„Zx ejx                  deejz                  «      Zy ejx                  dfejz                  «      Zz ejx                  dgejz                  «      Z{ ejx                  dhejz                  «      Z| ejx                  diejz                  «      Z} ejx                  dj«      Z~ ejx                  dk«      Z ejx                  dlejz                  «      Z€dm„ Z�dn„ Z‚do„ Zƒdp„ Z„dq„ Z…dr„ Z†ds„ Z‡ ejx                  dtejz                  «      Zˆ ejx                  duejz                  «      Z‰ ejx                  dvejz                  «      ZŠ ejx                  dwejz                  «      Z‹ ejx                  dxejz                  «      ZŒdy„ Z�dz„ ZŽd{„ Z�d|„ Z�dÆd}„Z‘dÆd~„Z’dÆd„Z“dÈd€„Z”d�„ Z•d‚„ Z–dÉdƒ„Z—dÊd„„Z˜dËd…„Z™d†„ Zšd‡„ Z›dÌdˆ„Zœd‰„ Z�dÍdŠ„Zž ejx                  d‹ejz                  «      ZŸdŒ„ Z  ejx                  d�ejz                  «      Z¡dŽ„ Z¢d�„ Z£d�„ Z¤d‘„ Z¥d’„ Z¦dÎd“„Z§i fd”„Z¨d•„ Z© ejx                  d–«      j„                  Zªd—„ Z«d˜„ Z¬ ejx                  d™ejz                  «      Z­dÉdš„Z®d›„ Z¯g fdœ„Z°d�„ Z± ejx                  džejz                  «      Z² ejx                  dŸejz                  «      Z³ ejx                  d ejz                  «      Z´ ejx                  d¡ejz                  «      Zµ ejx                  d¢ejz                  «      Z¶d£„ Z·i fd¤„Z¸dÏd¦„Z¹dÌd§„ZºdÌd¨„Z»d©„ Z¼dÐdª„Z½g a¾d«„ Z¿d¬„ ZÀd­„ ZÁg dfd®„ZÂd¯„ ZÃ�t|        �j‰                  eÃ«       eÅd°k(  �r�g ZÆg ZÇdZÈdZÉdZÊdZËe�j˜                  dd D ]æ  ZÍeÍd	k(  rŒ	eÍd   d±k(  rdZÈŒeÍd²k(  rdadaŒeÍd³k(  rd´adaŒ(eÍdµk(  rt&        r	 e1d¶d«       dadaŒAeÍd·k(  rdaŒIeÍd¸k(  rdaŒQeÍd¹k(  rdadaŒ[eÍdºk(  rdad»adaŒgeÍd¼k(  rdZÉŒoeÍd½k(  rdZËŒweÍd¾k(  rdZÊŒeÍd   d¿k(  r eÎdÀ eÏeÍ«      › d¥�«       ŒšeÉrdZÉeÍaŒ¡eÊrdZÊeÍaŒ¨eÈr+	  eÐeÍ«      �j£                  «        eÆ�j‰                  eÍ«       ŒÕeÇ�j‰                  eÍ«       Œè t&        st2        rt4        s	 e1dÂd«        e¿eÆ«      ZÔt0        rG e1dÃ eÏt0        «      › d¥�d«        eÀeÔ«      ZÕ eÐt0        dÄ«      5 ZÈeÈ�j­                  eÕ«       ddd«       eËr	 eHeÔ«       yyy# e$ r dZY �
Œ¦w xY w# eÒ$ rZÓ eÎdÁeÓ›d¥�«       Y dZÓ[Ó�Œ‹dZÓ[Óww xY w# 1 sw Y   ŒCxY w)Ña  
crackfortran --- read fortran (77,90) code and extract declaration information.

Copyright 1999 -- 2011 Pearu Peterson all rights reserved.
Copyright 2011 -- present NumPy Developers.
Permission to use, modify, and distribute this software is given under the
terms of the NumPy License.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.


Usage of crackfortran:
======================
Command line keys: -quiet,-verbose,-fix,-f77,-f90,-show,-h <pyffilename>
                   -m <module name for f77 routines>,--ignore-contains
Functions: crackfortran, crack2fortran
The following Fortran statements/constructions are supported
(or will be if needed):
   block data,byte,call,character,common,complex,contains,data,
   dimension,double complex,double precision,end,external,function,
   implicit,integer,intent,interface,intrinsic,
   logical,module,optional,parameter,private,public,
   program,real,(sequence?),subroutine,type,use,virtual,
   include,pythonmodule
Note: 'virtual' is mapped to 'dimension'.
Note: 'implicit integer (z) static (z)' is 'implicit static (z)' (this is minor bug).
Note: code after 'contains' will be ignored until its scope ends.
Note: 'common' statement is extended: dimensions are moved to variable definitions
Note: f2py directive: <commentchar>f2py<line> is read as <line>
Note: pythonmodule is introduced to represent Python module

Usage:
  `postlist=crackfortran(files)`
  `postlist` contains declaration information read from the list of files `files`.
  `crack2fortran(postlist)` returns a fortran code to be saved to pyf-file

  `postlist` has the following structure:
 *** it is a list of dictionaries containing `blocks':
     B = {'block','body','vars','parent_block'[,'name','prefix','args','result',
          'implicit','externals','interfaced','common','sortvars',
          'commonvars','note']}
     B['block'] = 'interface' | 'function' | 'subroutine' | 'module' |
                  'program' | 'block data' | 'type' | 'pythonmodule' |
                  'abstract interface'
     B['body'] --- list containing `subblocks' with the same structure as `blocks'
     B['parent_block'] --- dictionary of a parent block:
                             C['body'][<index>]['parent_block'] is C
     B['vars'] --- dictionary of variable definitions
     B['sortvars'] --- dictionary of variable definitions sorted by dependence (independent first)
     B['name'] --- name of the block (not if B['block']=='interface')
     B['prefix'] --- prefix string (only if B['block']=='function')
     B['args'] --- list of argument names if B['block']== 'function' | 'subroutine'
     B['result'] --- name of the return value (only if B['block']=='function')
     B['implicit'] --- dictionary {'a':<variable definition>,'b':...} | None
     B['externals'] --- list of variables being external
     B['interfaced'] --- list of variables being external and defined
     B['common'] --- dictionary of common blocks (list of objects)
     B['commonvars'] --- list of variables used in common blocks (dimensions are moved to variable definitions)
     B['from'] --- string showing the 'parents' of the current block
     B['use'] --- dictionary of modules used in current block:
         {<modulename>:{['only':<0|1>],['map':{<local_name1>:<use_name1>,...}]}}
     B['note'] --- list of LaTeX comments on the block
     B['f2pyenhancements'] --- optional dictionary
          {'threadsafe':'','fortranname':<name>,
           'callstatement':<C-expr>|<multi-line block>,
           'callprotoargument':<C-expr-list>,
           'usercode':<multi-line block>|<list of multi-line blocks>,
           'pymethoddef:<multi-line block>'
           }
     B['entry'] --- dictionary {entryname:argslist,..}
     B['varnames'] --- list of variable names given in the order of reading the
                       Fortran code, useful for derived types.
     B['saved_interface'] --- a string of scanned routine signature, defines explicit interface
 *** Variable definition is a dictionary
     D = B['vars'][<variable name>] =
     {'typespec'[,'attrspec','kindselector','charselector','=','typename']}
     D['typespec'] = 'byte' | 'character' | 'complex' | 'double complex' |
                     'double precision' | 'integer' | 'logical' | 'real' | 'type'
     D['attrspec'] --- list of attributes (e.g. 'dimension(<arrayspec>)',
                       'external','intent(in|out|inout|hide|c|callback|cache|aligned4|aligned8|aligned16)',
                       'optional','required', etc)
     K = D['kindselector'] = {['*','kind']} (only if D['typespec'] =
                         'complex' | 'integer' | 'logical' | 'real' )
     C = D['charselector'] = {['*','len','kind','f2py_len']}
                             (only if D['typespec']=='character')
     D['='] --- initialization expression string
     D['typename'] --- name of the type if D['typespec']=='type'
     D['dimension'] --- list of dimension bounds
     D['intent'] --- list of intent specifications
     D['depend'] --- list of variable names on which current variable depends on
     D['check'] --- list of C-expressions; if C-expr returns zero, exception is raised
     D['note'] --- list of LaTeX comments on the variable
 *** Meaning of kind/char selectors (few examples):
     D['typespec>']*K['*']
     D['typespec'](kind=K['kind'])
     character*C['*']
     character(len=C['len'],kind=C['kind'], f2py_len=C['f2py_len'])
     (see also fortran type declaration statement formats below)

Fortran 90 type declaration statement format (F77 is subset of F90)
====================================================================
(Main source: IBM XL Fortran 5.1 Language Reference Manual)
type declaration = <typespec> [[<attrspec>]::] <entitydecl>
<typespec> = byte                          |
             character[<charselector>]     |
             complex[<kindselector>]       |
             double complex                |
             double precision              |
             integer[<kindselector>]       |
             logical[<kindselector>]       |
             real[<kindselector>]          |
             type(<typename>)
<charselector> = * <charlen>               |
             ([len=]<len>[,[kind=]<kind>]) |
             (kind=<kind>[,len=<len>])
<kindselector> = * <intlen>                |
             ([kind=]<kind>)
<attrspec> = comma separated list of attributes.
             Only the following attributes are used in
             building up the interface:
                external
                (parameter --- affects '=' key)
                optional
                intent
             Other attributes are ignored.
<intentspec> = in | out | inout
<arrayspec> = comma separated list of dimension bounds.
<entitydecl> = <name> [[*<charlen>][(<arrayspec>)] | [(<arrayspec>)]*<charlen>]
                      [/<init_expr>/ | =<init_expr>] [,<entitydecl>]

In addition, the following attributes are used: check,depend,note

TODO:
    * Apply 'parameter' attribute (e.g. 'integer parameter :: i=2' 'real x(i)'
                                   -> 'real x(2)')
    The above may be solved by creating appropriate preprocessor program, for example.

é    N)ÚPathé   )Ú__version__Úsymbolic)Ú*Úfixú    Ú éÿÿÿÿc                  óx   — da dadadadadadadadada	g a
dat        g iadadadag ai adadadag ag ag ag ad ay )Nr   r   r   r	   r
   r   )Ú	strictf77ÚsourcecodeformÚquietÚverboseÚtabcharÚpyffilenameÚf77modulenameÚskipemptyendsÚignorecontainsÚdolowercaseÚdebugÚgroupcounterÚ	grouplistÚneededmoduleÚexpectbeginÚskipblocksuntilÚusermodulesÚf90modulevarsÚgotnextfileÚfilepositiontextÚcurrentfilenameÚskipfunctionsÚ	skipfuncsÚ	onlyfuncsÚinclude_pathsÚprevious_context© ó    úN/home/htdocs/ttos/venv/lib/python3.12/site-packages/numpy/f2py/crackfortran.pyÚreset_global_f2py_varsr*   Å   s�   € ð €IØ€NØ€EØ€GØ€GØ€KØ€MØ€MØ€NØ€KØ€Eà€LÜ˜rÐ"€IØ€LØ€KØ€OØ€KØ€MØ€KØÐØ€OØ€MØ€IØ€IØ€MØÑr(   c                 ó¨   — t         sy t        sE|r#t        j                  j	                  t
        «       t        j                  j	                  | «       y y ©N)r   r   ÚsysÚstdoutÚwriter    )ÚlineÚflags     r)   Úoutmessr2   ë   s:   € õ ØÝÙÜ�J‰J×ÑÔ-Ô.Ü�
‰
×Ñ˜Õð r(   é2   zabcdefghopqrstuvwxyz$_ÚtypespecÚrealÚijklmnÚinteger)3ÚintÚdoubleÚfloatÚcharÚshortÚlongÚvoidÚcaseÚwhileÚreturnÚsignedÚunsignedÚifÚforÚtypedefÚsizeofÚunionÚstructÚstaticÚregisterÚnewÚbreakÚdoÚgotoÚswitchÚcontinueÚelseÚinlineÚexternÚdeleteÚconstÚautoÚlenÚrankÚshapeÚindexÚslenÚsizeÚ_iÚmaxÚminÚflenÚfshapeÚstringÚcomplex_doubleÚfloat_doubleÚstdinÚstderrr.   ÚtypeÚdefaultÚ_bnc                 óZ   — | t         v r"t        d| › dt         |    › d�«       t         |    S | S )Nzrmbadname1: Replacing "ú" with "ú".
)ÚbadnamesÚerrmess©Únames    r)   Ú
rmbadname1rr     s6   € ØŒxÑÜÐ)¨$¨¨x¼À¹Ð7GÀtÐLÔMÜ˜‰~ÐØ€Kr(   c                 ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w r,   )rr   ©ÚnamesÚ_ms     r)   Ú	rmbadnamerw     s   € Ø%*Ö+˜rŒJ�r�NÒ+Ð+ùÒ+ó   …c                 óZ   — | t         v r"t        d| › dt         |    › d�«       t         |    S | S )Nzundo_rmbadname1: Replacing "rl   rm   )Úinvbadnamesro   rp   s    r)   Úundo_rmbadname1r{     s8   € ØŒ{ÑÜÐ.¨t¨f°H¼[ÈÑ=NÐ<OÈtÐTÔUÜ˜4Ñ Ð Ø€Kr(   c                 ó>   — | D �cg c]  }t        |«      ‘Œ c}S c c}w r,   )r{   rt   s     r)   Úundo_rmbadnamer}     s   € Ø*/Ö0 BŒO˜BÕÒ0Ð0ùÒ0rx   z-\*-\s*fortran\s*-\*-z-\*-\s*f90\s*-\*-z-\*-\s*fix\s*-\*-z[^c*]\s*[^\s\d\t])z.f90z.f95z.f03z.f08)z.forz.ftnz.f77z.fc                 óL  — t         �.t        j                  | «      j                  «       j                  }n×t	        dt
        j                  j                  | «      «      }t        | d«      5 }|j                  |«      }|j                  t        j                  «      rd}nf|j                  t        j                  t        j                  f«      rd}n4|j                  t        j                  t        j                   f«      rd}nd}ddd«       t        | |¬«      S # 1 sw Y   ŒxY w)	aN  Ensures that filename is opened with correct encoding parameter.

    This function uses charset_normalizer package, when available, for
    determining the encoding of the file to be opened. When charset_normalizer
    is not available, the function detects only UTF encodings, otherwise, ASCII
    encoding is used as fallback.
    Né    Úrbz	UTF-8-SIGzUTF-32zUTF-16Úascii)Úencoding)Úcharset_normalizerÚ	from_pathÚbestr‚   r`   ÚosÚpathÚgetsizeÚopenÚreadÚ
startswithÚcodecsÚBOM_UTF8ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_LEÚBOM_BE)ÚfilenameÚmoder‚   ÚnbytesÚfhandleÚraws         r)   Úopenhookr—   +  sà   € ô Ð%Ü%×/Ñ/°Ó9×>Ñ>Ó@×IÑI‰ô �RœŸ™Ÿ™¨Ó2Ó3ˆÜ�(˜DÓ!ð 
	# WØ—,‘,˜vÓ&ˆCØ�~‰~œfŸo™oÔ.Ø&‘Ø—‘¤×!4Ñ!4´f×6IÑ6IÐ JÔKØ#‘Ø—‘¤§¡´·±Ð >Ô?Ø#‘ð #�÷
	#ô �˜$¨Ô2Ð2÷
	#ð 
	#ús   Á*BDÄD#c                 ó¼  — d}t        | «      j                  j                  «       t        v rd}t	        | d«      5 }|j                  «       }d}t        |«      rd}nt        |«      rd}d}|dkD  rX|rV|d   dk7  r6|j                  «       r&|dz  }|d   dk7  rt        |d	d
 «      s|dd dk(  rd}n|j                  «       }|dkD  r|rŒVd	d	d	«       |S # 1 sw Y   |S xY w)z(Check if file is in free format Fortran.FTÚré   r   ú!r   ú	Né   éþÿÿÿr   ú&)
r   ÚsuffixÚlowerÚCOMMON_FREE_EXTENSIONSr—   ÚreadlineÚ_has_f_headerÚ_has_f90_headerÚstripÚ_free_f90_start)ÚfnameÚresultr•   r0   Úns        r)   Úis_free_formatr«   J  sò   € ð €FÜˆEƒ{×Ñ×ÑÓ!Ô%;Ñ;ØˆÜ	�%˜Ó	ð & Ø×ÑÓ!ˆØˆÜ˜ÔØ‰AÜ˜TÔ"ØˆAØˆFØ�!Še™Ø�A‰w˜#Š~ $§*¡*¤,Ø�Q‘�Ø˜‘G˜t’O¬¸¸R¸a¸Ô(AÀdÈ2ÈbÀkÐUXÒFXØ!�FØØ×#Ñ#Ó%ˆDð �!Šeš÷&ð €M÷&ð €Mús   ºBCÃCc           
      ó`  — |s/t         t        t        t        t        t
        t        t        t        f	}| g k(  ryt        }d}d}d}t        j                  dt        j                  «      }t        j                  d«      }	t        j                  d«      }
t        j                  d«      }|r	 |dd«       d	\  }}d
gt        d«      D �cg c]  }t        |«      ‘Œ c}z   }dat        j                  | t         ¬«      }	 	 |j#                  «       }|s�nà|j-                  «       ræda|j)                  «       ada |}dadat.        j0                  j3                  t        «      d   }t5        t        «      j6                  j9                  «       t:        v rt=        |«      st?        |«      sdantA        t        «      rt?        |«      sdat        rtB        antD        atG        dtI        t        «      ›dt        ›t        xr dxs d›d�«       |jK                  «       jM                  dd
«      }|dk(  s|d   dvrn|dd }|dk(  sŒd}tO        |d«      \  }}|d
z  }|dd j9                  «       dk(  rtO        |dz   |dd z   d«      \  }}d}|jQ                  «       dk(  rt        dk(  rnd}�Œ«t        dk(  �r|d   d v r'|dd j9                  «       d!k(  rd"|dd z   }d}nd}d}�Œãt        rtS        |«      d#kD  r|dd# }|d   |vrt'        d$tI        |«      z  «      ‚|rt        r$tS        |«      dkD  r|d   d
k(  s||d%d z   }d}d}�nu|	jU                  |«      }|r|jW                  d&«      }|r)||
jU                  |«      jW                  d&«      z   }d}d}�n&d"|dd z   }|r|j9                  «       }n|}|}|}�nt        dk(  rß|sbd'k(  r]|jU                  |«      rL|d(z   }	 |j#                  «       }|stY        d)«       n||z   }|jU                  |«      rnŒ6|j[                  «       }|	jU                  |«      }|r|jW                  d&«      }|r(||
jU                  |«      jW                  d&«      z   }d}d}n(|r |rt]        |«      s|j9                  «       n|}n|}|}|}|du}nt_        d*tI        t        «      › �«      ‚d+|ja                  «       dz
  t        |fz  a|jU                  |«      }|rÿ|jW                  d,«      }t.        j0                  jc                  |«      rte        ||d¬-«       nÈt.        j0                  jg                  t        «      gth        z   }d}|D ]S  }t.        j0                  jk                  ||«      }t.        j0                  jc                  |«      sŒCd}te        ||d¬-«        n |sAtG        d.tI        |«      ›d/t.        jl                  jk                  |«      ›d0�«       n ||«       |}�Œõ|r|j9                  «       }n|}|}d+|ja                  «       dz
  t        |fz  a|jU                  |«      }|rÿ|jW                  d,«      }t.        j0                  jc                  |«      rte        ||d¬-«       nÈt.        j0                  jg                  t        «      gth        z   }d}|D ]S  }t.        j0                  jk                  ||«      }t.        j0                  jc                  |«      sŒCd}te        ||d¬-«        n |sAtG        d.tI        |«      ›d/t.        jl                  jk                  |«      ›d0�«       n ||«       da|jo                  «        |r
 |dd«       y\	  a aaaaaaaayc c}w # t$        $ r6}t'        d|j)                  «       › d|j+                  «       › d|› d�«      ‚d}~ww xY w)1zõ
    Read fortran codes from files and
     1) Get rid of comments, line continuations, and empty lines; lower cases.
     2) Call dowithline(line) on every line.
     3) Recursively call itself when statement "include '<filename>'" is met.
    NFr
   z*\s*include\s*(\'|")(?P<name>[^\'"]*)(\'|")z(?P<line>.*)&\s*\Zz(\s*&|)(?P<line>.*)z.*?'''r   )r
   r
   ú é
   )r—   Tzreadfortrancode: reading ú#z failed with
zu.
It is likely that installing charset_normalizer package will help f2py determine the input file encoding correctly.r   r   r   Úfreez	Reading file z	 (format:z,strictú)
õ   Â z
r›   r�   z!f2pyr	   )r   Úcr›   ÚCr¯   Úf2pyz     éH   zxreadfortrancode: Found non-(space,digit) char in the first column.
	Are you sure that this code is in fix form?
	line=%sé   r0   ú.pyfú
z.Unexpected end of file when reading multiline
z4Flag sourcecodeform must be either 'fix' or 'free': zLine #%d in %s:"%s"
	rq   )Ú
dowithlineÚistopz-readfortrancode: could not find include file z in ú. Ignoring.
)8r   r    r!   r   r   Úbeginpatternr   r   r   ÚreÚcompileÚIÚrangeÚstrÚ	fileinputÚ	FileInputr—   r£   ÚUnicodeDecodeErrorÚ	Exceptionr’   ÚlinenoÚisfirstliner†   r‡   Úsplitextr   r    r¡   ÚCOMMON_FIXED_EXTENSIONSr¥   Ú_has_fix_headerr«   Úbeginpattern77Úbeginpattern90r2   ÚreprÚ
expandtabsÚreplaceÚsplit_by_unquotedr¦   rX   ÚmatchÚgroupro   ÚrstripÚiscstyledirectiveÚ
ValueErrorÚ
filelinenoÚisfileÚreadfortrancodeÚdirnamer%   ÚjoinÚpathsepÚclose)Úffilerº   r»   ÚsaveglobalsÚlocaldolowercaseÚcontÚ	finallineÚllÚincludelineÚcont1Úcont2Ú
mline_markÚl1rv   ÚspacedigitsÚfinÚlÚmsgÚextÚis_f2py_directiveÚrlÚ_Úorigfinalliner™   ÚlcÚmÚfnÚinclude_dirsÚ	foundfileÚinc_dirÚfn1s                                  r)   rÙ   rÙ   d  sh  € ñ Ü!Ô#3´_ÄnÔV_Üœ%¤¬+ð6ˆà�‚{ØÜ"Ðð €DØ€IØ	€BÜ—*‘*Ø5´r·t±tó=€Kä�J‰JÐ,Ó-€EÜ�J‰JÐ-Ó.€EÜ—‘˜IÓ&€JÙÙ�2�rÔØ�F€BˆØ�%¬U°2«YÖ7 rœ3˜r�7Ò7Ñ7€KØÐÜ
×
Ñ
˜e¬hÔ
7€CØ
ð	Ø—‘“ˆAñ ÙØ�?‰?ÔØ!ÐØ!Ÿl™l›nˆOØˆKØˆBØˆIØ"ˆNÜ—'‘'×"Ñ"¤?Ó3°AÑ6ˆCÜ”OÓ$×+Ñ+×1Ñ1Ó3Ô7NÑNÜ(¨Ô+¬¸qÔ/AØ‘	Ü¤Ô0¼ÈÔ9KØ!'�ÝÜ-‘ä-�ÝÜœOÕ,­nÜ!Ò/ iÒ6°BÑ6ð8ô 9ð �L‰L‹N×"Ñ" 6¨3Ó/ˆà�r’'Ø�‰u˜HÑ$ØØ�#�2�ˆAð �r“'ð
 "Ðä# A sÓ+‰ˆˆBØ	ˆS‰ˆØˆbˆqˆ6�<‰<‹>˜WÒ$Ü$ Q¨¡[°2°a°b°6Ñ%9¸3Ó?‰DˆAˆqØ $ÐØ�7‰7‹9˜Š?Ü Ò'ð
 ð �ÙÜ˜UÓ"Ø�‰tÐ0Ñ0Ø�Q�q�6—<‘<“> VÒ+Ø ! A B %™�AØ(,Ñ%à �DØ(-Ð%ÙÝÜ�q“6˜B’;Ø˜#˜2˜�AØ�‰t˜;Ñ&Üð !GäIMÈaËñ!Qó Rð Rñ �I¬C°«F°QªJ¸qÀ¹tÀsº{à˜!˜A˜B˜%‘Z�Ø�	Ø "’à—K‘K “N�ÙØŸ™ ›�AÙØ˜eŸk™k¨!›n×2Ñ2°6Ó:Ñ:�BØ "�IØ$&’Mð   ! A B %™�Aá'Ø$&§H¡H£J™	à$&˜	Ø$&�MØ’Bä˜vÒ%Ù˜C 6šM¨j×.>Ñ.>¸qÔ.AØ˜‘H�ØØŸ™›�BÙÜØMôOàØ˜B™�AØ!×'Ñ'¨Ô+Øð ð —H‘H“J�Ø—‘˜A“ˆAÙØ—G‘G˜F“O�ÙØ˜%Ÿ+™+ a›.×.Ñ.¨vÓ6Ñ6�Ø�	Ø "‘á#ñ 4EÔIZÐ[]ÔI^ §¡¤
Ðeg‘Ià "�IØ "�Ø�Ø˜T�M‰DäØFÄtÌNÓG[ÐF\Ð]ó_ð _à4Ø�N‰NÓ˜qÑ ¤/°2ð87ñ 7Ðà×Ñ˜mÓ,ˆÙØ—‘˜“ˆBÜ�w‰w�~‰~˜bÔ!Ü ¨zÀÖCô —G‘G—O‘O¤OÓ4ð 6Ü8Eñ F�à�	Ø+ò �GÜŸ'™'Ÿ,™, w°Ó3�CÜ—w‘w—~‘~ cÕ*Ø$%˜	Ü'¨¸
È!ÕLÙðñ !ÝÜ˜R�¤"§*¡*§/¡/°,Õ"?ðAõ Bñ �yÔ!Øˆñ{ ñ~ Ø—H‘H“J‰	àˆ	Ø€MØ0Ø�‰Ó˜1Ñœo¨rð43ñ 3Ðà×Ñ˜-Ó(€AÙØ�W‰W�V‹_ˆÜ�7‰7�>‰>˜"ÔÜ˜B¨:¸QÖ?äŸG™GŸO™O¬OÓ<Ð=ÄÑMˆLØˆIØ'ò �Ü—g‘g—l‘l 7¨BÓ/�Ü—7‘7—>‘> #Õ&Ø !�IÜ# C°JÀaÕHÙðñ ÝÜ˜•HœbŸj™jŸo™o¨lÕ;ð=õ >ñ 	�9ÔØÐØ‡I�I„KÙÙ�2�qÕð 9Dñ	6ˆÐ% ¸È	Ø˜% ©+ùòE 8øô "ò 	ÜØ+¨C¯L©L«NÐ+;¸1¸S¿Z¹Z»\¸NØ   ð &ðóð ûð	ús   Ã])Ã<]. Ý.	^-Ý71^(Þ(^-zN\s*(?P<before>%s(?=\s*(\b(%s)\b)))\s*(?P<this>(\b(%s)\b))\s*(?P<after>%s)\s*\Zzqcharacter|logical|integer|real|complex|double\s*(precision\s*(complex|)|complex)|type(?=\s*\([\w\s,=(*)]*\))|byteú.*rh   z|static|automatic|undefined)z([a-z]+[\w\s(=*+-/)]*?|)Úfunctionrú   rù   Úbegin)z	[a-z\s]*?Ú
subroutinerü   rù   zprogram|block\s*datazM|module(?!\s*procedure)|python\s*module|(abstract|)\s*interface|type(?!\s*\()z\end|endprogram|endblockdata|endmodule|endpythonmodule|endinterface|endsubroutine|endfunctionÚendzDend\s*(if|do|where|select|while|forall|associate|critical|enum|team)z[\w]*?Úendifzmodule\s*procedureÚmoduleprocedure)r
   Úimplicitr   rù   r   )r
   údimension|virtualr  rù   Ú	dimension)r
   Úexternalr  rù   r  )r
   Úoptionalr  rù   r  )r
   Úrequiredr  rù   r  )r
   Úpublicr  rù   r  )r
   Úprivater  rù   r  )r
   Ú	intrinsicr  rù   r  )r
   úintent|depend|note|checkr	  z\s*\(.*?\).*Úintent)r
   Ú	parameterr  z\s*\(.*r  )r
   Údatar  rù   r  )r
   Úcallr  rù   r  )r
   Úentryr  rù   r  )r
   Úcallfunr  rù   r  )r
   Úcommonr  rù   r  )r
   Úuser  rù   r  )r
   Úcontainsr  r
   r  )r
   Úformatr  rù   r  )r
   úKthreadsafe|fortranname|callstatement|callprotoargument|usercode|pymethoddefr  rù   Úf2pyenhancementsz2\s*(?P<before>''')(?P<this>.*?)(?P<after>''')\s*\ZÚ	multilinec           	      óL  — t        d«      t        |«      z  rJ d«       ‚t        j                  dj                  dt        j                  |«      › d�dt        j                  |«      › d�dd¬	«      «      }|j                  | «      }|r|j                  «       }|d
   |d   fS | dfS )z¶
    Splits the line into (line[:i], line[i:]),
    where i is the index of first occurrence of one of the characters
    not within quotes, or len(line) if no such index exists
    z"'zcannot split by unquoted quoteszR\A(?P<before>({single_quoted}|{double_quoted}|{not_quoted})*)(?P<after>{char}.*)\Zz[^"'ú]ú[z('([^'\\]|(\\.))*')z("([^"\\]|(\\.))*"))Ú
not_quotedr;   Úsingle_quotedÚdouble_quotedÚbeforeÚafterr
   )Úsetr¾   r¿   r  ÚescaperÒ   Ú	groupdict)r0   Ú
charactersr™   ró   Úds        r)   rÑ   rÑ   ˜  s®   € ô �E“
œS ›_Ò,ÐPÐ/PÓPÐ-Ü
�
‰
ð	!ß!'¡ØœrŸy™y¨Ó4Ð5°QÐ7Ø”R—Y‘Y˜zÓ*Ð+¨1Ð-Ø0Ø0ð	 "(ó "2ó	3€Að 	
�‰�‹€AÙØ�K‰K‹MˆØ�(‘˜Q˜w™ZÐ(Ð(Ø�"ˆ:Ðr(   c                 óº   — g }t        | «      j                  d«      D ],  }dD ]  }|j                  |d«      }Œ |j                  |«       Œ. dj	                  |«      S )Nú@,@z(),rð   ú,)ÚmarkoutercommaÚsplitrÐ   ÚappendrÛ   )ÚargslineÚarª   r™   s       r)   Ú_simplifyargsr,  ¬  s`   € Ø
€AÜ˜HÓ%×+Ñ+¨EÓ2ò ˆØò 	"ˆAØ—	‘	˜!˜SÓ!‰Að	"à	�‰��ðð �8‰8�A‹;Ðr(   z"\s*(?P<result>\b[a-z]+\w*\b)\s*=.*z \s*(?P<bind>\b[a-z]+\w*\b)\s*=.*zH\s*bind\(\s*(?P<lang>[^,]+)\s*,\s*name\s*=\s*"(?P<lang_name>[^"]+)"\s*\)c                 ó®  — t        | d«      \  }}|r„t        d   j                  | «      slt        d   j                  | «      sT|dk(  sJ t	        |«      «       ‚t        | d«      \  } }|r!t        | |«       t        |dd d«      \  } }|rŒ!t        | |«       y|dk  r_dat        diat        i iat        g ia	g t        t           d<   i t        t           d<   dt        t           d<   dt        t           d	<   d
a
d
ay|dkD  �r”d}t        rt        t        k(  rd}t        |kD  r t        dt	        t        «      ›dt	        t        «      ›d�«       t        d«       t        t        dz
     j                  t        t           «       t        t           t        t        dz
     d
   d<   t        t        = t        dz
  at        |kD  rŒ t        rÍt        t        k(  rÀt        t        dz
     j                  t        t           «       t        t           t        t        dz
     d
   d<   t        t        = t        dz
  at        t        dz
     j                  t        t           «       t        t           t        t        dz
     d
   d<   t        t        = t        dz
  ad
a
y| dk(  ryd}t        t         t"        t$        t&        t(        t*        t,        t.        t0        t2        t4        t6        t8        t:        t<        t>        t@        tB        tD        tF        tH        tJ        t        t        tL        fD ]  }|d   j                  | «      }|r n|dz   }Œ! �s•tN        }	dt        cxk  r	t        k  ry dt        t           v �r t        t           d   D �]  }
|
tP        v r	tP        |
   }
dt        t           v r|
t        t           d   v rŒ7tS        j                  d|
z  tU        | «      tR        jV                  «      }|sŒk|	j                  |jY                  d«      «      }t[        |jY                  d«      «      }|rd|
› d|› d|jY                  d«      › d�} n	d|
› d|› d�} t\        d   j                  | «      }|st        dt	        | «      › d�«        yt_        |d| «        y t`        dkD  s,t`        dk(  r7tb        je                  «       jg                  d«      rda4t        dt        z  «       yd   dk(  �r=dt        cxk  r	t        k  rn nt        dz
  at        t        k  ryt        dk  rtk        d t        z  «      ‚t8        d   j                  | «      }|rc|jY                  d!«      t        t           k(  sDtk        d"t	        |jY                  d!«      «      ›d#t	        t        t           «      ›d$tl        ›�«      ‚t        t        k(  rd
at        t        dz
     j                  t        t           «       t        t           t        t        dz
     d
   d<   t        t        = t        dz
  atn        sda8yy|d   d%k(  r5dt        cxk  r	t        k  rn n
t        dz   ayda9t_        ||d   | «       da8y|d   d&k(  ry|d   d'k(  rt_        ||d   | «       y|d   d(k(  r*tt        rydt        cxk  r	t        k  r	y t        ayt        aydt        cxk  r	t        k  ry t_        ||d   | «       y))z¬
    reset=-1  --- initialize
    reset=0   --- crack the line
    reset=1   --- final check if mismatch of blocks occurred

    Cracked data is saved in grouplist[0].
    ú;r   r   Nr
   ÚbodyÚvarsÚblockrq   r   é   zcrackline: groupcounter=z groupname=r¹   zYcrackline: Mismatch of blocks encountered. Trying to fix it by assuming "end" statement.
Ú	externalsÚ
interfacedz5(?P<before>[^"]*)\b%s\b\s*@\(@(?P<args>[^@]*)@\)@.*\Zr  Úargszcallfun ú(z
) result (r©   ú)z4crackline: could not resolve function call for line=ú.
r  r¸   z"crackline:%d: No pattern for line
rý   z>crackline: groupcounter(=%s) is nonpositive. Check the blocks.Úthiszcrackline: End group z* does not match with previous Begin group z
	rû   rþ   rÿ   r  );rÑ   Úf2pyenhancementspatternrÒ   ÚmultilinepatternrÎ   Ú	crackliner   Ú	groupnameÚ
groupcacher   r   r   r   r2   r)  ÚdimensionpatternÚexternalpatternÚintentpatternÚoptionalpatternÚrequiredpatternÚparameterpatternÚdatapatternÚpublicpatternÚprivatepatternÚintrinsicpatternÚendifpatternÚ
endpatternÚformatpatternr½   ÚfunctionpatternÚsubroutinepatternÚimplicitpatternÚtypespatternÚcommonpatternÚcallpatternÚ
usepatternÚcontainspatternÚentrypatternÚmoduleprocedurepatternÚcrackline_re_1rz   r¾   ÚmarkouterparenrÀ   rÓ   r,  ÚcallfunpatternÚanalyzeliner   r!   r¡   Úendswithr&   rÆ   r    r   r   r   r   )r0   Úresetrð   Úhas_semicolonÚsemicolon_lineÚflr1   Úpatró   Úre_1rq   Úm1Úm2r+  s                 r)   r<  r<  ¹  sM  € ô )¨¨sÓ3Ñ€A€}ÙÔ5°aÑ8×>Ñ>¸tÔDÜ/°Ñ2×8Ñ8¸Ô>à˜ŠzÐ&œ4 ›;Ó&ˆzä0°°sÓ;ÑˆˆnÙÜ�d˜EÔ"Ü#4°^ÀAÀBÐ5GÈÓ#MÑ ˆD�.ò ô 	�$˜ÔØØˆq‚yØˆÜ! 2Ð&ˆ	Ü" BÐ'ˆ
Ü! 2Ð&ˆ	Ø+-Œ
”<Ñ  Ñ(Ø+-Œ
”<Ñ  Ñ(Ø,.Œ
”<Ñ  Ñ)Ø+-Œ
”<Ñ  Ñ(ØˆØˆØØˆqƒyØˆÝœ\¬\Ò9ØˆBÜ˜RÒÝÜœ,Õ'¬¬i­ð:ô ;äØlônä”l QÑ&Ñ'×.Ñ.¬z¼,Ñ/GÔHÜ6?ÄÑ6MŒI”l QÑ&Ñ'¨Ñ+¨FÑ3Üœ,Ð'Ü'¨!Ñ+ˆLô ˜RÓõ œ\¬\Ò9Ü”l QÑ&Ñ'×.Ñ.¬z¼,Ñ/GÔHÜ6?ÄÑ6MŒI”l QÑ&Ñ'¨Ñ+¨FÑ3Üœ,Ð'Ü'¨!Ñ+ˆLÜ”l QÑ&Ñ'×.Ñ.¬z¼,Ñ/GÔHÜ6?ÄÑ6MŒI”l QÑ&Ñ'¨Ñ+¨FÑ3Üœ,Ð'Ü'¨!Ñ+ˆLØˆLØØˆr‚zØØ€DÜ ¤/´=Ä/ÜÜ ¤+¬}¼nÜ ÜœjÜÜœoÔ/@Ü¤¬}ÜœZ¬ÜÜ'Ü Ü&ðò ˆð �‰F�L‰L˜ÓˆÙÙØ�a‰x‰ð#ò$ ÜˆØ”Ô/¤<Ò/Øð 0àœ*¤\Ñ2Ò2Ü"¤<Ñ0°Ñ=ó �Øœ;Ñ&Ü& tÑ,�DØ¤:¬lÑ#;Ñ;ÀÌ
ÔS_ÑH`ÐamÑHnÑ@nØÜ—X‘XØLÈtÑSÔUcÐdhÓUiÔkm×koÑkoóq�âØŸ™ B§H¡H¨XÓ$6Ó7�BÜ% b§h¡h¨vÓ&6Ó7�AÙØ!)¨$¨¨q°°°:¸b¿h¹hÀxÓ>PÐ=QÐQRÐS™à!)¨$¨¨q°°°1Ð5˜Ü& qÑ)×/Ñ/°Ó5�AÙÜØRÔSWÐX\ÓS]ÐR^Ð^aÐbôdáÜ  9¨dÔ3Ùð)ô* �QŠ;œ7 aš<¬O×,AÑ,AÓ,C×,LÑ,LÈVÔ,TØ#ÐÜÐ9¼\ÑJÔKØØ	ˆQ‰�5‹Ø”Ô.¤,Õ.Ü'¨!Ñ+ˆLÜ¤,Ò.ØÜ˜1ÒÜð 0ä+ñ-ó .ð .ô ˜!‰_×"Ñ" 4Ó(ˆÙ˜Ÿ™ &Ó)¬Y´|Ñ-DÒDÝä! "§(¡(¨6Ó"2Õ3´T¼)ÄLÑ:QÕ5RÝ-ð/ó ð ô
 œlÒ*Ø ˆOÜ”, Ñ"Ñ#×*Ñ*¬:´lÑ+CÔDÜ2;¼LÑ2IŒ	”, Ñ"Ñ# BÑ'¨Ñ/Ü”lÐ#Ü# aÑ'ˆÝØ‰Kð à	ˆQ‰�7Ò	Ø”Ô/¤<Õ/Ü'¨!Ñ+ˆLØØˆÜ�A�s˜1‘v˜tÔ$Ø‰Ø	ˆQ‰�7Ò	ØØ	ˆQ‰Ð$Ò	$Ü�A�s˜1‘v˜tÕ$Ø	ˆQ‰�:Ò	ÝØØ”Ô/¤<Ò/Øð 0ä&‰œ,‰à”Ô/¤<Ò/Øð 0ä�A�s˜1‘v˜tÕ$r(   c                 óz   — d}d}| D ]1  }|dk(  r|dz   }|dk(  r|dz   }Œ|dk(  r|dz
  }|dk(  r|dz   }Œ-||z   }Œ3 |S )Nr
   r   r6  r   ú@(@r7  ú@)@r'   )r0   rë   Úfr³   s       r)   rW  rW  W  sq   € Ø
€AØ	€AØò ˆØ�Š8Ø�A‘ˆAØ�AŠvØ˜‘I�ØØ�#ŠXØ�A‘ˆAØ�AŠvØ˜‘I�ØØ�‰E‰ðð €Hr(   c                 ó  — d}d}t        | |dz   «      \  }}||z  }|rY|d   |k(  r|dk(  r|d|z   dz   z  }n#||d   z  }|d   dk(  r|dz  }n|d   dk(  r|dz  }t        |dd  |dz   «      \  }}||z  }|rŒY|rJ t        || |f«      «       ‚|S )Nr
   r   ú()ú@r6  r   r7  )rÑ   rÎ   )r0   Úcommarë   rf  r  r  s         r)   r'  r'  i  sÍ   € Ø
€AØ	€AÜ% d¨E°D©LÓ9�M€FˆEØˆ�K€AÙ
Ø�!‰H˜Ò A¨¢FØ��u‘˜sÑ"Ñ"‰Aà��q‘‰MˆAØ�Q‰x˜3ŠØ�Q‘‘Ø�q‘˜S’Ø�Q‘�Ü)¨%°°¨)°U¸T±\ÓB‰ˆ�Ø	ˆV‰ˆò ñ Ð$”$˜˜4 �|Ó$Ó$ˆ5Ø€Hr(   c                 óJ   — | j                  dd«      j                  dd«      }|S )Nrd  r6  re  r7  )rÐ   )r0   r™   s     r)   Úunmarkouterparenrl  |  s$   € Ø�‰�U˜CÓ ×(Ñ(¨°Ó4€AØ€Hr(   c                 ó¢  — | si } |s| S | |u r| S t        |j                  «       «      D ]¤  }|dk(  r|s|| vsŒ||   | |<   Œ|dk(  r||   D ]  }t        | ||«      } Œ Œ5|dk(  rt        | ||   |«      } ŒK|dk(  rt	        | ||   |«      } Œa|dv r|s|| vsŒl||   | |<   Œu|dk(  rŒ{|dv rt        d|› d	�«       Œ�t        d
t        |«      z   «      ‚ | S )Nr4   ÚattrspecÚkindselectorÚcharselector)ú=ÚtypenameÚnote)r
  Úcheckr  r  r  Údependzappenddecl: "z" not implemented.
z-appenddecl: Unknown variable definition key: )ÚlistÚkeysÚsetattrspecÚsetkindselectorÚsetcharselectorro   rÆ   rÂ   )ÚdeclÚdecl2ÚforceÚkrë   s        r)   Ú
appenddeclr  �  s  € ÙØˆÙØˆØˆu�}ØˆÜ�%—*‘*“,Óò $ˆØ�
Š?Ù˜ šØ ™(��Q’Ø�*Š_Ø˜1‘Xò 3�Ü" 4¨¨EÓ2‘ñ3à�.Ò Ü" 4¨¨q©°5Ó9‰DØ�.Ò Ü" 4¨¨q©°5Ó9‰DØÐ#Ñ#Ù˜ šØ ™(��Q’Ø�&Š[ØØð )ñ )ä�m A 3Ð&:Ð;Õ<äÐKÜ ›Fñ#ó $ð $ð)$ð, €Kr(   zD\s*(?P<this>(@\(@.*?@\)@|\*[\d*]+|\*\s*@\(@.*?@\)@|))(?P<after>.*)\Zz[(?:,(?P<attributes>[\w(),]+))?(::)?(?P<name>\b[a-z$_][\w$]*\b)(?:\((?P<params>[\w,]*)\))?\Zzª\s*(?P<name>\b[\w$]+\b)\s*(@\(@\s*(?P<args>[\w\s,]*)\s*@\)@|)\s*((result(\s*@\(@\s*(?P<result>\b[\w$]+\b)\s*@\)@|))|(bind\s*@\(@\s*(?P<bind>(?:(?!@\)@).)*)\s*@\)@))*\s*\ZzF\s*(?P<scheme>(operator|assignment))@\(@\s*(?P<name>[^)]+)\s*@\)@\s*\Zz9\s*(?P<name>\b[\w$]+\b)\s*@\(@\s*(?P<args>.*)\s*@\)@\s*\Zz4([-+]?(?:\d+(?:\.\d*)?|\d*\.\d+))[dD]((?:[-+]?\d+)?)zA([-+]?((?:\d+(?:\.\d*)?|\d*\.\d+))[eE]((?:[-+]?\d+)?)|(\d+\.\d*))zintent\s*\(.*?\bcallback\bc                 ó`   — | j                  dg «      D ]  }t        j                  |«      sŒ y y)Nrn  r   r   )ÚgetÚ_intentcallbackpatternrÒ   )Úvdeclr+  s     r)   Ú_is_intent_callbackr„  µ  s2   € Ø�Y‰Y�z 2Ó&ò ˆÜ!×'Ñ'¨Õ*Ùðð r(   c                 ód  — dj                  | j                  «       «      } t        j                  | «      }t	        | |«       |re|j                  d«      }|r-|j                  d«      D �cg c]  }|j                  «       ‘Œ c}ng }|j                  d«      ||j                  d«      fS d g d fS c c}w )Nr
   Ú
attributesr&  rq   Úparams)rÛ   r(  ÚtypedefpatternrÒ   ÚprintrÓ   r¡   )r0   ra  Úattrsr+  s       r)   Ú_resolvetypedefpatternr‹  ¼  s“   € Ø�7‰7�4—:‘:“<Ó €DÜ	×	Ñ	˜dÓ	#€BÜ	ˆ$�„OÙ	Ø—‘˜Ó&ˆÙ9> E§K¡K°Ó$4Ö5˜q�—‘•Ó5ÀBˆØ�x‰x˜Ó ¨¯©°Ó(:Ð:Ð:Ø��Tˆ>Ðùò 6s   Á)B-c                 óì   — t        j                  dt         j                  «      }|j                  | «      }d }|r8|j	                  d«      }| d |j                  «        | |j                  «       d  z   } | |fS )NzObind\(\s*(?P<lang>[^,]+)(?:\s*,\s*name\s*=\s*["\'](?P<name>[^"\']+)["\']\s*)?\)r   )r¾   r¿   rÀ   ÚsearchrÓ   Ústartrý   )r0   ÚpatternrÒ   Úbind_statements       r)   Úparse_name_for_bindr‘  Æ  sl   € Ü�j‰jÐkÔmo×mqÑmqÓr€GØ�N‰N˜4Ó €EØ€NÙØŸ™ Q›ˆà�N�U—[‘[“]Ð# d¨5¯9©9«;¨<Ð&8Ñ8ˆØ�ÐÐr(   c                 óÖ  — t        | «      \  } }t        | «      } t        j                  | «      }|r3|j	                  d«      |j	                  d«      |j	                  d«      |fS t
        j                  | «      }|r/|j	                  d«      dz   |j	                  d«      z   dz   }|g d d fS t        j                  | «      }|r$|j	                  d«      |j	                  d«      d d fS d g d d fS )Nrq   r5  r©   Úschemer6  r7  )r‘  rW  ÚnameargspatternrÒ   rÓ   ÚoperatorpatternÚcallnameargspattern)r0   Ú
bind_cnamera  rq   s       r)   Ú_resolvenameargspatternr˜  Ð  sã   € Ü*¨4Ó0Ñ€Dˆ*Ü˜$Ó€DÜ	×	Ñ	˜tÓ	$€BÙ	Ø�x‰x˜Ó §¡¨&Ó!1°2·8±8¸HÓ3EÀzÐQÐQÜ	×	Ñ	˜tÓ	$€BÙ	Ø�x‰x˜Ó! CÑ'¨"¯(©(°6Ó*:Ñ:¸SÑ@ˆØ�R˜˜tÐ#Ð#Ü	×	"Ñ	" 4Ó	(€BÙ	Ø�x‰x˜Ó §¡¨&Ó!1°4¸Ð=Ð=Ø��T˜4ÐÐr(   c                 óº8  — | j                  d«      }|dk7  rdat        rÛ|dvr×t        sÑt        dk  rÈt
        j                  j                  t        «      j                  d«      d   }t        d|› d	�«       dat        dz   ad
t        t        <   i t        t        <   g t        t        <   g t        t           d<   i t        t           d<   d
t        t           d<   |t        t           d<   dt        t           d<   da|dv �rË|j                  «       }t!        j"                  d|t         j$                  «      rd}nOt!        j"                  d|t         j$                  «      rd}n't!        j"                  d|t         j$                  «      rd}|dk(  r8t'        | j                  d«      «      \  }}}d|it        t           d   |<   g }d}	nt)        | j                  d«      «      \  }}}	}
|€|dk(  rd}nd}|dvrt        d«       ||t        fa|r@t+        t-        |«      j                  d«      D �cg c]  }|j/                  «       ‘Œ c}«      }ng }d|v r%d|v r|j1                  d«       d|v rŒt        d «       d}d}|d!v r\d}d"t        t           vry|t        t           d"   vryt        t           D ]  }|d   |k(  sŒ y |t        t           d#   v ryd$d%d!œ|   }t2        r#t4        d&k(  rt        dk  rt        d'z   ad}|d(vrd}t        dz   ai t        t        <   g t        t        <   |rÉt6        dkD  rt        d)t9        t2        «      z  d«       d*t        t        <   dt        t           d<   t2        t        t           d<   dt        t           d<   g t        t           d<   g t        t           d+<   g t        t           d#<   i t        t           d<   t        dz   ai t        t        <   g t        t        <   |rãt6        dkD  rt        d,t        z  d«       d-t        t        <   d-t        t           d<   d.t        t           d<   t        t        dz
     d   ›d/t        t        dz
     d   ›�t        t           d<   g t        t           d<   g t        t           d+<   g t        t           d#<   i t        t           d<   t        dz   ai t        t        <   g t        t        <   |t        t        <   |t        t           d<   |sd0|j;                  d1d2«      z   }| j                  d3«      t        t           d4<   t=        |«      t        t           d<   |	t        t           d5<   t        dk(  rt        t        t           d<   nqt2        r4t        d6k(  r+t        t        dz
     d   ›d/t        ›�t        t           d<   n7t        t        dz
     d   ›d/t        t        dz
     d   ›�t        t           d<   t?        t        t           jA                  «       «      D ]!  }t        t           |   rŒt        t           |= Œ# |t        t           d"<   g t        t           d<   g t        t           d+<   g t        t           d#<   i t        t           d<   i t        t           d7<   |dk(  rg t        t           d8<   |d!v r£|t        t        d'z
     d+   vr"t        t        d'z
     d+   jC                  |«       tE        jF                  t        t        d'z
     d   «      t        t           d<   	 t        t           d   |   t        t           d   |   d   jI                  d9«      = |d:v �rN
r‰t!        jL                  tN        |
«      }|rm|i it        t           d;<   |j                  d<«      t        t           d;   |   d<<   |j                  d=«      r%|j                  d=«      t        t           d;   |   d<   	 tQ        t        t           d   |   t        t        d'z
     d   d   «      t        t           d   |<   |d>k(  rX|	rV|	t        t           d   v rD||	k(  s?tQ        t        t           d   |   t        t           d   |	   «      t        t           d   |<   	 t        t        d'z
     d#   jC                  |«       |d%k(  rltR        d   j#                  | j                  d3«      d1z   |z   «      }|r=tU        |j                  d«      |j                  d«      «      \  }}}}tW        ||||«       |d!v r¿t        t        dz
     jC                  t        t           «       t        t           t        t        dz
     d&   d<   t        t        = t        dz
  at        t        dz
     jC                  t        t           «       t        t           t        t        dz
     d&   d<   t        t        = t        dz
  ayy|d7k(  r•t)        | j                  d«      «      \  }}}	}|�s|r@t+        t-        |«      j                  d«      D �cg c]  }|j/                  «       ‘Œ c}«      }ng }|	�J t9        |	«      «       ‚|t        t           d7   |<   d7|t        fayy|dk(  r;tU        || j                  d«      «      \  }}}}tW        ||||«      }|�
d?|t        fayy|d@v �rât        t           d   }| j                  d«      j/                  «       }|jY                  dA«      }|dk  r£|dBk(  ržt[        |«      jY                  dC«      d'z
  }|d|dz    dAz   ||dz   d z   }|jY                  dA«      }||d dAk(  rTd"t        t           v rEt        dD| j                  d«      ›|d| ›dE�«       |dFj]                  t        t           d"   «      z   }|dk  rd}d}n|d| j/                  «       }||d'z   d }t-        |«      j                  d«      }t_        |«      dkD  r%|d   }t        dGdFj]                  |dd «      z  «       d}t-        |«      j                  d«      D �cg c]  }|j/                  «       ‘Œ c}D �]/  }t`        j#                  |«      }|s<|dHv rd}nOtc        | je                  «       «       t        dI|›dJt9        |«      ›dK�«       ŒWt=        |j                  d«      «      }|dHv r|dLv r||j                  d«      z  }||vri ||<   |dMk(  r||j                  d«      z   }|dBk(  rÕ| j                  d«      |z   }tf        j#                  |«      r¬|t        t           d"   vrŒt        dkD  rsdNt        t        d'z
     d   vrt        dO«       |t        t           d   k7  r^t        dP|›dQt        t           d   ›dR�«       t        t           d"   jC                  |«       nti        dS|› dT�«       nti        dU|z  «       |dVv r|}d||   v r||   d   jC                  «       n	g||   d<   |d9k(  rrt        t           d   d
k(  rt        dW«       �ŒÜ|t        t           d"   vr�Œðd+t        t           vrg t        t           d+<   t        t           d+   jC                  |«       |}�Œ2 |t        t           d<   |�
d?|t        fayy|dXk(  rK| j                  d«      j                  dF«      D �cg c]  }|j/                  «       ‘Œ c}t        t           dY<   y|dZk(  �r?t        t           d   }| j                  d«      j/                  «       dd& }d}t-        |«      j                  d«      D �]Ð  }	 |j                  d[«      D �cg c]  }|j/                  «       ‘Œ c}\  }}tk        |«      }t=        |«      }||vri ||<   d[||   v r&||   d[   |k(  st        d_|›d`||   d[   ›da|›d	�«       tm        ||«      }|rù|jo                  db«      dck(  ržt?        |«      } tp        js                  |«      D ]i  } t?        || ju                  «       | jw                  «        j                  «       j;                  ddde«      «      | | ju                  «       | jw                  «        Œk dj]                  | «      }nG|jo                  db«      dfk(  r3|dd j                  «       j;                  ddde«      j;                  dFdg«      }	 ty        |i |«      }!t9        |!«      ||   d[<   d||   v r||   d   jC                  dZ«       n	dZg||   d<   |}�ŒÓ |t        t           d<   |�
d?|t        fayy|djk(  �rƒ| j                  d«      j/                  «       j                  «       dkk(  rdt        t           dj<   y| j                  d«      �r/t        t           jo                  dji «      }#|#€t        dl«       i }#t-        | j                  d«      «      j                  d«      D �]Å  }i }$t!        j"                  dm|t         j$                  «      }|st        dn|› d^�«       Œ=t€        j#                  |j                  d«      «      }%|%st        do|› d^�«       ŒstU        |%j                  d«      |%j                  d«      «      \  }}}}tƒ        ||«      \  }&}'}(||$db<   |&|$dp<   |'|$dq<   |(|$dr<   t?        |$jA                  «       «      D ]  }|$|   rŒ	|$|= Œ t-        |j                  d«      «      j                  d«      D ]­  })ds|)v r2	 |)j                  ds«      D �cg c]  }|j/                  «       ‘Œ c}\  }*}+n|)j/                  «       x}*}+t_        |*«      t_        |+«      cxk(  rdk(  sn t        dt|)› dv�«       Œzt…        t‡        |*«      t‡        |+«      dz   «      D ]  },|$|#t‰        |,«      <   Œ Œ¯ �ŒÈ |#t        t           dj<   yy|dwk(  �r÷g }d}-d}.d}/d}0d}1| j                  d«      D ]—  }2|1s|2dxk(  r|0 }0|2dyk(  r|0r|/dz   }/Œ|2dzk(  r|1dz   }1n
|2d{k(  r|1dz
  }1|/dk(  r|-|2z   }-Œ:|/dk(  r|.|2z   }.ŒE|/d'k(  sŒK|-j/                  «       }-|-j‹                  dF«      r|-dd j/                  «       }-|jC                  |-|.g«       |2}-d}.d}/Œ™ |/d'k(  rG|-j/                  «       }-|-j‹                  dF«      r|-dd j/                  «       }-|jC                  |-|.g«       t        t           jo                  di «      }3d}|D �]²  }4|4d   j/                  «       j�                  dF«      |4d   j/                  «       c|4d<   |4d<   |4d   j‹                  dz«      rt        d||4d   › d}�«       Œgt�        t+        t-        |4d   «      j                  d«      D �cg c]  }|j/                  «       ‘Œ c}«      «      D ]þ  \  }5}!|!j‹                  dz«      rt        d||!› d}�«       Œ'd~|4d   v rt        d|4d   › d}�«       ŒA|3j‘                  |!i «       |3|!   jo                  db«      }6t“        |3|!   «      }7|6dfk(  rt!        j”                  d€|4d   «      n|4d   j                  dF«      }8	 |7rd�d‚j]                  |8«      › dƒ�n|8|5   }9|3|!   jo                  d[«      }>|>r|>|9k7  rt        d†|!› d`|>› d‡|9› d^�«       |9|3|!   d[<   |!}�Œ  �Œµ |3t        t           d<   |r
d?|t        fayy|dˆk(  �r| j                  d«      j/                  «       }|d   dyk(  sd‰|z   }g }?t!        j                  dy|d'¬Š«      \  }}@}A|@j/                  «       }@|@sd‹}@|?jC                  @Ag«       i }Bdˆt        t           v rt        t           dˆ   }B|?D ]i  }2|2d   Bvrg B|2d   <   t-        |2d   «      j                  d«      D �cg c]  }|j/                  «       ‘Œ c}D ]  }|sŒB|2d      jC                  |«       Œ Œk Bt        t           dˆ<   dˆ@t        fay|dŒk(  �r·t!        j"                  d�| j                  d«      t         j$                  «      }|�rY|je                  «       }CdŒt        t           vri t        t           dŒ<   |j                  d«      }i t        t           dŒ   |<   d}DdŽCv �r%CdŽ   ��d�Cv rCd�   €d}DDt        t           dŒ   |   d�<   CdŽ   j                  dF«      D �cg c]  }|j/                  «       ‘Œ }}i }E|D ]¡  }4d[|4v r€t!        j"                  d‘|4t         j$                  «      }%|%r@|%j                  dŒ«      j/                  «       E|%j                  d’«      j/                  «       <   nt        d“t9        |4«      › dE�«       n|4E|4<   Et        t           dŒ   |   d”<   Œ£ ytc        | je                  «       «       t        d•«       yyy|d–v r«d—t        t           vri t        t           d—<   t        t           d—   }F| j                  d«      d˜k(  rDd˜Fv r@t¡        Fd˜   t¢        «      r	Fd˜   g|Fd˜<   Fd˜   jC                  | j                  d«      «       y| j                  d«      F| j                  d«      <   y|dk(  rIt        €t6        rt        d™«       yt        }Gt¥        t        |G   t        dd' | j                  d«      «       yt6        dkD  r%tc        | je                  «       «       t        dš«       yyc c}w # tJ        $ r Y �Œ~w xY w# tJ        $ r Y �Œ»w xY w# tJ        $ r Y �ŒKw xY wc c}w c c}w c c}w c c}w # tJ        $ r t        d\|› d]|› d^�«       Y �Œçw xY w# tz        t|        t~        f$ r}"ti        dh|›di|"›dE�«       Y d}"~"�Œd}"~"ww xY wc c}w # tJ        $ r t        dt|)› du�«       Y �ŒŠw xY wc c}w # t–        $ rÐ t™        d„„ |8D «       «      ržg }:|8D ]•  };d…|;v rp	 |;j                  d…«      \  }<}=|:j›                  |=j/                  «       gt�        |<«      z  «       ŒI# tž        $ r" |:jC                  |;j/                  «       «       Y Œsw xY w|:jC                  |;j/                  «       «       Œ— |:}8|7rd�d‚j]                  |8«      › dƒ�n|8|5   }9Y �Œw xY wc c}w c c}w )›a˜  
    Reads each line in the input file in sequence and updates global vars.

    Effectively reads and collects information from the input file to the
    global variable groupcache, a dictionary containing info about each part
    of the fortran module.

    At the end of analyzeline, information is filtered into the correct dict
    keys, but parameter values and dimensions are not yet interpreted.
    r9  r  N)rû   r  r  rh   r   ú.r   z=analyzeline: no group yet. Creating program group with name "rm   Úprogramr/  r0  r1  rq   ÚfromskyÚfrom)rû   r  r  zblock\s*dataú
block datazpython\s*moduleúpython modulezabstract\s*interfaceúabstract interfacerh   r  rn  Ú_BLOCK_DATA_r
   )Ú	interfacerž  r   z2analyzeline: No name/args pattern found for line.
r%  z<analyzeline: argument list is malformed (missing argument).
)r  r  r5  r4  rü   rú   r   r2  ©r¢  r   z&analyzeline: Creating module block %s
Úmoduler3  zDanalyzeline: Creating additional interface block (groupcounter=%s).
r¢  Úunknown_interfaceú:Úunknown_r­   rð   r  Úprefixr©   é   r  Úvarnamesr  ©rú   rü   ÚbindlangÚlangÚ	lang_namer  Úvariable)r  r
  r  r  r  r  r  r  ú::r
  re  z"All arguments will have attribute r¹   r&  zXanalyzeline: cannot handle multiple attributes without type specification. Ignoring %r.
©r  r  z&analyzeline: no name pattern found in z statement for ú. Skipping.
>   ÚoperatorÚ
assignmentr  Ú__user__z8analyzeline: missing __user__ module (could be nothing)
z(analyzeline: appending intent(callback) ú to z arguments
zanalyzeline: intent(callback) z is ignored
z=analyzeline: intent(callback) %s is already in argument list
)r  r  r  r  r  r  z(analyzeline: ignoring program arguments
rÿ   Úimplementedbyr  rq  zAanalyzeline: could not extract name,expr in parameter statement "ú" of "ú"
z1analyzeline: Overwriting the value of parameter "ú" ("z	") with "r4   r5   r#  ÚeÚcomplexz+1j*(z analyzeline: Failed to evaluate z. Ignoring: r   Únonez<analyzeline: Overwriting earlier "implicit none" statement.
z9\s*(?P<this>.*?)\s*(\(\s*(?P<after>[a-z-, ]+)\s*\)\s*|)\Zz@analyzeline: could not extract info of implicit statement part "zIanalyzeline: could not extract types pattern of implicit statement part "ro  rp  rr  ú-z2analyzeline: expected "<char>-<char>" instead of "z&" in range list of implicit statement
z*" in range list of implicit statement (2)
r  ú'ú/r6  r7  zanalyzeline: implied-DO list "z" is not supported. Skipping.
r›   zComment line in declaration "z\(.*?\)ú(/ú, z/)c              3   ó$   K  — | ]  }d |v –— Œ
 y­w)r   Nr'   )Ú.0ró   s     r)   ú	<genexpr>zanalyzeline.<locals>.<genexpr>µ  s   è ø€ Ò5¨˜3 !œ8Ñ5ùs   ‚r   z*analyzeline: changing init expression of "ú") to "r  z//)ÚmaxsplitÚ_BLNK_r  zR\A\s*(?P<name>\b\w+\b)\s*((,(\s*\bonly\b\s*:|(?P<notonly>))\s*(?P<list>.*))|)\s*\Zrv  ÚnotonlyÚonlyz7\A\s*(?P<local>\b\w+\b)\s*=\s*>\s*(?P<use>\b\w+\b)\s*\ZÚlocalz-analyzeline: Not local=>use pattern found in Úmapz0analyzeline: Could not crack the use statement.
)r  r  Úusercodez-analyzeline: No context for multiline block.
z+analyzeline: No code implemented for line.
)SrÓ   r&   r   r   r   r†   r‡   Úbasenamer!   r(  r2   r   r=  r>  r   r¡   r¾   rÒ   rÀ   r‹  r˜  rw   r'  r¦   Úremover   r   r   rÎ   rÐ   rr   rv  rw  r)  ÚcopyÚdeepcopyr[   rÆ   r�  Úcrackline_bindlangr  rO  Úcracktypespec0Ú
updatevarsÚfindrW  rÛ   rX   Únamepatternr‰  r!  r‚  ro   Úget_parametersÚdetermineexprtyper�  Úreal16patternÚfinditerrŽ  rý   ÚevalÚSyntaxErrorÚ	NameErrorÚ	TypeErrorÚtypespattern4implicitÚcracktypespecrÁ   ÚordÚchrr‹   ÚremoveprefixÚ	enumerateÚ
setdefaultÚgetdimensionÚfindallÚ
IndexErrorÚanyÚextendr8   rÖ   Ú
isinstancerÂ   Úappendmultiline)Hró   r?   r0   r1  Únewnamerq   rŠ  rð   r5  r©   Ú	bindclineÚxÚ
needmoduleÚneedinterfaceÚitr~  ÚbindcdatÚtr4   ÚselectorÚattrÚedeclÚ	last_namerã   ÚiÚplÚchr»  ra  ÚapÚinitexprr‡  ÚttÚvrì   Úimplr{  rb  Ú
kindselectÚ
charselectrr  r™   ÚbegcÚendcÚoÚdlÚilrf  ÚfcÚinpr³   r0  rë   ÚidxÚvtypeÚvdimÚmatchesÚnew_valÚexpanded_listrÒ   Ú
multiplierÚvalueÚcurrent_valÚclÚbnÚolÚ	commonkeyÚmmÚisonlyrï   r#  ÚgcsH                                                                           r)   rY  rY  à  sp  € ð �G‰G�F‹O€EØˆ{ÒØÐÝ�tÐ#GÑGÝ¤°Ò!1Ü—'‘'×"Ñ"¤?Ó3×9Ñ9¸#Ó>¸qÑAˆÜØKÈGÈ9ÐTXÐYô	[àˆÜ# aÑ'ˆØ"+Œ	”,ÑØ#%Œ
”<Ñ Ø"$Œ	”,ÑØ+-Œ
”<Ñ  Ñ(Ø+-Œ
”<Ñ  Ñ(Ø,5Œ
”<Ñ  Ñ)Ø+2Œ
”<Ñ  Ñ(Ø+4Œ
”<Ñ  Ñ(ØˆØÐ+Ò+à—‘“ˆÜ�8‰8�O U¬B¯D©DÔ1Ø ‰EÜ�X‰XÐ(¨%´·±Ô6Ø#‰EÜ�X‰XÐ-¨u´b·d±dÔ;Ø(ˆEØ�FŠ?Ü3°A·G±G¸GÓ4DÓE‰NˆD�%˜Ø6@À%Ð5HŒJ”|Ñ$ VÑ,¨TÑ2ØˆDØ‰Fä,CÀAÇGÁGÈGÓDTÓ,UÑ)ˆD�$˜ 	Øˆ<Ø˜Ò$Ø%‘à�ØÐMÑMÜÐMÔNà! 4¬Ð6ÐÙÜÜ'5°dÓ';×'AÑ'AÀ%Ó'HöJØ"#ð  Ÿg™g�iò Jó K‰Dð ˆDØ�‰:Ø˜‘*Ø—‘˜B”ð ˜’*äØOôQð ˆ
ØˆàÐ&Ñ&ØˆMØœZ¬Ñ5Ñ5ØØœ:¤lÑ3°FÑ;Ñ;ØÜ¤Ñ-ò �Ø�f‘: Ó%Ùðð ”z¤,Ñ/°Ñ=Ñ=ØØ)°jÑAÀ$ÑGˆEÝœ\¨RÒ/´LÀAÒ4EÜ'¨!Ñ+ˆLØˆJØÐ?Ñ?Ø !�ä# aÑ'ˆØ#%Œ
”<Ñ Ø"$Œ	”,ÑÙÜ˜Š{ÜÐAÜœ]Ó+ñ,Ø-.ô0à&.ŒI”lÑ#Ø0?ŒJ”|Ñ$ WÑ-Ü/<ŒJ”|Ñ$ VÑ,Ø/1ŒJ”|Ñ$ VÑ,Ø/1ŒJ”|Ñ$ VÑ,Ø46ŒJ”|Ñ$ [Ñ1Ø57ŒJ”|Ñ$ \Ñ2Ø/1ŒJ”|Ñ$ VÑ,Ü'¨!Ñ+ˆLØ')ŒJ”|Ñ$Ø&(ŒI”lÑ#ÙÜ˜Š{ÜÐ_Ü ñ"Ø#$ô&à&1ŒI”lÑ#Ø0;ŒJ”|Ñ$ WÑ-Ø/BŒJ”|Ñ$ VÑ,äœ<¨!Ñ+Ñ,¨VÓ4´jÄÐPQÑAQÑ6RÐSYÒ6Zð0\ŒJ”|Ñ$ VÑ,à/1ŒJ”|Ñ$ VÑ,Ø46ŒJ”|Ñ$ [Ñ1Ø57ŒJ”|Ñ$ \Ñ2Ø/1ŒJ”|Ñ$ VÑ,Ü'¨!Ñ+ˆLØ')ŒJ”|Ñ$Ø&(ŒI”lÑ#Ø"'Œ	”,ÑØ,1Œ
”<Ñ  Ñ)ÙØ §¡¨c°3Ó 7Ñ7ˆDØ-.¯W©W°XÓ->Œ
”<Ñ  Ñ*Ü+5°dÓ+;Œ
”<Ñ  Ñ(Ø-3Œ
”<Ñ  Ñ*Ü˜1ÒÜ/>ŒJ”|Ñ$ VÒ,Ýœ|¨qÒ0äœ<¨!Ñ+Ñ,¨VÓ4µoð0GŒJ”|Ñ$ VÒ,ô œ<¨!Ñ+Ñ,¨VÓ4´jÄÐPQÑAQÑ6RÐSYÒ6Zð0\ŒJ”|Ñ$ VÑ,ä”j¤Ñ.×3Ñ3Ó5Ó6ò 	0ˆAÜœlÑ+¨AÓ.Üœ|Ñ,¨QÑ/ð	0ð ,0Œ
”<Ñ  Ñ(Ø+-Œ
”<Ñ  Ñ(Ø02Œ
”<Ñ  Ñ-Ø13Œ
”<Ñ  Ñ.Ø+-Œ
”<Ñ  Ñ(Ø,.Œ
”<Ñ  Ñ)à�FŠ?Ø35ŒJ”|Ñ$ ZÑ0àÐ&Ñ&Øœ:¤l°QÑ&6Ñ7¸ÑDÑDÜœ<¨!Ñ+Ñ,¨[Ñ9×@Ñ@ÀÔFÜ/3¯}©}Üœ<¨!Ñ+Ñ,¨VÑ4ó06ŒJ”|Ñ$ VÑ,ðÜœ|Ñ,¨VÑ4°TÑ:Üœ|Ñ,¨VÑ4°TÑ:¸:ÑF×LÑLÈZÓXðZð Ð.Ò.áÜŸ9™9Ô%7¸ÓC�ÙØ<@À"¸:”Jœ|Ñ,¨ZÑ8ØIQÏÉÐX^ÓI_”Jœ|Ñ,¨ZÑ8¸Ñ>¸vÑFØ—~‘~ kÔ2ØMUÏ^É^Ð\gÓMhœ
¤<Ñ0°Ñ<¸TÑBÀ6ÑJðÜ9CÜœ|Ñ,¨VÑ4°TÑ:¼JÄ|ÐVWÑGWÑ<XÐY_Ñ<`ÐacÑ<dó:f”
œ<Ñ(¨Ñ0°Ñ6ð �yÒ Ù˜f¬
´<Ñ(@ÀÑ(HÑHØ 6š>ÜAKÜ&¤|Ñ4°VÑ<¸TÑBÄJÌ|ÑD\Ð]cÑDdÐekÑDlóBnœ
¤<Ñ0°Ñ8¸Ñ>ðÜœ<¨!Ñ+Ñ,¨\Ñ:×AÑAÀ$ÔGð �JÒÜ˜Q‘×%Ñ% a§g¡g¨hÓ&7¸#Ñ&=ÀÑ&DÓEˆAÙÜ2@Ø—G‘G˜F“O Q§W¡W¨WÓ%5ó37Ñ/�˜( D¨%ä˜8 X¨t°UÔ;àÐ&Ñ&Ü”l QÑ&Ñ'×.Ñ.¬z¼,Ñ/GÔHÜ6?ÄÑ6MŒI”l QÑ&Ñ'¨Ñ+¨FÑ3Üœ,Ð'Ü'¨!Ñ+ˆLÜ”l QÑ&Ñ'×.Ñ.¬z¼,Ñ/GÔHÜ6?ÄÑ6MŒI”l QÑ&Ñ'¨Ñ+¨FÑ3Üœ,Ð'Ü'¨!Ñ+‰Lð 'ð 
�ŠÜ 7¸¿¹ÀÓ8HÓ IÑˆˆd�F˜AØÐÙÜ Ü+9¸$Ó+?×+EÑ+EÀeÓ+Lö"NØ&'ð #$§'¡'¥)ò "Nó O‘ð �Ø�>Ð/¤4¨£<Ó/�>Ø6:ŒJ”|Ñ$ WÑ-¨dÑ3Ø '¨¬|Ð<Ñð ð 
�ŠÜ*8Ø�1—7‘7˜7Ó#ó+%Ñ'ˆ�(˜D %ä˜x¨°4¸Ó?ˆ	ØÐ Ø *¨I´|ÐDÑð !à	ÐnÒ	nÜœ<Ñ(¨Ñ0ˆØ�W‰W�WÓ×#Ñ#Ó%ˆØ�G‰G�D‹MˆØˆqŠ5�T˜XÒ%Ü˜rÓ"×'Ñ'¨Ó.°Ñ2ˆAØ�F�Q˜‘U�˜dÑ" R¨¨A©¨ ZÑ/ˆBØ—‘˜“ˆAØ�!�"ˆv˜Š~ &¬J´|Ñ,DÑ"DÝØŸ™ œ¨"¨R¨aª&ð2ô 3à˜#Ÿ(™(¤:¬lÑ#;¸FÑ#CÓDÑD�ØˆqŠ5ØˆAØ‰Bà�B�Q�—‘“ˆBØ�A˜‘E�F�ˆBÜ˜BÓ×%Ñ% eÓ,ˆÜˆr‹7�QŠ;Ø�A‘ˆBÜÐoØ—‘˜˜A˜B˜Ó ñ"ô #àˆ	ä%3°BÓ%7×%=Ñ%=¸eÓ%DÖE �!—'‘'•)ÒEó 4	ˆAÜ×"Ñ" 1Ó%ˆBÙØÐ0Ñ0Ø‘Aä˜!Ÿ+™+›-Ô(ÝÚœd 1�gð'ô (àä˜rŸx™x¨Ó/Ó0�ØÐ,Ñ,°Ð6PÑ1PØ�R—X‘X˜gÓ&Ñ&�Ø˜‰~Ø��a‘Ø�{Ò"Ø˜BŸH™H WÓ-Ñ-�Ø�xÒØ—W‘W˜V“_ rÑ)�Ü)×/Ñ/°Ô3Ø¤
¬<Ñ 8¸Ñ @Ñ@Ü'¨!Ò+Ø)´¼LÈ1Ñ<LÑ1MÈfÑ1UÑUÜ 'Ø$_ô!að  !¤J¬|Ñ$<¸VÑ$DÒDÝ 'Ú@AÄ:ÌlÑC[Ð\bÓCcð)eô !fä *¬<Ñ 8¸Ñ @× GÑ GÈÕ Jä#Ø"@ÀÀÀ=Ð QõSô  ð !6Ø9:ñ!<ô =àÐ]Ñ]Ø�Ø˜U 1™XÑ%Ø�a‘˜Ñ$×+Ñ+¨BÕ/à(* t��a‘˜Ñ$Ø�zÒ!ÜœlÑ+¨GÑ4¸	ÒAÜÐGÔHÙØœJ¤|Ñ4°VÑ<Ñ<ÙØ¤j´Ñ&>Ñ>Ø<>”Jœ|Ñ,¨[Ñ9Üœ<Ñ(¨Ñ5×<Ñ<¸QÔ?ØŠIði4	ðj ,1Œ
”<Ñ  Ñ(ØÐ Ø *¨I´|ÐDÑð !à	Ð"Ò	"à !§¡¨Ó 0× 6Ñ 6°sÓ ;Ö<˜1ˆQ�W‰W�YÒ<ô 	”<Ñ  Ò1à	�Ó	Üœ<Ñ(¨Ñ0ˆØ�W‰W�WÓ×#Ñ#Ó% a¨Ð+ˆØˆ	Ü Ó#×)Ñ)¨%Ó0ó $	ˆAðØ23·'±'¸#³,Ö?¨Q˜qŸw™w�yÒ?‘��8ô
 $ EÓ*ˆFÜ˜1“ˆAØ˜‰~Ø��a‘Ø�e˜A‘h‰¨¨a©°©¸Ò(AÝÚ�u˜Q‘x “}¢hð0ô 1ä! (¨FÓ3ˆAÙØ—5‘5˜Ó$¨Ò.Ü˜h›�BÜ*×3Ñ3°HÓ=ò S˜Ü04Ø$ Q§W¡W£Y¨q¯u©u«wÐ7×=Ñ=Ó?×GÑGÈÈSÓQó1S˜˜1Ÿ7™7›9 Q§U¡U£WÑ-ðSð  "Ÿw™w r›{‘HØ—U‘U˜:Ó&¨)Ò3Ø'¨¨˜|×1Ñ1Ó3×;Ñ;¸CÀÓEß™  WÓ-ð ðÜ˜ 2 vÓ.�ô
 ! ›GˆE�!‰H�S‰MØ˜U 1™XÑ%Ø�a‘˜Ñ$×+Ñ+¨KÕ8à(3 }��a‘˜Ñ$ØŠIðI$	ðJ ,1Œ
”<Ñ  Ñ(ØÐ Ø *¨I´|ÐDÑð !à	�Ó	Ø�7‰7�7Ó×!Ñ!Ó#×)Ñ)Ó+¨vÒ5Ø37ŒJ”|Ñ$ ZÒ0Ø�W‰W�WÕÜœlÑ+×/Ñ/°
¸BÓ?ˆDØˆ|ÜØSôUà�Ü# A§G¡G¨GÓ$4Ó5×;Ñ;¸EÓBó ',�Ø�Ü—X‘XØPÐRSÔUW×UYÑUYó[�áÜØZÐ[\ÐZ]Ð]aÐbôdàÜ*×0Ñ0°·±¸&Ó1AÓB�ÙÜØcÐdeÐcfÐfjÐkômàÜ2@Ø—H‘H˜VÓ$ b§h¡h¨wÓ&7ó39Ñ/�˜( D¨%ä3@Ø˜hó4(Ñ0�
˜J¨à#+��ZÑ Ø'1��^Ñ$Ø'1��^Ñ$Ø#+��ZÑ Ü˜dŸi™i›kÓ*ò $�AØ ›7Ø  ™Gð$ô (¨¯©°Ó(9Ó:×@Ñ@ÀÓGò ,�AØ˜a‘xð%Ø=>¿W¹WÀS»\Ö)J¸¨!¯'©'­)Ò)J™J˜D¡$ð '(§g¡g£iÐ/˜˜tÜ˜t›9¬¨D«	Ô6°QÔ6ÜØPÐQRÐPSÐS~ÐôAà Ü"¤3 t£9¬c°$«i¸!©mÓ<ò ,˜Ø'+˜œS ›Všñ,ò,ð1',ðP 48ŒJ”|Ñ$ ZÒ0ð] ð^ 
�‹ØˆØˆØˆØˆØˆØˆØ—‘˜Ó!ò 	ˆAÙØ˜’8Ø˜�BØ˜’8¡Ø˜A™�AØØ�CŠxØ˜A‘g‘Ø�c’Ø˜A‘g�Ø�AŠvØ˜!‘V‘Ø�a’Ø˜!‘V‘Ø�a“Ø—X‘X“Z�Ø—=‘= Ô%Ø˜A˜B˜Ÿ™›�BØ—	‘	˜2˜r˜(Ô#Ø�Ø�Ø‘ð-	ð. �Š6Ø—‘“ˆBØ�}‰}˜SÔ!Ø˜˜�V—\‘\“^�Ø�I‰I�r˜2�hÔÜœ,Ñ'×+Ñ+¨F°BÓ7ˆØˆ	Øó 0	ˆAØ˜1™Ÿ™›×2Ñ2°3Ó7¸¸1¹¿¹»ˆJˆAˆa‰D�!�A‘$Ø�‰t�‰˜sÔ#ÜÐ8¸¸1¹¸Ð>]Ð^Ô_ØÜ#¤IÄ.ÐQRÐSTÑQUÓBV×B\ÑB\Ð]bÓBcÖ.d¸Q¨q¯w©w­yÒ.dÓ$eÓfò +‘��QØ—<‘< Ô$ÜÐ<¸Q¸CÐ?^Ð_Ô`ð Ø˜!˜A™$‘;ô Ð;¸A¸a¹D¸6ÐA`ÐaÔbØØ—‘  2Ô&Ø˜Q™Ÿ™ JÓ/�Ü# D¨¡GÓ,�Ø:?À9Ò:Lœ"Ÿ*™* Z°°1±Ô6ÐRSÐTUÑRV×R\ÑR\Ð]`ÓRa�ðTÙ=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÁ|�Gð& # 1™gŸk™k¨#Ó.�Ù K°7Ò$:ÜÐHÈÈÈ4ÐP[È}Ð\cÐdkÐclÐlpÐqÔrØ&��Q‘˜‘Ø’	òW+ð0	ðb ,0Œ
”<Ñ  Ñ(ÙØ *¨I´|ÐDÑð à	�Ó	Ø�w‰w�wÓ×%Ñ%Ó'ˆØ�A‰w˜#Š~Ø˜$‘;ˆDàˆÜ—h‘h˜s D°1Ô5‰ˆˆB�Ø�X‰X‹ZˆÙØˆBØ
�	‰	�2�r�(ÔØˆ	Ø”z¤,Ñ/Ñ/Ü"¤<Ñ0°Ñ:ˆIØò 	.ˆAØ�‰t˜9Ñ$Ø"$�	˜!˜A™$‘Ü)7¸¸!¹Ó)=×)CÑ)CÀEÓ)JÖK A�a—g‘g•iÒKò .�ÚØ˜a ™d‘O×*Ñ*¨1Õ-ñ.ð	.ð .7Œ
”<Ñ  Ñ*Ø$ b¬,Ð7ÑØ	�‹Ü�X‰XØaÐcd×cjÑcjÐkrÓcsÔuw×uyÑuyó{ˆâØ—‘“ˆBØœJ¤|Ñ4Ñ4Ø24”
œ<Ñ(¨Ñ/Ø—8‘8˜FÓ#ˆDØ46ŒJ”|Ñ$ UÑ+¨DÑ1ØˆFØ˜Š|  6¡
Ñ 6Ø ‘? r¨)¡}Ð'<Ø�FØ@F”
œ<Ñ(¨Ñ/°Ñ5°fÑ=Ø)+¨F©×)9Ñ)9¸#Ó)>Ö? A�a—g‘g•iÐ?�Ð?Ø�Øò F�AØ˜a‘xÜŸX™XØVÐXYÔ[]×[_Ñ[_óa˜áØ<>¿H¹HØ %ó='ß',¡u£wð ˜rŸx™x¨Ó0×6Ñ6Ó8Ò9ô $Ø"OÔPTÐUVÓPWÈyÐXZÐ [õ]ð !"˜˜1™ØCE”Jœ|Ñ,¨UÑ3°DÑ9¸%Ò@ñFô �!—+‘+“-Ô ÜÐGÕHð+ !7ˆ|ð, 
Ð%Ñ	%Ø¤Z´Ñ%=Ñ=Ø;=ŒJ”|Ñ$Ð%7Ñ8Ü”|Ñ$Ð%7Ñ8ˆØ�7‰7�6‹?˜jÒ(¨Z¸1©_Ü˜!˜J™-¬Ô-Ø!" :¡ ��*‘Øˆj‰M× Ñ  §¡¨Ó!1Õ2à!"§¡¨Ó!1ˆAˆa�g‰g�f‹oÒØ	�Ò	ÜÐ#ÝÜÐHÔIØÜˆÜœ
 2™Ü(¨¨!Ð,ØŸ™ ›õ	)ô 
�1ŠÜˆa�k‰k‹mÔÜÐ>Õ?ð 
ùòoJøôN ò Úðûô ò Úðûô ò Úðüò."NùòL Fùòt =ùò @øÜò ÜØWÐXYÐWZÐZ`ÐacÐ`dÐdhÐiôkâðûô0  ¤¬IÐ6ò ÝÚ#¢Sð*ô +åûðüòb *KøÜ(ò %Ü#Ø"TÐUVÐTWÐW~Ð ôAâ$ð%üòn /eøô* "ò Tô
 Ñ5¨WÔ5Ô5Ø(*˜Ø%,ò D˜EØ" e™|ð!HØ8=¿¹ÀCÓ8HÑ$5 J°Ø$1×$8Ñ$8¸%¿+¹+»-¸Ì3ÈzË?Ñ9ZÕ$[øÜ'1ò !HØ$1×$8Ñ$8¸¿¹»Ö$Gð!Húð !.× 4Ñ 4°U·[±[³]Õ CðDð #0˜Ù=A  4§9¡9¨WÓ#5Ð"6°bÑ9ÀwÈsÁ|“Gð#TüòV Lùò& @sA  È)Aj/Ü7Aj4 ßAAk á3"Ak èAk$ð!Ak)ú2Ak.ü4Ak8ýAk3ýAk8ÁB8AlÁK,AmÁK?AmÁLAmÁU#Am2ÁX-Am7Á]1AqÁbAqÁj4	AkÁk AkÁk	AkÁkAkÁk	Ak!Ák Ak!Ák3Ak8Ák8AlÁlAlÁlAmÁl.AmÁmAmÁmAmÁmAm/Ám.Am/Ám7&AqÁnA AoÁoAqÁo(Ap
ÁpAqÁp	Ap
Áp
AAqÁqAqc                 óZ   — d| vri | d<   | d   }||vrg ||<   ||   j                  |«       y )NÚf2pymultilines©r)  )rÓ   Úcontext_nameÚmlr#  s       r)   rì  rì    sC   € Ø˜uÑ$Ø"$ˆÐÑØÐÑ€AØ˜1ÑØˆˆ,‰Ø€l�O×Ñ˜2Õr(   c                 óF  — d }d }t        j                  d| t         j                  «      rd} nFt        j                  d| t         j                  «      rd} n| j                  «       j	                  «       } t
        j                  t        |«      «      }|st        d«       y |j                  «       }t        |j                  «       «      D ]  }t        ||   «      ||<   Œ | dv r
|d   }|d   }|j                  d	«      }|d
k\  r|d | j                  «       }||dz   d  }| |||fS )Nzdouble\s*complexúdouble complexzdouble\s*precisionzdouble precisionz>cracktypespec0: no kind/char_selector pattern found for line.
)r¼  r7   Úlogicalr5   Ú	characterrh   r9  r  r°  r   r2  )r¾   rÒ   rÀ   r¦   r¡   ÚselectpatternrW  r2   r!  rv  rw  rl  rÕ  )r4   rã   rõ  rö  ra  r#  r~  rù  s           r)   rÓ  rÓ  !  s  € Ø€HØ€DÜ	‡x�xÐ# X¬r¯t©tÔ4Ø#‰Ü	�‰Ð'¨´2·4±4Ô	8Ø%‰à—>‘>Ó#×)Ñ)Ó+ˆÜ	×	Ñ	œ^¨BÓ/Ó	0€BÙÜØMô	OàØ
�‰‹€AÜ�!—&‘&“(‹^ò &ˆÜ  !¡Ó%ˆˆ!Šð&àÐQÑQØ�V‘9ˆØˆw‰ZˆØ
�‰�‹€AØˆA‚vØ�"�1ˆv�|‰|‹~ˆØ��A‘�ˆZˆØ�X˜t RÐ'Ð'r(   z)\s*(?P<name>\b\w+\b)\s*(?P<after>.*)\s*\ZzB\s*(\(\s*(kind\s*=)?\s*(?P<kind>.*)\s*\)|\*\s*(?P<kind2>.*?))\s*\Zz2\s*(\((?P<lenkind>.*)\)|\*\s*(?P<charlen>.*))\s*\Zz§\s*(kind\s*=\s*(?P<kind>.*?)\s*(@,@\s*len\s*=\s*(?P<len>.*)|)|(len\s*=\s*|)(?P<len2>.*?)\s*(@,@\s*(kind\s*=\s*|)(?P<kind2>.*)|(f2py_len\s*=\s*(?P<f2py_len>.*))|))\s*\Zz¿\s*(@\(@\s*(?!/)\s*(?P<array>.*?)\s*@\)@\s*\*\s*(?P<len>.*?)|(\*\s*(?P<len2>.*?)|)\s*(@\(@\s*(?!/)\s*(?P<array2>.*?)\s*@\)@|))\s*(=\s*(?P<init>.*?)|(@\(@|)/\s*(?P<init2>.*?)\s*/(@\)@|)|)\s*\Zc                 óä   — | j                  «       } t        | «      dk  r| S | d   }t        dt        | «      dz
  «      D ]'  }| |   dk(  r| |dz      dv s
| |dz
     dv rŒ || |   z   }Œ) || d   z   }|S )Nr   r   r­   z()[]{}=+-/* r   )r¦   rX   rÁ   )ÚexprÚexpr2rù  s      r)   Úremovespacesr'  J  s”   € Ø�:‰:‹<€DÜ
ˆ4ƒy�A‚~ØˆØ�‰G€EÜ�1”c˜$“i !‘mÓ$ò  ˆØ�‰G�sŠNØ�1�q‘5‰k˜^Ñ+Ø�a˜!‘e‘ Ñ.ØØ˜˜Q™‘‰ð ð �D˜‘HÑ€EØ€Lr(   c                 ó�   — d}d}d}d}| D ]8  }|dk(  r|dv r||z  }|}Œ|s|dv r|}||k(  r| }n|dk(  r|r|dz  }Œ2||z  }|}Œ: |S )	a'  
    The function replace all spaces in the input variable line which are
    surrounded with quotation marks, with the triplet "@_@".

    For instance, for the input "a 'b c'" the function returns "a 'b@_@c'"

    Parameters
    ----------
    line : str

    Returns
    -------
    str

    r
   FNú\)r)  r¿  ú")r¿  r*  r­   ú@_@r'   )r0   ÚfragmentÚinsideÚcurrent_quoteÚescapedr³   s         r)   Úmarkinnerspacesr0  Y  s�   € ð  €HØ€FØ€MØ€GØò ˆØ�dŠ?˜qÐ$5Ñ5Ø˜‰MˆHØˆGØÙ˜!˜{Ñ*ØˆMØ�ÒØ�Z‰FØ�#ŠX™&Ø˜ÑˆHØØ�A‰ˆØ‰ðð €Or(   c                 ó€  — d}t        | |«      \  }}}|r¬t        |«      j                  d«      D �cg c]  }|j                  «       ‘Œ }}g }	t	        j
                  d«      }
|D ]Y  }|sŒ|
j                  |«      }|r0|j                  d«      j                  «       }||t        |«      d z   }|	j                  |«       Œ[ |	}t        |«      j                  d«      D �cg c]  }|j                  «       ‘Œ }}g }|D ]u  }t        t        t        |«      «      d¬«      j                  d«      D �cg c]  }|j                  «       ‘Œ c}D ]&  }|sŒ|j                  |j                  dd«      «       Œ( Œw |D �]·  }t        j                  |«      }|st        d	t!        |«      › d
�«       Œ4t#        |j                  d«      «      }i }|t$        t&           d   v �ræt$        t&           d   |   j)                  «       }d|v}|r| |d<   n"| r | |d   k(  st        d|›d|d   ›d| ›d�«       d|vrt)        j(                  |«      |d<   nu|rst+        |j-                  «       «      D ]W  }||d   v r0||   |d   |   k(  s"t        d|›d|›d|d   |   ›d||   ›d�	«       Œ:t)        j(                  ||   «      |d   |<   ŒY d|vr|r|r||d<   nˆt/        d|›d|›d�«       nu|rst+        |j-                  «       «      D ]W  }||d   v r0||   |d   |   k(  s"t        d|›d|›d|d   |   ›d||   ›d�	«       Œ:t)        j(                  ||   «      |d   |<   ŒY d|vr||d<   n"|r |d   |k(  st        d|›d|d   ›d|›d�«       d|vrt)        j(                  |«      |d<   n‹|r‰|D ]  }||d   vsŒ|d   j                  |«       Œ  net)        j(                  | «      |d<   t)        j(                  |«      |d<   t)        j(                  |«      |d<   ||d<   t)        j(                  |«      |d<   d|j1                  d«      xs g v rP|t$        t&           d   v r>dt$        t&           vrg t$        t&           d<   t$        t&           d   j                  |«       |j                  d «      �r't2        j                  t5        |j                  d «      «      «      }|�r×|j7                  «       }d!D ]  }||d"z      €Œ||d"z      ||<   ||d"z   = Œ t+        |j-                  «       «      D ]  }||   �t9        ||   «      ||<   Œ||= Œ d#|v ryd$|v ru|d#   d%k(  r|d$   |d#<   |d$= na| d&k(  r*d|vs|d   si |d<   d#|d   v r|d   d#= |d#   |d   d'<   |d#= n2|d$   d(z   |d#   z   |d$<   |d#= t/        d)| ›d|›d*| ›d|›d+|d$   ›d,�«       d#|v rO| d-v rd|vs|d   si |d<   |d#   |d   d'<   |d#= n.| d&k(  r)d|vs|d   si |d<   d#|d   v r|d   d#= |d#   |d   d'<   |d#= d.|v r3d/|v r'|d/   |d.   k(  st        d0|›d|d/   ›d|d.   ›d�«       n|d.   |d/<   d$|v rƒd1|d$   › d2�}d|vs|d   s|g|d<   nj|d   j                  |«       |d   D ]-  }|dd3 d4k(  sŒ||k7  sŒ|d   d5= t/        d|›d6|›d7|›d�«        n" n t        d8||j                  d «      z   z  «       t+        |j-                  «       «      D ]  }||   rŒ	||= Œ |t$        t&           d   |<   d9t$        t&           v rt$        t&           d9   j                  |«       |}�Œº |S c c}w c c}w c c}w ):zÛ
    Returns last_name, the variable name without special chars, parenthesis
        or dimension specifiers.

    Alters groupcache to add the name, typespec, attrspec (and possibly value)
    of current variable.
    Nr%  z(?P<start>[a-zA-Z]+)rŽ  r­   ©rj  z@ @r+  z-updatevars: no name pattern found for entity=r²  rq   r0  r4   z+updatevars: attempt to change the type of "rº  rÆ  z". Ignoring.
ro  z0updatevars: attempt to change the kindselector "r¸  rp  zupdatevars:z*: attempt to change empty charselector to r¼   z0updatevars: attempt to change the charselector "rr  z/updatevars: attempt to change the typename of "rn  r  r5  r3  r  )rX   ÚarrayÚinitÚ2rX   r3  r
   r"  r   r&  zupdatevars: "z" is mapped to "r6  z)"
©r¼  r7   r!  r5   r4  rq  z6updatevars: attempt to change the init expression of "ú
dimension(r7  é	   r  r   z: attempt to change r¶  z?updatevars: could not crack entity declaration "%s". Ignoring.
rª  )rà  r'  r(  r¦   r¾   r¿   rÒ   rÓ   r¡   rX   r)  r'  r0  rÐ   rÖ  r2   rÎ   rr   r>  r   rÐ  rv  rw  ro   r�  ÚlenarraypatternrW  r!  rl  )r4   rõ  rn  Ú
entitydeclrø  r  r  rr  rï  rë   r³   r+  ró   ÚsÚelÚel1r»  Úe1Úenamer÷  Únot_has_typespecr~  ra  Úd1ÚlkÚdmÚdm1s                              r)   rÔ  rÔ  ~  s=  € ð €IÜ'4°X¸xÓ'HÑ$€J�
˜HáÜ'5°hÓ'?×'EÑ'EÀeÓ'LÖM !�A—G‘G•IÐMˆÐMØˆÜ�J‰JÐ.Ó/ˆØò 	ˆAÙØØ—‘˜“
ˆAÙØ—G‘G˜GÓ$×*Ñ*Ó,�Ø˜œ#˜a›&˜'˜
‘N�Ø�H‰H�Q�Kð	ð ˆÜ+¨JÓ7×=Ñ=¸eÓDÖ	E˜ˆ!�'‰'�)Ð	E€BÐ	EØ
€CØò 3ˆÜ&4´\Ä/ÐRSÓBTÓ5UÐ]`Ô&a×&gÑ&gÐhmÓ&nÖo �1—7‘7•9Òoò 	3ˆBÚØ—
‘
˜2Ÿ:™: e¨SÓ1Õ2ñ	3ð3ð ó EˆÜ×Ñ˜aÓ ˆÙÜØ?ÄÀQÃ¸yÈÐVôXàÜ˜1Ÿ7™7 6›?Ó+ˆØˆØ”Jœ|Ñ,¨VÑ4Ò4Üœ|Ñ,¨VÑ4°UÑ;×@Ñ@ÓBˆEØ)°Ð6ÐÙØ$,��jÒ!Ù 8¨u°ZÑ/@Ò#@ÝÚ˜5 Ó,ªhð8ô 9à UÑ*Ü(,¯	©	°*Ó(=��nÒ%ÙÜ˜jŸo™oÓ/Ó0ò L�AØ˜E .Ñ1Ñ1¸:Àa¹=ÈEÐR`ÑLaÐbcÑLdÒ;dÝÚšu e¨NÑ&;¸AÓ&>À
È1Ãð!Oõ Pô 48·9±9¸ZÈ¹]Ó3K˜˜nÑ-¨aÒ0ðLð  UÑ*©zÙ#Ø,6�E˜.Ò)åÚ$¢jð2õ 3áÜ˜jŸo™oÓ/Ó0ò L�AØ˜E .Ñ1Ñ1¸:Àa¹=ÈEÐR`ÑLaÐbcÑLdÒ;dÝÚšu e¨NÑ&;¸AÓ&>À
È1Ãð!Oõ Pô 48·9±9¸ZÈ¹]Ó3K˜˜nÑ-¨aÒ0ðLð  Ñ&Ø$,��jÒ!Ù 5¨Ñ#4¸Ò#@ÝÚ˜5 Ó,ªhð8ô 9à Ñ&Ü$(§I¡I¨hÓ$7��jÒ!ÙØ!ò 4�AØ  jÑ 1Ò1Ø˜jÑ)×0Ñ0°Õ3ñ4ô !%§	¡	¨(Ó 3ˆE�*ÑÜ$(§I¡I¨jÓ$9ˆE�.Ñ!Ü$(§I¡I¨jÓ$9ˆE�.Ñ!Ø (ˆE�*ÑÜ $§	¡	¨(Ó 3ˆE�*ÑØ˜%Ÿ)™) JÓ/Ò5°2Ñ6¸1Ä
Ì<Ñ@XÐY_Ñ@`Ñ;`Ø¤*¬\Ñ":Ñ:Ø8:”
œ<Ñ(¨Ñ5Ü”|Ñ$ [Ñ1×8Ñ8¸Ô;Ø�7‰7�7ÕÜ ×&Ñ&¤~°a·g±g¸gÓ6FÓ'GÓHˆBÚØ—\‘\“^�Ø2ò )�BØ˜"˜s™(‘|Ñ/Ø!# B¨¡H¡˜˜2™Ø˜r C™x™Lð)ô ˜bŸg™g›i›ò "�AØ˜!‘uÐ(Ü 0°°A±Ó 7˜˜1šà˜q™Eð	"ð ˜B‘; 7¨b¡=Ø˜%‘y B’Ø$& w¡K˜˜5™	Ø˜w™KØ! [Ò0Ø*°%Ñ7ÀÀ~ÒAVØ46˜E .Ñ1Ø  E¨.Ñ$9Ñ9Ø % nÑ 5°eÐ <Ø57¸±Y˜˜nÑ-¨cÑ2Ø˜u™Ià&(¨¡k°CÑ&7¸"¸U¹)Ñ&C˜˜7™Ø˜u˜IÝÚ$¢aª²5¸"¸W»+ð!Gô Hð ˜B‘;ØÐ#LÑLØ*°%Ñ7ÀÀ~ÒAVØ46˜E .Ñ1Ø57¸±Y˜˜nÑ-¨cÑ2Ø˜u™IØ! [Ò0Ø*°%Ñ7ÀÀ~ÒAVØ46˜E .Ñ1Ø  E¨.Ñ$9Ñ9Ø % nÑ 5°eÐ <Ø57¸±Y˜˜nÑ-¨cÑ2Ø˜u˜Ià˜R‘<Ø˜e‘|¨U°3©Z¸2¸f¹:Ò-EÝÚ! 5¨£:¨r°&«zð!;õ <ð &(¨¡Z˜˜c™
à˜b‘=Ø% b¨¡k ]°!Ð4�BØ!¨Ñ.°u¸ZÒ7HØ-/¨D˜˜jÒ)à˜jÑ)×0Ñ0°Ô4Ø#(¨Ñ#4ò &˜CØ" 2 A˜w¨+Ó5¸#À»)Ø$)¨*Ñ$5°bÐ$9Ý 'Ú+0²#²rð);ô !<á %ñ&ô ÐZØ˜AŸG™G GÓ,Ñ,ñ.ô /ä�e—j‘j“lÓ#ò 	ˆAØ˜“8Ø˜!‘Hð	ð 38Œ
”<Ñ  Ñ(¨Ñ/Øœ¤LÑ1Ñ1Ü”|Ñ$ ZÑ0×7Ñ7¸Ô>ØŠ	ðKEðL Ðùòq Nùò 
Fùò ps   ±\1Ã\6Ä-\;c                 óz  — d }d }d }|�r.| dv r£t         j                  |«      }|st        dt        |«      › d�«       y |j	                  «       }|d   |d<   |d= t        |j                  «       «      D ]  }||   rŒ	||= Œ t        |j                  «       «      D ]  \  }}t        |«      ||<   Œ �n‡| dk(  �rt        j                  |«      }|st        dt        |«      › d�«       y |j	                  «       }|d   |d<   |d= |d	   rft        j                  t        |d	   «      «      }|j	                  «       }d
D ]#  }||dz      r||dz      ||<   ||   ||<   ||dz   = Œ% |d   �|d   |d<   |d	= t        |j                  «       «      D ]  }||   rŒ	||= Œ t        |j                  «       «      D ]  \  }}t        |«      ||<   Œ nq| dk(  rTt        j                  d|t        j                  «      }|r|j                  d«      }n3t        dt        | |z   «      z  «       nt        dt        |«      › d�«       |||fS )Nr6  z1cracktypespec: no kindselector pattern found for r¹   Úkind2r   r"  z1cracktypespec: no charselector pattern found for ÚcharlenÚlenkind)rX   Úkindr5  Úf2py_lenrh   z\s*\(\s*(?P<name>\w+)\s*\)rq   z'cracktypespec: no typename found in %s
z$cracktypespec: no selector used for )ro  rÒ   r2   rÎ   r!  rv  rw  Úitemsrr   rp  Úlenkindpatternr'  r¾   rÀ   rÓ   )	r4   rõ  r  r  rr  r~  rù  rH  rB  s	            r)   rà  rà  '  s‘  € Ø€JØ€JØ€HÚØÐ@Ñ@Ü%×+Ñ+¨HÓ5ˆJÙÜØGÌÈXËÐGWÐWYÐZô\àØ#×-Ñ-Ó/ˆJØ(¨Ñ1ˆJ�s‰OØ˜7Ð#Ü˜*Ÿ/™/Ó+Ó,ò &�Ø! !“}Ø" 1™ð&ô ˜Z×-Ñ-Ó/Ó0ò .‘��1Ü *¨1£�
˜1’ò.à˜Ó$Ü%×+Ñ+¨HÓ5ˆJÙÜØGÌÈXËÐGWÐWYÐZô\àØ#×-Ñ-Ó/ˆJØ(¨Ñ3ˆJ�s‰OØ˜9Ð%Ø˜)Ò$Ü(×.Ñ.Ü" :¨iÑ#8Ó9ó;�à!×+Ñ+Ó-�Ø)ò *�BØ˜r C™xÒ(Ø&-¨b°3©hÑ&7˜ ™Ø%,¨R¡[�J˜r‘NØ  S¡Ñ)ð	*ð
 ˜:Ñ&Ð2à-4°ZÑ-@�J˜zÑ*Ø˜9Ð%Ü˜*Ÿ/™/Ó+Ó,ò &�Ø! !“}Ø" 1™ð&ô ˜Z×-Ñ-Ó/Ó0ò .‘��1Ü *¨1£�
˜1’ñ.à˜ÒÜ—x‘xÐ =¸xÌÏÉÓNˆHÙØ#Ÿ>™>¨&Ó1‘äÐBÜ˜h¨Ñ1Ó2ñ4õ 5ô Ð:¼4À»>Ð:JÈ"ÐMÔNØ�z 8Ð+Ð+r(   c                 ó¤  — | si } |s| S d| vr|g| d<   | S |r| d   j                  |«       || d   v r| S |dk(  rd| d   vr| d   j                  |«       | S |dk(  rd| d   vr| d   j                  |«       | S |dk(  rd| d   vr| d   j                  |«       | S |dk(  rd| d   vr| d   j                  |«       | S | d   j                  |«       | S )Nrn  rJ   Ú	automaticr  r  r  )r{  rö  r}  s      r)   rx  rx  b  s-  € ÙØˆÙØˆØ˜ÑØ ˜6ˆˆZÑØˆÙØˆZÑ×Ñ Ô%Øˆt�JÑÑØˆØˆxÒ˜K¨t°JÑ/?Ñ?ØˆZÑ×Ñ Ô%ð €Kð 
�Ò	 °°jÑ1AÑ!AØˆZÑ×Ñ Ô%ð €Kð 
�Ò	Ø˜D Ñ,Ñ,Ø�Ñ×#Ñ# DÔ)ð €Kð 
�Ò	Ø˜4 
Ñ+Ñ+Ø�Ñ×#Ñ# DÔ)ð €Kð 	ˆZÑ×Ñ Ô%Ø€Kr(   c                 ó’   — | si } |s| S d| vr|| d<   | S t        |j                  «       «      D ]  }|s|| d   vsŒ||   | d   |<   Œ | S )Nro  ©rv  rw  ©r{  Úselr}  r~  s       r)   ry  ry  }  sl   € ÙØˆÙØˆØ˜TÑ!Ø"ˆˆ^ÑØˆÜ�#—(‘(“*Óò -ˆÙ�A˜T .Ñ1Ò1Ø&)¨!¡fˆD�Ñ  Ò#ð-ð €Kr(   c                 ó’   — | si } |s| S d| vr|| d<   | S t        |j                  «       «      D ]  }|s|| d   vsŒ||   | d   |<   Œ | S )Nrp  rP  rQ  s       r)   rz  rz  ‹  sl   € ÙØˆÙØˆØ˜TÑ!Ø"ˆˆ^ÑØˆä�#—(‘(“*Óò -ˆÙ�A˜T .Ñ1Ò1Ø&)¨!¡fˆD�Ñ  Ò#ð-ð €Kr(   c                 ó   — d| v r| d   S |S )Nrq   r'   )r1  Úunknowns     r)   ÚgetblocknamerV  š  s   € Ø��Ø�V‰}ÐØ€Nr(   c                 óB   — 	 d| d   › d| d   › d�a y # t        $ r Y y w xY w)NzIn: r�  r¦  rq   r¹   )r    rÆ   )r1  s    r)   ÚsetmesstextrX  ¢  s6   € ðØ! %¨¡- °°%¸±-°ÀÐCÑøÜò Ùðús   ‚ ’	�c                 ó^   — i }d| v rt        | d   «      }d| v r|j                  | d   «       |S )NÚparent_blockr  )Úget_usedictÚupdate)r1  Úusedicts     r)   r[  r[  «  s:   € Ø€GØ˜ÑÜ˜e NÑ3Ó4ˆØ��~Ø�‰�u˜U‘|Ô$Ø€Nr(   c           
      óÎ  — |€i }t        | «      }|s|S t        |j                  «       «      D ]µ  \  }}|j                  «       }|t        vr"t        d|›d| j                  d«      ›d�«       Œ@t        |   }t        |«      }|sŒW|rt        d|› d�«       t        |j                  «       «      D ]2  \  }}||v r$t        dt        |«      ›dt        |«      ›d�«       |||<   Œ4 Œ· |S )	Nzget_useparameters: no module z info used by rq   r¹   zget_useparameters: mapping for z not impl.
z(get_useparameters: overriding parameter z with value from module )
r[  rv  rK  r¡   r   r2   r�  r×  ro   rÎ   )	r1  Ú	param_mapr]  ÚusenameÚmappingÚmvarsr‡  r~  rÿ  s	            r)   Úget_useparametersrc  ´  só   € ð ÐØˆ	Ü˜%Ó €GÙØÐÜ  §¡£Ó1ò Ñˆ�Ø—-‘-“/ˆØœ-Ñ'ÝÚ˜eŸi™i¨Õ/ð1ô 2àÜ˜gÑ&ˆÜ Ó&ˆÙØáÜÐ5°g°Y¸lÐKÔLÜ˜Ÿ™›Ó(ò 	‰DˆAˆqØ�I‰~ÝÜ59¸!µW¼dÀ7½mðMô NàˆI�aŠLñ		ðð& Ðr(   c                 óÎ  — t         s| S t        | t        «      r | D �cg c]  }t        ||dz   |¬«      ‘Œ }}|S t	        | «       t        |› d| d   › d�d«       |€t        | «      }|�Md| v rI| d   }t        |j                  «       «      D ](  }||   }d|v sŒ|d   }d	|v sŒ|d	   }	|	|v sŒ!||	   |d	<   Œ* | d
   D �
cg c]  }
t        |
|dz   |¬«      ‘Œ }}
|| d
<   | S c c}w c c}
w )Nrœ   )Útabr_  úBlock: rq   r¹   r   r0  ro  rI  r/  )r   rë  rv  Ú
postcrack2rX  r2   rc  rw  )r1  re  r_  ÚgÚretr0  rª   ÚvarrI  ÚvalÚbÚnew_bodys               r)   rg  rg  Ò  s/  € õ ØˆÜ�%œÔàöØô ˜!  t¡°yÖAð ˆð àˆ
Ü�ÔÜˆsˆe�7˜5 ™=˜/¨Ð,¨aÔ0àÐÜ% eÓ,ˆ	àÐ ¨5¡Ø�V‰}ˆÜ�d—i‘i“kÓ"ò 	6ˆAØ�q‘'ˆCØ Ò$Ø˜>Ñ*�Ø˜T’>Ø˜v™,�CØ˜iÒ'Ø'0°¡~˜˜Všð	6ð ˜v™ö(Øô ˜1 #¨¡*¸	ÖBð (€Hð (à€Eˆ&�Mà€Lùò/ùò&(s   �CÂ<C"c                 ó   — t        | t        «      rYg }g }| D ]K  }t        |«       t        ||dz   ¬«      }d|v rd|d   v r|j	                  |«       Œ;|j	                  |«       ŒM ||z   S t        | «       t        | t
        «      sd| vrt        dt        | «      z   «      ‚d| v r| d   dk(  st        |› d| d   › d	�d
«       t        | «      } t        | «      } t        | «      | d<   t        | d   «      | d<   | j                  d«      r| d   }t        | ||¬«      | d<   g }d| v r:| d   }t        |j                  «       «      D ]  }d|v sŒ|j	                  |«       Œ ni }d}	d| v r| d   }	| j                  d«      �rKg }
d| v r| d   }
t!        j                   | d   «      }|	r|	dz   }nd}||v r!d}|› d|› �|v r|dz   }|› d|› �|v rŒ|› d|› �}dg i |	dz   dœ}| d   D ]²  }||
v r�g }d}| d   D ]l  }|dz   }|d   dk(  sŒd}|d   D ]1  }|dz   }d|v sŒ|d   |k(  sŒt!        j                   |«      }|d   |=  n |sŒO|d   s| d   |= |
|
j#                  |«      =  n |d   j	                  |«       Œ”||v sŒ™t%        ||   «      rŒ¨||   |d   |<   Œ´ |d   s|d   r+|
| d<   d|gi || d   dœ}i ||<   t&        j	                  |«       |r|| d<   | S )zi
    TODO:
          function return values
          determine expression types if in argument list
    rœ   ©re  rq   rµ  r1  z0postcrack: Expected block dictionary instead of r¥  rf  r¹   r   r0  Úsortvarsr5  r/  r  r
   r3  r4  Ú__user__routinesÚunknown__user__routinesr   rð   r¢  Ú_user_interface)r1  r/  r0  rq   r   rŸ  )r1  r/  r0  rq   r4  )rë  rv  rX  Ú	postcrackr)  ÚdictrÆ   rÂ   r2   ÚanalyzeargsÚanalyzecommonÚanalyzevarsÚsortvarnamesr�  Úanalyzebodyrw  rÐ  r[   Ú
isexternalr   )r1  r5  re  ÚgretÚuretrh  ÚuserisdefinedÚuseblockr~  rq   r4  rb  Úmnamerù  r¢  r»  ÚedefÚjrl  ÚbbÚmblocks                        r)   rt  rt  ò  s   € ô �%œÔØˆØˆØò 	ˆAÜ˜ŒNÜ˜!  t¡Ô,ˆAà˜‰{˜z¨Q¨v©YÑ6Ø—‘˜A•à—‘˜A•ð	ð �d‰{ÐÜ�ÔÜ�eœTÔ" w°eÑ';ÜÐJÜ˜E›
ñ#ó $ð 	$à��˜u V™}Ð0CÒCÜ�3�%�w˜u V™}˜o¨RÐ0°!Ô4Ü˜Ó€EÜ˜%Ó €EÜ Ó&€Eˆ&�MÜ$ U¨6¡]Ó3€Eˆ*ÑØ‡y�y�ÔØ�V‰}ˆÜ  t°Ô5€Eˆ&�Mà€MØ��~Ø˜‘<ˆÜ�h—m‘m“oÓ&ò 	(ˆAØ˜QŠØ×$Ñ$ QÕ'ñ	(ð ˆØ€DØ��Ø�V‰}ˆà‡y�y�ÕØˆ
Ø˜5Ñ Ø˜|Ñ,ˆJÜ—	‘	˜% ™-Ó(ˆÙØÐ-Ñ-‰Eà-ˆEØ�MÑ!ØˆAØ�G˜1˜Q˜C�. MÑ1Ø˜‘E�ð �G˜1˜Q˜C�. MÒ1à�g˜Q˜q˜c�NˆEØ)°2Ø¨Ð0AÑ)AñCˆ	à�{Ñ#ò 	0ˆAØ�J‰Ø�Ø�Ø˜v™ò "�AØ˜A™�AØ˜‘z [Ó0Ø˜Ø"# F¡)ò &˜BØ ! A¡˜AØ%¨š|°°6±
¸a³Ü'+§y¡y°£} Ø$% f¡I¨a LÙ %ð&ò  Ø#$ V¢9Ø$)¨&¡M°!Ð$4Ø *¨:×+;Ñ+;¸AÓ+>Ð ?Ù!ð"ð ˜&Ñ!×(Ñ(¨Õ.Ø�e’¤J¨u°Q©xÕ$8Ø',¨Q¡x�	˜&Ñ! !Ò$ð+	0ð, �VÒ 	¨&Ò 1Ø",ˆE�,ÑØ.Øð9Ø$&°ÀUÈ;ÑEWñYˆFà ˆH�U‰OÜ×Ñ˜vÔ&ÙØˆˆe‰Ø€Lr(   c                 óÐ  — g }g }t        | j                  «       «      D ]4  }d| |   v r| |   d   r|j                  |«       Œ$|j                  |«       Œ6 t        |«      }d}|r‚|d   }d}|dd  D ]  }|| |   d   v sŒd} n |r;|dd  |gz   }|dz   }||kD  rKt	        ddj                  |«      z   dz   «       ||z   }	 |S |j                  |«       |dd  }t        |«      }d}|rŒ‚|S )Nru  r   r   zTsortvarnames: failed to compute dependencies because of cyclic dependencies between rÂ  r¹   )rv  rw  r)  rX   ro   rÛ   )r0  ÚindepÚdeprÿ  rª   rù  r^  Úws           r)   ry  ry  Q  s4  € Ø€EØ
€CÜ�$—)‘)“+Óò ˆØ�t˜A‘wÑ 4¨¡7¨8Ò#4Ø�J‰J�q�Mà�L‰L˜�Oð	ô
 	ˆC‹€AØ	€AÙ
Ø�‰FˆØˆØ�Q�R�ò 	ˆAØ�D˜‘G˜HÑ%Ò%Ø�Ùð	ñ Ø�a�b�'˜Q˜C‘-ˆCØ�A‘ˆAØ�1ŠuÜð ;àŸ)™) C›.ñ)à+/ñ0ô 1ð  ™�Øð €Lð	 �L‰L˜ŒOØ�a�b�'ˆCÜ�C“ˆAØˆAò) ð* €Lr(   c           	      ó¦  — t        | «      s| S g }t        | d   j                  «       «      D �]†  }g }| d   |   D �]m  }t        j                  d|t        j
                  «      }|�rg }|j                  d«      rDt        |j                  d«      «      j                  d«      D �cg c]  }|j                  «       ‘Œ }}t        |j                  d«      j                  «       «      }|| d   v rXd| d   |   v r.| d   |   d   j                  dd	j                  |«      › d
�«       nIdd	j                  |«      › d
�g| d   |   d<   n)|rddd	j                  |«      › d
�gi| d   |<   ni | d   |<   ||vr&|j                  |«       n|}t        d|› d|› d�«       |j                  |«       �Œp || d   |<   �Œ‰ d| vr|| d<   | S | d   |z   | d<   | S c c}w )Nr  z2\A\s*\b(?P<name>.*?)\b\s*(\((?P<dims>.*?)\)|)\s*\ZÚdimsr%  rq   r0  rn  r7  r&  r7  z:analyzecommon: failed to extract "<name>[(<dims>)]" from "z" in common /z/.
Ú
commonvars)Ú	hascommonrv  rw  r¾   rÒ   rÀ   rÓ   r'  r(  r¦   rr   r)  rÛ   ro   )	r1  r‹  r~  Úcomvarsr»  ró   rŠ  rï  rª   s	            r)   rw  rw  s  s$  € Ü�UÔØˆØ€JÜ�%˜‘/×&Ñ&Ó(Ó)ó %ˆØˆØ�x‘ Ñ#ó 	ˆAÜ—‘ØEÀqÌ"Ï$É$óPˆAâØ�Ø—7‘7˜6”?ä%3°A·G±G¸F³OÓ%D×%JÑ%JÈ5Ó%QöSØ !ð ŸG™G�Ið S�Dð Sä˜qŸw™w v›×4Ñ4Ó6Ó7�Ø˜˜f™Ñ%Ø! U¨6¡]°1Ñ%5Ñ5Ø˜f™ aÑ(¨Ñ4×;Ñ;Ø(¨¯©°$«Ð(8¸Ð:õ<ð )¨¯©°$«Ð(8¸Ð:ð8<˜˜f™ aÑ(¨Ò4áà" z°#·(±(¸4³.Ð1AÀÐ%CÐ$Dð(F�E˜&‘M !Ò$ð (*�E˜&‘M !Ñ$Ø˜JÑ&Ø×%Ñ% aÕ(à�ÜØPÐQRÐPSÐS`ÐabÐ`cÐcgÐhôjà�N‰N˜1Öð7	ð8 %ˆˆh‰˜Óð=%ð> ˜5Ñ Ø(ˆˆlÑð €Lð $ LÑ1°JÑ>ˆˆlÑØ€Lùò7Ss   Â$Gc                 ó¬  — t        | «       | d   j                  «       D ��ci c]  \  }}d|vsd|d   vr||“Œ }}}g }| d   D �]  }| |d<   |d   dv rl|�|d   |vrŒ|d	   }|d   |j                  «       v rt        j	                  |d   «       |d   t        v rŒXt
        r|d   t
        vrŒjt        |d
d¬«      |d<   n|}t        |||dz   ¬«      }|d   dv r|d   s|j                  d«      sd|vrŒ±|d   j                  dd«      dk(  rt        j	                  |«       Œß|d   dk(  r|d   t        |d   <   |j	                  |«       �Œ	 |S c c}}w )Nr0  rn  r  r/  rZ  r1  r«  rq   r5  z
      T©Úas_interfaceÚsaved_interfacerœ   ro  r£  r·  r  r­   r
   Úpythonmoduler¤  )rX  rK  rw  r#   r)  r$   Úcrack2fortrangenrt  r�  rÐ   r   r   )	r1  r5  re  Úkeyr  Úmaybe_privater/  rl  Úas_s	            r)   rz  rz  �  s   € ô �Ôð   ™-×-Ñ-Ó/÷áˆC�Ø˜UÑ" h°e¸JÑ6GÑ&Gð 	ˆU‰
ð€Mñ ð €DØ�6‰]ó ˆØ!ˆˆ.ÑØˆW‰:Ð3Ñ3ØÐ A f¡I°TÑ$9Øà˜‘i�à�‰y˜M×.Ñ.Ó0Ñ0Ü× Ñ   6¡Ô+Ø�‰yœIÑ%ØÝ˜Q˜v™Y¬iÑ7ØÜ#3Ø�>°ô$6ˆAÐÒ ð ˆCÜ�a˜ #¨¡*Ô-ˆØˆW‰:Ð<Ñ<Ø�Šy §¡ Ô!7Ø!¨Ñ*ØØˆW‰:×Ñ˜c 2Ó&¨.Ò8Ü×Ñ˜qÕ!à�‰z˜XÒ%Ø+,¨V©9”˜a ™iÑ(Ø�K‰K˜ŽNð;ð< €KùóKs   ¢Ec                 ó>  — t        | «       t        }i }d| v rƒ| d   €*d }t        dkD  rt        dt	        | d   «      › d�«       ||fS t        | d   j                  «       «      D ]5  }| d   |   j                  d«      dvr| d   |   ||<   Œ(| d   |   d   ||<   Œ7 ||fS )Nr   r   z2buildimplicitrules: no implicit rules for routine rq   r8  r4   )rJ   rN  )rX  Údefaultimplicitrulesr   r2   rÎ   rv  rw  r�  )r1  ÚimplicitrulesÚ	attrrulesr~  s       r)   Úbuildimplicitrulesr›  Ê  sÞ   € Ü�ÔÜ(€MØ€IØ�UÑØ�ÑÐ$Ø ˆMÜ˜Š{ÜØHÌÈeÐTZÉmÓI\ÐH]Ð]`Ðaôcð ˜)Ð#Ð#ô ˜% 
Ñ+×0Ñ0Ó2Ó3ò D�Ø˜Ñ$ QÑ'×+Ñ+¨JÓ7Ð?VÑVØ',¨ZÑ'8¸Ñ';�M !Ò$à#(¨Ñ#4°QÑ#7¸
Ñ#C�I˜a’Lð	Dð
 ˜)Ð#Ð#r(   c                 ój   — t        | ||«      }t        |«      t        t        fv r|S t	        d|›�«      ‚)z2 Like `eval` but returns only integers and floats zr=)rÛ  rh   r8   r:   rÖ   )r»  rh  rë   r™   s       r)   Úmyevalr�  Ý  s5   € äˆQ��1‹€AÜˆAƒw”3œ�,ÑØˆÜ
�r˜!˜�ZÓ
 Ð r(   z\A\b\w+\b\Zc                 óÌ  — 	 t        t        | i i «      «      }d|dfS # t        $ r Y nw xY wt        j	                  | «      rdd| fS t        | «      }|D �]  }t        |«      |kD  rŒt        j                  d|z   dz   | «      rŒ0t        j                  d|z   dz   t        j                  «      }|j	                  | «      }|sŒn	 |j	                  | «      }|r<|j                  d«      › d	d› d
|j                  d«      › �}|j	                  |«      }|rŒ<t        i i «      }	|j	                  | «      }|r<|j                  d«      › d	d› d
|j                  d«      › �}|j	                  |«      }|rŒ<t        |i i «      |	z
  }
|j	                  | «      }|r<|j                  d«      › d	d› d
|j                  d«      › �}|j	                  |«      }|rŒ<t        |i i «      }|j	                  | «      }|r<|j                  d«      › d	d› d
|j                  d«      › �}|j	                  |«      }|rŒ<t        |i i «      }|
dz  |	z   |k(  r|
dz  |	z   |k(  r|
|	|fc S  y# t        $ r Y  yw xY w y)a  
    Obtain ``a`` and ``b`` when ``e == "a*x+b"``, where ``x`` is a symbol in
    xset.

    >>> getlincoef('2*x + 1', {'x'})
    (2, 1, 'x')
    >>> getlincoef('3*x + x*2 + 2 + 1', {'x'})
    (5, 3, 'x')
    >>> getlincoef('0', {'x'})
    (0, 0, None)
    >>> getlincoef('0*x', {'x'})
    (0, 0, 'x')
    >>> getlincoef('x*x', {'x'})
    (None, None, None)

    This can be tricked by sufficiently complex expressions

    >>> getlincoef('(x - 0.5)*(x - 1.5)*(x - 1)*x + 2*x + 3', {'x'})
    (2.0, 3.0, 'x')
    r   Nr   z\w\s*\([^)]*\bú\bú(?P<before>.*?)\bú\b(?P<after>.*)r  r6  r7  r  g      à?g      ø?)NNN)r8   r�  rÆ   Úgetlincoef_re_1rÒ   rX   r¾   r�  r¿   rÀ   rÓ   )r»  Úxsetr³   Úlen_erï  r`  ró   ra  Úeerl  r+  Úc2s               r)   Ú
getlincoefr§  è  s�  € ð*Ü”�q˜"˜bÓ!Ó"ˆØ�!�TˆzÐøÜò Ùðúä×Ñ˜QÔØ�!�QˆwˆÜ�‹F€EØó #ˆÜˆq‹6�EŠ>ØÜ�9‰9Ð&¨Ñ*¨UÑ2°AÔ6àÜ�z‰zÐ.°Ñ2Ð5GÑGÌÏÉÓNˆØ�J‰J�q‹MˆÚðØ—Z‘Z “]�ÙØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›�Bò ô ˜2˜r 2Ó&�Ø—Z‘Z “]�ÙØŸH™H XÓ.Ð/¨q°°°1°R·X±X¸gÓ5FÐ4GÐH�BØŸ™ B›�Bò ô ˜2˜r 2Ó&¨Ñ*�Ø—Z‘Z “]�ÙØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›�Bò ô ˜2˜r 2Ó&�à—Z‘Z “]�ÙØŸH™H XÓ.Ð/¨q°°°Q°r·x±xÀÓ7HÐ6IÐJ�BØŸ™ B›�Bò ô ˜B  BÓ'�Ø˜‘G˜a‘K 1Ò$¨¨S©°1©¸Ò):Ø˜a ˜7’Nð Øøô ò ØØØðúðC#ðH s:   ‚ �	)¨)ÃAIÄAIÅ-AIÇAIÈ('IÉ	I!É I!z\b[a-z][\w$]*\bc                 ó°  — | |v r²||    j                  dg «      }d||    v rOt        ||    «      sAt        j                  ||    d   «      D ]#  }||vsŒ||v sŒ|| k7  sŒ|j	                  |«       Œ% |d d  D ]>  }|j                  |g «      xs t        |||«      D ]  }||vsŒ|j	                  |«       Œ Œ@ nt        dt        | «      › d�«       g }||| <   |S )Nru  rq  z)_get_depend_dict: no dependence info for r¹   )r�  ÚisstringÚword_patternrç  r)  Ú_get_depend_dictr2   rÎ   )rq   r0  ÚdepsÚwordsÚwordrˆ  s         r)   r«  r«  /	  sõ   € Øˆt�|Ø�T‘
—‘˜x¨Ó,ˆà�$�t‘*Ñ¤X¨d°4©jÔ%9Ü$×,Ñ,¨T°$©Z¸©_Ó=ò '�ð ˜uÒ$¨°ª¸$À$»,Ø—L‘L Õ&ð	'ð
 ™!�Hò 	$ˆDØ—X‘X˜d BÓ'ò :Ü'¨¨d°DÓ9ò$�à˜E’>Ø—L‘L •Oñ$ñ	$ô 	Ð;¼DÀ»J¸<ÀrÐJÔKØˆØ€Dˆ�JØ€Lr(   c                 ód   — t        | j                  «       «      }i }|D ]  }t        || |«       Œ |S r,   )rv  rw  r«  )r0  ru   Údepend_dictrª   s       r)   Ú_calc_depend_dictr±  E	  s8   € Ü�—‘“Ó€EØ€KØò /ˆÜ˜˜D +Õ.ð/àÐr(   c                 óv  — t        | «      }g }t        |j                  «       «      D ]  }||   rŒ	|j                  |«       ||= Œ |rTt        |j	                  «       «      D ]5  \  }}|D �cg c]	  }||v sŒ|‘Œ }}|s|j                  |«       ||= Œ1|||<   Œ7 |rŒT|D �cg c]	  }|| v sŒ|‘Œ c}S c c}w c c}w r,   )r±  rv  rw  r)  rK  )r0  r°  ru   rq   Úlstrª   Únew_lsts          r)   Úget_sorted_namesrµ  M	  sÓ   € Ü# DÓ)€KØ€EÜ�[×%Ñ%Ó'Ó(ò "ˆØ˜4Ó Ø�L‰L˜ÔØ˜DÑ!ð"ñ Ü˜k×/Ñ/Ó1Ó2ò 	,‰IˆD�#Ø"%Ö:˜Q¨¨kÒ)9’qÐ:ˆGÐ:ÙØ—‘˜TÔ"Ø Ñ%à$+�˜DÒ!ð	,ò ð #Ö3�T d¨d¢lŠDÒ3Ð3ùò ;ùò 4s   Á+	B1Á5B1Â 	B6Â*B6c                 ó‚   — | d   dv r| dd } t         j                  | «      ryt        j                  | «      ryd| z   dz   S )	Nr   ú'"r   r   é   é   zkind(r7  )rÙ  rÒ   Úreal8pattern)rc   s    r)   Ú
_kind_funcr»  _	  sK   € àˆa�y�EÑØ˜˜"�ˆÜ×Ñ˜6Ô"ØÜ	×	Ñ	˜FÔ	#ØØ�VÑ˜cÑ!Ð!r(   c                 óP   — d| z  }|dk  ry|dk  ry|dk  ry|dk  ry	|dd
z  k  ryy)Nr®   é   r   i   r2  l        r¹  l            r¸  é€   é   r   r'   )r™   ró   s     r)   Ú_selected_int_kind_funcrÀ  j	  sD   € à
ˆa‰€AØˆF‚{ØØˆG‚|ØØˆG‚|ØØˆG‚|ØØˆA�‰H‚}ØØr(   c                 ó¨   — | dk  ry| dk  ryt        j                  «       j                  «       }|j                  d«      r| dk  ryy	| dk  ry| dk  ryy	)
Né   r¹  r¿  r¸  )
Úaarch64ÚalphaÚarm64Ú	loongarchÚmipsÚpowerÚppcÚriscvÚs390xÚsparcé!   é   r®   r   )ÚplatformÚmachiner¡   r‹   )Úpr™   ÚradixrÐ  s       r)   Ú_selected_real_kind_funcrÓ  z	  sf   € ð 	ˆ1‚uØØˆ2‚vØÜ×ÑÓ ×&Ñ&Ó(€GØ×ÑÐwÔxØ�Š7Øð
 ð	 
ˆRŠØØ	
ˆbŠØØr(   c           	      óB  — t        j                   |«      }t        j                   |«      }dt        fdt        fdt        ffD ]  \  }}||vsŒ|||<   Œ g }t	        | «      D ]&  }d| |   v sŒd| |   d   v sŒ|j                  |«       Œ( t        j                  dt        j                  «      }t        j                  dt        j                  «      }	t        j                  dt        j                  «      }
|D �]ñ  }d	| |   v �rÉ| |   d	   }t        | |   «      r&|j                  «       }d
D ]  } |j                  |Ž }Œ |j                  d|«      }|	j                  d|«      }d}d| |   v rAd| |   d   v r7t        |«      }|j                  d| |   d   d   z   d«      }t        |«      |k  }|ss|
j                  |«      sb|j                  d«      }t        |«      dkD  rCdj!                  |d d «      j                  «       j                  |d   j                  «       d«      }t#        | |   «      ržt%        |«      }t&        j)                  |«      D ]i  }t%        ||j+                  «       |j-                  «        j                  «       j                  dd«      «      ||j+                  «       |j-                  «        Œk dj!                  |«      }nt/        | |   «      rt1        d|› d�«       | |   d   D �cg c]2  }|j3                  d«      r|j5                  d«      j7                  «       ‘Œ4 c}xs d gd   }t&        j9                  |«      rd}nt:        j9                  |«      rd}	 t=        ||||¬«      ||<   tA        | |   «      r$tC        ||   tD        «      rtG        ||   «      ||<   |j                  «       }||k7  s�ŒË||   ||<   �ŒÕtI        | |   «       t1        d|›d�«       �Œô |S c c}w # t>        $ r!}|||<   t1        d|› d|›d�«       Y d }~ŒŸd }~ww xY w) NrI  Úselected_int_kindÚselected_real_kindrn  r  z \bkind\s*\(\s*(?P<value>.*)\s*\)z-\bselected_int_kind\s*\(\s*(?P<value>.*)\s*\)z4\bselected_(int|real)_kind\s*\(\s*(?P<value>.*)\s*\)rq  ))z.false.ÚFalse)z.true.ÚTruez
kind("\1")zselected_int_kind(\1)Fro  rð   r
   r   r   r#  r»  zAget_parameters[TODO]: implement evaluation of complex expression r¹   r  r   r¸  r¹  )Údimspeczget_parameters: got "ú" on zget_parameters:parameter z does not have value?!
)%rÐ  r»  rÀ  rÓ  rµ  r)  r¾   r¿   rÀ   Ú	islogicalr¡   rÐ   ÚsubrX   rÒ   r(  rÛ   Úisdoublerv  rÙ  rÚ  rŽ  rý   Ú	iscomplexr2   r‹   rã  r¦   r�  rº  Ú
param_evalrÆ   r©  rë  r8   râ  r‰  )r0  Úglobal_paramsr‡  Úg_paramsrq   ÚfuncÚparam_namesrª   Úkind_reÚselected_int_kind_reÚselected_kind_rerÿ  ÚreplÚis_replacedÚ
orig_v_lenÚv_rþ  ró   r;  rÙ  rì   Únls                         r)   r×  r×  Œ	  s0  € Ü�Y‰Y�}Ó%€FÜ�y‰y˜Ó'€HØ¤
Ð+Ø+Ô-DÐEØ,Ô.FÐGðKò "‰
ˆˆdð �xÒØ!ˆH�TŠNð	"ð
 €KÜ˜dÓ#ò "ˆØ˜˜a™Ò  [°D¸±G¸JÑ4GÒ%GØ×Ñ˜qÕ!ð"ô �j‰jÐ<¼b¿d¹dÓC€GÜŸ:™:Ø8¼"¿$¹$ó@Ðä—z‘zØ?ÄÇÁóGÐàó POˆØ�$�q‘'Š>Ø�Q‘˜‘ˆAÜ˜˜a™Ô!Ø—G‘G“I�ðò )�Dð
 "˜Ÿ	™	 4Ð(‘Að)ð —‘˜M¨1Ó-ˆAØ$×(Ñ(Ð)AÀ1ÓEˆAð  ˆKà  a¡Ñ(ð ˜T !™W ^Ñ4Ñ4Ü!$ Q£�JØŸ	™	 #¨¨Q©°Ñ(?ÀÑ(GÑ"GÈÓL�Aô #& a£&¨:Ñ"5�KáØ'×-Ñ-¨aÔ0ØŸ™ ›�Bä˜2“w ’{ØŸG™G B s¨ GÓ,×2Ñ2Ó4×<Ñ<¸RÀ¹V¿\¹\»^ÈRÓP˜ô ˜˜Q™Ô Ü˜!“W�Ü&×/Ñ/°Ó2ò H�AÜ,0Ø˜!Ÿ'™'›) A§E¡E£GÐ,×2Ñ2Ó4×<Ñ<¸SÀ#ÓFó-H�B�q—w‘w“y §¡£Ñ)ðHð —G‘G˜B“K‘ä˜4 ™7Ô#Üð FØFGÀSÈðLô Mð "& a¡¨Ñ!4ö5ØØŸ,™, {Ô3ð Ÿ™ {Ó3×9Ñ9Õ;ò 5ò ?à9=¸ÀñCˆGô ×#Ñ# AÔ&Ø‘Ü×$Ñ$ QÔ'Ø�ðCÜ& q¨(°FÀGÔL��q‘	ô
 ˜˜Q™Ô ¤Z°°q±	¼3Ô%?Ü  q¡	›N��q‘	Ø—‘“ˆBØ�QŒwØ# A™Y��r“
ä�$�q‘'ŒNÜÐ/°¨uÐ4LÐMÖNðaPOðb €Mùò15øô ò CØ��q‘	ÜÐ/°¨u°E¸!¸¸bÐA×BÑBûðCús   Ë67O/Í(O4Ï4	PÏ=PÐPc                 ó$   — | dv ryt        | |«      S )N)z(:)ú(*)r   rí  )Ú_eval_scalar)Úlengthr‡  s     r)   Ú_eval_lengthrð  ñ	  s   € ØÐ$Ñ$ØÜ˜ Ó'Ð'r(   z\d+_c                 óX  — t        | «      r| j                  d«      d   } 	 t        | i |«      }  t        | t        «      rt
        nt        | «      } | S # t        t        t        f$ r | cY S t        $ r7}t        d|›d| ›dt        |j                  «       «      ›d�«       Y d }~| S d }~ww xY w)Nrð   r   r*  z" in evaluating z (available names: r±   )Ú_is_kind_numberr(  rÛ  rë  rÂ   rÎ   rÝ  rÜ  rÞ  rÆ   ro   rv  rw  )r  r‡  rì   s      r)   rî  rî  ú	  sŸ   € Ü�uÔØ—‘˜CÓ  Ñ#ˆð	5ä�U˜B Ó'ˆØ8œ E¬3Ô/•´S¸%Ó@ˆð €Løô ”{¤IÐ.ò ØŠÜò 5Ýâšœt F§K¡K£MÕ2ð4÷ 	5ð 	5ð €Lûð	5ús   ¡/A ÁB)Á*B)Á2,B$Â$B)c                 óŒ   ‡@‡A— t        | «       t        | «      \  }}t        j                  | d   «      }| d   dk(  r| d   |vri || d   <   d| d   v rj|d= d| d   d   v r]| d   d   d   }t        |«      | d   D �ch c]  }|d   ’Œ	 c}z  D ]-  }dD ]&  }||v sŒt	        |j                  |i «      |«      ||<   Œ( Œ/ g }| d	   }	|	D ]  }
	 ||
    |j                  |
«       Œ t        |j                  «       «      D ]  }||	vsŒ|j                  |«       Œ t        |t        | «      «      }i }t        j                  d
«      j                  }t        |j                  «       «      D ]4  } ||«      }|sŒ||j                  «       |j!                  «        }	 ||    Œ6 |D �
]U  }|d   t        |j                  «       «      v rt	        ||   ||d      «      ||<   d||   vr¹d||   v r
d||   d   v s¨|r�|d   j%                  «       }t        ||   j                  «       «      D ]N  }|dk(  r||   |   dk(  rŒ|||   vr||   |   ||   |<   Œ*|dk(  sŒ0||   |   D ]  }t	        ||   |«      ||<   Œ ŒP n%|| d	   v rt'        dt)        |«      ›d| d   ›d�«       d||   v r7d||   d   v r-||   d   d   }	 t+        t-        |i |«      «      }|||   d   d<   d||   v r7d||   d   v r-||   d   d   }	 t+        t-        |i |«      «      }|||   d   d<   i }d||   v �r£||   d   }|j1                  «        g ||   d<   d\  }}}}}|D �]m  }
|
dd dk(  r|
dd j3                  «       dd }nŽ|
dd dk(  r|
dd j3                  «       dd }no|
dd dk(  r|
dd j3                  «       dd }nP|
dd  d!k(  r|
d d j3                  «       dd }n1|
dd" d#k(  r|
d"d j3                  «       dd }nt	        ||   |
«      ||<   |r€d||   vrg ||   d<   t5        |«      j7                  d$«      D �cg c]  }|j3                  «       ‘Œ c}D ]6  }|j9                  d%d«      }|||   d   vsŒ ||   d   j                  |«       Œ8 d}|rN|j9                  d&d'«      }|j9                  d(d)«      }d#||   vr
|g||   d#<   n||   d#   j                  |«       d}|�wd||   vrg ||   d<   t;        t5        |«      j7                  d$«      D �cg c]  }|j3                  «       ‘Œ c}«      D ]$  }|||   d   vsŒ||   d   j                  |«       Œ& d}|€�Œ d!||   vrg ||   d!<   t5        |«      j7                  d$«      D �cg c]  }|j3                  «       ‘Œ c}D ]$  }|||   d!   vsŒ||   d!   j                  |«       Œ& d}�Œp |�rd||   v�rýg ||   d<   t;        t5        |«      j7                  d$«      D �cg c]  }|j3                  «       ‘Œ c}«      D �]²  }	 t=        ||«      }|d+k(  rd+nd,}||k(  r|g}nt5        |d+«      j7                  d-«      }tC        |«      d.k(  r	d,|v rd,g}d,}tC        |«      dk(  r|d   |k7  rd/|d   g}tC        |«      d.k(  �rtE        tF        jH                  jJ                  |«      \  }} | |z
  dz   }!|!jM                  tF        jN                  jP                  ¬0«      }i }"| d   D ]³  }tG        jR                  |«      }#|!jU                  |#«      sŒ*	 |!jW                  |#«      \  }
}|
|fd1„}$t        |
jY                  «       «      }%|%j[                  |jY                  «       «       |%D �#ch c]  }#|#j^                  |v r|#j^                  ’Œ }'}#|$t        |'«      f|"|<   Œµ |"||<   ||   d   j                  |«       �Œµ d!||   v�r\d	| v �rW|| d	   v �rO||   j                  dg «      }(g }) ta        tb        td        tf        «      ||   «      }*ti        ||   «      �rntk        ||   d   «      D �]X  \  }+}|j                  |«      Š@‰@€�ni|*�rf‰@jm                  «       D �]R  \  }\  },}-ˆ@ˆAfd2„ŠAt        «       }. ‰A||.«       ||(v sd3||   v sd||   v rŒ6|,�€||.vr|d4}/ |,tG        jR                  d5|› d6|+› d7�«      «      }0|0jM                  tF        jN                  jP                  ¬0«      }0|0||   d3<   |g|-z   ||   d<   d!||   vrpd5|› d6|+› d8|› �g||   d!<   n]d9}/d||   vrg ||   d<   d:||   d   vr||   d   j                  d:«       |(j                  |«       |)j                  d5|› d6|+› d8|› �«       ||   j                  dg «      }1d;|1v sd<|1v s|1j                  |/rd<nd;«       |1s�ŒK|1||   d<   �ŒU ‰@€�Œ‰‰@jm                  «       D ]½  \  }\  },}-||   j                  dg «      }'||   j                  dg «      D ]V  }2|2jo                  d«      sŒdjq                  |2j7                  «       «      }2|'js                  |2d=d j7                  d>«      «       ŒX |'rt        t        |'«      «      ||   d<   ||'vsŒ­|(j                  |«       Œ¿ �Œ[ nstu        ||   «      red||   v r^d,||   d   v r!tw        ||   d   d,   |«      }3|3||   d   d,<   n3d||   d   v r)tw        ||   d   d   |«      }3||   d   d= |3||   d   d,<   |)r|)||   d!<   |(rt        t        |(«      «      ||   d<   d3||   v s�	Œ�d||   vrg ||   d<   d;||   d   vr!d<||   d   vr||   d   j                  d;«       d||   vr]g ||   d<   t        |jm                  «       «      D ]+  \  }} |||   d3   «      sŒ||   d   j                  |«       Œ- ||   d   s||   d= ty        ||   «      s�
Œ>t{        ||   d3   |«      ||   d3<   �
ŒX t        |j                  «       «      D �]s  }|| d   k(  sŒd#||   v r||   d#   | d#<   | d   dk(  sŒ(d?| v r| d?   |v rt}        ||   || d?      «      ||<   d@| v sŒP| d@   }4|4j9                  dAd«      }5|4|5k(   }6|5j9                  dBd«      }4|4|5k(   }7t~        d   j                  |4«      }|rºt�        |jƒ                  dC«      |jƒ                  dD«      «      \  }8}9}}:t…        |8|9«      \  };}<}=|8||   d<   	 | d?   r|8|| d?      d<   |;r d|;v r	 t-        |;d   i |«      |;d<   |;||   d<   |<r|<||   d<   |=r|=||   dE<   |6rt	        ||   dA«      ||<   |7s�ŒEt	        ||   dB«      ||<   �ŒYt'        dFt)        | d@   «      › dG�«       �Œv | d   dHv�r¨dI| v rt        j                  | d	   | dI   z   «      }>nt        j                  | d	   «      }>t        |j                  «       «      D ]1  } ta        t†        tˆ        «      ||   «      sŒ!|>j                  |«       Œ3 dJ| v ro|>js                  t        | dJ   j                  «       «      «       t        | dJ   j                  «       «      D ]%  }| dJ   |   D ]  }||>vsŒ|>j                  |«       Œ Œ' | d   dk(  r-d?| v r|>j                  | d?   «       n|>j                  | d   «       | d   dKv r| d   }?|?|v rd||?   v r||?   d   | d<   | d   dLk(  r(|>js                  t        |j                  «       «      «       t        |j                  «       «      D ]
  }||>vsŒ||= Œ |S c c}w # t        $ r Y �Œ„w xY w# t        $ r8 t        j                  d|z  t        j"                  «      j                  ||<   Y �Œ)w xY w# t.        $ r Y �ŒÓw xY w# t.        $ r Y �Œ¥w xY wc c}w c c}w c c}w c c}w # t>        t@        t        f$ r t'        d*|›d)�«       Y �	ŒÐw xY w# t\        $ r&}&d}$t        |!jY                  «       «      }%Y d}&~&�Œ±d}&~&ww xY wc c}#w # t.        $ r Y �Œ,w xY w# t.        $ r Y �Œ"w xY w)MzH
    Sets correct dimension information for each variable/parameter
    r0  r1  rú   rq   r
   rn  r/  r±  r5  z[A-Za-z][\w$]*z.*\b%s\br   r4   r  Ú	undefinedz"analyzevars: typespec of variable z is not defined in routine r8  rp  rX   ro  rI  )NNNNNNr8  r  r   r   r·   r
  ru  r�   rt  r¹  rs  r%  r­   z\n\nz

z\n r¹   z4analyzevars: could not parse dimension for variable r¦  r   z@:@r2  Ú1)Úlanguagec                 ó   — | |z
  |z  S r,   r'   )r;  r+  rl  s      r)   Úsolve_vzanalyzevars.<locals>.solve_v¶
  s   € Ø01°A±¸©{Ð(:r(   c                 ó|   •— ‰j                  | d g g«      d   D ]!  }||vsŒ|j                  |«        ‰||«       Œ# y )Nr   )r�  Úadd)rÿ  r¬  Úv1Úcoeffs_and_depsÚcompute_depss      €€r)   rý  z!analyzevars.<locals>.compute_depsä
  sD   ø€ Ø*9×*=Ñ*=¸aÀ$ÈÀÓ*LÈQÑ*Oò !? BØ')°¢~Ø(,¯©°¬Ù(4°R¸Õ(>ñ!?r(   rq  Fzshape(rÂ  r7  z) == TÚinr  r  rÂ  r&  r©   r¨  ÚpureÚ	recursiver9  r  rr  zanalyzevars: prefix (z) were not used
)r¤  r’  rŸ  rž  r‹  r  )rü   rú   rh   )ErX  r›  rÐ  r  rx  r�  r)  ÚKeyErrorrv  rw  r×  rc  r¾   r¿   rÒ   rŽ  rý   rÀ   r¡   r2   rÎ   rÂ   rÛ  rÆ   Úreverser¦   r'  r(  rÐ   rw   Úparam_parserÖ   rè  rX   rÌ  r   ÚExprÚparseÚtostringÚLanguager´   Ú	as_symbolr  Úlinear_solveÚsymbolsr\  ÚRuntimeErrorr  Úl_orÚisintent_inÚisintent_inoutÚisintent_inplaceÚisarrayrä  rK  r‹   rÛ   rê  r©  rð  Úisscalarrî  r  rO  rÓ  rÓ   rà  Úisintent_callbackÚisintent_aux)Br1  r™  rš  r0  Úgenrl  rª   r~  Úsvarsr5  r+  r‡  Údep_matchesÚ
name_matchrÿ  ró   Úln0rë   Údimension_exprsrö  Údimr
  ru  rt  rs  rï  r³   Útmpr#  Údim_charr  rA  Úd2ÚdsizeÚsolver_and_depsr;  rø  Úall_symbolsrì   Úv_depsÚn_depsÚn_checksÚ
n_is_inputrù  Úsolverr¬  Úall_depsÚis_requiredr4  Úv_attrÚaarï  ÚprÚpr1ÚispureÚisrecr4   rõ  r÷  r  r  rr  Ú
neededvarsrq   rü  rý  sB                                                                   @@r)   rx  rx  

  sé  ù€ ô �ÔÜ1°%Ó8Ñ€M�9Ü�9‰9�U˜6‘]Ó#€DØˆW�~˜Ò#¨¨f©¸TÑ(AØ ˆˆU�6‰]ÑØ	ˆU�6‰]ÑØ�ˆHØ˜˜v™ rÑ*Ñ*Ø˜‘- Ñ# JÑ/ˆCÜ˜“Y°U¸6±]Ö!C° ! F£)Ò!CÑCò B�Ø.ò B�AØ˜C’xÜ"-¨d¯h©h°q¸"«o¸qÓ"A˜˜QšñBðBð €EØ�‰=€DØò ˆð	Ø�ŠGØ�L‰L˜�Oðô �$—)‘)“+Óò ˆØ�DŠ=Ø�L‰L˜�Oðô ˜DÔ"3°EÓ":Ó;€Fð €KÜ—‘Ð-Ó.×4Ñ4€JÜ�$—)‘)“+Óò KˆÙ�q‹MˆÚØ�!—'‘'“)˜AŸE™E›GÐ$ˆAðKØ˜A“ðKð ó MBˆØˆQ‰4”4˜	Ÿ™Ó(Ó)Ñ)Ü! $ q¡'¨9°Q°q±T©?Ó;ˆD�‰GØ˜T !™WÑ$Ø $ q¡'Ñ)¨j¸DÀ¹GÀJÑ<OÑ.OÙ Ø˜A™$Ÿ*™*›,�CÜ! -°Ñ"4×"9Ñ"9Ó";Ó<ò B˜Ø 
š?¨}¸SÑ/AÀ!Ñ/DÈÒ/SØ$Ø D¨¡GÑ+Ø)6°sÑ);¸AÑ)>˜D ™G AšJØ *›_Ø%2°3Ñ%7¸Ñ%:ò B Ü*5°d¸1±g¸qÓ*A  Q¢ñBñBð ˜% ™-Ñ'ÝÜ˜Q�  v£ð0ô 1à˜T !™WÑ$Ø˜˜Q™ Ñ/Ñ/Ø˜‘G˜NÑ+¨EÑ2�ðÜœD  B¨Ó/Ó0�Að 23��Q‘˜Ñ'¨Ñ.à˜T !™WÑ$Ø˜˜a™ Ñ0Ñ0Ø˜‘G˜NÑ+¨FÑ3�ðÜœD  B¨Ó/Ó0�Að 34��Q‘˜Ñ'¨Ñ/àˆØ˜˜a™Ò Ø˜‘7˜:Ñ&ˆDØ�L‰LŒNØ"$ˆD�‰G�JÑØ/KÑ,ˆC�˜ ¨Øó +!�Ø�R�a�5˜KÒ'Ø˜Q˜R˜5Ÿ;™;›=¨!¨BÐ/‘CØ�r˜�U˜hÒ&Ø  ˜eŸk™k›m¨Q¨rÐ2‘FØ�r˜�U˜hÒ&Ø  ˜eŸk™k›m¨Q¨rÐ2‘FØ�r˜�U˜gÒ%Ø˜q˜r˜UŸ[™[›]¨A¨bÐ1‘EØ�r˜�U˜f’_Ø˜a˜b˜EŸK™K›M¨1¨RÐ0‘Dä)¨$¨q©'°1Ó5�D˜‘GÙØ t¨A¡wÑ.Ø,.˜˜Q™ Ñ)Ü1?ÀÓ1G×1MÑ1MÈeÓ1TÖU¨A˜aŸg™g�iÒUò :˜àŸi™i¨¨RÓ0˜Ø d¨1¡g¨hÑ&7Ò7Ø  ™G HÑ-×4Ñ4°SÕ9ð	:ð
 "�FÙØŸ<™<¨°&Ó9�DØŸ<™<¨°Ó5�DØ T¨!¡WÑ,Ø+/¨&˜˜Q™ šà˜Q™ ™×.Ñ.¨tÔ4Ø�DØÐ%Ø t¨A¡wÑ.Ø,.˜˜Q™ Ñ)Ü&¼>È&Ó;Q×;WÑ;WÐX]Ó;^Ö'_°a¨¯©­	Ò'_Ó`ò 8˜Ø D¨¡G¨HÑ$5Ò5Ø  ™G HÑ-×4Ñ4°QÕ7ð8ð "�FØÒ$Ø d¨1¡gÑ-Ø+-˜˜Q™ Ñ(Ü1?ÀÓ1F×1LÑ1LÈUÓ1SÖT¨A˜aŸg™g�iÒTò 7˜Ø D¨¡G¨GÑ$4Ò4Ø  ™G GÑ,×3Ñ3°AÕ6ð7ð !’EðW+!òX �{¨$¨q©'Ò1Ø')��Q‘˜Ñ$Ü"Ü,:¸3Ó,?×,EÑ,EÀeÓ,LÖM q˜Ÿ™�ÒMóó ?3�Að
ô (¨¨6Ó2˜ð '(¨3¢h™s°C�HØ˜H’}Ø&˜Z™ä+¨A¨sÓ3×9Ñ9¸%Ó@˜Ü˜2“w !’|¨¨r©	Ø!˜U˜Ø˜Ü˜2“w !’|¨¨1©°Ò(9Ø! 2 a¡5˜\˜Ü˜2“w !“|Ü!$¤X§]¡]×%8Ñ%8¸"Ó!=™˜˜BØ " R¡¨!¡˜Ø!ŸN™N´H×4EÑ4E×4GÑ4G˜NÓH˜ð +-˜Ø!& v¡ò K˜AÜ (× 2Ñ 2°1Ó 5˜AØ$Ÿ~™~¨aÕ0ð!GØ+0×+=Ñ+=¸aÓ+@¡D A qà56¸!ó %;ô 36°a·i±i³kÓ2B KØ$/×$6Ñ$6°q·y±y³{Ô$Cð 5@ö*7Ø/0Ø'(§v¡v°¡~ð %&§F£Fð*7 ð *7ð 6=¼dÀ6»lÐ5J °Ò 2ð-Kð: .=˜¨Ñ*Ø˜‘G˜KÑ(×/Ñ/°Ö2ð?3ðB ˜$˜q™'Ò! f°¢o¸!¸uÀV¹}Ò:Lð
 ˜!‘W—[‘[ ¨2Ó.ˆFØˆHð0œœk¬>Ü.ó0Ø04°Q±ó9ˆJä�t˜A‘wÕÜ% d¨1¡g¨kÑ&:Ó;ó K1‘D�A�qØ&5×&9Ñ&9¸!Ó&<�OØ&Ð.áÚ#ð 2A×1FÑ1FÓ1Hó 6=Ñ-˜A™~ ¨õ?ô
 (+£u˜HÙ(¨¨HÔ5Ø ! V¡Ø$'¨4°©7¡NØ$,°°Q±Ñ$7ð
 !)Ø%Ð1°a¸xÑ6Gð /4 Ù'-¬h×.@Ñ.@Ø&,¨Q¨C¨r°!°°AÐ$6ó/8ó (9 à'+§}¡}Ü-5×->Ñ->×-@Ñ-@ð (5ó (B à/3  Q¡¨¡ð 67°C¸$±J  Q¡¨Ñ 1Ø#*°$°q±'Ñ#9ð +1°°°2°a°S¸¸a¸SÐ(Að8C D¨¡G¨GÒ$4ð /3 Ø#+°4¸±7Ñ#:Ø8: D¨¡G¨HÑ$5Ø#'¨t°A©w°xÑ/@Ñ#@Ø$(¨¡G¨HÑ$5×$<Ñ$<¸TÔ$Bà &§¡¨aÔ 0Ø (§¡Ø&,¨Q¨C¨r°!°°E¸!¸Ð$=ô!?à%)¨!¡W§[¡[°¸RÓ%@˜FØ$.°&Ñ$8Ø'1°VÑ';Ø &§¡Ù2=¡JÀ:ô!Oã%Ø6<  Q¡¨
Ó 3ðm6=ðn 'Ò2à1@×1FÑ1FÓ1Hò 	1Ñ-˜A™~ ¨Ø%)¨!¡W§[¡[°¸2Ó%>˜FØ&*¨1¡g§k¡k°*¸bÓ&Aò G Ø#%§=¡=°Õ#:Ø)+¯©°·±³Ó)< BØ$*§M¡M°"°Q°r°(·.±.ÀÓ2EÕ$FðGñ  &Ü48¼¸V»Ó4E  Q¡¨Ñ 1Ø ¨šØ &§¡¨aÕ 0ò	1ñEK1ôX ˜$˜q™'Ô"Ø! T¨!¡WÑ,Ø˜d 1™g nÑ5Ñ5Ü!-¨d°1©g°nÑ.EÀcÑ.JØ.4ó"6˜à7=˜˜Q™ Ñ/°Ò4Ø $ q¡'¨.Ñ"9Ñ9Ü!-¨d°1©g°nÑ.EÀeÑ.LØ.4ó"6˜à  ™G NÑ3°EÐ:Ø7=˜˜Q™ Ñ/°Ñ4ÙØ#+��Q‘˜Ñ ÙÜ$(¬¨V«Ó$5��Q‘˜Ñ!à�$�q‘'‹>Ø  a¡Ñ(Ø&(��Q‘˜
Ñ#Ø $ q¡'¨*Ñ"5Ñ5Ø $ q¡'¨*Ñ"5Ñ5Ø�Q‘˜
Ñ#×*Ñ*¨:Ô6Ø˜t A™wÑ&Ø$&��Q‘˜Ñ!Ü  ×!2Ñ!2Ó!4Ó5ò 4‘D�A�qÙ˜˜a™ ™•Ø˜Q™ Ñ)×0Ñ0°Õ3ð4ð ˜A‘w˜xÒ(Ø˜Q™ Ð)Ü˜˜Q™Ö Ü+¨D°©G°C©L¸&ÓA��Q‘˜“ð[MBô^ �$—)‘)“+Óó +^ˆØ��f‘ÓØ˜˜a™Ñ Ø $ Q¡¨¡��f‘Ø�W‰~ Ó+Ø˜uÑ$¨¨x©¸DÑ)@Ü(¨¨a©°$°u¸X±Ñ2GÓH�D˜‘GØ˜uÒ$Ø˜x™�BØŸ*™* V¨RÓ0�CØ"$¨¡)˜m�FØŸ™ [°"Ó5�BØ!# s¡˜]�EÜ$ Q™×-Ñ-¨bÓ1�AÙÜ:HØŸG™G F›O¨Q¯W©W°WÓ-=ó;?Ñ7˜ (¨D°%ä;HØ$ hó<0Ñ8˜
 J°à.6˜˜Q™ 
Ñ+ð!Ø$ XšØDL  U¨8¡_Ñ 5°jÑ Añ &Ø%¨Ñ3ð!)Ü9=Ø(2°6Ñ(:¸BÀó:H J¨vÑ$6ð 7A˜D ™G NÑ3Ù%Ø6@˜D ™G NÑ3Ù#Ø2:˜D ™G JÑ/Ù!Ü&1°$°q±'¸6Ó&B˜D ™GÛ Ü&1°$°q±'¸;Ó&G˜D ›GäØ3´D¸¸x¹Ó4IÐ3JÐJ[Ð\ö^ðU+^ðX ˆW�~ÐVÒVØ˜5Ñ ÜŸ™ 5¨¡=°5¸Ñ3FÑ#FÓG‰JäŸ™ 5¨¡=Ó1ˆJÜ�d—i‘i“kÓ"ò 	%ˆAØ4ŒtÔ%¤|Ó4°T¸!±WÕ=Ø×!Ñ! !Õ$ð	%ð �eÑØ×Ñœd 5¨¡>×#6Ñ#6Ó#8Ó9Ô:Ü˜% ™.×-Ñ-Ó/Ó0ò -�Ø˜w™¨Ñ*ò -�AØ 
Ò*Ø"×)Ñ)¨!Õ,ñ-ð-ð �‰>˜ZÒ'Ø˜5Ñ Ø×!Ñ! %¨¡/Õ2à×!Ñ! %¨¡-Ô0Ø�‰>Ð7Ñ7Ø˜‘=ˆDØ�t‰| ¨D°©JÑ 6Ø"& t¡*¨XÑ"6��h‘Ø�‰>˜VÒ#Ø×Ñœd 4§9¡9£;Ó/Ô0Ü�d—i‘i“kÓ"ò 	ˆAØ˜
Ò"Ø˜‘Gð	ð €Kùòi "Døô ò 	Úð	ûô" ò KÜ!#§¡¨K¸1Ñ,=¼r¿t¹tÓ!D×!JÑ!J�˜A”ðKûô2 !ò Úðûô !ò Úðüò4 Vùò" (`ùò Uùò Nøô '¬
´HÐ=ò Üð(Ø() u¨Bð0÷ðûôF (4ò !Gð /3 GÜ25°e·m±m³oÓ2F¦Kûð!Güò*7øôt  )ò !Ú ð!ûô (1ò !)Ú$(ð!)úsÊ   Á;|8Ã	|=Æ}Ê4~Ë2~!Ð%~1Ó<~6Õ2~;×, 
ØÜA/Ý,!A@!
ó6A@&ôA@6ü=	}
ý	}
ý=~þ~þ	~þ~þ!	~.þ-~.ÿ#,ÿ+,ÿ/	A@	ÿ8A@	Á@A@	Á@&	A@3Á@2A@3Á@6	AAÁAAAz\A[a-z]+[\w$]*\Zc           	      óv  — |€	 t        | ||«      }|S t        |«      dk  s|ddt        |«      dz
  …   dk7  rt	        d|› d	�«      ‚|dd
 j                  d«      }t        |«      dk(  rŠ|d   j                  d«      }t        |«      dk(  r(t        |d   |«      }t        dt        |«      dz   «      }nOt        |d   |«      }t        |d   |«      }	t        t        |«      t        |	«      dz   «      }nt	        d|› d�«      ‚| j                  d«      r| dd n| j                  d«      } g }
| D ]!  }	 t        |||«      }|
j                  |«       Œ# t        t        ||
«      «      }|S # t        $ r}| }t        d|› d| ›d�«       Y d}~|S d}~ww xY w# t        $ r}t        d|› d|›d�«       Y d}~Œud}~ww xY w)aÇ  
    Creates a dictionary of indices and values for each parameter in a
    parameter array to be evaluated later.

    WARNING: It is not possible to initialize multidimensional array
    parameters e.g. dimension(-3:1, 4, 3:5) at this point. This is because in
    Fortran initialization through array constructor requires the RESHAPE
    intrinsic function. Since the right-hand side of the parameter declaration
    is not executed in f2py, but rather at the compiled c/fortran extension,
    later, it is not possible to execute a reshape of a parameter array.
    One issue remains: if the user wants to access the array parameter from
    python, we should either
    1) allow them to access the parameter array using python standard indexing
       (which is often incompatible with the original fortran indexing)
    2) allow the parameter array to be accessed in python as a dictionary with
       fortran indices as keys
    We are choosing 2 for now.
    Nzparam_eval: got "rÚ  r¹   r2  r   rh  zparam_eval: dimension z can't be parsedr   r&  r   r¦  z.param_eval: multidimensional array parameters z not supportedrÁ  rž   )rÛ  rÆ   r2   rX   rÖ   r(  r  rÁ   r8   r‹   r)  ru  Úzip)rÿ  rá  r‡  rÙ  rÑ  rì   ÚdimrangeÚboundÚlboundÚuboundÚv_evalÚitems               r)   rß  rß  ”  sò  € ð& €ð	;Ü�Q˜ &Ó)ˆAð ˆô ˆ7ƒ|�aÒ˜7Ñ#5¤S¨£\°AÑ%5Ð#5Ñ6¸$Ò>ÜÐ1°'°Ð:KÐLÓMÐMØ�q˜ˆ}×"Ñ" 3Ó'€HÜ
ˆ8ƒ}˜Òà˜A‘;×$Ñ$ SÓ)ˆäˆx‹=˜AÒÜ ¨¡¨VÓ4ˆEÜ˜Q¤ E£
¨Q¡Ó/‰Hä  ¨!¡¨fÓ5ˆFÜ  ¨!¡¨fÓ5ˆFÜœS ›[¬#¨f«+¸©/Ó:‰HäÐIØ#˜9 Nð4ó 5ð 	5ð —L‘L Ô&ˆˆ1ˆR‰¨A×4Ñ4°SÓ9€AØ€FØò ˆð	>Ü˜˜h¨Ó/ˆDð 	�‰�dÕðô 	ŒS�˜6Ó"Ó#€Aà€HøôK ò 	;ØˆAÜÐ'¨ u¨E°!°°bÐ9×:Ð:Øˆûð	;ûô> ò 	>ÜÐ'¨ u¨E°$°¸Ð<×=Ñ=ûð	>ús/   „E( Ä1FÅ(	FÅ1FÆFÆ	F8ÆF3Æ3F8c                 ó  — d| v r`| d| j                  d«       }| | j                  d«      dz   | j                  d«       }t        t        ||«      «      }t	        ||   |   «      S | |v rt	        ||    «      S |D ]†  }t        j                  d|z   dz   t
        j                  «      }|j                  | «      }|sŒA|j                  d«      t	        ||   «      z   |j                  d«      z   } |j                  | «      }|rŒFŒˆ | S )	aƒ  Recursively parse array dimensions.

    Parses the declaration of an array variable or parameter
    `dimension` keyword, and is called recursively if the
    dimension for this array is a previously defined parameter
    (found in `params`).

    Parameters
    ----------
    d : str
        Fortran expression describing the dimension of an array.
    params : dict
        Previously parsed parameters declared in the Fortran source file.

    Returns
    -------
    out : str
        Parsed dimension expression.

    Examples
    --------

    * If the line being analyzed is

      `integer, parameter, dimension(2) :: pa = (/ 3, 5 /)`

      then `d = 2` and we return immediately, with

    >>> d = '2'
    >>> param_parse(d, params)
    2

    * If the line being analyzed is

      `integer, parameter, dimension(pa) :: pb = (/1, 2, 3/)`

      then `d = 'pa'`; since `pa` is a previously parsed parameter,
      and `pa = 3`, we call `param_parse` recursively, to obtain

    >>> d = 'pa'
    >>> params = {'pa': 3}
    >>> param_parse(d, params)
    3

    * If the line being analyzed is

      `integer, parameter, dimension(pa(1)) :: pb = (/1, 2, 3/)`

      then `d = 'pa(1)'`; since `pa` is a previously parsed parameter,
      and `pa(1) = 3`, we call `param_parse` recursively, to obtain

    >>> d = 'pa(1)'
    >>> params = dict(pa={1: 3, 2: 5})
    >>> param_parse(d, params)
    3
    r6  Nr   r7  r   r¡  r  r  )
rÕ  Úrfindr8   r  rÂ   r¾   r¿   rÀ   rÒ   rÓ   )r#  r‡  ÚdnameÚddimsr[   rÑ  r`  ró   s           r)   r  r  Ò  s  € ðr ˆa�xà�,�1—6‘6˜#“;�ˆØ�!—&‘&˜“+ ‘/ !§'¡'¨#£,Ð/ˆô ”K  vÓ.Ó/ˆÜ�6˜%‘= Ñ'Ó(Ð(Ø	
ˆf‰Ü�6˜!‘9‹~Ðàò 	"ˆAÜ—:‘:Ø$ qÑ(Ð+=Ñ=¼r¿t¹tóˆDð —
‘
˜1“ˆAÚØ—G‘G˜HÓ%Ü˜˜q™	“Nñ#Ø%&§W¡W¨WÓ%5ñ6�à—J‘J˜q“M�ó ð	"ð ˆr(   c                 óŽ  — | }t         j                  | «       }|r™t        |«      \  }}t        | |d   |«      }d}| D ]<  }	|	j	                  «       }	|	t
        j                  t
        j                  z   vrd}	||	z   }Œ> |d   dk(  r|dz   }n|dz   }|} | |d   v s| |d   v r| dz   } | |d   v rŒ| |d   v rŒ| |v r6d	}
| t        |
«      z   |v r|
d	z   }
| t        |
«      z   |v rŒ| t        |
«      z   } |r
|d   | <   | S | |d   vr|d   j                  |i «      |d   | <   d
|v r%||d
   |d   z   v rt        |d   |    d«      |d   | <   | S )Nr0  Úe_rð   r   r»  Ú_er5  r™   r   r3  r4  r  )Úanalyzeargs_re_1rÒ   r›  rØ  r¡   rc   Úascii_lowercaseÚdigitsrÂ   r�  rx  )r+  r1  r5  Úorig_aÚ	a_is_exprr™  rš  ÚatÚnar³   r~  s              r)   Ú	expr2namerE  "  s©  € Ø€FÜ$×*Ñ*¨1Ó-Ð-€IÙÜ#5°eÓ#<Ñ ˆ�yÜ˜q %¨¡-°Ó?ˆØˆØò 	ˆAØ—‘“	ˆAØœ×.Ñ.´·±Ñ>Ñ>Ø�Ø�a‘‰Bð		ð
 ˆb‰6�SŠ=Ø�c‘‰Bà�d‘ˆBØˆØ�5˜‘=Ñ  A¨¨v©Ñ$6Ø�C‘ˆAð �5˜‘=Ò  A¨¨v©Ò$6àˆD�yØˆØ”#�a“&‰j˜DÑ Ø�A‘ˆAð ”#�a“&‰j˜DÒ à”�A“‰JˆÙØˆˆf‰�aÑð €Hð	 �E˜&‘MÑ!Ø$ V™}×0Ñ0°¸Ó<ˆE�&‰M˜!ÑØ˜%Ñ F¨e°KÑ.@À5ÈÑCVÑ.VÑ$VÜ*¨5°©=¸Ñ+;¸ZÓHˆE�&‰M˜!ÑØ€Hr(   c                 óÒ  — t        | «       t        | «      \  }}d| vrg | d<   g }| d   D ]   }t        || |«      }|j                  |«       Œ" || d<   d| v r;t	        | d   j                  «       «      D ]  \  }}|D ]  }|| d   vsŒi | d   |<   Œ Œ | d   D ]5  }|d   |v sŒd| vrg | d<   |d   | d   vsŒ| d   j                  |d   «       Œ7 d| v r| d   | d   vri | d   | d   <   | S )Nr5  r  r0  r/  rq   r3  r©   )rX  r›  rE  r)  rv  rK  )r1  r™  rð   r5  r+  r~  Úargs1rl  s           r)   rv  rv  D  sG  € Ü�ÔÜ)¨%Ó0Ñ€M�1Ø�UÑØˆˆf‰Ø€DØ�6‰]ò ˆÜ�a˜ Ó%ˆØ�‰�A�ðð €Eˆ&�MØ�%ÑÜ˜U 7™^×1Ñ1Ó3Ó4ò 	*‰HˆAˆuØò *�Ø˜E &™MÒ)Ø')�E˜&‘M !Ò$ñ*ð	*ð
 �6‰]ò 5ˆØˆV‰9˜ÒØ %Ñ'Ø%'��kÑ"Ø�‰y  kÑ 2Ò2Ø�kÑ"×)Ñ)¨!¨F©)Õ4ð5ð �5Ñ˜U 8™_°E¸&±MÑAØ)+ˆˆf‰�e˜H‘oÑ&Ø€Lr(   z\A\(.+?,.+?\)\Zz\A[+-]?\d+(_(?P<name>\w+)|)\Zz*\A[+-]?[\d.]+[-\d+de.]*(_(?P<name>\w+)|)\Zz
\A\(.*\)\Zz\A(?P<name>\w+)\s*\(.*?\)\s*\Zc                 óÆ   — t        | t        «      rddiS t        | t        «      rddiS t        | t        «      rddiS t        | t        «      r| S t        t        | «      «      ‚)Nr4   r7   r5   r¼  )rë  r8   r:   r¼  ru  ÚAssertionErrorrÎ   )r™   s    r)   Ú_ensure_exprdictrJ  g  s_   € Ü�!”SÔØ˜IÐ&Ð&Ü�!”UÔØ˜FÐ#Ð#Ü�!”WÔØ˜IÐ&Ð&Ü�!”TÔØˆÜ
œ˜a›Ó
!Ð!r(   c                 ó  — | |v rt        ||    «      S | j                  «       } t        j                  | «      rddiS t        j                  | «      }|r?d|j                  «       v r)|j                  d«      rt        dt        | «      › d�«       ddiS t        j                  | «      }|r?d|j                  «       v r)|j                  d«      rt        dt        | «      › d�«       ddiS dD ][  }t        | |¬	«      j                  d
|z   d
z   «      D �cg c]  }|j                  «       ‘Œ c}D ]  }||v sŒt        ||   «      c c S  Œ] i }t        j                  | «      rt        | dd ||«      }ngt        j                  | «      }|rP|j                  d«      }t        |j                  d«      ||«      }|rd|v r|d= |s|d   |v rt        ||d      «      S | d   dv rdddidœS |st        dt        | «      › d�«       |S c c}w )Nr4   r¼  rq   z6determineexprtype: selected kind types not supported (r±   r7   r5   )ú+r¾  r   rÀ  r2  ri  r   r   rn  r   r·  r"  r   )r4   rp  z4determineexprtype: could not determine expressions (z) type.
)rJ  r¦   Údetermineexprtype_re_1rÒ   Údetermineexprtype_re_2r!  rÓ   r2   rÎ   Údetermineexprtype_re_3r'  r(  Údetermineexprtype_re_4rØ  Údetermineexprtype_re_5)	r%  r0  Úrulesró   Úoprï  r»  rô  Úrns	            r)   rØ  rØ  s  s  € Øˆt�|Ü  T¡
Ó+Ð+Ø�:‰:‹<€DÜ×#Ñ# DÔ)Ø˜IÐ&Ð&Ü×$Ñ$ TÓ*€AÙØ�Q—[‘[“]Ñ" q§w¡w¨v¤ÜØHÌÈdËÈÐTWÐXôZà˜IÐ&Ð&Ü×$Ñ$ TÓ*€AÙØ�Q—[‘[“]Ñ" q§w¡w¨v¤ÜØHÌÈdËÈÐTWÐXôZà˜FÐ#Ð#Ø"ò 1ˆÜ%3°DÀÔ%C×%IÑ%IÈ#ÐPRÉ(ÐUXÉ.Ó%YÖZ �!—'‘'•)ÒZò 	1ˆAØ�DŠyÜ'¨¨Q©Ó0Ô0ñ	1ð1ð 	€AÜ×#Ñ# DÔ)Ü˜d 1 R˜j¨$°Ó6‰ä"×(Ñ(¨Ó.ˆÙØ—‘˜“ˆBÜ! !§'¡'¨&£/°4¸Ó?ˆAÙ�Z 1‘_Ø�j�MÙØ�a‘5˜E‘>Ü+¨E°"°Q±%©LÓ9Ð9ØˆA�w�%ÑØ'¸#¸s¸ÑDÐDÙÜØBÄ4ÈÃ:À,ÈiÐXô	Zà€Hùò+ [s   ÄHr¹   c                 ó6  — t        | «       d}t        | t        «      rA| D ]:  }|r%|d   dv r|d   t        v rŒt        r|d   t        vrŒ*|t        |||¬«      z   }Œ< |S d}d}d}| d   }|dk(  ryg }	d| v r| d   }d| v r[| d   }
| d   D ]/  }t        || |	«      }t        |
|   «      rŒ|	j                  |«       Œ1 | d   d	k(  s|	rd
dj                  |	«      › d�}d}d| v r9t        | d   j                  «       «      D ]  }|›|t        z   ›|›d| d   |   ›�}Œ | j                  dg «      d d  }|d	k(  rd|v r|j                  d«       |r"|›|t        z   ›ddj                  |«      ›d|›�}d}d| v rt        | d   |t        z   «      }d}d| v rt        | d   |t        z   «      }|dk(  rd}d}d| v r$d| d   › d�}| d   |	vr|	j                  | d   «       t        | d   |t        z   |¬«      }t!        | | d   |	|t        z   |¬«      }
d}d| v r
|sd| d   › �}d| v rNd}t        | d   j#                  «       «      D ](  \  }}|› |t        z   › d|› d
dj                  |«      › d�}Œ* ||z   }|dk(  r|dk(  rd}|›|›|›d|›|›|›d|›|›|›|
›|›|›|›d|›d|›�}|S ) Nr
   r1  r«  rq   r�  r›  r5  r0  rú   r6  r&  r7  r  r­   r
  Úcallbackúintent(z) r  r  r¥  r©   z	 result (r/  r�  z! in r  zentry rž  r¡  zend )rX  rë  rv  r#   r$   r“  rE  r  r)  rÛ   rw  r   r�  rÏ  Úuse2fortranÚcommon2fortranÚvars2fortranrK  )r1  re  r�  ri  rh  r¨  rq   r5  Ú	blocktypeÚargslr0  r+  r  r~  Ú
intent_lstr  r  r©   r/  ÚmessÚentry_stmtsrù  s                         r)   r“  r“     sS  € ô �ÔØ
€CÜ�%œÔØò 	LˆAÙ�Q�w‘ZÐ#=Ñ=Ø�V‘9¤	Ñ)ØÝ  6¡´)Ñ!;ØØÔ(¨¨C¸lÔKÑK‰Cð	Lð ˆ
Ø€FØ€DØ€DØ�g‘€IØ�IÒØØ€EØ��Ø�V‰}ˆØ��Ø�V‰}ˆØ�v‘ò 	 ˆAÜ˜!˜U EÓ*ˆAÜ$ T¨!¡WÕ-Ø—‘˜Q•ð	 ð �‰>˜ZÒ'©5Ø�s—x‘x “Ð' qÐ)ˆDØÐØ˜UÑ"Ü�eÐ.Ñ/×4Ñ4Ó6Ó7ò 	RˆAá  #¬¢-²°EÐ:LÑ4MÈaÒ4Pð RÑð	Rð —‘˜8 RÓ(©Ð+€JØ�JÒ :°Ñ#;Ø×Ñ˜*Ô%Ùá,¨c´G«mØŸH™H ZÕ0±$ð8Ðð €CØ��~Ü˜% ™,¨¬g©Ó6ˆØ€FØ�5ÑÜ  h¡°´w±Ó?ˆØÐ"Ò"ØˆØ€FØ�5ÑØ˜U 8™_Ð-¨QÐ/ˆØ�‰? %Ñ'Ø�L‰L˜˜x™Ô)Ü˜E &™M¨3´©=À|ÔT€DÜØˆu�V‰}˜e S¬7¡]ÀôO€Dà€DØ��™|Ø�u˜V‘}�oÐ&ˆØ�%ÑØˆÜ˜˜w™×-Ñ-Ó/Ó0ò 	R‰DˆAˆqØ(˜M¨#´©-¨¸¸q¸cÀÀ3Ç8Á8ÈAÃ;À-ÈqÐQ‰Kð	Rà�kÑ!ˆØ�LÒ  T¨^Ò%;Øˆá‰V’Y¡¡dªF±DÑ:JÉCÑQUÑW]Ñ_cÒehÒjsÑuyð{€Cà€Jr(   c           
      óÄ   — d}t        | j                  «       «      D ]A  }|dk(  r|› |› ddj                  | |   «      › �}Œ$|› |› d|› ddj                  | |   «      › �}ŒC |S )Nr
   rÈ  zcommon r&  zcommon /z/ )rv  rw  rÛ   )r  re  ri  r~  s       r)   rY  rY  ê  s{   € Ø
€CÜ�&—+‘+“-Ó ò BˆØ�Š=Ø�E˜#˜˜g c§h¡h¨v°a©yÓ&9Ð%:Ð;‰Cà�E˜#˜˜h q c¨¨C¯H©H°V¸A±YÓ,?Ð+@ÐA‰Cð	Bð
 €Jr(   c                 óœ  — d}t        | j                  «       «      D ]­  }|› |› d|› d�}| |   i k(  r|r|d   dk(  r|d d }Œ%d| |   v r| |   d   r|› d�}d| |   v r]| |   d   rUd}t        | |   d   j                  «       «      D ]1  }|| |   d   |   k(  r|› |› |› �}d}Œ|› |› |› d	| |   d   |   › �}d}Œ3 |sŒ |d   dk(  sŒ©|d d }Œ¯ |S )
Nr
   zuse r&  r   rÊ  z only:rÌ  r­   z=>rP  )r  re  ri  ró   r³   r~  s         r)   rX  rX  ô  s4  € Ø
€CÜ�#—(‘(“*Óò ˆØ��c�U˜$˜q˜c Ð#ˆØˆq‰6�RŠ<Ù�s˜2‘w #’~Ø˜#˜2�h�ØØ�S˜‘VÑ  A¡ v¢Ø�E˜�.ˆCØ�C˜‘F‰?˜s 1™v eš}ØˆAÜ˜#˜a™& ™-×,Ñ,Ó.Ó/ò �Ø˜˜A™˜u™ aÑ(Ò(Ø ˜E !  Q C˜.�CØ‘Aà ˜E !  Q C r¨#¨a©&°©-¸Ñ*:Ð);Ð<�CØ‘Aðò �3�r‘7˜c“>Ø�c�r�(‰Cð%ð& €Jr(   c                 ó–   — | d   }g }|D ]-  }	 t        «       d|› �   } || «      sŒ|j                  |«       Œ/ |S # t        $ r Y Œ=w xY w)Nr
  Ú	isintent_)Úglobalsr)  r  )rj  r³  ri  r
  rf  s        r)   Útrue_intent_listre    sg   € Ø
ˆh‰-€CØ
€CØò #ˆð	#Ü“	˜I f XÐ.Ñ/ˆAñ ��vØ—
‘
˜6Õ"ð#ð €Jøô ò 	Ùð	ús   Ž<¼	AÁAc           	      ó  — t        | «       d}g }|D ]  }|| d   v sŒ|j                  |«       Œ d| v r4| d   D ],  }||v r||vsŒ|j                  |«       Œt        d|› d�«       Œ. d| v r|j                  | d   «       |s4t	        |j                  «       «      D ]  }||vsŒ|j                  |«       Œ |D �]/  }d||   v r7||   d   D ],  }||v sŒd||   v sŒ|||   d   v sŒt        d|› d	|› d
�«       Œ. d| v rn|| d   v rgt        ||   «      r	|› |› d|› �}|› |› d|› �}t        ||   «      r	|› |› d|› �}||v rd||   vrŒ�d}	| d   D ]  }
||
d   k(  sŒ|
d   dk(  sŒd}	 n |	rŒ´||vrt        |«       t        d|› d�«       ŒÓ|| d   k(  r| d   dk7  s| j                  d«      rŒõd||   vr?d||   v rd||   d   v r||v r	|› |› d|› �}�Œt        ||   «       t        d|› d�«       �Œ;||   d   }|dk(  rd||   v r|› d||   d   › d�}i }d ||   v r	||   d    }nd!||   v r||   d!   }d"|v r|d"   d#v r|› d$|d"   › d�}n>|› d"|d"   › �}n3d%|v r |› d&|d%   › �}d'|v r|› d(|d'   › d�}n|› d�}nd'|v r|› d)|d'   › d�}d*}d||   v rN||   d   D �cg c]  }|d+vr|‘Œ
 }}|rd,|v rd-|v r|j                  d-«       |r|› d.d/j                  |«      › �}d/}d0||   v r!|› |› d1d/j                  ||   d0   «      › d�}d/}d2||   v r+t        ||   «      }|r|› |› d3d/j                  |«      › d�}d/}d4||   v r!|› |› d5d/j                  ||   d4   «      › d�}d/}d||   v r!|› |› d6d/j                  ||   d   «      › d�}d/}d7||   v rF||   d7   }||   d   d8v r)	 t        |«      }d|j                  › d/|j                   › d�}|› d9|› d7|› �}n|› d9|› �}|› |› |› �}�Œ2 |S c c}w # t"        $ r Y Œ/w xY w):Nr
   r0  r‹  zvars2fortran: Confused?!: "z" is not defined in vars.
rª  ru  z;vars2fortran: Warning: cross-dependence between variables "z" and "r¹  r3  zintent(callback) z	external z	optional r4   r   r/  rq   r1  rú   r   z*vars2fortran: No definition for argument "rm   r©   rn  r  z(vars2fortran: No typespec for argument "rh   rr  r6  r7  ro  rp  r   )r   r¦  z*(rX   z(len=rI  z,kind=z(kind=r­   )r  z
intent(in)zintent(out)rÂ  r&  r  r7  r
  rW  rt  zcheck(zdepend(rq  )r¼  r   z :: )rX  r)  ro   rê  rv  rw  r  Ú
isoptionalÚshowr2   r�  rÏ  rÛ   re  rÛ  r5   ÚimagrÆ   )r1  r0  r5  re  r�  ri  Únoutr+  r#  rá   rl  Úvardefrõ  r³   rë   rö  r³  rÿ  s                     r)   rZ  rZ    s÷  € Ü�ÔØ
€CØ€DØò ˆØ��f‘ÒØ�K‰K˜�Nðð �uÑØ�|Ñ$ò 	RˆAØ�D‰yØ˜D’=Ø—K‘K •NäØ1°!°Ð4OÐPõRð	Rð �UÑØ�‰�E˜*Ñ%Ô&ÙÜ�d—i‘i“kÓ"ò 	ˆAØ˜Š}Ø—‘˜A•ð	ð ó d$ˆØ�t˜A‘wÑØ˜!‘W˜XÑ&ò i�Ø˜’9 ¨T°!©WÒ!4¸¸dÀ1¹gÀhÑ>OÒ9OÜØUÐVWÐUXÐX_Ð`aÐ_bÐbfÐgõiðið ˜%Ñ A¨¨{Ñ);Ñ$;Ü   a¡Ô)Ø˜˜c˜UÐ"3°A°3Ð7�Ø�E˜#˜˜i¨ sÐ+ˆCÜ˜$˜q™'Ô"Ø˜˜c˜U )¨A¨3Ð/�Ø�D‰y˜Z¨t°A©wÑ6ØØˆDØ˜6‘]ò �Ø˜˜&™	“> a¨¡j°JÓ&>Ø�DÙðñ ØØ�D‰=Ü�ŒJÜÐ@ÀÀÀ4ÐHÔIØØ��f‘ÒØ�W‰~ Ò+¨u¯y©y¸Ô/Bð
 Ø˜T !™WÑ$Ø˜T !™WÑ$¨°t¸A±w¸zÑ7JÑ)JØ˜‘9Ø ˜E #  i°¨sÐ3�CÙÜ��a‘ŒMÜÐ>¸q¸cÀÐFÔGÙØ�a‘˜Ñ$ˆØ�VÒ 
¨d°1©gÑ 5Ø�x˜q  a¡¨Ñ!4Ð 5°QÐ7ˆFØˆØ˜T !™WÑ$Ø˜A‘w˜~Ñ.‰HØ˜t A™wÑ&Ø˜A‘w˜~Ñ.ˆHØ�(‰?Ø˜‰} 
Ñ*Ø"˜8 2 h¨s¡m _°AÐ6‘à"˜8 1 X¨c¡] OÐ4‘Ø�hÑØ�x˜u X¨e¡_Ð$5Ð6ˆFØ˜Ñ!Ø"˜8 6¨(°6Ñ*:Ð);¸1Ð=‘à"˜8 1˜‘Ø�xÑØ�x˜v h¨vÑ&6Ð%7°qÐ9ˆFØˆØ˜˜a™Ñ Ø# A™w zÑ2ö .˜!Ø Ñ,ò ð .ˆDð .á °Ñ 4¸È$Ñ9Nð —‘˜MÔ*ÙØ"˜8 2 c§h¡h¨t£nÐ%5Ð6�Ø�Ø˜$˜q™'Ñ!Ø�x ˜s *¨S¯X©X°d¸1±g¸kÑ6JÓ-KÐ,LÈAÐNˆFØˆAØ�t˜A‘wÑÜ" 4¨¡7Ó+ˆCÙØ"˜8 A 3 g¨c¯h©h°s«m¨_¸AÐ>�ØˆAØ�d˜1‘gÑØ�x ˜s &¨¯©°$°q±'¸'Ñ2BÓ)CÐ(DÀAÐFˆFØˆAØ�t˜A‘wÑØ�x ˜s '¨#¯(©(°4¸±7¸8Ñ3DÓ*EÐ)FÀaÐHˆFØˆAØ�$�q‘'‰>Ø�Q‘˜‘ˆAØ�A‰w�zÑ"Ð&CÑCðÜ˜Q›�AØ˜AŸF™F˜8 1 Q§V¡V H¨AÐ.�Að �x˜t A 3 a¨ sÐ+‰Fà�x˜t A 3Ð'ˆFØ��c�U˜6˜(Ð#ŠðId$ðJ €JùòM.øô@ !ò Ùðús   ÊO-Î&(O2Ï2	O>Ï=O>c                 ó4  — t        dd«       t        | t        «       t        dd«       g at	        t
        d   «      }t        dd«       t        D ](  }t        d|j                  › d�d«       t        ||«      }Œ* t        dd«       t        |«      }t        |z   S )NzReading fortran codes...
r   zPost-processing...
z"Applying post-processing hooks...
z  r¹   zPost-processing (stage 2)...
)
r2   rÙ   r<  r   rt  r   Úpost_processing_hooksÚ__name__Útraverserg  )ÚfilesÚpostlistÚhooks      r)   Úcrackfortranrs  �  s–   € ô Ð(¨!Ô,Ü�Eœ9Ô%ÜÐ" AÔ&Ø€KÜœ 1™Ó&€HÜÐ1°1Ô5Ü%ò ,ˆÜ�"�T—]‘]�O 2Ð&¨Ô*Ü˜H dÓ+‰ð,ô Ð,¨aÔ0Ü˜(Ó#€HÜ˜Ñ!Ð!r(   c                 óD   — t        | «      dz   }d}dt        z  }||z   |z   S )Nr¹   zE!    -*- f90 -*-
! Note: the context of this file is case sensitive.
z�
! This file was auto-generated with f2py (version:%s).
! See:
! https://web.archive.org/web/20140822061353/http://cens.ioc.ee/projects/f2py2e
)r“  Úf2py_version)r1  ÚpyfÚheaderÚfooters       r)   Úcrack2fortranry  ®  s<   € ô ˜5Ó
! DÑ
(€Cð€Fðô ñ	€Fð
 �C‰<˜&Ñ Ð r(   c                 óx   — t        | t        «      xr) t        | «      dk(  xr t        | d   t        t        f«      S )Nr2  r   )rë  ÚtuplerX   r8   rÂ   )Úobjs    r)   Ú_is_visit_pairr}  ½  s8   € Ü�sœEÓ"ò /Ü�C“˜A‘ò/ä˜3˜q™6¤C¬ :Ó.ð0r(   c                 óà  — t        | «      r1| d   dk(  r| S  || ||g|¢­i |¤Ž}|�t        |«      sJ ‚|S | }| \  }} nd| f}d}t        | t        «      rEg }t        | «      D ]4  \  }	}
t	        |	|
f|||gz   |g|¢­i |¤Ž\  }}|€Œ$|j                  |«       Œ6 nPt        | t        «      r>i }| j                  «       D ](  \  }}
t	        ||
f|||gz   |g|¢­i |¤Ž\  }}|€Œ$|||<   Œ* n| }|€|S ||fS )aí  Traverse f2py data structure with the following visit function:

    def visit(item, parents, result, *args, **kwargs):
        """

        parents is a list of key-"f2py data structure" pairs from which
        items are taken from.

        result is a f2py data structure that is filled with the
        return value of the visit function.

        item is 2-tuple (index, value) if parents[-1][1] is a list
        item is 2-tuple (key, value) if parents[-1][1] is a dict

        The return value of visit must be None, or of the same kind as
        item, that is, if parents[-1] is a list, the return value must
        be 2-tuple (new_index, new_value), or if parents[-1] is a
        dict, the return value must be 2-tuple (new_key, new_value).

        If new_index or new_value is None, the return value of visit
        is ignored, that is, it will not be added to the result.

        If the return value is None, the content of obj will be
        traversed, otherwise not.
        """
    r   rZ  N)r}  rë  rv  rä  ro  r)  ru  rK  )r|  ÚvisitÚparentsr©   r5  ÚkwargsÚ
new_resultÚparentÚ
result_keyr[   r  Ú	new_indexÚnew_itemr”  Únew_keyÚ	new_values                   r)   ro  ro  Ã  sg  € ô8 �cÔØˆq‰6�^Ò#àˆJÙ˜3 ¨ÐA°$ÒA¸&ÑAˆ
ØÐ!Ü! *Ô-Ð-Ð-ØÐØˆØ‰ˆ
‘Cà˜�ˆØˆ
ä�#”tÔØˆ
Ü% c›Nò 	,‰LˆE�5Ü"*¨E°5¨>¸5Ø+2°f°XÑ+=¸vð#<à,0ò#<à4:ñ#<ÑˆI�xð Ñ$Ø×!Ñ! (Õ+ñ	,ô 
�CœÔ	Øˆ
ØŸ)™)›+ò 	0‰JˆC�Ü!)¨3°¨,¸Ø*1°V°HÑ*<¸fð";à+/ò";à39ñ";ÑˆG�Yð Ñ"Ø&/�
˜7Ò#ñ	0ð ˆ
àÐØÐØ�zÐ!Ð!r(   c                 óî  — |d   \  }}| \  }}d„ }	|dv r|d   d   dk(  sJ ‚|d   d   }
n|dk(  r|d	   d   dk(  sJ ‚|d	   d   }
nd
}
d
}|
�0|}|
j                  «       D ]  \  }}t        |«      sŒ |	||«      }Œ nV|dk(  rQ|d	   d   d   }
|}|
j                  «       D ]1  \  }}t        |«      sŒt        j                  d|z   dz   d|z   |«      }Œ3 |�"||k7  rt	        d|› d|› d|› d|› d�	d«       ||fS y
)aü  Previously, Fortran character was incorrectly treated as
    character*1. This hook fixes the usage of the corresponding
    variables in `check`, `dimension`, `=`, and `callstatement`
    expressions.

    The usage of `char*` in `callprotoargument` expression can be left
    unchanged because C `character` is C typedef of `char`, although,
    new implementations should use `character*` in the corresponding
    expressions.

    See https://github.com/numpy/numpy/pull/19388 for more information.

    r   c                 óz   — t        j                  d| z   dz   | |«      }t        j                  d| z   dz   | |«      }|S )Nz[*]\s*\brŸ  z\b\s*[\[]\s*0\s*[\]])r¾   rÜ  )Úvarnamer  s     r)   Ú	fix_usagez8character_backward_compatibility_hook.<locals>.fix_usage  sB   € Ü—‘�{ WÑ,¨uÑ4°g¸uÓEˆÜ—‘�u˜w‘Ð)@Ñ@Ø ó'ˆàˆr(   )r  rt  éýÿÿÿr   r0  r   rq  rž   NÚcallstatementz
(?<![&])\brŸ  rŸ   zcharacter_bc_hook[rš  z]: replaced `z` -> `z`
)rK  Úischaracterr¾   rÜ  r2   )r6  r€  r©   r5  r�  Ú
parent_keyÚparent_valuer”  r  rŒ  Ú	vars_dictrˆ  r‹  Úvds                 r)   Ú%character_backward_compatibility_hookr”    sv  € ð  ' r™{Ñ€J�Ø�J€Cˆòð Ð+Ñ+Ø�r‰{˜1‰~ Ò'Ð'Ð'Ø˜B‘K ‘N‰	Ø	�ŠØ�r‰{˜1‰~ Ò'Ð'Ð'Ø˜B‘K ‘N‰	àˆ	à€IØÐØˆ	Ø$Ÿ?™?Ó,ò 	:‰KˆG�RÜ˜2�Ù% g¨yÓ9‘	ñ	:ð 
�Ò	Ø˜B‘K ‘N 6Ñ*ˆ	Øˆ	Ø$Ÿ?™?Ó,ò 	O‰KˆG�RÜ˜2�ô ŸF™FØ! GÑ+¨eÑ3°S¸7±]ÀIóO‘	ð		Oð ÐØ˜Òô
 Ð(¨¨°A°c°Uð ;"Ø"' ¨¨y¨k¸ð>Ø?@ôBà�YÐÐð r(   Ú__main__r¦  z-quietz-verboser2  z-fixz?Use option -f90 before -fix if Fortran 90 code is in fix form.
z-skipemptyendsz--ignore-containsz-f77z-f90r°   z-hz-showz-mr¾  zUnknown option z	OSError: a    Warning: You have specified module name for non Fortran 77 code that
  should not need one (expect if you are scanning F90 code for non
  module blocks but then you should use flag -skipemptyends and also
  be sure that the files do not contain programs without program
  statement).
zWriting fortran code to file rˆ  )r   )r   )r&  )rU  r,   )r
   N)Nr
   )r
   )NN)r   r   )r¹   F)r
   F)×Ú__doc__rŒ   rÐ  rÃ   r†   rÏ  r¾   rc   r-   Úpathlibr   rƒ   ÚImportErrorr
   r   r   ÚauxfuncsÚversionru  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*   r2   Ú	_MAXCACHEr˜  r³   rn   rz   rª   rr   rw   r{   r}   r¿   rÀ   r�  r¤   r¥   rË   rÒ   r§   r¢   rÊ   r—   r«   rh  rÙ   ÚbeforethisafterÚfortrantypesrO  rß  rL  rM  Úgroupbegins77rÌ   Úgroupbegins90rÍ   Ú	groupendsrJ  ÚendifsrI  ÚmoduleproceduresrU  rN  r?  r@  rB  rC  rF  rG  rH  rA  rD  rE  rQ  rT  rX  rP  rR  rS  rK  ÚSr:  r;  rÑ   r,  rV  Úcrackline_bind_1rÒ  r<  rW  r'  rl  r  r#  rˆ  r”  r•  r–  rÙ  rº  r‚  r„  r‹  r‘  r˜  rY  rì  rÓ  rÖ  ro  rp  rL  r9  r'  r0  rÔ  rà  rx  ry  rz  rV  rX  r[  rc  rg  rt  ry  rw  rz  r›  r�  r¢  r§  rª  r«  r±  rµ  r»  rÀ  rÓ  r×  rð  rò  rî  rx  r>  rß  r  rE  rv  rM  rN  rO  rP  rQ  rJ  rØ  r“  rY  rX  re  rZ  rm  rs  ry  r}  ro  r”  r)  rn  rp  Úfuncsrf  Úf2Úf3ÚshowblocklistÚargvrë   ro   rÎ   r‰   rÝ   ÚOSErrorÚdetailrq  rv  r/   r'   r(   r)   ú<module>r¬     sã  ðñIóT Û Û Û 	Û Û 	Û Û 
Ý ðÛ÷ $ô
 à×"Ñ"€ð €	Ø€Ø	€Ø
€Ø
€Ø€Ø€Ø€Ø€Ø€Ø
€ð €Ø€Ø€Ø€ØÐ Ø€Ø€
Ø€Ü˜2Ð€	Ø€	Ø€Ø€Ø€	ØÐ Ø€Ø€	Ø€Ø€ò#óLð €„ØÐ Ø	!ò 3€AØ)¨6Ð2Ð˜Òð3à	ò 6€AØ)¨9Ð5Ð˜Òð6à€Ø€ð
ò 
€Að �e‘)€HˆQ�KØ€K��E‘	Òð
òò,òò1ð �—
‘
Ð3°R·T±TÓ:×AÑA€Ø�"—*‘*Ð1°2·4±4Ó8×?Ñ?€Ø�"—*‘*Ð1°2·4±4Ó8×?Ñ?€Ø�"—*‘*Ð1°2·4±4Ó8×>Ñ>€ò :Ð Ú8Ð ò3ò>ð4 '+°!ó _DðF€ð D€Øˆr�z‰zØ�r˜<¨°tÐ<Ñ<¸b¿d¹dóDØEKðL€à"˜Ÿ
™
 ?ØˆÐ4Ñ4°lÐEbÑ6bÐdhð6jñ $jØkm×koÑkoóqÐ ð �"—*‘*˜_ð 0?ñ ?Ø@BÇÁóFØGNðO€à�B—J‘J˜ð 24ñ  4Ø57·T±Tó;Ø<CðDÐ ð (€Ø�—‘Ø�r˜=¨-¸Ð>Ñ>ÀÇÁóFØGNðO€àðñ€ð �—‘Ø�r˜=¨-¸Ð>Ñ>ÀÇÁóFØGNðO€ð7€	àˆR�Z‰ZØ�r˜9 i°Ð6Ñ6¸¿¹ó>Ø?DðE€
ð
 €àˆr�z‰zØ�y &¨&°$Ð7Ñ7¸¿¹ó?Ø@GðH€ð )Ð Ø#˜Ÿ™Ø�rÐ+Ð-=¸tÐDÑDÀbÇdÁdóLàðÐ ð �"—*‘*ØÐ8Ñ8¸"¿$¹$ó@ØAKðL€à�2—:‘:˜oð 18ñ 8Ø9;¿¹ó?Ø@KðLÐ à�"—*‘*ØÐ8Ñ8¸"¿$¹$ó@ØAKðL€à�"—*‘*ØÐ8Ñ8¸"¿$¹$ó@ØAKðL€à�"—*‘*ØÐ8Ñ8¸"¿$¹$ó@ØAKðL€à�—
‘
ØÐ4Ñ4°b·d±dó<Ø=EðF€à�—‘ØÐ6Ñ6¸¿¹ó>Ø?HðI€à�2—:‘:ØÐ:Ñ:¸B¿D¹DóBØCNðOÐ à�—
‘
˜?ð .Qñ QØRT×RVÑRVóXØYaðb€à�2—:‘:ØÐ@Ñ@À"Ç$Á$óHØITðUÐ àˆb�j‰jØÐ0Ñ0°"·$±$ó8Ø9?ð@€àˆb�j‰jØÐ0Ñ0°"·$±$ó8Ø9?ð@€àˆr�z‰zØÐ2Ñ2°B·D±Dó:Ø;BðC€à�—‘ØÐ6Ñ6¸¿¹ó>Ø?HðI€à�—
‘
ØÐ4Ñ4°b·d±dó<Ø=EðF€àˆR�Z‰ZØÐ.Ñ.°·±ó6Ø7<ð=€
à�"—*‘*ØÐ6Ñ6¸¿¹ó>Ø?IðJ€à�—
‘
ØÐ4Ñ4°b·d±dó<Ø=EðF€ð %˜"Ÿ*™* _ð 8Mñ &Mð OQ÷  OSñ  OSð  VX÷  VZñ  VZñ  OZó[ð ]oðoÐ à�2—:‘:Ø9¸2¿4¹4óAØBMðNÐ òò(ð �—‘ÐAÀ2Ç4Á4ÓH€Ø�2—:‘:ÐAÀ2Ç4Á4ÓHÐ Ø�R—Z‘ZÐ kÐmo×mqÑmqÓrÐ ó[%ò|ó$ò&ó
ð@ �—
‘
ØKÈRÏTÉTóS€à�—‘ð%Ø&(§d¡dó,€ð �"—*‘*ð rð  tv÷  txñ  txóy€à�"—*‘*ð*Ø+-¯4©4ó1€ð !�b—j‘jØ@À"Ç$Á$óHÐ à�—
‘
Ø;ó=€àˆr�z‰zØHóJ€ð $˜Ÿ™Ð$AÀ2Ç4Á4ÓHÐ òòò ò ò u@òpò(ð8 ˆb�j‰jÐEÀrÇtÁtÓL€Øˆr�z‰zØIÈ2Ï4É4óQ€àˆr�z‰zØ9¸2¿4¹4óA€à�—‘ð2à35·4±4ó9€ð �"—*‘*ð Gð  IK÷  IMñ  IMóN€òò"òJfòR7,óvó6óóòòóó<ó@\ò~òD'óT*òZ$ó&!ð �"—*‘*˜^¨R¯T©TÓ2€òAðH ˆr�z‰zÐ,¨b¯d©dÓ3€òò,ò4ò$"òó ð$ (*ó bòJ(ð �"—*‘*˜WÓ%×+Ñ+€òò DðN �2—:‘:Ð1°2·4±4Ó8Ð ó;ò|Mð`  ó òDð6 $˜Ÿ™Ð$6¸¿¹Ó=Ð Ø#˜Ÿ™Ð$DÀbÇdÁdÓKÐ Ø#˜Ÿ™Ø1°2·4±4ó9Ð à#˜Ÿ™ M°2·4±4Ó8Ð Ø#˜Ÿ™Ð$EÀrÇtÁtÓLÐ ò	"ð )+ó (óZGóTóò0ózð@ Ð ò"ò"!ò0ð "$¨Dó ?"òD9 õx × Ò ÐBÔ Cð ˆzÓØ€EØ€EØ	€AØ	
€BØ	
€BØ€MØ�XŠX�a�bˆ\ò 1ˆØ�Š7ØØˆq‰T�SŠ[Ø‰AØ�(Š]ØˆEØ‰GØ�*Š_ØˆGØ‰EØ�&Š[ÝÙØVÐXYô[àˆMØ"‰NØÐ"Ò"Ø‰MØÐ%Ò%Ø‰NØ�&Š[ØˆIØ"‰NØ�&Š[ØˆIØ#ˆNØ‰MØ�$ŠYØ‰BØ�'Š\Ø‰MØ�$ŠYØ‰BØˆq‰T�SŠ[Ù�o¡d¨1£g Y¨bÐ1Õ2ÙØˆBØ‰KÙØˆBØ‰MÙð2Ù�Q“—’”Ø—’˜Q•ð �LŠL˜�Oðc1õd �­}Ùð ð ô	ñ ˜EÓ"€HÝÙÐ/±´[Ó0AÐ/BÀ"ÐEÀqÔIÙ˜HÓ%ˆÙ”+˜sÓ#ð 	 qØ�GŠG�CŒL÷	áÙˆX�ð ðQ øð[m ò ØÓðûðDo ò 2Ù˜) F :¨RÐ0×1Ò1ûð2ú÷"	ð 	ús5   ªk
 è)kê"k7ë
këkëk4ëk/ë/k4ë7l 