§ y<ˆj@%ãóž—dZddgZddlZddlZddlZiZdZd„Zd„Zej d¦«Z ej d ¦«Z d „Z ej d ¦«Z ej d ¦«Zej d ¦«Zej d¦«Zd„Zej d¦«Zd„Zd„Zej dej¦«Zd„Zd„Zd„Zd„Zedkr e¦«dSdS)aX takes templated file .xxx.src and produces .xxx file where .xxx is .i or .c or .h, using the following template rules /**begin repeat -- on a line by itself marks the start of a repeated code segment /**end repeat**/ -- on a line by itself marks it's end After the /**begin repeat and before the */, all the named templates are placed these should all have the same number of replacements Repeat blocks can be nested, with each nested block labeled with its depth, i.e. /**begin repeat1 *.... */ /**end repeat1**/ When using nested loops, you can optionally exclude particular combinations of the variables using (inside the comment portion of the inner loop): :exclude: var1=value1, var2=value2, ... This will exclude the pattern where var1 is value1 and var2 is value2 when the result is being generated. In the main body each replace will use one entry from the list of named replacements Note that all #..# forms in a block must have the same number of comma-separated entries. Example: An input file containing /**begin repeat * #a = 1,2,3# * #b = 1,2,3# */ /**begin repeat1 * #c = ted, jim# */ @a@, @b@, @c@ /**end repeat1**/ /**end repeat**/ produces line 1 "template.c.src" /* ********************************************************************* ** This file was autogenerated from a template DO NOT EDIT!!** ** Changes should be made to the original source (.src) file ** ********************************************************************* */ #line 9 1, 1, ted #line 9 1, 1, jim #line 9 2, 2, ted #line 9 2, 2, jim #line 9 3, 3, ted #line 9 3, 3, jim Ú process_strÚ process_fileéNaE /* ***************************************************************************** ** This file was autogenerated from a template DO NOT EDIT!!!! ** ** Changes should be made to the original source (.src) file ** ***************************************************************************** */ có —|dkrd}d}n d|z}d|z}d}d}g} | ||¦«}|dkrnµ| d|¦«}| d |¦«}| ||¦«} | d | ¦«} || d ||d z¦«z }| ||d z| | d z|f¦«|| d |d z| ¦«z }| }ŒÒ| ¦«|S) z‡ The returned line number is from the beginning of the string, starting at zero. Returns an empty list if no loops found. rz/**begin repeatz/**end repeat**/z/**begin repeat%dz/**end repeat%d**/Téÿÿÿÿz*/ú é)ÚfindÚcountÚappendÚsort) ÚastrÚlevelÚloopbegÚloopendÚindÚlineÚspanlistÚstartÚstart2Úfini1Úfini2s úq/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib64/python3.11/site-packages/numpy/distutils/conv_template.pyÚparse_structurergs+€ð  �‚z€zØ#ˆØ$ˆˆà%¨Ñ-ˆØ&¨Ñ.ˆà €CØ €DØ€Hð Ø— ’ ˜' 3Ñ'Ô'ˆØ �BŠ;ˆ;Ø Ø—’˜4 Ñ'Ô'ˆØ—’˜4 Ñ(Ô(ˆØ— ’ ˜' 6Ñ*Ô*ˆØ— ’ ˜$ Ñ&Ô&ˆØ �— ’ ˜4  f¨Q¡hÑ/Ô/Ñ/ˆØ�Š˜  q¡¨%°°q±¸$Ð?Ñ@Ô@Ð@Ø �— ’ ˜4 ¨¡¨5Ñ1Ô1Ñ1ˆØˆð ð ‡M‚M�O„O€OØ €Oócó¢—| d¦«}| d¦«}d |gt|¦«z¦«S)Nréú,)ÚgroupÚjoinÚint)ÚobjÚtorepÚnumreps rÚ paren_replr$‡s?€Ø �IŠI�a‰LŒL€EØ �YŠY�q‰\Œ\€FØ �8Š8�U�G�C ™KœKÑ'Ñ (Ô (Ð(rz\(([^)]*)\)\*(\d+)z([^*]+)\*(\d+)cóЗt t|¦«}d d„| d¦«D¦«¦«}| d¦«S)Nrcór—g|]4}t t| ¦«¦«‘Œ5S©)ÚplainrepÚsubr$Ústrip)Ú.0Úxs rú z parse_values..•s>€ð/ð/ð/Øõ—\’\¥*¨a¯gªg©i¬iÑ8Ô8ð/ð/ð/r)Úparenrepr)r$rÚsplit)r s rÚ parse_valuesr0Žs`€õ �<Š<�  DÑ )Ô )€Dà �8Š8ð/ð/Ø"Ÿjšj¨™oœoð/ñ/ô/ñ 0ô 0€Dà �:Š:�c‰?Œ?Ðrz\n\s*\*?z#\s*(\w*)\s*=([^#]*)#z (\w*)=(\w*)z :exclude:có‡—t d|¦«}g}t |¦«}d}|D]h}|d}t |d¦«}t |¦«}|€|}n||krd}t |||||fz¦«‚| ||f¦«Œig} t  |¦«D]~} |   ¦«} |  d| d¦«} || d| …} t | ¦«}|  t|¦«¦«Œg}|€t d¦«‚t|¦«D]%Šˆfd„|D¦«}| |¦«Œ&|S) a˜Find all named replacements in the header Returns a list of dictionaries, one for each loop iteration, where each key is a name to be substituted and the corresponding value is the replacement string. Also return a list of exclusions. The exclusions are dictionaries of key value pairs. There can be more than one exclusion. [{'var1':'value1', 'var2', 'value2'[,...]}, ...] ÚNrrz.Mismatch in number of values, %d != %d %s = %srzNo substitution variables foundcó(•—i|]\}}||‰“ŒSr'r')r+ÚnameÚvalsÚis €rú z%parse_loop_header..Îs#ø€Ð5Ð5Ð5¡  tˆt�T˜!”WÐ5Ð5Ð5r)Ústripastr)Únamed_reÚfindallr0ÚlenÚ ValueErrorr Ú exclude_reÚfinditerÚspanr Úexclude_vars_reÚdictÚrange)ÚloopheadÚnamesÚrepsÚnsubÚrepr4r5ÚsizeÚmsgÚexcludesr!r?ÚendlineÚsubstrÚex_namesÚdlistÚtmpr6s @rÚparse_loop_headerrPžs£ø€õ�|Š|˜B Ñ)Ô)€Hà €EÝ × Ò ˜HÑ %Ô %€DØ €DØð #ð #ˆØ�1ŒvˆÝ˜C œFÑ#Ô#ˆÝ�4‰yŒyˆØ ˆ<؈DˆDØ �TŠ\ˆ\ØCˆCݘS D¨$°°dÐ#;Ñ;Ñ<Ô<Ð <Ø � Š �d˜D�\Ñ"Ô"Ð"Ð"ð€Hå×"Ò" 8Ñ,Ô,ð(ð(ˆØ�xŠx‰zŒzˆà—-’-  d¨1¤gÑ.Ô.ˆØ˜$˜qœ' '˜/Ô*ˆÝ"×*Ò*¨6Ñ2Ô2ˆØ�Š�˜X™œÑ'Ô'Ð'Ð'ð €EØ €|ÝÐ:Ñ;Ô;Ð;Ý �4‰[Œ[ððˆØ5Ð5Ð5Ð5¨uÐ5Ñ5Ô5ˆØ � Š �SÑÔÐÐØ €Lrz@(\w+)@cóp‡‡—d‰z}ˆˆfd„}|g}t||¦«}|�r}| ‰¦«t| || |¦«}| |¦«Œ?Œú||d…}| t ||¦«¦«n.| t ||¦«¦«| d ¦«d   |¦«S) Nz #line %d có�•—| d¦«} ‰|}n%#t$rd‰|fz}t|¦«d‚wxYw|S)Nrz"line %d: no definition of key "%s")rÚKeyErrorr<)Úmatchr4ÚvalrIÚenvrs €€rÚreplacezparse_string..replace×s`ø€Ø�{Š{˜1‰~Œ~ˆð ,Ø�d”)ˆCˆCøÝð ,ð ,ð ,Ø6¸¸d°|ÑCˆCݘS‘/”/ tÐ +ð ,øøøðˆ s ˜!¡"Arrrééz line %d: %srr2) rr Ú replace_rer)rPr<ÚupdateÚ parse_stringÚextendr)r rVrrÚlinenorWÚcodeÚstructÚoldendÚnewlevelr)ÚprefÚheadÚtextÚnewlineÚenvlistÚerIÚnewenvÚnewcodeÚsuffs ` ` rr\r\Ósðøø€Ø ˜DÑ €Fððððððð ˆ8€DÝ ˜T 5Ñ )Ô )€FØ ñ3àˆØ˜1‘9ˆØð %ð %ˆCؘ˜s 1œv˜ Ô&ˆDؘ˜Aœ˜s 1œv˜ Ô&ˆDؘ˜Aœ˜s 1œv˜ Ô&ˆDؘ”VˆFؘS œV‘mˆGØ �KŠK� Ÿš w°Ñ5Ô5Ñ 6Ô 6Ð 6ð &Ý+¨DÑ1Ô1��øÝð &ð &ð &Ø# w° lÑ2�Ý  ‘o”oÐ%øøøøð &øøøð"ð %ð %�Ø— ’ ˜cÑ"Ô"Ð"Ý& t¨V°X¸wÑGÔG�Ø— ’ ˜GÑ$Ô$Ð$Ð$ð %ð�F�G�GŒ}ˆØ � Š •J—N’N 7¨DÑ1Ô1Ñ2Ô2Ð2Ð2ð � Š •J—N’N 7¨DÑ1Ô1Ñ2Ô2Ð2؇K‚K�ÑÔÐØ �7Š7�4‰=Œ=ÐsÂ-B=Â= C"ÃCÃC"có�—tg}| t|tdd¦«¦«d |¦«S)Nrrr2)Úheaderr]r\Ú global_namesr)r r_s rrrþs9€Ý ˆ8€D؇K‚K• ˜T¥<°°AÑ6Ô6Ñ7Ô7Ð7Ø �7Š7�4‰=Œ=Ðrz7(\n|\A)#include\s*['\"](?P[\w\d./\\]+[.]src)['\"]có\—tj |¦«}t|¦«5}g}|D]ß}t |¦«}|r¬| d¦«}tj |¦«s tj ||¦«}tj  |¦«r#|  t|¦«¦«Œ´|  |¦«ŒÊ|  |¦«Œà ddd¦«n #1swxYwY|S)Nr4) ÚosÚpathÚdirnameÚopenÚinclude_src_rerTrÚisabsrÚisfiler]Úresolve_includesr )ÚsourceÚdÚfidÚlinesrÚmÚfns rrwrwsF€Ý Œ�Š˜ÑÔ€AÝ ˆf‰Œð #˜ØˆØð #ð #ˆDÝ×$Ò$ TÑ*Ô*ˆAØð #Ø—W’W˜V‘_”_�Ý”w—}’} RÑ(Ô(ð-ÝœŸš a¨Ñ,Ô,�BÝ”7—>’> "Ñ%Ô%ð'Ø—L’LÕ!1°"Ñ!5Ô!5Ñ6Ô6Ð6Ð6à—L’L Ñ&Ô&Ð&Ð&à— ’ ˜TÑ"Ô"Ð"Ð"ð #ð #ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð €Ls¯C%D!Ä!D%Ä(D%có.—t|¦«}tj |¦« dd¦«} t d |¦«¦«}n(#t$r}td|›d|›�¦«d‚d}~wwxYwd|›d|›�S)Nú\z\\r2zIn "z " loop at z #line 1 "z" )rwrprqÚnormcaserWrrr<)rxr{Ú sourcefiler_rhs rrrs«€Ý ˜VÑ $Ô $€EÝ”×!Ò! &Ñ)Ô)×1Ò1°$¸Ñ?Ô?€JðKݘ2Ÿ7š7 5™>œ>Ñ*Ô*ˆˆøÝ ðKðKðK݈j°°°¸Q¸QÐ?Ñ@Ô@ÀdÐJøøøøðKøøøð ð",  ¨T¨TÐ 2Ð2sÁ"A'Á' B Á1BÂB có´‡—t| ¦«¦«}d}dŠ|s/d ˆfd„|D¦«¦«}||vr‰dz Šnd}|¯/|S)NFrr2có$•—g|] }|d‰…‘Œ S)Nr')r+r,Úns €rr-zunique_key..,s!ø€Ð1Ð1Ð1 A˜!˜B˜Q˜Bœ%Ð1Ð1Ð1rT)ÚlistÚkeysr)ÚadictÚallkeysÚdoneÚnewkeyr„s @rÚ unique_keyr‹#s~ø€õ �5—:’:‘<”<Ñ Ô €GØ €DØ €AØðØ—’Ð1Ð1Ð1Ð1¨Ð1Ñ1Ô1Ñ2Ô2ˆØ �WÐ Ð Ø �‰FˆAˆAàˆDð ðð €MrcóÊ— tjd}t|d¦«}tj |¦«\}}|}t|d¦«}n(#t $rtj}tj}YnwxYw|  ¦«} t|¦«}n(#t$r}td|›d|›�¦«d‚d}~wwxYw|  |¦«dS)NrÚrÚwzIn z loop at ) ÚsysÚargvrsrprqÚsplitextÚ IndexErrorÚstdinÚstdoutÚreadrr<Úwrite) ÚfilerzÚbaseÚextÚnewnameÚoutfileÚallstrÚwritestrrhs rÚmainrž4sý€ð %ÝŒx˜Œ{ˆõ �4˜‰oŒoˆÝ”g×&Ò& tÑ,Ô,‰ ˆˆs؈Ý�w Ñ$Ô$ˆˆøõ ðððÝŒiˆÝ”*ˆˆˆðøøøð�XŠX‰ZŒZ€FðCݘvÑ&Ô&ˆˆøÝ ðCðCðC݈j¨t¨t¨t°Q°QÐ7Ñ8Ô8¸dÐBøøøøðCøøøð ‡M‚M�(ÑÔÐÐÐs)‚AÁ"A>Á=A>ÂB&Â& C Â0CÃC Ú__main__)Ú__doc__Ú__all__rpr�Úrernrmrr$Úcompiler.r(r0r8r9r@r=rPrZr\rÚIrtrwrr‹ržÚ__name__r'rrúr¦s©ððNðNð` ˜.Ð )€à € € € Ø € € € Ø € € € ð€ ðððððð@)ð)ð)ð ˆ2Œ:Ð+Ñ ,Ô ,€Ø ˆ2Œ:Ð'Ñ (Ô (€ð ð ð ð ˆ2Œ:�kÑ "Ô "€Ø ˆ2Œ:Ð.Ñ /Ô /€Ø�"”*˜^Ñ,Ô,€Ø ˆRŒZ˜ Ñ $Ô $€ ð2ð2ð2ðhˆRŒZ˜ Ñ #Ô #€ ð)ð)ð)ðVððð �”ð@ØACÄñGôG€ðððð$3ð3ð3ðððð"ððð( ˆzÒÐØ€D�F„F€F€F€FðÐr