§
    ƒnóco©  ã                  óô  — d dl mZ ddlmZmZmZmZmZmZ d dl	m
Z
 ddlmZmZ d dlmZ ddlmZmZmZmZmZmZmZmZmZ d dlZd dlZd dlZd dlZd dlZej         rdd	lm!Z!  G d
„ de
¦  «        Z"dBd„Z# G d„ d¦  «        Z$ G d„ d¦  «        Z% G d„ de%¦  «        Z& G d„ de%¦  «        Z' G d„ de%¦  «        Z( G d„ de%¦  «        Z) G d„ de)¦  «        Z* G d„ de)¦  «        Z+e,dddgfe-i dfdœe,ddfe,ddfe,dg d ¢fe-i dfd!œe,ddfe,dg d"¢fe.g dfe,d#dfe,d$g d%¢fd&œd'œZ/e&e&e'e&e'e'e*e*d(œe'e&e+e'e+e'e'e'e&e&e'd)œe*e&e*e&e&d*œd+œZ0 G d,„ d-¦  «        Z1d.d/d0d1d2d3d4d5œZ2dCd:„Z3dDd<„Z4dDd=„Z5dDd>„Z6dDd?„Z7e4e4e5e6e6e7e7d@œZ8dA„ Z9dS )Eé    )Úannotationsé   )ÚIntrospectionInterpreterÚBUILD_TARGET_FUNCTIONSÚAstConditionLevelÚAstIDGeneratorÚAstIndentationGeneratorÚ
AstPrinter)ÚMesonException)ÚmlogÚenvironment©Úwraps)	ÚTokenÚ	ArrayNodeÚArgumentNodeÚAssignmentNodeÚBooleanNodeÚElementaryNodeÚIdNodeÚFunctionNodeÚ
StringNodeN)ÚBaseNodec                  ó   — e Zd ZdS )ÚRewriterExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    ú5/usr/lib/python3/dist-packages/mesonbuild/rewriter.pyr   r   &   s   € € € € € Ø€Dr    r   c                ó¸  — |                       ddt          ddd¬¦  «         |                       ddd	d
d¬¦  «         |                       dddd	d
d¬¦  «         |                      ddd¬¦  «        }|                     dd|¬¦  «        }|                      ddddd¬¦  «         |                      ddt          d         d          d!         d"d#¬$¦  «         |                      dd%¬&¦  «         |                      d'g d(¢d)¬*¦  «         |                      d+d,d-¬.¦  «         |                     d/d0|¬¦  «        }|                      d't          d/         d'         d!         d)¬*¦  «         |                      d1t          t                               ¦   «         ¦  «        d2¬*¦  «         |                      d3d4¬&¦  «         |                      d/d,d5¬.¦  «         |                     d6d7|¬¦  «        }|                      d't          d8         d'         d!         d)¬*¦  «         |                      d9d,d:¬.¦  «         |                     d;d<|¬¦  «        }|                      d=d>¬&¦  «         d S )?Nz-sz--sourcedirú.ÚSRCDIRzPath to source directory.)ÚtypeÚdefaultÚmetavarÚhelpz-Vz	--verboseÚ
store_trueFzEnable verbose output)Úactionr&   r(   z-Sz--skip-errorsÚskipzSkip errors instead of aborting)Údestr*   r&   r(   r%   zRewriter commandszRewrite command to execute)r,   ÚtitleÚdescriptionÚtargetzModify a target)r(   Úformatter_classz--subdirÚ ÚsubdirzASubdirectory of the new target (only for the "add_target" action))r&   r,   r(   z--typeÚtgt_typeÚtarget_typeé   Ú
executablez<Type of the target to add (only for the "add_target" action))r,   Úchoicesr&   r(   zName or ID of the target)r(   Ú	operation©ÚaddÚrmÚ
add_targetÚ	rm_targetÚadd_extra_filesÚrm_extra_filesÚinfozAction to execute)r7   r(   ÚsourcesÚ*zSources to add/remove)Únargsr(   ÚkwargszModify keyword argumentsÚfunctionzFunction type to modifyÚidz<ID of the function to modify (can be anything for "project")zPairs of keyword and valueúdefault-optionsz"Modify the project default optionsÚdefault_optionsÚoptionsz(Key, value pairs of configuration optionÚcommandz Execute a JSON array of commandsÚjsonzJSON string or file to execute)Úadd_argumentÚstrÚadd_subparsersÚ
add_parserÚrewriter_keysÚlistÚrewriter_func_kwargsÚkeys)ÚparserÚ	formatterÚ
subparsersÚ
tgt_parserÚ	kw_parserÚ
def_parserÚ
cmd_parsers          r!   Úadd_argumentsr[   )   sò  € Ø
×Ò˜˜mµ#¸sÈHÐ[vÐÑwÔwÐwØ
×Ò˜˜k°,ÈÐTkÐÑlÔlÐlØ
×Ò˜˜o°FÀ<ÐY^ð  fGÐñ  Hô  Hð  HØ×&Ò&¨FÐ:MÐ[wÐ&ÑxÔx€Jð ×&Ò& xÐ6GÐYbÐ&ÑcÔc€JØ×Ò˜D *°b¸xð  ORÐñ  Sô  Sð  SØ×Ò˜H¨:½}ÈXÔ?VÐWdÔ?eÐfgÔ?hÐr~Ø!_ð ñ aô að aà×Ò˜HÐ+EÐÑFÔFÐFØ×Ò˜Kð  2Gð  2Gð  2GØ!4ð ñ 6ô 6ð 6à×Ò˜I¨SÐ7NÐÑOÔOÐOð ×%Ò% hÐ5OÐajÐ%ÑkÔk€IØ×Ò˜;µ¸hÔ0GÈÔ0TÐUVÔ0WØ 3ð ñ 5ô 5ð 5à×Ò˜:­tÕ4H×4MÒ4MÑ4OÔ4OÑ/PÔ/PØ 9ð ñ ;ô ;ð ;à×Ò˜4Ð&dÐÑeÔeÐeØ×Ò˜8¨3Ð5QÐÑRÔRÐRð ×&Ò&Ð'8Ð?cÐu~Ð&ÑÔ€JØ×Ò˜KµÐ?PÔ1QÐR]Ô1^Ð_`Ô1aØ!4ð ñ 6ô 6ð 6à×Ò˜I¨SÐ7aÐÑbÔbÐbð ×&Ò& yÐ7YÐktÐ&ÑuÔu€JØ×Ò˜FÐ)IÐÑJÔJÐJÐJÐJr    c                  ó   — e Zd Zd„ Zd„ ZdS )ÚRequiredKeysc                ó   — || _         d S ©N)rS   )ÚselfrS   s     r!   Ú__init__zRequiredKeys.__init__M   s   € ØˆŒ	ˆ	ˆ	r    c                ó@   ‡ ‡— t          ‰¦  «        ˆˆ fd„¦   «         }|S )Nc                 ól  •— t          | ¦  «        dk    sJ ‚| d         }‰	j                             ¦   «         D ]õ\  }}|d         }|d         }|d         }||vr0|�|||<   n(t          d                     |‰j        ¦  «        ¦  «        ‚t          ||         |¦  «        sAt          d                     ||j        t          ||         ¦  «        j        ¦  «        ¦  «        ‚|�Kt          |t          ¦  «        sJ ‚||         |vr*t          d                     ||||         ¦  «        ¦  «        ‚Œö ‰| i |¤ŽS )Nr5   r   r   z$Key "{}" is missing in object for {}z8Invalid type of "{}". Required is {} but provided was {}zCInvalid value of "{}": Possible values are {} but provided was "{}")	ÚlenrS   Úitemsr   Úformatr   Ú
isinstancer%   rQ   )
Úwrapped_argsÚwrapped_kwargsÚcmdÚkeyÚvalÚtypr&   r7   Úfr`   s
           €€r!   Úwrappedz&RequiredKeys.__call__.<locals>.wrappedQ   sb  ø€ å�|Ñ$Ô$¨Ò)Ð)Ð)Ð)Ø˜q”/ˆCØ œIŸOšOÑ-Ô-ð Qð Q‘��SØ˜!”f�Ø˜aœ&�Ø˜aœ&�Ø˜c�>�>ØÐ*Ø#*˜˜C™˜å/Ð0Vß17²¸¸Q¼ZÑ1HÔ1HñJô Jð Jå! # c¤(¨CÑ0Ô0ð aÝ+Ð,fß-3ªV°C¸¼ÅtÈCÐPSÌHÁ~Ä~ÔG^Ñ-_Ô-_ñaô að aàÐ&Ý% g­tÑ4Ô4Ð4Ð4Ð4Ø˜3”x wÐ.Ð.Ý/Ð0uß17²¸¸WÀcÈ#ÄhÑ1OÔ1OñQô Qð Qøà�1�lÐ5 nÐ5Ð5Ð5r    r   )r`   rn   ro   s   `` r!   Ú__call__zRequiredKeys.__call__P   s9   øø€ Ý	ˆq‰Œð	6ð 	6ð 	6ð 	6ð 	6ñ 
Œð	6ð. ˆr    N)r   r   r   ra   rp   r   r    r!   r]   r]   L   s2   € € € € € ðð ð ðð ð ð ð r    r]   c                  óH   — e Zd Zddd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ ZdS )Ú	MTypeBaseNÚnodeúT.Optional[BaseNode]c                óÀ   — |€|                       ¦   «         | _        n|| _        d | _        |                      ¦   «         D ]}t	          | j        |¦  «        r|| _        Œd S r_   )Ú	_new_noders   Ú	node_typeÚsupported_nodesrg   )r`   rs   Úis      r!   ra   zMTypeBase.__init__l   si   € Øˆ<ØŸšÑ(Ô(ˆDŒIˆIàˆDŒIØˆŒØ×%Ò%Ñ'Ô'ð 	#ð 	#ˆAÝ˜$œ) QÑ'Ô'ð #Ø!"�”øð	#ð 	#r    c                ó    — t          d¦  «        ‚)Nz1Internal error: _new_node of MTypeBase was called©r   ©r`   s    r!   rv   zMTypeBase._new_nodev   s   € åÐ SÑTÔTÐTr    c                ó   — | j         d uS r_   )rw   r|   s    r!   Ú
can_modifyzMTypeBase.can_modifyz   s   € ØŒ~ TÐ)Ð)r    c                ó   — | j         S r_   )rs   r|   s    r!   Úget_nodezMTypeBase.get_node}   s
   € ØŒyÐr    c                ó   — g S r_   r   r|   s    r!   rx   zMTypeBase.supported_nodes€   ó   € àˆ	r    c                óz   — t          j        dt          j        t          | ¦  «        j        ¦  «        d¦  «         d S )NzCannot set the value of typeú--> skipping©r   ÚwarningÚboldr%   r   ©r`   Úvalues     r!   Ú	set_valuezMTypeBase.set_value„   s1   € åŒÐ3µT´Y½tÀD¹z¼zÔ?RÑ5SÔ5SÐUcÑdÔdÐdÐdÐdr    c                óz   — t          j        dt          j        t          | ¦  «        j        ¦  «        d¦  «         d S )NzCannot add a value of typer„   r…   rˆ   s     r!   Ú	add_valuezMTypeBase.add_valueˆ   s1   € åŒÐ1µ4´9½TÀ$¹Z¼ZÔ=PÑ3QÔ3QÐSaÑbÔbÐbÐbÐbr    c                óz   — t          j        dt          j        t          | ¦  «        j        ¦  «        d¦  «         d S )NzCannot remove a value of typer„   r…   rˆ   s     r!   Úremove_valuezMTypeBase.remove_valueŒ   ó1   € åŒÐ4µd´iÅÀTÁ
Ä
Ô@SÑ6TÔ6TÐVdÑeÔeÐeÐeÐer    c                óz   — t          j        dt          j        t          | ¦  «        j        ¦  «        d¦  «         d S )NzCannot remove a regex in typer„   r…   rˆ   s     r!   Úremove_regexzMTypeBase.remove_regex�   r�   r    r_   ©rs   rt   )r   r   r   ra   rv   r~   r€   rx   rŠ   rŒ   rŽ   r‘   r   r    r!   rr   rr   k   s¶   € € € € € ð#ð #ð #ð #ð #ðUð Uð Uð*ð *ð *ðð ð ðð ð ðeð eð eðcð cð cðfð fð fðfð fð fð fð fr    rr   c                  ó4   ‡ — e Zd Zdd	ˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )
ÚMTypeStrNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   ©Úsuperra   ©r`   rs   Ú	__class__s     €r!   ra   zMTypeStr.__init__•   ó!   ø€ Ý‰Œ×Ò˜ÑÔÐÐÐr    c                óF   — t          t          dddddd d¦  «        ¦  «        S ©Nr1   r   ©r   r   r|   s    r!   rv   zMTypeStr._new_node˜   s$   € Ý�%  B¨¨1¨a°°rÑ:Ô:Ñ;Ô;Ð;r    c                ó   — t           gS r_   ©r   r|   s    r!   rx   zMTypeStr.supported_nodes›   ó
   € Ýˆ|Ðr    c                ó8   — t          |¦  «        | j        _        d S r_   ©rM   rs   r‰   rˆ   s     r!   rŠ   zMTypeStr.set_valuež   ó   € Ý˜e™*œ*ˆŒ	Œˆˆr    r_   r’   ©r   r   r   ra   rv   rx   rŠ   Ú__classcell__©r™   s   @r!   r”   r”   ”   so   ø€ € € € € ðð ð ð ð ð ð ð<ð <ð <ðð ð ð%ð %ð %ð %ð %ð %ð %r    r”   c                  ó4   ‡ — e Zd Zdd	ˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )
Ú	MTypeBoolNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   r–   r˜   s     €r!   ra   zMTypeBool.__init__¢   rš   r    c                óF   — t          t          dddddd d¦  «        ¦  «        S )Nr1   r   F)r   r   r|   s    r!   rv   zMTypeBool._new_node¥   s$   € Ý�5  R¨¨A¨q°$¸Ñ>Ô>Ñ?Ô?Ð?r    c                ó   — t           gS r_   )r   r|   s    r!   rx   zMTypeBool.supported_nodes¨   s
   € Ýˆ}Ðr    c                ó8   — t          |¦  «        | j        _        d S r_   )Úboolrs   r‰   rˆ   s     r!   rŠ   zMTypeBool.set_value«   s   € Ý˜u™+œ+ˆŒ	Œˆˆr    r_   r’   r¤   r¦   s   @r!   r¨   r¨   ¡   sr   ø€ € € € € ðð ð ð ð ð ð ð@ð @ð @ðð ð ð&ð &ð &ð &ð &ð &ð &r    r¨   c                  ó4   ‡ — e Zd Zdd	ˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )
ÚMTypeIDNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   r–   r˜   s     €r!   ra   zMTypeID.__init__¯   rš   r    c                óF   — t          t          dddddd d¦  «        ¦  «        S rœ   ©r   r   r|   s    r!   rv   zMTypeID._new_node²   s$   € Ý•e˜B  A q¨!¨T°2Ñ6Ô6Ñ7Ô7Ð7r    c                ó   — t           gS r_   ©r   r|   s    r!   rx   zMTypeID.supported_nodesµ   ó	   € Ýˆxˆr    c                ó8   — t          |¦  «        | j        _        d S r_   r¢   rˆ   s     r!   rŠ   zMTypeID.set_value¸   r£   r    r_   r’   r¤   r¦   s   @r!   r¯   r¯   ®   so   ø€ € € € € ðð ð ð ð ð ð ð8ð 8ð 8ðð ð ð%ð %ð %ð %ð %ð %ð %r    r¯   c                  óv   ‡ — e Zd Zddˆ fd„Zd„ Zd„ Zd„ Zdd
„Zdd„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zdd„Zˆ xZS )Ú	MTypeListNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   r–   r˜   s     €r!   ra   zMTypeList.__init__¼   rš   r    c                óh   — t          t          t          dddddd d¦  «        ¦  «        dddd¦  «        S rœ   )r   r   r   r|   s    r!   rv   zMTypeList._new_node¿   s5   € Ý�¥e¨B°°A°q¸!¸TÀ2Ñ&FÔ&FÑGÔGÈÈAÈqÐRSÑTÔTÐTr    c                ó    — t          d¦  «        ‚)Nz9Internal error: _new_element_node of MTypeList was calledr{   rˆ   s     r!   Ú_new_element_nodezMTypeList._new_element_nodeÂ   s   € åÐ [Ñ\Ô\Ð\r    c                ó´   — t          | j        t          ¦  «        s=| j        }|                      ¦   «         | _        | j        j        xj        |gz  c_        d S d S r_   )rg   rs   r   rv   ÚargsÚ	arguments)r`   Útmps     r!   Ú_ensure_array_nodezMTypeList._ensure_array_nodeÆ   sX   € Ý˜$œ)¥YÑ/Ô/ð 	.Ø”)ˆCØŸšÑ(Ô(ˆDŒIØŒIŒNÐ$Ô$¨¨Ñ-Ð$Ô$Ð$Ð$ð	.ð 	.r    Úreturnr­   c                ó   — dS ©NFr   ©r`   rs   r‰   s      r!   Ú_check_is_equalzMTypeList._check_is_equalÌ   ó   € àˆur    ÚregexrM   c                ó   — dS rÄ   r   ©r`   rs   rÈ   s      r!   Ú_check_regex_matcheszMTypeList._check_regex_matchesÐ   rÇ   r    c                ó¶   — t          | j        t          ¦  «        r9t          | j        j        j        ¦  «        dk    r| j        j        j        d         S | j        S )Nr   r   )rg   rs   r   rd   r¾   r¿   r|   s    r!   r€   zMTypeList.get_nodeÔ   sJ   € Ý�d”i¥Ñ+Ô+ð 	3Ý�4”9”>Ô+Ñ,Ô,°Ò1Ð1Ø”y”~Ô/°Ô2Ð2ØŒyÐr    c                ó   — g S r_   r   r|   s    r!   Úsupported_element_nodesz!MTypeList.supported_element_nodesÚ   r‚   r    c                ó<   — t           g|                      ¦   «         z   S r_   )r   rÎ   r|   s    r!   rx   zMTypeList.supported_nodesÞ   s   € Ýˆ{˜T×9Ò9Ñ;Ô;Ñ;Ð;r    c                óæ   — t          |t          ¦  «        s|g}|                      ¦   «          g | j        j        _        |D ]0}| j        j        xj        |                      |¦  «        gz  c_        Œ1d S r_   ©rg   rQ   rÁ   rs   r¾   r¿   r¼   ©r`   r‰   ry   s      r!   rŠ   zMTypeList.set_valueá   s‚   € Ý˜%¥Ñ&Ô&ð 	Ø�GˆEØ×ÒÑ!Ô!Ð!Ø#%ˆŒ	ŒÔ Øð 	Dð 	DˆAØŒIŒNÐ$Ô$¨×)?Ò)?ÀÑ)BÔ)BÐ(CÑCÐ$Ô$Ð$ð	Dð 	Dr    c                óÄ   — t          |t          ¦  «        s|g}|                      ¦   «          |D ]0}| j        j        xj        |                      |¦  «        gz  c_        Œ1d S r_   rÑ   rÒ   s      r!   rŒ   zMTypeList.add_valueé   sv   € Ý˜%¥Ñ&Ô&ð 	Ø�GˆEØ×ÒÑ!Ô!Ð!Øð 	Dð 	DˆAØŒIŒNÐ$Ô$¨×)?Ò)?ÀÑ)BÔ)BÐ(CÑCÐ$Ô$Ð$ð	Dð 	Dr    c                óâ   ‡‡‡— ˆˆˆfd„}t          ‰t          ¦  «        s‰gŠ|                      ¦   «          g }| j        j        j        D ]Š |‰¦  «        s|‰gz  }Œ|| j        j        _        d S )Nc                ó0   •— ‰D ]} ‰‰|¦  «        r dS ŒdS )NTFr   )rs   ÚjÚ
equal_funcry   r‰   s     €€€r!   Úcheck_remove_nodez3MTypeList._remove_helper.<locals>.check_remove_nodeñ   s7   ø€ Øð  ð  �Ø�:˜a Ñ#Ô#ð  Ø˜4˜4ð à�5r    )rg   rQ   rÁ   rs   r¾   r¿   )r`   r‰   r×   rØ   Úremoved_listry   s    ``  @r!   Ú_remove_helperzMTypeList._remove_helperð   s¢   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	õ ˜%¥Ñ&Ô&ð 	Ø�GˆEØ×ÒÑ!Ô!Ð!ØˆØ””Ô)ð 	$ð 	$ˆAØ$Ð$ QÑ'Ô'ð $Ø  Ñ#�øØ#/ˆŒ	ŒÔ Ð Ð r    c                ó<   — |                       || j        ¦  «         d S r_   )rÚ   rÆ   rˆ   s     r!   rŽ   zMTypeList.remove_value   s!   € Ø×Ò˜E 4Ô#7Ñ8Ô8Ð8Ð8Ð8r    c                ó<   — |                       || j        ¦  «         d S r_   )rÚ   rË   )r`   rÈ   s     r!   r‘   zMTypeList.remove_regex  s!   € Ø×Ò˜E 4Ô#<Ñ=Ô=Ð=Ð=Ð=r    r_   r’   ©rÂ   r­   ©rÈ   rM   rÂ   r­   )rÈ   rM   )r   r   r   ra   rv   r¼   rÁ   rÆ   rË   r€   rÎ   rx   rŠ   rŒ   rÚ   rŽ   r‘   r¥   r¦   s   @r!   r¸   r¸   »   s   ø€ € € € € ðð ð ð ð ð ð ðUð Uð Uð]ð ]ð ]ð.ð .ð .ðð ð ð ðð ð ð ðð ð ðð ð ð<ð <ð <ðDð Dð DðDð Dð Dð0ð 0ð 0ð 9ð 9ð 9ð>ð >ð >ð >ð >ð >ð >ð >r    r¸   c                  ó>   ‡ — e Zd Zddˆ fd„Zd„ Zdd„Zdd„Zd„ Zˆ xZS )ÚMTypeStrListNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   r–   r˜   s     €r!   ra   zMTypeStrList.__init__  rš   r    c                ó`   — t          t          dddddd t          |¦  «        ¦  «        ¦  «        S rœ   )r   r   rM   rˆ   s     r!   r¼   zMTypeStrList._new_element_node
  s*   € Ý�%  B¨¨1¨a°µs¸5±z´zÑBÔBÑCÔCÐCr    rÂ   r­   c                óF   — t          |t          ¦  «        r|j        |k    S dS rÄ   ©rg   r   r‰   rÅ   s      r!   rÆ   zMTypeStrList._check_is_equal  s&   € Ý�d�JÑ'Ô'ð 	'Ø”: Ò&Ð&Øˆur    rÈ   rM   c                óh   — t          |t          ¦  «        rt          j        ||j        ¦  «        d uS dS rÄ   ©rg   r   ÚreÚmatchr‰   rÊ   s      r!   rË   z!MTypeStrList._check_regex_matches  ó2   € Ý�d�JÑ'Ô'ð 	;Ý”8˜E 4¤:Ñ.Ô.°dÐ:Ð:Øˆur    c                ó   — t           gS r_   rŸ   r|   s    r!   rÎ   z$MTypeStrList.supported_element_nodes  r    r    r_   r’   rÝ   rÞ   ©	r   r   r   ra   r¼   rÆ   rË   rÎ   r¥   r¦   s   @r!   rà   rà     s‹   ø€ € € € € ðð ð ð ð ð ð ðDð Dð Dðð ð ð ð
ð ð ð ð
ð ð ð ð ð ð r    rà   c                  ó>   ‡ — e Zd Zddˆ fd„Zd„ Zdd„Zdd„Zd„ Zˆ xZS )ÚMTypeIDListNrs   rt   c                óJ   •— t          ¦   «                              |¦  «         d S r_   r–   r˜   s     €r!   ra   zMTypeIDList.__init__  rš   r    c                ó`   — t          t          dddddd t          |¦  «        ¦  «        ¦  «        S rœ   )r   r   rM   rˆ   s     r!   r¼   zMTypeIDList._new_element_node  s*   € Ý•e˜B  A q¨!¨Tµ3°u±:´:Ñ>Ô>Ñ?Ô?Ð?r    rÂ   r­   c                óF   — t          |t          ¦  «        r|j        |k    S dS rÄ   ©rg   r   r‰   rÅ   s      r!   rÆ   zMTypeIDList._check_is_equal!  s&   € Ý�d�FÑ#Ô#ð 	'Ø”: Ò&Ð&Øˆur    rÈ   rM   c                óh   — t          |t          ¦  «        rt          j        ||j        ¦  «        d uS dS rÄ   ræ   rÊ   s      r!   rË   z MTypeIDList._check_regex_matches&  ré   r    c                ó   — t           gS r_   r´   r|   s    r!   rÎ   z#MTypeIDList.supported_element_nodes+  rµ   r    r_   r’   rÝ   rÞ   rë   r¦   s   @r!   rí   rí     s‹   ø€ € € € € ðð ð ð ð ð ð ð@ð @ð @ðð ð ð ð
ð ð ð ð
ð ð ð ð ð ð r    rí   ÚsetÚdelete)r8   rI   )rô   rõ   r:   Úremover‘   r@   ©rE   rF   r8   rD   )Úsrc_addÚsrc_rmÚ	target_rmÚ
target_addÚextra_files_addÚextra_files_rmr@   r1   r6   )Úboth_librariesr6   ÚjarÚlibraryÚshared_libraryÚshared_moduleÚstatic_library)r/   r8   rA   r2   r4   ©rH   rD   r/   )ÚlanguageÚmethodÚnativeÚnot_found_messageÚrequiredÚstaticÚversionÚmodules)Úbuild_by_defaultÚbuild_rpathÚdependenciesÚgui_appÚ	link_withÚexport_dynamicÚimplibÚinstallÚinstall_dirÚinstall_rpathÚpie)rH   Úmeson_versionÚlicenseÚsubproject_dirr  )Ú
dependencyr/   Úprojectc                  óø   — e Zd Zd#d$d„Zd	„ Zd%d„Zd„ Zd„ Zd„ Zd&d„Z	d'd„Z
 eed         ¦  «        d„ ¦   «         Z eed         ¦  «        d„ ¦   «         Zd(d„Z eed         ¦  «        d„ ¦   «         Zd „ Zd!„ Zd"S ))ÚRewriterÚninjaFÚ	sourcedirrM   Ú	generatorÚskip_errorsr­   c           	     ó  — || _         t          |d|t          ¦   «         t          ¦   «         t	          ¦   «         g¬¦  «        | _        || _        g | _        g | _        g | _	        | j
        | j        | j        dœ| _        d | _        d S )Nr1   )Úvisitorsr  )r   r   r   r	   r   Úinterpreterr"  Úmodified_nodesÚto_remove_nodesÚto_add_nodesÚprocess_default_optionsÚprocess_kwargsÚprocess_targetÚ	functionsÚ	info_dump)r`   r   r!  r"  s       r!   ra   zRewriter.__init__d  s°   € Ø"ˆŒÝ3°I¸rÀ9ÕZhÑZjÔZjõ  mDñ  mFô  mFõ  HYñ  H[ô  H[ð  Z\ð  ]ñ  ]ô  ]ˆÔØ&ˆÔØ ˆÔØ!ˆÔØˆÔà#Ô;ØÔ)ØÔ)ð
ð 
ˆŒð
 ˆŒˆˆr    c           	     ó¼  — t          j        dt          j        t          j                             | j        t          j        ¦  «        ¦  «        ¦  «         | j	         
                    ¦   «          t          j        dt          j        | j	        j        d         ¦  «        ¦  «         t          j        dt          j        | j	        j        d         ¦  «        ¦  «         d S )NzAnalyzing meson file:z  -- Project:Údescriptive_namez  -- Version:r  )r   Úlogr‡   ÚosÚpathÚjoinr   r   Úbuild_filenamer%  ÚanalyzeÚproject_dataÚcyanr|   s    r!   Úanalyze_mesonzRewriter.analyze_mesonr  sŸ   € ÝŒÐ(­$¬)µB´G·L²LÀÄÕQ\ÔQkÑ4lÔ4lÑ*mÔ*mÑnÔnÐnØÔ× Ò Ñ"Ô"Ð"ÝŒ�¥$¤)¨DÔ,<Ô,IÐJ\Ô,]Ñ"^Ô"^Ñ_Ô_Ð_ÝŒ�¥$¤)¨DÔ,<Ô,IÈ)Ô,TÑ"UÔ"UÑVÔVÐVÐVÐVr    Úcmd_typeÚcmd_idÚdataÚdictc                óh   — | j         €i | _         || j         vr
i | j         |<   || j         |         |<   d S r_   )r-  )r`   r9  r:  r;  s       r!   Úadd_infozRewriter.add_infox  sA   € ØŒ>Ð!ØˆDŒNØ˜4œ>Ð)Ð)Ø')ˆDŒN˜8Ñ$Ø+/ˆŒ�xÔ  Ñ(Ð(Ð(r    c                óˆ   — | j         €d S t          j                             t	          j        | j         d¬¦  «        ¦  «         d S )Nr5   )Úindent)r-  ÚsysÚstderrÚwriterK   Údumpsr|   s    r!   Ú
print_infozRewriter.print_info  s<   € ØŒ>Ð!ØˆFÝŒ
×Ò�œ D¤N¸1Ð=Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>r    c                ó°   — | j         r(t          j        d¦  «        t          j        d¦  «        fS t          j        d¦  «        t          j        d¦  «        fS )Nz-->ÚskippingÚaborting)r"  r   r7  ÚyellowÚredr|   s    r!   Úon_errorzRewriter.on_error„  sK   € ØÔð 	=Ý”9˜UÑ#Ô#¥T¤[°Ñ%<Ô%<Ð<Ð<ÝŒy˜ÑÔ¥¤¨*Ñ!5Ô!5Ð5Ð5r    c                ó2   — | j         rd S t          d¦  «        ‚)Nz Rewriting the meson.build failed)r"  r   r|   s    r!   Úhandle_errorzRewriter.handle_error‰  s!   € ØÔð 	Ø�4ÝÐ?Ñ@Ô@Ð@r    r/   c           
     ób  ‡ — dˆ fd„} ||¦  «        }|rÈt          |¦  «        dk    r|d         S t          j        dt          j        |¦  «        ¦  «         |D ]I}t          j        d	t          j        |d         ¦  «        d
t          j        |d         ¦  «        ¦  «         ŒJt          j        dg‰                      ¦   «         ¢R Ž  ‰                      ¦   «          d S d }|‰ j        j        v rB‰ j        j        |         }t          |t          ¦  «        r|j
        dv r‰ j        j        |         }|S )NÚnamerM   rÂ   úT.List[BaseNode]c                óZ   •— g }‰j         j        D ]}| |d         |d         hv r||gz  }Œ|S )NrO  rF   )r%  Útargets)rO  Úresultry   r`   s      €r!   Ú
check_listz(Rewriter.find_target.<locals>.check_list�  sF   ø€ ØˆFØÔ%Ô-ð "ð "�Ø˜A˜fœI q¨¤wÐ/Ð/Ð/Ø˜q˜c‘M�FøØˆMr    r   r   z#There are multiple targets matchingz  -- Target namezwith IDrF   z1Please try again with the unique ID of the target>   rÿ   r   r6   r  rþ   r  r  )rO  rM   rÂ   rP  )rd   r   Úerrorr‡   rK  rM  r%  Úassignmentsrg   r   Ú	func_nameÚassign_vals)r`   r/   rT  rR  ry   Útgtrs   s   `      r!   Úfind_targetzRewriter.find_targetŽ  sa  ø€ ð	ð 	ð 	ð 	ð 	ð 	ð �*˜VÑ$Ô$ˆØð 		Ý�7‰|Œ|˜qÒ Ð Ø˜q”zÐ!å”
Ð@Å$Ä)ÈFÑBSÔBSÑTÔTÐTØ ð hð h�AÝ”JÐ1µ4´9¸Q¸v¼YÑ3GÔ3GÈÕTXÔT]Ð^_Ð`dÔ^eÑTfÔTfÑgÔgÐgÐgÝ”
ÐNÐaÐQU×Q^ÒQ^ÑQ`ÔQ`ÐaÐaÐaÐaØ×!Ò!Ñ#Ô#Ð#Ø�tð ˆØ�TÔ%Ô1Ð1Ð1ØÔ#Ô/°Ô7ˆDÝ˜$¥Ñ-Ô-ð ?Ø”>ð  &Mð  Mð  MØÔ*Ô6°vÔ>�Càˆ
r    r  c                ó  ‡ — dˆ fd„} ||¦  «        }|�|S |‰ j         j        v rb‰ j         j        |         }t          |t          ¦  «        r;|j        dk    r0‰ j                              |j        ¦  «        d         } ||¦  «        }|S )NrO  rM   c                óF   •— ‰j         j        D ]}| |d         k    r|c S Œd S )NrO  )r%  r  )rO  ry   r`   s     €r!   rT  z,Rewriter.find_dependency.<locals>.check_list­  s:   ø€ ØÔ%Ô2ð ð �Ø˜1˜Vœ9Ò$Ð$Ø�H�H�Hð %à�4r    r  r   )rO  rM   )r%  rV  rg   r   rW  Úflatten_argsr¾   )r`   r  rT  Údeprs   rO  s   `     r!   Úfind_dependencyzRewriter.find_dependency¬  s¯   ø€ ð	ð 	ð 	ð 	ð 	ð 	ð ˆj˜Ñ$Ô$ˆØˆ?ØˆJð ˜Ô)Ô5Ð5Ð5ØÔ#Ô/°
Ô;ˆDÝ˜$¥Ñ-Ô-ð +Ø”> \Ò1Ð1ØÔ+×8Ò8¸¼ÑCÔCÀAÔF�DØ$˜* TÑ*Ô*�Càˆ
r    rH   c                óÚ  — ddddd„ |d                               ¦   «         D ¦   «         idœ}|                      |¦  «         |d         d	k    rd S d
|d<   g |d         d<   | j        j        }i d„ |j                             ¦   «         D ¦   «         ¥d„ |j                             ¦   «         D ¦   «         ¥d„ |j                             ¦   «         D ¦   «         ¥d„ |j                             ¦   «         D ¦   «         ¥d„ |j                             ¦   «         D ¦   «         ¥}t          |d                              ¦   «         ¦  «        D �]\  }}||vrLt          j        dt          j	        |¦  «        g|  
                    ¦   «         ¢R Ž  |                      ¦   «          ŒV	 ||                              |¦  «        }n‚# t          $ ru}t          j        dt          j	        |¦  «        t          j        t          |¦  «        ¦  «        g|  
                    ¦   «         ¢R Ž  |                      ¦   «          Y d }~Œíd }~ww xY w|d         dxx         |› d|› �gz  cc<   �Œ|                      |¦  «         d S )Nr  ú/r‘   rH   c                ó   — g | ]}|› d �‘ŒS )z=.*r   ©Ú.0Úxs     r!   ú
<listcomp>z4Rewriter.process_default_options.<locals>.<listcomp>É  s   € Ð#MÐ#MÐ#M°! q I I IÐ#MÐ#MÐ#Mr    rI   r÷   r8   rô   r:   rD   c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r   ©rM   ©rd  ÚkÚvs      r!   ú
<dictcomp>z4Rewriter.process_default_options.<locals>.<dictcomp>×  ó$   € Ð;Ð;Ð;™T˜Q �s�1‰vŒv�qÐ;Ð;Ð;r    c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r   rh  ri  s      r!   rl  z4Rewriter.process_default_options.<locals>.<dictcomp>Ø  rm  r    c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r   rh  ri  s      r!   rl  z4Rewriter.process_default_options.<locals>.<dictcomp>Ù  rm  r    c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r   rh  ri  s      r!   rl  z4Rewriter.process_default_options.<locals>.<dictcomp>Ú  rm  r    c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r   rh  ri  s      r!   rl  z4Rewriter.process_default_options.<locals>.<dictcomp>Û  rm  r    zUnknown optionszUnable to setú=)rS   r*  r%  ÚcoredatarI   re   Úsortedr   rU  r‡   rK  rM  Úvalidate_valuer   rJ  rM   )r`   rj   Ú
kwargs_cmdÚcdatarI   rk   rl   Úes           r!   r)  z Rewriter.process_default_optionsÁ  s³  € ð "ØØ'à!Ð#MÐ#M°s¸9´~×7JÒ7JÑ7LÔ7LÐ#MÑ#MÔ#Mðð	
ð 
ˆ
ð 	×Ò˜JÑ'Ô'Ð'ð ˆ{Ô˜uÒ$Ð$ØˆFà"'ˆ
�;ÑØ24ˆ
�8ÔÐ.Ñ/àÔ Ô)ˆð
Ø;Ð; U¤]×%8Ò%8Ñ%:Ô%:Ð;Ñ;Ô;ð
à;Ð; U¤]×%8Ò%8Ñ%:Ô%:Ð;Ñ;Ô;ð
ð <Ð; U¤]×%8Ò%8Ñ%:Ô%:Ð;Ñ;Ô;ð
ð <Ð; U¤]×%8Ò%8Ñ%:Ô%:Ð;Ñ;Ô;ð	
ð
 <Ð; U¤]×%8Ò%8Ñ%:Ô%:Ð;Ñ;Ô;ð
ˆõ ˜s 9œ~×3Ò3Ñ5Ô5Ñ6Ô6ð 	Hñ 	H‰HˆC�Ø˜'Ð!Ð!Ý”
Ð,­d¬i¸©n¬nÐO¸t¿}º}¹¼ÐOÐOÐOÐOØ×!Ò!Ñ#Ô#Ð#ØðØ˜c”l×1Ò1°#Ñ6Ô6��øÝ!ð ð ð Ý”
˜?­D¬I°c©N¬N½D¼HÅSÈÁVÄVÑ<LÔ<LÐ_ÈtÏ}Ê}ÉÌÐ_Ð_Ð_Ð_Ø×!Ò!Ñ#Ô#Ð#Ø����øøøøðøøøð
 �xÔ Ð!2Ð3Ð3Ô3¸3¸¸À¸¸Ð7GÑGÐ3Ð3Ñ3Ñ3à×Ò˜JÑ'Ô'Ð'Ð'Ð's   ÆF6Æ6
H5Ç A+H0È0H5rD   c           
     ó–  — t          j        dt          j        |d         ¦  «        dt          j        d|d         z   dz   ¦  «        ¦  «         |d         t          vr?t          j        d|d         g|                      ¦   «         ¢R Ž  |                      ¦   «         S t          |d                  }d }d }|d         dk    rvdd	h                     |d         h¦  «        rDt          j        d
|d         z   dz   g|                      ¦   «         ¢R Ž  |                      ¦   «         S | j	        j
        }|j        }nq|d         dk    r-|                      |d         ¦  «        }|r|d         }|j        }n8|d         dk    r,|                      |d         ¦  «        }|r|d         }|j        }|st          j        d¦  «         t          |t          ¦  «        sJ ‚t          |t           ¦  «        sJ ‚d„ |j                             ¦   «         D ¦   «         |_        |d         dk    rÛi }t'          |j                             ¦   «         ¦  «        D ]y\  }}d ||<   t          |t(          ¦  «        r|j        ||<   Œ*t          |t,          ¦  «        r:g }	|j        j        D ]&}
d }t          |
t(          ¦  «        r|
j        }|	|gz  }	Œ'|	||<   Œz|                      dd                     |d         |d         ¦  «        |¦  «         d S d}t'          |d                              ¦   «         ¦  «        D �]Ù\  }}||vrLt          j        dt          j        |¦  «        g|                      ¦   «         ¢R Ž  |                      ¦   «          ŒV|d         dk    rh||j        v r6t          j        dt          j        |¦  «        d¦  «         |j        |= |dz  }n(t          j        dt          j        |¦  «        d¦  «         ŒÊ||j        vr
d |j        |<    ||         |j        |         ¦  «        }|                     ¦   «         s(t          j        dt          j        |¦  «        d¦  «         t7          |¦  «        }|d         dk    rRt          j        d t          j        |¦  «        d!t          j        |¦  «        ¦  «         |                     |¦  «         �n|d         d"k    rQt          j        d#t          j        |¦  «        d!t          j        |¦  «        ¦  «         |                     |¦  «         n¹|d         d$k    rQt          j        d%t          j        |¦  «        d&t          j        |¦  «        ¦  «         |                     |¦  «         n\|d         d'k    rPt          j        d(t          j        |¦  «        d&t          j        |¦  «        ¦  «         |                      |¦  «         | !                    ¦   «         |j        |<   |dz  }�ŒÛd)„ |j                             ¦   «         D ¦   «         |_        |dk    r|| j"        vr| xj"        |gz  c_"        d S d S d S )*NzProcessing function typerE   zwith idú'rF   zUnknown function typer  ra  z//z>The ID for the function type project must be "/" or "//" not "ú"r/   rs   r  z Unable to find the function nodec                ó$   — i | ]\  }}|j         |“ŒS r   ©r‰   ri  s      r!   rl  z+Rewriter.process_kwargs.<locals>.<dictcomp>  s    € ÐJÐJÐJ©$¨!¨Q˜1œ7 AÐJÐJÐJr    r8   r@   rD   z{}#{}r   zCannot modify unknown kwargrõ   z  -- Deletingzfrom the kwargsr   z  -- Keyzis already deletedz  -- Skippingz"because it is to complex to modifyrô   z  -- SettingÚtor:   z  -- Addingrö   z  -- RemovingÚfromr‘   z!  -- Removing all values matchingc                óZ   — i | ](\  }}t          t          d d dddd|¦  «        ¦  «        |“Œ)S )r1   r   Nr²   ri  s      r!   rl  z+Rewriter.process_kwargs.<locals>.<dictcomp>T  s:   € ÐjÐjÐjÉ$È!ÈQ�6¥%¨¨B°°1°a¸¸qÑ"AÔ"AÑBÔBÀAÐjÐjÐjr    )#r   r0  r‡   r7  rR   rU  rK  rM  Ú
isdisjointr%  Úproject_noder¾   rZ  r_  rg   r   r   rD   re   rt  r   r‰   r   r¿   r>  rf   r~   rM   rI  rŠ   rŒ   rŽ   r‘   r€   r&  )r`   rj   Ú
kwargs_defrs   Úarg_noderÀ   Ú	info_datark   rl   Ú	data_listry   ÚelementÚnum_changedÚmodifyerÚval_strs                  r!   r*  zRewriter.process_kwargsï  sV  € åŒÐ+­T¬Y°s¸:´Ñ-GÔ-GÈÕTXÔT]Ð^aÐdgÐhlÔdmÑ^mÐpsÑ^sÑTtÔTtÑuÔuÐuØˆzŒ?Õ"6Ð6Ð6ÝŒJÐ.°°J´ÐRÀ$Ç-Â-Á/Ä/ÐRÐRÐRÐRØ×$Ò$Ñ&Ô&Ð&Ý)¨#¨j¬/Ô:ˆ
ð ˆØˆØˆzŒ?˜iÒ'Ð'ð
 �Tˆ{×%Ò% s¨4¤y kÑ2Ô2ð +Ý”
Ð[Ð^aÐbfÔ^gÑgÐjmÑmð  AÐpt×p}Òp}ÑpÔpð  Að  Að  Að  AØ×(Ò(Ñ*Ô*Ð*ØÔ#Ô0ˆDØ”yˆHˆHØ�Œ_ Ò(Ð(Ø×"Ò" 3 t¤9Ñ-Ô-ˆCØð %Ø˜6”{�Øœ9�øØ�Œ_ Ò,Ð,Ø×&Ò& s¨4¤yÑ1Ô1ˆCØð %Ø˜6”{�Øœ9�Øð 	;ÝŒJÐ9Ñ:Ô:Ð:Ý˜$¥Ñ-Ô-Ð-Ð-Ð-Ý˜(¥LÑ1Ô1Ð1Ð1Ð1àJÐJ°(´/×2GÒ2GÑ2IÔ2IÐJÑJÔJˆŒð ˆ{Ô˜vÒ%Ð%ØˆIÝ" 8¤?×#8Ò#8Ñ#:Ô#:Ñ;Ô;ð /ð /‘��SØ!%�	˜#‘Ý˜c¥>Ñ2Ô2ð 	/Ø%(¤Y�I˜c‘N�NÝ ¥YÑ/Ô/ð /Ø "�IØ œXÔ/ð /ð /˜Ø"&˜Ý% a­Ñ8Ô8ð .Ø&'¤g˜GØ! g YÑ.˜	˜	Ø%.�I˜c‘Nøà�MŠM˜( G§N¢N°3°z´?ÀCÈÄIÑ$NÔ$NÐPYÑZÔZÐZØˆFð ˆÝ˜s 8œ}×2Ò2Ñ4Ô4Ñ5Ô5ð '	ñ '	‰HˆC�Ø˜*Ð$Ð$Ý”
Ð8½$¼)ÀC¹.¼.Ð[È4Ï=Ê=É?Ì?Ð[Ð[Ð[Ð[Ø×!Ò!Ñ#Ô#Ð#Øð �;Ô 8Ò+Ð+Ø˜(œ/Ð)Ð)Ý”H˜_­d¬i¸©n¬nÐ>OÑPÔPÐPØ œ¨Ð,Ø 1Ñ$�K�Kå”H˜Z­¬°3©¬Ð9MÑNÔNÐNØà˜(œ/Ð)Ð)Ø'+�” Ñ$Ø&�z #” x¤°sÔ';Ñ<Ô<ˆHØ×&Ò&Ñ(Ô(ð `Ý”˜­$¬)°C©.¬.Ð:^Ñ_Ô_Ð_õ ˜#‘h”hˆGØ�;Ô 5Ò(Ð(Ý”˜­¬°3©¬¸½t¼{È7Ñ?SÔ?SÑTÔTÐTØ×"Ò" 3Ñ'Ô'Ð'Ñ'Ø�[Ô! UÒ*Ð*Ý”˜­¬°GÑ(<Ô(<¸dÅDÄIÈcÁNÄNÑSÔSÐSØ×"Ò" 3Ñ'Ô'Ð'Ð'Ø�[Ô! XÒ-Ð-Ý”˜­$¬+°gÑ*>Ô*>ÀÍÌ	ÐRUÉÌÑWÔWÐWØ×%Ò% cÑ*Ô*Ð*Ð*Ø�[Ô! ^Ò3Ð3Ý”Ð<½d¼kÈ'Ñ>RÔ>RÐTZÕ\`Ô\eÐfiÑ\jÔ\jÑkÔkÐkØ×%Ò% cÑ*Ô*Ð*ð $,×#4Ò#4Ñ#6Ô#6ˆHŒO˜CÑ Ø˜1ÑˆK‰Kð kÐjÐRZÔRa×RgÒRgÑRiÔRiÐjÑjÔjˆŒØ˜Š?ˆ?˜t¨4Ô+>Ð>Ð>ØÐÔ D 6Ñ)ÐÔÐÐð ˆ?Ð>Ð>r    rs   r   rÂ   r   c                óh   — |j         r*|j         | j        j        v r| j        j        |j                  S d S r_   )Úast_idr%  Úreverse_assignment)r`   rs   s     r!   Úfind_assignment_nodezRewriter.find_assignment_nodeX  s7   € ØŒ;ð 	D˜4œ;¨$Ô*:Ô*MÐMÐMØÔ#Ô6°t´{ÔCÐCØˆtr    c                óÊ  ‡ ‡ ‡!‡"‡#‡$‡%‡&— t          j        dt          j        |d         ¦  «        dt          j        |d         ¦  «        ¦  «         ‰                      |d         ¦  «        Š&‰&€]|d         dk    rQt          j        dt          j        |d         ¦  «        g‰                      ¦   «         ¢R Ž  ‰                      ¦   «         S dDˆ ˆ&fd	„Š%‰&�ˆ%fd
„|d         D ¦   «         |d<   d„ Š!g }|d         dk    �r·d }‰&d         r‰&d         d         }n‰&d         }|€J ‚g }‰&d         D ]0} ‰!|¦  «        D ]"}t          |t          ¦  «        r||j
        gz  }Œ#Œ1g }t          t          |d         ¦  «        ¦  «        D ]¦}||v r)t          j        dt          j        |¦  «        d¦  «         Œ/t          j        dt          j        |¦  «        dt          j        |j        › d|j        › �¦  «        ¦  «         t#          d|j        dddd |¦  «        }|t          |¦  «        gz  }Œ§d }	t          |t$          t&          f¦  «        r|j        }	nt          |t*          ¦  «        r|}	|	€J ‚|	xj        |z  c_        |	|vrt          |t$          ¦  «        s||	gz  }|‰ j        vr‰ xj        |gz  c_        �nÞ|d         dk    �r,ˆ!ˆ&fd„}
|d         D �]} |
|¦  «        \  }}|€)t          j        dt          j        |¦  «        d¦  «         Œ<d }	t          |t$          t&          f¦  «        r|j        }	nt          |t*          ¦  «        r|}	|	€J ‚t          j        dt          j        |¦  «        dt          j        |j        › d|j        › �¦  «        ¦  «         |	j                             |¦  «         |	|vrt          |t$          ¦  «        s||	gz  }|‰ j        vr‰ xj        |gz  c_        �Œ�n¥|d         dk    �r‰&d         }d}	 ‰&d         d         }�n# t4          $ rþ 	 t7          d„ |j        j                             ¦   «         D ¦   «         ¦  «        }|j        j        |         }n¬# t<          $ rŸ t'          t+          t#          d |j        dddd d!¦  «        ¦  «        |j        |j         |j        |j         ¦  «        }||j        j        tC          t#          d|j        dddd d¦  «        ¦  «        <   d"}|‰ j        vr‰ xj        |gz  c_        Y nw xY w|g‰&d<   Y nw xY wt          |tB          ¦  «        r‰ j"        j#        |j
                 }|g‰&d<   t          |t&          ¦  «        sRt          j        d#t          j        |d         ¦  «        d$g‰                      ¦   «         ¢R Ž  ‰                      ¦   «         S g }‰&d         D ]0} ‰!|¦  «        D ]"}t          |t          ¦  «        r||j
        gz  }Œ#Œ1g }t          t          |d         ¦  «        ¦  «        D ]¦}||v r)t          j        d%t          j        |¦  «        d¦  «         Œ/t          j        d&t          j        |¦  «        dt          j        |j        › d|j        › �¦  «        ¦  «         t#          d|j        dddd |¦  «        }|t          |¦  «        gz  }Œ§|j        }	|	xj        |z  c_        |	|vr||	gz  }|r|‰ j        vr‰ xj        |gz  c_        �n”|d         d'k    rðˆ!ˆ&fd(„}
|d         D ]ß} |
|¦  «        \  }}|€)t          j        d)t          j        |¦  «        d¦  «         Œ;|j        }	t          j        d*t          j        |¦  «        dt          j        |j        › d|j        › �¦  «        ¦  «         |	j                             |¦  «         |	|vrt          |t$          ¦  «        s||	gz  }|‰ j        vr‰ xj        |gz  c_        Œà�n˜|d         dk    �rM‰&�Rt          j        d+t          j        |d         ¦  «        d,g‰                      ¦   «         ¢R Ž  ‰                      ¦   «         S tI          j%        d-d.|d         ¦  «        }|d/         d0k    r|d1z   nd2}|d3z   }tL          j'         (                    |d4         tR          j*        ¦  «        Š#t+          t#          d‰#dddd d ¦  «        ¦  «        }t'          |dddd¦  «        }t+          t#          d‰#dddd d ¦  «        ¦  «        }t%          ‰#ddddd5|¦  «        }tW          ‰#dd||¦  «        }ˆ#fd6„|d         D ¦   «         |_        |g|_        t+          t#          d‰#dddd d ¦  «        ¦  «        }t%          ‰#dddd|d/         |¦  «        }tW          ‰#dd||¦  «        }t          t#          d‰#dddd |d         ¦  «        ¦  «        tC          t#          d‰#dddd |¦  «        ¦  «        g|_        | ,                    t[          ¦   «         ¦  «         | ,                    t[          ¦   «         ¦  «         ‰ xj.        ||gz  c_.        �n>|d         d7k    r‡‰  /                    ‰&d         ¦  «        }|€‰&d         }‰ xj0        |gz  c_0        t          j        d8t          j        |d         ¦  «        dt          j        |j        › d|j        › �¦  «        ¦  «         n«|d         d9k    rŸg }‰&d         D ]0} ‰!|¦  «        D ]"}t          |t          ¦  «        r||j
        gz  }Œ#Œ1g }‰&d         D ]0} ‰!|¦  «        D ]"}t          |t          ¦  «        r||j
        gz  }Œ#Œ1‰&d:         ||d;œ}‰  1                    d‰&d<         |¦  «         |D ]O}d=„ Š"ˆ"fd>„Š ˆ fd?„Š$d@„ |j        D ¦   «         }dA„ |j        D ¦   «         }t          |ˆ$fdB„¬C¦  «        }||z   |_        ŒPd S )ENzProcessing targetr/   r8   rû   zUnknown targetÚsrcrM   rÂ   c                óÎ  •— t           j                             t           j                             ‰j        ‰d         ¦  «        ¦  «        }t           j                             | ¦  «        r t           j                             | |¦  «        S t           j                             | ¦  «        s| S t           j                             t           j                             | ¦  «        |¦  «        S )Nr2   )r1  r2  Úabspathr3  r   ÚisabsÚrelpathÚexists)r�  r2   r`   r/   s     €€r!   Ú
rel_sourcez+Rewriter.process_target.<locals>.rel_sourcef  s˜   ø€ Ý”W—_’_¥R¤W§\¢\°$´.À&ÈÔBRÑ%SÔ%SÑTÔTˆFÝŒw�}Š}˜SÑ!Ô!ð Ý”w—’ s¨FÑ3Ô3Ð3Ý”W—^’^ CÑ(Ô(ð Ø�
å”7—?’?¥2¤7§?¢?°3Ñ#7Ô#7¸Ñ@Ô@Ð@r    c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   )rd  re  r–  s     €r!   rf  z+Rewriter.process_target.<locals>.<listcomp>p  s!   ø€ ÐDÐDÐD°˜j˜j¨™mœmÐDÐDÐDr    rA   c                ó*  — g }t          | t          ¦  «        r=t          | j        j        ¦  «        }| j        t          v r|                     d¦  «         n>t          | t          ¦  «        r| j        j        }nt          | t          ¦  «        r| j        }|S )Nr   )
rg   r   rQ   r¾   r¿   rW  r   Úpopr   r   )Únr¾   s     r!   Úarg_list_from_nodez3Rewriter.process_target.<locals>.arg_list_from_nodes  s…   € ØˆDÝ˜!�\Ñ*Ô*ð #Ý˜AœFÔ,Ñ-Ô-�Ø”;Õ"8Ð8Ð8Ø—H’H˜Q‘K”K�KøÝ˜A�yÑ)Ô)ð #Ø”vÔ'��Ý˜A�|Ñ,Ô,ð #Ø”{�ØˆKr    rø   r   rs   z  -- Sourcez.is already defined for the target --> skippingz  -- Adding sourceÚatú:Ústringrù   c                óŠ   •— ‰d         D ]8} ‰|¦  «        D ]*}t          |t          ¦  «        r|j        | k    r||fc c S Œ+Œ9dS )NrA   ©NNrä   ©r�  ry   rÖ   r›  r/   s      €€r!   Ú	find_nodez*Rewriter.process_target.<locals>.find_node¬  sl   ø€ Ø 	Ô*ð ,ð ,�AØ/Ð/°Ñ2Ô2ð ,ð ,˜Ý% a­Ñ4Ô4ð ,Ø œw¨#š~˜~Ø'(¨! t     øð,ð "�zr    z  -- Unable to find sourcezin the targetz  -- Removing sourcer  rü   TÚextra_filesc              3  óZ   K  — | ]&}t          |t          ¦  «        ¯|j        d k    ¯"|V — Œ'dS )r£  Nrñ   )rd  rj  s     r!   ú	<genexpr>z*Rewriter.process_target.<locals>.<genexpr>Õ  sn   è è € ð  +Mð  +M°ÕYcÐdeÕgmÑYnÔYnð  +MÐstÔszð  Lò  tLð  tL¨1ð  tLð  tLð  tLð  tLð  +Mð  +Mr    r1   z[]FÚTargetz#extra_files argument must be a listz  -- Extra filez  -- Adding extra filerý   c                óŠ   •— ‰d         D ]8} ‰|¦  «        D ]*}t          |t          ¦  «        r|j        | k    r||fc c S Œ+Œ9dS )Nr£  r   rä   r¡  s      €€r!   r¢  z*Rewriter.process_target.<locals>.find_node  sl   ø€ Ø Ô.ð ,ð ,�AØ/Ð/°Ñ2Ô2ð ,ð ,˜Ý% a­Ñ4Ô4ð ,Ø œw¨#š~˜~Ø'(¨! t     øð,ð "�zr    z  -- Unable to find extra filez  -- Removing extra filezCan not add targetzbecause it already existsz[- ]Ú_r4   r6   Ú_exeÚ_libÚ_sourcesr2   Úfilesc                óT   •— g | ]$}t          t          d ‰dddd|¦  «        ¦  «        ‘Œ%S )rž  r   Nr�   )rd  re  Úfilenames     €r!   rf  z+Rewriter.process_target.<locals>.<listcomp>1  s9   ø€ Ð%vÐ%vÐ%vÐbc¥jµ°xÀÈ1ÈaÐQRÐTXÐZ[Ñ1\Ô1\Ñ&]Ô&]Ð%vÐ%vÐ%vr    rú   z  -- Removing targetr@   rO  )rO  rA   r£  rF   c                óp   — |                       ¦   «         rt          | ¦  «        n|                      ¦   «         S r_   )ÚisdigitÚintÚlower)Útexts    r!   ú<lambda>z)Rewriter.process_target.<locals>.<lambda>^  s%   € °·²±´Ð#P¥3 t¡9¤9 9ÀDÇJÂJÁLÄL€ r    c                óF   •— ˆfd„t          j        d| ¦  «        D ¦   «         S )Nc                ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   )rd  ÚcÚconverts     €r!   rf  z=Rewriter.process_target.<locals>.<lambda>.<locals>.<listcomp>_  s!   ø€ Ð'VÐ'VÐ'V°q¨¨°©
¬
Ð'VÐ'VÐ'Vr    z([0-9]+))rç   Úsplit)rk   r¸  s    €r!   r´  z)Rewriter.process_target.<locals>.<lambda>_  s)   ø€ Ð'VÐ'VÐ'VÐ'V½B¼HÀZÐQTÑ<UÔ<UÐ'VÑ'VÔ'V€ r    c                ód   •‡ — ˆˆ fd„t          ‰                      d¦  «        ¦  «        D ¦   «         S )Nc                ó^   •— g | ])\  }}‰                      d ¦  «        |k     ‰|¦  «        f‘Œ*S )ra  )Úcount)rd  Úidxre  Úalphanum_keyrk   s      €€r!   rf  z=Rewriter.process_target.<locals>.<lambda>.<locals>.<listcomp>`  s<   ø€ Ð'yÐ'yÐ'yÑU[ÐUXÐZ[¨¯ª°3©¬¸3Ò)>ÀÀÈQÁÄÐ(PÐ'yÐ'yÐ'yr    ra  )Ú	enumerater¹  )rk   r¾  s   `€r!   r´  z)Rewriter.process_target.<locals>.<lambda>`  s9   øø€ Ð'yÐ'yÐ'yÐ'yÐ'yÕ_hÐil×irÒirÐsvÑiwÔiwÑ_xÔ_xÐ'yÑ'yÔ'y€ r    c                ó<   — g | ]}t          |t          ¦  «        °|‘ŒS r   ©rg   r   rc  s     r!   rf  z+Rewriter.process_target.<locals>.<listcomp>b  s'   € ÐOÐOÐO˜QµZÀÅ:Ñ5NÔ5NÐO�qÐOÐOÐOr    c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r   rÁ  rc  s     r!   rf  z+Rewriter.process_target.<locals>.<listcomp>c  s'   € ÐKÐKÐK˜Qµ¸A½zÑ1JÔ1JÐK�qÐKÐKÐKr    c                ó$   •—  ‰| j         ¦  «        S r_   r}  )re  Úpath_sorters    €r!   r´  z)Rewriter.process_target.<locals>.<lambda>d  s   ø€ °K°KÀÄÑ4HÔ4H€ r    )rk   )r�  rM   rÂ   rM   )2r   r0  r‡   r7  rZ  rU  rK  rM  rg   r   r‰   rt  rô   ÚgreenrI  r®  Úlinenor   r   r   r¾   r   r¿   r&  r†   rö   Ú
IndexErrorÚnextrD   rS   ÚStopIterationÚ
end_linenoÚ	end_colnor   r%  rV  rç   Úsubr1  r2  r3  r   r4  r   Úacceptr	   r(  rŽ  r'  r>  )'r`   rj   Úto_sort_nodesrs   Úsrc_listry   rÖ   Ú	to_appendÚtokenr„  r¢  ÚrootÚstring_nodeÚtgt_functionÚ
mark_arrayÚextra_files_keyÚextra_files_listÚid_baseÚ	target_idÚ	source_idÚsrc_arg_nodeÚsrc_arr_nodeÚsrc_far_nodeÚsrc_fun_nodeÚsrc_ass_nodeÚtgt_arg_nodeÚtgt_fun_nodeÚtgt_ass_nodeÚ	to_removeÚ	test_dataÚunknownrA   r¾  r›  r¸  r®  rÄ  r–  r/   s'   `                               @@@@@@@r!   r+  zRewriter.process_target]  s<  øøøøøøøø€ åŒÐ$¥d¤i°°H´Ñ&>Ô&>ÀÍTÌYÐWZÐ[fÔWgÑMhÔMhÑiÔiÐiØ×!Ò! # h¤-Ñ0Ô0ˆØˆ>˜c +Ô.°,Ò>Ð>ÝŒJÐ'­¬°3°x´=Ñ)AÔ)AÐTÀDÇMÂMÁOÄOÐTÐTÐTÐTØ×$Ò$Ñ&Ô&Ð&ð	Að 	Að 	Að 	Að 	Að 	Að 	Að ÐØDÐDÐDÐD°S¸´^ÐDÑDÔDˆC�	‰Nð
	ð 
	ð 
	ð ˆàˆ{Ô˜yÒ(Ñ(ØˆDØ�iÔ ð &Ø˜iÔ(¨Ô+��à˜f”~�ØÐ#Ð#Ð#ð ˆHØ˜IÔ&ð .ð .�Ø+Ð+¨AÑ.Ô.ð .ð .�AÝ! !¥ZÑ0Ô0ð .Ø  Q¤W IÑ-˜øð.ð
 ˆIÝ�C  I¤Ñ/Ô/Ñ0Ô0ð 1ð 1�Ø˜�=�=Ý”H˜]­D¬J°q©M¬MÐ;kÑlÔlÐlØÝ”Ð-­t¬z¸!©}¬}¸dÝœ¨¬Ð%EÐ%E¸¼Ð%EÐ%EÑFÔFñHô Hð Hå˜h¨¬°q¸!¸QÀÀaÑHÔH�Ø�j¨Ñ/Ô/Ð0Ñ0�	�	ð ˆHÝ˜$¥­yÐ 9Ñ:Ô:ð  Øœ9��Ý˜D¥,Ñ/Ô/ð  Ø�ØÐ'Ð'Ð'ØÐÔ )Ñ+ÐÔð ˜}Ð,Ð,µZÀÅlÑ5SÔ5SÐ,Ø ( Ñ+�Ø˜4Ô.Ð.Ð.ØÐ#Ô#¨ vÑ-Ð#Ô#ùà�Ô Ò)Ñ)ð"ð "ð "ð "ð "ð "ð ˜”^ð 2ñ 2�à$- I¨a¡L¤LÑ!��kØ�<Ý”LÐ!=½t¼zÈ!¹}¼}ÈoÑ^Ô^Ð^Øð  �Ý˜d¥\µ9Ð$=Ñ>Ô>ð $Ø#œy�H�HÝ ¥lÑ3Ô3ð $Ø#�HØÐ+Ð+Ð+Ý”Ð/µ´¸A±´ÀÝœ¨Ô(<Ð%SÐ%S¸{Ô?QÐ%SÐ%SÑTÔTñVô Vð VàÔ"×)Ò)¨+Ñ6Ô6Ð6ð  =Ð0Ð0½ÀDÍ,Ñ9WÔ9WÐ0Ø! h ZÑ/�MØ˜tÔ2Ð2Ð2ØÐ'Ô'¨D¨6Ñ1Ð'Ô'ùñ-2ð0 �ÔÐ!2Ò2Ñ2Ø)/°¬ˆLØˆJð/Ø˜mÔ,¨QÔ/�‘øÝð /ð /ð /ð	>Ý&*ð  +Mð  +M°lÔ6GÔ6N×6SÒ6SÑ6UÔ6Uð  +Mñ  +Mô  +Mñ  'Mô  'M�OØ'Ô,Ô3°OÔD�D�DøÝ$ð >ð >ð >å$¥\µ%¸¸LÔ<QÐSTÐVWÐYZÐ\`ÐbfÑ2gÔ2gÑ%hÔ%hÐjvô  kBð  DPô  DZð  \hô  \sð  uAô  uKñ  Lô  L�Dð ~B�LÔ%Ô,­VµE¸(ÀLÔDYÐ[\Ð^_ÐabÐdhÐjwÑ4xÔ4xÑ-yÔ-yÑzØ!&�JØ#¨4Ô+>Ð>Ð>ØÐ+Ô+°¨~Ñ=Ð+Ô+øøð>øøøð *.¨��}Ñ%Ð%Ð%ð/øøøõ ˜$¥Ñ'Ô'ð /ØÔ'Ô3°D´JÔ?�Ø)-¨��}Ñ%Ý˜d¥IÑ.Ô.ð +Ý”
˜8¥T¤Y¨s°8¬}Ñ%=Ô%=Ð?dÐwÐgk×gtÒgtÑgvÔgvÐwÐwÐwÐwØ×(Ò(Ñ*Ô*Ð*ð  "ÐØ˜MÔ*ð 6ð 6�Ø+Ð+¨AÑ.Ô.ð 6ð 6�AÝ! !¥ZÑ0Ô0ð 6Ø(¨Q¬W¨IÑ5Ð(øð6ð
 ˆIÝ�C  I¤Ñ/Ô/Ñ0Ô0ð 1ð 1�ØÐ(Ð(Ð(Ý”HÐ.µ´
¸1±´Ð?oÑpÔpÐpØÝ”Ð1µ4´:¸a±=´=À$Ýœ¨¬Ð%EÐ%E¸¼Ð%EÐ%EÑFÔFñHô Hð Hå˜h¨¬°q¸!¸QÀÀaÑHÔH�Ø�j¨Ñ/Ô/Ð0Ñ0�	�	ð ”yˆHØÐÔ )Ñ+ÐÔð ˜}Ð,Ð,Ø ( Ñ+�ð ð .˜d¨$Ô*=Ð=Ð=ØÐ#Ô#¨ vÑ-Ð#Ô#ùà�ÔÐ!1Ò1Ð1ð"ð "ð "ð "ð "ð "ð ˜”^ð 2ð 2�à$- I¨a¡L¤LÑ!��kØ�<Ý”LÐ!AÅ4Ä:ÈaÁ=Ä=ÐRaÑbÔbÐbØð  œ9�Ý”Ð3µT´ZÀ±]´]ÀFÝœ¨Ô(<Ð%SÐ%S¸{Ô?QÐ%SÐ%SÑTÔTñVô Vð VàÔ"×)Ò)¨+Ñ6Ô6Ð6ð  =Ð0Ð0½ÀDÍ,Ñ9WÔ9WÐ0Ø! h ZÑ/�MØ˜tÔ2Ð2Ð2ØÐ'Ô'¨D¨6Ñ1Ð'Ô'øñ#2ð& �Ô Ò-Ñ-ØÐ!Ý”
Ð/µ´¸3¸x¼=Ñ1IÔ1IÐKfÐyÐim×ivÒivÑixÔixÐyÐyÐyÐyØ×(Ò(Ñ*Ô*Ð*å”f˜W c¨3¨x¬=Ñ9Ô9ˆGØ,/°Ô,>À,Ò,NÐ,N˜ &Ñ(Ð(ÐTZˆIØ *Ñ,ˆIÝ”w—|’| C¨¤Mµ;Ô3MÑNÔNˆHõ (­¨h¸À!ÀQÈÈ4ÐQSÑ(TÔ(TÑUÔUˆLÝ$ \°1°a¸¸AÑ>Ô>ˆLÝ'­¨h¸À!ÀQÈÈ4ÐQSÑ(TÔ(TÑUÔUˆLÝ'¨°!°Q¸¸1¸gÀ|ÑTÔTˆLÝ)¨(°A°q¸)À\ÑRÔRˆLØ%vÐ%vÐ%vÐ%vÐgjÐktÔguÐ%vÑ%vÔ%vˆLÔ"Ø&2 ^ˆLÔ"õ (­¨h¸À!ÀQÈÈ4ÐQSÑ(TÔ(TÑUÔUˆLÝ'¨°!°Q¸¸1¸cÀ-Ô>PÐR^Ñ_Ô_ˆLÝ)¨(°A°q¸)À\ÑRÔRˆLå�5 ¨8°Q¸¸1¸dÀCÈÄMÑRÔRÑSÔSÝ•u˜X x°°A°q¸$À	ÑJÔJÑKÔKð&ˆLÔ"ð
 ×ÒÕ 7Ñ 9Ô 9Ñ:Ô:Ð:Ø×ÒÕ 7Ñ 9Ô 9Ñ:Ô:Ð:ØÐÔ ,°Ð!=Ñ=ÐÔÑà�Ô Ò,Ð,Ø×1Ò1°&¸´.ÑAÔAˆIØÐ Ø" 6œN�	ØÐ Ô  Y KÑ/Ð Ô ÝŒHÐ+­T¬Z¸¸H¼Ñ-FÔ-FÈÝ”[ IÔ$6Ð!KÐ!K¸Ô9IÐ!KÐ!KÑLÔLñNô Nð Nð Nð �Ô Ò'Ð'àˆHØ˜IÔ&ð .ð .�Ø+Ð+¨AÑ.Ô.ð .ð .�AÝ! !¥ZÑ0Ô0ð .Ø  Q¤W IÑ-˜øð.ð  "ÐØ˜MÔ*ð 6ð 6�Ø+Ð+¨AÑ.Ô.ð 6ð 6�AÝ! !¥ZÑ0Ô0ð 6Ø(¨Q¬W¨IÑ5Ð(øð6ð ˜vœØ#Ø/ðð ˆIð
 �MŠM˜( F¨4¤L°)Ñ<Ô<Ð<ð ð 	,ð 	,ˆAØPÐPˆGØVÐVÐVÐVˆLØzÐzÐzÐzˆKàOÐO !¤+ÐOÑOÔOˆGØKÐK !¤+ÐKÑKÔKˆGÝ˜WÐ*HÐ*HÐ*HÐ*HÐIÑIÔIˆGØ! GÑ+ˆAŒKˆKð	,ð 	,s8   ÐP Ð
TÐAQ'Ñ&TÑ'B&TÔTÔTÔ	TÔTc           	     ó  — d|vrt          d¦  «        ‚|d         | j        vrMt          d                     |d         t          | j                             ¦   «         ¦  «        ¦  «        ¦  «        ‚ | j        |d                  |¦  «         d S )Nr%   zCommand has no key "type"z0Unknown command "{}". Supported commands are: {})r   r,  rf   rQ   rS   )r`   rj   s     r!   ÚprocesszRewriter.processg  s�   € Ø˜ÐÐÝ#Ð$?Ñ@Ô@Ð@ØˆvŒ;˜dœnÐ,Ð,Ý#Ð$Vß%+¢V¨C°¬K½¸d¼n×>QÒ>QÑ>SÔ>SÑ9TÔ9TÑ%UÔ%UñWô Wð Wà#ˆŒ�s˜6”{Ô# CÑ(Ô(Ð(Ð(Ð(r    c                óè  ‡‡— t          d„ | j        D ¦   «         ¦  «        sJ ‚t          d„ | j        D ¦   «         ¦  «        sJ ‚t          d„ | j        D ¦   «         ¦  «        sJ ‚t          d„ | j        D ¦   «         ¦  «        sJ ‚d„ | j        D ¦   «         }|d„ | j        D ¦   «         z  }t          |d„ d¬	¦  «        }|d
„ | j        D ¦   «         z  }g }|D ]–}d}|d         dk    s|d         dk    rVt          ¦   «         }|d                              |¦  «         |                     ¦   «          |j         	                    ¦   «         }|d         j
        ||d         |d         dœ}||gz  }Œ—i Š|D �]$}|d         ‰v rŒt          j                             t          j                             | j        |d         ¦  «        ¦  «        }d}t          j                             |¦  «        s+t#          |dd¬¦  «        5  	 d d d ¦  «         n# 1 swxY w Y   t#          |d¬¦  «        5 }	|	                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                     d¦  «        }
d}g }|
D ]}||gz  }|t)          |¦  «        z  }Œ|||dœ‰|d         <   �Œ&ˆˆfd„Š|D ]I}|d         dv r ‰|¦  «         Œ|d         dk    r%‰|d                  dxx         |d         dz   z  cc<   ŒJ‰                     ¦   «         D ]w\  }}t-          j        dt-          j        |¦  «        ¦  «         t#          |d         dd¬¦  «        5 }	|	                     |d         ¦  «         d d d ¦  «         n# 1 swxY w Y   Œxd S )Nc              3  óv   K  — | ]4}t          |d ¦  «        ot          |d¦  «        ot          |d¦  «        V — Œ5dS ©rÆ  Úcolnor®  N©Úhasattrrc  s     r!   r¥  z)Rewriter.apply_changes.<locals>.<genexpr>p  sK   è è € ÐxÐxÐ_`•7˜1˜hÑ'Ô'ÐZ­G°A°wÑ,?Ô,?ÐZÅGÈAÈzÑDZÔDZÐxÐxÐxÐxÐxÐxr    c              3  óv   K  — | ]4}t          |d ¦  «        ot          |d¦  «        ot          |d¦  «        V — Œ5dS rê  rì  rc  s     r!   r¥  z)Rewriter.apply_changes.<locals>.<genexpr>q  sK   è è € ÐyÐyÐ_`•7˜1˜hÑ'Ô'ÐZ­G°A°wÑ,?Ô,?ÐZÅGÈAÈzÑDZÔDZÐyÐyÐyÐyÐyÐyr    c              3  óN   K  — | ] }t          |t          t          f¦  «        V — Œ!d S r_   )rg   r   r   rc  s     r!   r¥  z)Rewriter.apply_changes.<locals>.<genexpr>r  s1   è è € ÐYÐYÀ•:˜a¥)­\Ð!:Ñ;Ô;ÐYÐYÐYÐYÐYÐYr    c              3  óZ   K  — | ]&}t          |t          t          t          f¦  «        V — Œ'd S r_   )rg   r   r   r   rc  s     r!   r¥  z)Rewriter.apply_changes.<locals>.<genexpr>s  s4   è è € ÐjÐjÐPQ•:˜a¥)­^½\Ð!JÑKÔKÐjÐjÐjÐjÐjÐjr    c                ó   — g | ]}|d dœ‘ŒS )Úmodify©rs   r*   r   rc  s     r!   rf  z*Rewriter.apply_changes.<locals>.<listcomp>u  s    € ÐSÐSÐS¸!˜q¨HÐ5Ð5ÐSÐSÐSr    c                ó   — g | ]}|d dœ‘ŒS )r;   ró  r   rc  s     r!   rf  z*Rewriter.apply_changes.<locals>.<listcomp>v  s    € ÐQÐQÐQ°q ¨TÐ2Ð2ÐQÐQÐQr    c                ó6   — | d         j         | d         j        fS )Nrs   )rÆ  rë  )re  s    r!   r´  z(Rewriter.apply_changes.<locals>.<lambda>w  s   € °q¸´yÔ7GÈÈ6ÌÌÐ6Y€ r    T)rk   Úreversec                ó   — g | ]}|d dœ‘ŒS )r:   ró  r   rc  s     r!   rf  z*Rewriter.apply_changes.<locals>.<listcomp>x  s    € ÐOÐOÐO¸ ¨UÐ3Ð3ÐOÐOÐOr    r1   r*   rò  r:   rs   ©ÚfilerM   rs   r*   rù  Úwúutf-8©Úencodingr   )r2  ÚrawÚoffsetsc                óÀ  •— ‰| d                  d         }‰| d                  d         }| d         }|j         dz
  }|j        }||         |z   }|}t          |t          t          f¦  «        r||j        dz
           |j        z   }n¬t          |t          ¦  «        r—| d         dk    r‹t          |j        t          t          f¦  «        r/ ‰	| d         d|j        dd	œ¦  «         ‰| d                  d         }||         d
k    r|dz  }||         d
k    °|dz  }||         dv r|dz  }||         dv °|d |…         | d         z   ||d …         z   ‰| d                  d<   d S )Nrù  rÿ  rþ  rs   r   r*   r;   r1   rø  rr  >   ú	ú
ú rM   )	rÆ  rë  rg   r   r   rÊ  rË  r   r‰   )
ry   rÿ  rþ  rs   ÚlineÚcolÚstartÚendr¬  Úremove_nodes
           €€r!   r  z+Rewriter.apply_changes.<locals>.remove_node¨  s‹  ø€ Ø˜A˜fœIÔ& yÔ1ˆGØ˜˜&œ	Ô" 5Ô)ˆCØ�V”9ˆDØ”; ‘?ˆDØ”*ˆCØ˜D”M CÑ'ˆEØˆCÝ˜$¥­LÐ 9Ñ:Ô:ð Ø˜dœo°Ñ1Ô2°T´^ÑC��õ ˜D¥.Ñ1Ô1ð °a¸´kÀTÒ6IÐ6IÝ˜dœj­9µlÐ*CÑDÔDð 2Ø�K¨¨6¬¸2ÀtÄzÐ]aÐ bÐ bÑcÔcÐcØ  &¤	Ô*¨5Ô1�CØ˜#”h #’o�oØ˜1‘H�Cð ˜#”h #’o�oà�q‘�Ø˜#”hÐ"3Ð3Ð3Ø˜1‘H�Cð ˜#”hÐ"3Ð3Ð3ð '*¨&¨5¨&¤k°A°e´HÑ&<¸sÀ3À4À4¼yÑ&HˆE�!�F”)Ô˜UÑ#Ð#Ð#r    >   r;   rò  rþ  rM   r  Ú	Rewritingr2  )Úallr&  r'  rt  r(  r
   rÍ  Úpost_processrS  Ústripr®  r1  r2  Úrealpathr3  r   r•  ÚopenÚreadÚ
splitlinesrd   re   r   r0  rI  rC  )r`   Ú
work_nodesÚstr_listry   Únew_dataÚprinterr;  ÚfpathÚfdataÚfpÚm_linesÚoffsetÚline_offsetsrÖ   rk   rl   r¬  r  s                   @@r!   Úapply_changeszRewriter.apply_changeso  sÍ  øø€ ÝÐxÐxÐdhÔdwÐxÑxÔxÑxÔxÐxÐxÐxÝÐyÐyÐdhÔdxÐyÑyÔyÑyÔyÐyÐyÐyÝÐYÐYÀTÔEXÐYÑYÔYÑYÔYÐYÐYÐYÝÐjÐjÐUYÔUiÐjÑjÔjÑjÔjÐjÐjÐjàSÐS¸tÔ?RÐSÑSÔSˆ
ØÐQÐQ¸DÔ<PÐQÑQÔQÑQˆ
Ý˜JÐ,YÐ,YÐcgÐhÑhÔhˆ
ØÐOÐO¸TÔ=NÐOÑOÔOÑOˆ
ð ˆØð 	ð 	ˆAØˆHØ�Œ{˜hÒ&Ð&¨!¨H¬+¸Ò*>Ð*>Ý$™,œ,�Ø�&”	× Ò  Ñ)Ô)Ð)Ø×$Ò$Ñ&Ô&Ð&Ø"œ>×/Ò/Ñ1Ô1�à˜&œ	Ô*ØØ˜&œ	Ø˜Hœ+ð	ð ˆDð ˜˜ÑˆHˆHð ˆØð 	ñ 	ˆAØ�Œy˜EÐ!Ð!ØÝ”G×$Ò$¥R¤W§\¢\°$´.À!ÀFÄ)Ñ%LÔ%LÑMÔMˆEØˆEå”7—>’> %Ñ(Ô(ð Ý˜% ¨wÐ7Ñ7Ô7ð ð Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å�e gÐ.Ñ.Ô.ð "°"ØŸš™	œ	�ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð ×&Ò& tÑ,Ô,ˆGØˆFØˆLØð !ð !�Ø  Ñ(�Ø�#˜a™&œ&Ñ ��ð ØØ'ð ð  ˆE�!�F”)ÑÑð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið0 ð 	;ð 	;ˆAØ�Œ{Ð.Ð.Ð.Ø�˜A‘”��Ø�8” Ò%Ð%Ø�a˜”iÔ  Ð'Ð'Ô'¨1¨U¬8°d©?Ñ:Ð'Ð'Ñ'øð Ÿš™œð 	%ð 	%‰HˆC�ÝŒH�[¥$¤+¨cÑ"2Ô"2Ñ3Ô3Ð3Ý�c˜&”k 3°Ð9Ñ9Ô9ð %¸RØ—’˜˜UœÑ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %øð	%ð 	%s6   Ç7HÈH		ÈH		È!IÉI	É	I	Ì>M&Í&M*	Í-M*	N)r  F)r   rM   r!  rM   r"  r­   )r9  rM   r:  rM   r;  r<  )r/   rM   )r  rM   )rs   r   rÂ   r   )r   r   r   ra   r8  r>  rE  rK  rM  rZ  r_  r]   rP   r)  r*  rŽ  r+  rç  r  r   r    r!   r  r  c  sm  € € € € € ðð ð ð ð ðWð Wð Wð0ð 0ð 0ð 0ð?ð ?ð ?ð
6ð 6ð 6ð
Að Að Að
ð ð ð ð<ð ð ð ð* €\�-Ð 1Ô2Ñ3Ô3ð+(ð +(ñ 4Ô3ð+(ðZ €\�- Ô)Ñ*Ô*ðf*ð f*ñ +Ô*ðf*ðPð ð ð ð
 €\�- Ô)Ñ*Ô*ðG,ð G,ñ +Ô*ðG,ðR)ð )ð )ð[%ð [%ð [%ð [%ð [%r    r  rø   rù   rû   rú   rü   rý   r@   r9   Úin_listúT.List[str]rÂ   úT.Dict[str, str]c                ó”   — i }t          | ¦  «        }	 |D ]}t          |¦  «        ||<   Œn# t          $ r t          d¦  «        ‚w xY w|S )Nz;in_list parameter of list_to_dict must have an even length.)ÚiterrÈ  rÉ  Ú	TypeError)r  rS  Úitry   s       r!   Úlist_to_dictr#  Ö  st   € Ø€FÝ	ˆg‰Œ€BðWØð 	!ð 	!ˆAõ ˜R™œˆF�1‰IˆIð		!øõ
 ð Wð Wð WÝÐUÑVÔVÐVðWøøøà€Ms	   “+ «AúT.List[dict]c                ó^   — d| j         t          | j                 | j        | j        | j        dœgS )Nr/   )r%   r/   r8   rA   r2   r4   )r/   Útarget_operation_mapr8   rA   r2   r3   ©rI   s    r!   Úgenerate_targetr(  ã  s9   € àØ”.Ý)¨'Ô*;Ô<Ø”?Ø”.ØÔ'ðð ð ð r    c                óV   — d| j         | j        | j        t          | j        ¦  «        dœgS )NrD   )r%   rE   rF   r8   rD   )rE   rF   r8   r#  rD   r'  s    r!   Úgenerate_kwargsr*  í  s7   € àØÔ$ØŒjØÔ&Ý˜wœ~Ñ.Ô.ðð ð ð r    c                ó>   — d| j         t          | j        ¦  «        dœgS )NrH   )r%   r8   rI   )r8   r#  rI   r'  s    r!   Úgenerate_def_optsr,  ö  s,   € à!ØÔ&Ý ¤Ñ0Ô0ðð ð ð r    c                ó  — t           j                             | j        ¦  «        rDt	          | j        d¬¦  «        5 }t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S t          j        | j        ¦  «        S )Nrû  rü  )r1  r2  r•  rK   r  ÚloadÚloads)rI   r  s     r!   Úgenerate_cmdr0  ý  s¯   € Ý	„w‡~‚~�g”lÑ#Ô#ð (Ý�'”,¨Ð1Ñ1Ô1ð 	!°RÝ”9˜R‘=”=ð	!ð 	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!õ Œz˜'œ,Ñ'Ô'Ð's   »AÁA Á#A )r/   rY  rD   rG   ÚdefrJ   rj   c                óÄ  — | j         st          j        ¦   «          	 t          | j        | j        ¬¦  «        }|                     ¦   «          | j        €*t          j        d¦  «         	 t          j	        ¦   «          dS t          | j                 | ¦  «        }t          |t          ¦  «        st          d¦  «        ‚|D ];}t          |t          ¦  «        st          d¦  «        ‚|                     |¦  «         Œ<|                     ¦   «          |                     ¦   «          	 t          j	        ¦   «          dS # t$          $ r}|‚d }~ww xY w# t          j	        ¦   «          w xY w)N)r"  zNo command specifiedr   zCommand is not a listzCommand is not an objectr   )Úverboser   Ú	set_quietr  r   r+   r8  r%   rU  Úset_verboseÚcli_type_maprg   rQ   r!  Úobjectrç  r  rE  Ú	Exception)rI   ÚrewriterÚcommandsry   rx  s        r!   Úrunr;    su  € ØŒ?ð ÝŒÑÔÐðÝ˜GÔ-¸7¼<ÐHÑHÔHˆØ×ÒÑ Ô Ð àŒ<ÐÝŒJÐ-Ñ.Ô.Ð.Øõ$ 	ÔÑÔÐÐÐõ!   ¤Ô-¨gÑ6Ô6ˆå˜(¥DÑ)Ô)ð 	5ÝÐ3Ñ4Ô4Ð4àð 	 ð 	 ˆAÝ˜a¥Ñ(Ô(ð <ÝÐ :Ñ;Ô;Ð;Ø×Ò˜QÑÔÐÐà×ÒÑ Ô Ð Ø×ÒÑÔÐØõ 	ÔÑÔÐÐÐøõ ð ð ð Øˆøøøøðøøøøõ 	ÔÑÔÐÐøøøs+   œA
D6 Á<B$D6 Ä6
EÅ EÅEÅE
 Å
Er_   )r  r  rÂ   r  )rÂ   r$  ):Ú
__future__r   Úastr   r   r   r   r	   r
   Úmesonbuild.mesonlibr   r1   r   r   Ú	functoolsr   Úmparserr   r   r   r   r   r   r   r   r   rK   r1  rç   rA  ÚtypingÚTÚTYPE_CHECKINGr   r   r[   r]   rr   r”   r¨   r¯   r¸   rà   rí   rM   r<  rQ   rP   rR   r  r&  r#  r(  r*  r,  r0  r6  r;  r   r    r!   ú<module>rD     sd  ðð2 #Ð "Ð "Ð "Ð "Ð "ð Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  Jð  JØ .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  CØ Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð à„?ð "Ø!Ð!Ð!Ð!Ð!Ð!ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð!Kð !Kð !Kð !KðFð ð ð ð ñ ô ð ð>'fð 'fð 'fð 'fð 'fñ 'fô 'fð 'fðR%ð %ð %ð %ð %ˆyñ %ô %ð %ð&ð &ð &ð &ð &�	ñ &ô &ð &ð%ð %ð %ð %ð %ˆiñ %ô %ð %ðI>ð I>ð I>ð I>ð I>�	ñ I>ô I>ð I>ðVð ð ð ð �9ñ ô ð ð(ð ð ð ð �)ñ ô ð ð, ˜4 %¨Ð!2Ð3Ø˜"˜dÐ#ðð ð
 ˜$ Ð%Ø�D˜$ÐØ˜4Ð![Ð![Ð![Ð\Ø˜˜TÐ"ð	ð ð ˜˜dÐ#Ø˜4Ð!~Ð!~Ð!~ÐØ˜"˜dÐ#Ø˜˜D�/Ø˜\ð  ,Sð  ,Sð  ,Sð  Tðð ðð €ð, ØØØ%ØØØØð	ð 	ð &ØØ#ØØ Ø#ØØØØ!Øðð ð (Ø!ØØ"Øðð ð1ð Ð ðBg	%ð g	%ð g	%ð g	%ð g	%ñ g	%ô g	%ð g	%ðT Ø
ØØØ(Ø&Øðð Ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð(ð (ð (ð (ð ØØØ(ØØØðð €ðð ð ð ð r    