Ë Š›JLJê”ãóø—ddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddlmcmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m Z ddl m!Z!ejDd«Z#idd“dd “d d“d d “d d“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&d'œ¥Z$d(d)gZ%gd*¢Z&da'd+d,gZ(da)da*d-„Z+da,d.„Z-d/„Z.d0„Z/ d¤d1„Z0d¥d2„Z1d¥d3„Z2d4„Z3d5„Z4d6„Z5d7„Z6d8„Z7d9„Z8d:„Z9d;„Z:d<„Z;d=„Z„Z=d?„Z>d@„Z?dA„Z@dB„ZAdC„ZBdD„ZCejDdE«ZDdF„ZEejDdG«ZFdH„ZGdI„ZHejDdJ«ZIdK„ZJdL„ZKdM„ZLdN„ZMdO„ZNdP„ZOdQ„ZPdR„ZQdS„ZRdT„ZSdU„ZTdV„ZUdW„ZVdX„ZWdY„ZXdZ„ZYd[„ZZd\„Z[d]„Z\d^„Z]d_„Z^d`„Z_da„Z`db„Zadc„Zbdd„Zcde„Zddf„Zedg„Zfdh„Zgdi„Zhdj„Zidk„Zjdl„Zkdm„Zldn„Zmdo„Zndp„Zodq„Zpdr„Zqds„Zrdt„Zsdu„Ztdv„Zudw„Zvdx„Zwdy„Zxdz„Zyd{„Zzd|„Z{d}„Z|d~„Z}d„Z~d€„Zd�„Z€d‚„Z�Gdƒ„d„e‚«Zƒd…„Z„d†„Z…d‡„Z†dˆ„Z‡d‰„ZˆdŠ„Z‰d‹„ZŠdŒ„Z‹d�„ZŒdŽ„Z�d�„ZŽd�„Z�d‘„Z�d’„Z‘d“„Z’d”„Z“ejDd•«Z”d–„Z•d—„Z–d˜„Z—d™„Z˜dš„Z™d›„Zšdœ„Z›d�„Zœdž„Z�dŸ„Zžd „ZŸd¡„Z d¢„Z¡d£„Z¢y)¦é)Úprint_functionN)ÚGypError)Ú OrderedSetz ^[A-F0-9\-]+$Ú DRIVER_PREFIXÚÚ DRIVER_SUFFIXú.sysÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXú.exeÚSTATIC_LIB_PREFIXÚSHARED_LIB_PREFIXÚSTATIC_LIB_SUFFIXú.libÚSHARED_LIB_SUFFIXú.dllÚINTERMEDIATE_DIRú $(IntDir)ÚSHARED_INTERMEDIATE_DIRz $(OutDir)obj/global_intermediateÚOSÚwinÚ PRODUCT_DIRú $(OutDir)ÚLIB_DIRz $(OutDir)libÚRULE_INPUT_ROOTú $(InputName)ÚRULE_INPUT_DIRNAMEú $(InputDir)ÚRULE_INPUT_EXTú $(InputExt)ÚRULE_INPUT_NAMEú$(InputFileName)ú $(InputPath)z$(ConfigurationName))ÚRULE_INPUT_PATHÚCONFIGURATION_NAMEÚmsvs_cygwin_dirsÚ msvs_props)r&Úmsvs_cygwin_shellÚmsvs_large_pdbÚ msvs_shardÚmsvs_external_builderÚmsvs_external_builder_out_dirÚmsvs_external_builder_build_cmdÚmsvs_external_builder_clean_cmdÚ#msvs_external_builder_clcompile_cmdÚmsvs_enable_winrtÚmsvs_requires_importlibraryÚmsvs_enable_winphoneÚmsvs_application_type_revisionÚmsvs_target_platform_versionÚmsvs_target_platform_minversionÚmsvs_precompiled_headerÚmsvs_precompiled_sourcecóz—tjdvrytrt�stj j d«}tj j d«}|r|sÊtjgd¢tj¬«}|j«d}tjdtj«}|j|«}|r|jd «}tjd tj«}|j|«}|r|jd «}|a|attfS) N)Úwin32Úcygwin)ÚDOMAINÚUSERNAMEÚ USERDOMAINr<)ÚnetÚconfigÚ Workstation)Ústdoutrz^User name\s+(\S+)éz^Logon domain\s+(\S+))ÚsysÚplatformÚ cached_domainÚcached_usernameÚosÚenvironÚgetÚ subprocessÚPopenÚPIPEÚ communicateÚreÚcompileÚ MULTILINEÚsearchÚgroup)ÚdomainÚusernameÚcallr?Ú username_reÚusername_matchÚ domain_reÚ domain_matchs ú7/usr/lib/python3.12/site-packages/gyp/generator/msvs.pyÚ_GetDomainAndUserNamer[lsô€Ü‡\�\Ð,Ñ,Ø !õ žoÜ �Z‰Z�^‰^˜LÓ )€FÜ�z‰z�~‰~˜jÓ)€HÙ ™Ü × Ñ Ò>Ü%/§_¡_ô6€dà×ÑÓ! !Ñ$€fÜ—J‘JÐ4´b·l±lÓC€kØ"×)Ñ)¨&Ó1€nÙ Ø!×'Ñ'¨Ó*ˆÜ—*‘*Ð5´r·|±|ÓD€iØ×%Ñ% fÓ-€lÙ Ø×#Ñ# AÓ&ˆØ€MØ€OÜ œÐ )Ð)ócóŽ—tjj|«}|jd«|jd«k(r|}|S)zÜNormalize the path. But not if that gets rid of a variable, as this may expand to something larger than one directory. Arguments: source: The path to be normalize.d Returns: The normalized path. Ú$)rGÚpathÚnormpathÚcount)ÚsourceÚ normalizeds rZÚ_NormalizedSourcerd‡s>€ô�w‰w×Ñ Ó'€*Ø ‡\�\�#Ó˜*×*Ñ*¨3Ó/Ò/Ø €FØ €-r\có—trM|rKtjj|«s,|ddk(s$tjj t|«}|j dd«}t |«}|r |ddk(r|dd}|S)zÁConvert paths to a form that will make sense in a vcproj file. Arguments: path: The path to convert, may contain / etc. Returns: The path with all slashes made into backslashes. rr^Ú/Ú\éÿÿÿÿN)Úfixpath_prefixrGr_ÚisabsÚjoinÚreplacerd©r_s rZÚ_FixPathrn™sn€õ™¤R§W¡W§]¡]°4Ô%8ÀÀaÁÈCÂÜ �7‰7�<‰<œ¨Ó -€DØ �‰�c˜4Ó €$Ü ˜4Ó €$Ù ˆd�2‰h˜$ÒØ ��ˆ9€DØ €+r\có>—|D�cgc] }t|«‘Œc}Scc}w)z"Fix each of the paths of the list.)rn)ÚpathsÚis rZÚ _FixPathsrrªs€á$Ó %™u˜!Œ(�1�+˜uÑ %Ð%ùÒ %s…có—|sg}g}g}tj«}|D]ä}t|«dk(rEtdj ||z««} | |vr|j | «ŒD|j | «ŒV|rG|j «s7|j|d«sg||d<||dj |dd«ŒŸt|ddg||dgz|||¬«} tj|d| ¬«} |j | «Œæ|r*|r(tjd|¬«} |j | «|r|j «r|S|D]A} t|| || gz|||¬«} tj| | ¬«} |j | «ŒC|S) a©Converts a list split source file paths into a vcproj folder hierarchy. Arguments: sources: A list of source file paths split. prefix: A list of source file path layers meant to apply to each of sources. excluded: A set of excluded files. msvs_version: A MSVSVersion object. Returns: A hierarchy of filenames and MSVSProject.Filter objects that matches the layout of the source tree. For example: _ConvertSourcesToFilterHierarchy([['a', 'bob1.c'], ['b', 'bob2.c']], prefix=['joe']) --> [MSVSProject.Filter('a', contents=['joe\a\bob1.c']), MSVSProject.Filter('b', contents=['joe\b\bob2.c'])] rBrgrN©ÚexcludedÚ list_excludedÚ msvs_version)ÚcontentsÚ_excluded_files)Úprefixrurvrw) Ú collectionsÚ OrderedDictÚlenrdrkÚappendÚ UsesVcxprojrIÚ _ConvertSourcesToFilterHierarchyÚ MSVSProjectÚFilter) ÚsourcesrzrurvrwÚresultÚexcluded_resultÚfoldersÚsÚfilenamerxÚexcluded_folderÚfs rZr€r€¯sš€ñ( ˜"�Ø €&Ø€/Ü × #Ñ #Ó %€'ã €aÜ ˆ1ƒv�‚{Ü" 4§9¡9¨V°a©ZÓ#8Ó9€hØ �XÑ Ø×јxÕ(à� ‰ �hÕÙ ˜l×6Ñ6Ô8ð�[‰[˜˜1™Ô ؈��!‘‰ Ø ˆa�‰d�m×ј1˜Q˜R˜5Õ!ä1°1°Q°R°5°'¸6ÀQÀqÁTÀF¹?Ø;CØ@MØ?KôM€hô×#Ñ# A a¡D°8Ô<€hØ ‡m�m�HÕð' ñ*™Ü!×(Ñ(Ð):Ø2AôC€Oà ‡M�M�/Ô"á�l×.Ñ.Ô0Ø €Mó €aÜ/°¸± À6ÈQÈCÁ<Ø9AØ>KØ=IôK€Hô×!Ñ! !¨hÔ7€HØ ‡M�M�(Õð ð €-r\có(—|syt|||||«y©N)Ú_ToolSetOrAppend)ÚtoolsÚ tool_nameÚsettingÚvalueÚ only_if_unsets rZÚ _ToolAppendr“ðs€Ù �Ü�5˜) W¨e°]ÕCr\c óÚ—d|vsd|vrDt|«tk(r|jdd«}n|D�cgc]}|jdd«‘Œ}}|j|«s t «||<||}d|k(ry|j|«r[|ryt||«t k(r t|«t k(r||xx|z cc<yt d|›d|›d|›d t||«›�«‚|||<ycc}w) NÚ DirectoriesÚ DependenciesrfrgÚCompileAsWinRTz Appending "z" to a non-list setting "z " for tool "z"" is not allowed, previous value: )ÚtypeÚstrrlrIÚdictÚlistÚ TypeError)rŽr�r�r‘r’rqÚtools rZr�r�õsê€à�gÑ °7Ñ!:Ü ˆEƒ{”cÒØ�m‰m˜C Ó&�eá-2Ó3©U¨ˆq�y‰y˜˜dÕ#¨U€eÐ3Ø �‰�9Ô Ü“v€Eˆ)ÑØ ˆyÑ €$Ø˜Ò Ø Ø ‡X�XˆgÔÙ�fÜ ˆD�‰MÓœdÒ"¤t¨E£{´dÒ':Ø ˆ7ƒm�uÑ„må ò’Wši¬¨T°'©]Ô);ð =ó >ð>ð €Dˆ‚Mùò!4s²C(có&—|jdd«S)NÚmsvs_target_versionÚWindows7©rI©Ú config_datas rZÚ_ConfigTargetVersionr¤s€Ø �‰Ð.° Ó ;Ð;r\có&—|jdd«S)NÚmsvs_configuration_platformÚWin32r¡r¢s rZÚ_ConfigPlatformr¨s€Ø �‰Ð6¸Ó @Ð@r\cóR—|jd|z«r|dt|« dz S|S)NÚ_rrB)Úendswithr})Ú config_nameÚ platform_names rZÚ_ConfigBaseNamer®s5€Ø×ј#  Ñ-Ô.Ø �qœ#˜mÓ,Ð,¨qÑ0Ð 1Ð1à Ðr\có:—t|«}t||«›d|›�S)NÚ|)r¨r®)r¬r£r­s rZÚ_ConfigFullNamer±s€Ü! +Ó.€-Ü# K°Õ?ÁÐ OÐOr\c óÜ—|jd«}|r|gn |j}|D]À}dD]¹}tj||zd«}|sŒtj||zd«xsd}d|z}t t j j|«rt j|«ngD�cgc]}|j|«r|‘Œc}d¬«} | r | d ccStd |z«Œ»ŒÂycc}w) NÚmsvs_windows_sdk_version)z1HKLM\Software\Microsoft\Microsoft SDKs\Windows\%sz=HKLM\Software\Wow6432Node\Microsoft\Microsoft SDKs\Windows\%sÚInstallationFolderÚProductVersionrz %s\includeT)ÚreverserzCWarning: No include files found for detected Windows SDK version %s) rIÚcompatible_sdksÚ MSVSVersionÚ_RegistryGetValueÚsortedrGr_ÚisdirÚlistdirÚ startswithÚprint) r£ÚversionÚ config_verÚversÚverÚkeyÚsdk_dirÚexpected_sdk_dirÚxÚnamess rZÚ#_ConfigWindowsTargetPlatformVersionrÈ"s €Ø�‰Ð9Ó:€*Ù#ˆ*‰¨×)@Ñ)@€$Û €cóHˆô×-Ñ-¨c°C©iÐ9MÓN€gÙ ØÜ×-Ñ-¨c°C©iÐ9IÓJÒPÈb€gà$ wÑ.ÐÜÜ%'§W¡W§]¡]Ð3CÔ%Dô#%§*¡*Ð-=Ô">à')ð#*ó0ñ#*˜A🙠gÔ.ò ð#*ñ0ð:>ô ?€eñ Ø�Q‰xŒä ð0Ø3:ñ<õ =ñ#Hñùò0sÂ(C) cóØ—|D�cgc] }d|vsŒ|‘Œ c}rd}nd}|�rXt|jddg«d«}|} | D� cgc]} | jdd«‘Œ} } | D� cgc]} | jd d «‘Œ} } | D� cgc]} | jdd «‘Œ} } |r| D� cgc]} | jd d «‘Œ} } | D� cgc]} d| jdd«z‘Œ} } dj| «} d}|r|dz }|dz }| j d«dk\r|dz }| j d«dk\r|dz }| j d«dk\r|dz }|r| j d«dk\r|dz }|dz }||| dœz}||zS|ddk(rdg} n|djd d!«g} | j dd"«|d#dD� cgc]} | dd#d$vr| n t| «‘Œ} } | D� cgc]} | jdd%«‘Œ} } | D� cgc]} t j| «‘Œ} } |r| D� cgc]} d&| z‘Œ } } |dj| | z«zScc}wcc} wcc} wcc} wcc} wcc} wcc} wcc} wcc} wcc} w)'Nrz_set INPUTDIR=$(InputDir) if NOT DEFINED INPUTDIR set INPUTDIR=.\ set INPUTDIR=%INPUTDIR:~0,-1% rr&Ú.rrz`cygpath -m "${INTDIR}"`rz`cygpath -m "${OUTDIR}"`z`cygpath -m "${INPUTDIR}"`r#z`cygpath -m "${INPUTPATH}"`z\"%s\"Ú"z\\\"Ú z4call "$(ProjectDir)%(cygwin_dir)s\setup_env.bat" && zset CYGWIN=nontsec&& ÚNUMBER_OF_PROCESSORSz@set /a NUMBER_OF_PROCESSORS_PLUS_1=%%NUMBER_OF_PROCESSORS%%+1&& ÚINTDIRzset INTDIR=$(IntDir)&& ÚOUTDIRzset OUTDIR=$(OutDir)&& Ú INPUTPATHzset INPUTPATH=$(InputPath) && zbash -c "%(cmd)s")Ú cygwin_dirÚcmdÚcatr˜rfrgrUrBz/-z %INPUTDIR%ú"%s")rnrIrlrkÚfindÚinsertÚ MSVSSettingsÚFixVCMacroSlashes) ÚspecrÒÚ cygwin_shellÚhas_input_pathÚ quote_cmdÚ do_setup_envrÆÚinput_dir_preamblerÑÚ direct_cmdrqÚcommandÚ argumentss rZÚ_BuildCommandLineForRuleRawrâ;s'€ñÓ+‘ˆA˜ ¨Ò*‚a�Ò+ð(ñð Ðâä˜$Ÿ(™(Ð#5¸°uÓ=¸aÑ@ÓA€Jà€JáAKóMÙAK¸Að—)‘)˜KØ6õ8ØAKððMñBLóMÙAK¸Að—)‘)˜KØ6õ8ØAKððMñDNóOÙCM¸að—)‘)˜MØ8õ:ØCMððOáñ(ó)á'˜ð—I‘I˜nØ;õ=à'ðð)ñCMÓMÁ*¸Q�*˜qŸy™y¨¨iÓ8Ó8À*€JÐMà—‘˜*Ó%€Jà €CÙØ Ð DÑD€cØÐ "Ñ"€C؇�Ð-Ó.°!Ò3Ø Ð OÑO€c؇��xÓ  AÒ%Ø Ð &Ñ&€c؇��xÓ  AÒ%Ø Ð &Ñ&€cÙ˜*Ÿ/™/¨+Ó6¸!Ò;Ø Ð -Ñ-€cØÐ Ñ€CØ ˜zØ"ñ$ñ $€Cà  Ñ #Ð#ð ˆ1�v�‚Ø��gà�Q‘—‘  TÓ*Ð+€gð  ‡N�N�1�fÔð ADÀAÀBÁÓHÁ¸1�q˜˜!�u ‘}‘¬8°A«;Ñ6À€IÐHÙAJÓKÁ¸A�—‘˜=¨,Õ7À€IÐKÙ¸3ÀØ%.¸\ô KðKr\có^—|sJ‚||||dœ}|d}||vrg||<||j|«y)aßMerge action into an existing list of actions. Care must be taken so that actions which have overlapping inputs either don't get assigned to the same input, or get collapsed into one. Arguments: actions_dict: dictionary keyed on input name, which maps to a list of dicts describing the actions attached to that input file. inputs: list of inputs outputs: list of outputs description: description of the action command: command line to execute ©ÚinputsÚoutputsÚ descriptionràrN©r~)Ú actions_dictrírîrïràråÚ chosen_inputs rZÚ_AddActionStepró•sR€ñ €-ˆðØØ Øñ  €&𘑀,ð˜Ñ%Ø!#€L�ÑØˆ|Ñ×#Ñ# FÕ+r\có(—t|«}t|«}tjd|dj|«dj|«|dœ«}|dj «D]-\}} |j t |«t|| «|g¬«Œ/y)a8Add a custom build tool to execute something. Arguments: p: the target project spec: the target project dict primary_input: input file to attach the build tool to inputs: list of inputs outputs: list of outputs description: description of the action cmd: command line to execute ÚVCCustomBuildToolÚ;)Ú DescriptionÚAdditionalDependenciesÚOutputsÚ CommandLineÚconfigurations©rŽN)rrr�ÚToolrkÚitemsÚ AddFileConfigrnr±) ÚprÙÚ primary_inputrírîrïrÒr�r¬Úc_datas rZÚ_AddCustomBuildToolForMSVSr¸s•€ô �VÓ €&Ü �gÓ €'Ü × Ñ ØØ!Ø!$§¡¨&Ó!1Ø—(‘(˜7Ó#Øñó €$ð"Ð"2Ñ3×9Ñ9Ö;Ñ€k�6؇O�O”H˜]Ó+Ü# K°Ó8ÀÀðõHñ£>ð3€.ä×"Ñ"¤2§7¡7§<¡<° ¸NÓ#KØ#'¨ Ñ#6ó8€*ó €aØ�+‘€IØ�‰~€HÜ �q—u‘u˜X rÓ*Ó +€FܘŸ™˜i¨Ó,Ó-€Gà�qÑ §¡ ~°rÔ!:ØÜ " 4¨¸4Ø04ô 6€Cà×!Ñ! yØ./¯e©e°I¸yÓ.IØ.6¨ZØ:@Ø*1Ø&)ð "õ+ð ð" ×ÑÔð‡-�-�Õr\cóN—|jdd«}|jdd«}|S)Nrz$(OutDirCygwin)rz$(IntDirCygwin)©rlrms rZÚ _Cygwinifyr4Ls)€Ø �‰�kÐ#4Ó 5€$Ø �‰�kÐ#4Ó 5€$Ø €+r\c ó~—|d›d|j›d�}tjjtj j ||««}|jd«|jd«t«}t«} t«} g} |D]¼} t| |«} | D]©}t| |«\}}|jt|««| jt|««| jt|«d«|D�cgc]$}tj j|«d‘Œ&}}|D]}| j|«ŒŒ«Œ¾| D�cgc] }t!|«‘Œ}}|jddj |«z«| D]}|sŒ|jd |z«Œ|jd «|D]Ü} t| |«} | D]É}t| |«\}}|D�cgc] }t!|«‘Œ}}|D�cgc] }t!|«‘Œ}}| d D�cgc]}t#||«‘Œ}}|D�cgc]}d |z‘Œ }}dj |«}|jdj |«›d dj |«›d �«|jd|z«ŒËŒÞ|j%«|j|«dddddd|g}t'||dddd«}t|«}|j)d|«t+|t-|«t-| «d|dz|¬«ycc}wcc}wcc}wcc}wcc}wcc}w)aGGenerate an external makefile to do a set of rules. Arguments: rules: the list of rules to include output_dir: path containing project and gyp files spec: project specification data sources: set of sources known options: global generator options actions_to_add: The list of actions we will add to. rÚ_rulesz.mkz.OutDirCygwin:=$(shell cygpath -u "$(OutDir)") z.IntDirCygwin:=$(shell cygpath -u "$(IntDir)") rzall: %s rÌz mkdir -p `cygpath -u "%s"` Ú rårÔú: z %s ÚmakezOutDir=$(OutDir)zIntDir=$(IntDir)z-jz${NUMBER_OF_PROCESSORS_PLUS_1}z-fTFzRunning external rules for %srìN)r$ÚgypÚcommonÚ WriteOnDiffrGr_rkÚwriterrrrr~r›r rr4rÚcloserârÖrórr)r*r+rÙrƒr,Úactions_to_addrˆÚmk_fileÚ all_inputsÚ all_outputsÚall_output_dirsÚ first_outputsrèÚ trigger_filesÚtfrírîrqÚ output_dirsÚodÚfirst_outputs_cygÚcrÒs rZÚ_GenerateExternalRulesrKRs€ð!% ]Ó 3°W·^³^Ð D€(Ü �J‰J× "Ñ "¤2§7¡7§<¡<° ¸HÓ#EÓ F€'à ‡-�-ÐAÔBØ ‡-�-ÐAÔBä‹|€*Ü“ €+Ü“L€/Ø€-Û€dÜ)¨$°Ó8€MÛˆÜ-¨d°BÓ7�o€fˆgØ×Ñœ  6Ó*Ô+Ø×Ñœ GÓ,Ô-ð×Ñœ4 ›=¨Ñ+Ô,á29Ó:±'¨Q”R—W‘W—]‘] 1Ó% aÓ(°'€kÐ:Ûˆ"Ø×јBÕññðñ/<Ó<©m¨”z !•}¨mÐÐ<à ‡-�-� ˜cŸh™hÐ'8Ó9Ñ9Ô:Û €bÚ Ø ‡m�mÐ4°rÑ9Õ:ð ð ‡-�-�Ôã€dÜ)¨$°Ó8€MÛˆä-¨d°BÓ7�o€fˆgÙ'-Ó.¡v !” ˜1•  v€fÐ.Ù(/Ó0© 1”˜A•¨€gÐ0à-1°(ª^Ó <©^¨Œ_˜Q Õ #¨^€cÐ <Ù!$Ó %¡˜AˆV�a‹Z €cÐ %Ø �H‰H�S‹M€cà ‡m�m #§(¡(¨7Õ"3°S·X±X¸fÕ5EÐFÔGØ ‡m�m�J Ñ$Õ%ñðð ‡-�-„/ð ‡+�+ˆhÔà Ø Ø Ø Ð/Ø ˆxð  €#ô $ D¨#¨t°U¸DÀ$ÓG€#ô�JÓ€*Ø ×Ñ�A�xÔ Ü�Ü! *Ó-Ü" ;Ó/Ø<ؘ-Ñ(ñ)àö ùòS;ùò=ùò/ùÚ0ùâ <ùÚ %s$Ä)L!ÅL&Ç)L+ÈL0ÈL5È5 L:có*—|jdd«}|S)a„Escapes % characters. Escapes any % characters so that Windows-style environment variable expansions will leave them alone. See http://connect.microsoft.com/VisualStudio/feedback/details/106127/cl-d-name-text-containing-percentage-characters-doesnt-compile to understand why we have to do this. Args: s: The string to be escaped. Returns: The escaped string. Ú%z%%r3©r‡s rZÚ#_EscapeEnvironmentVariableExpansionrO£s€ð‡i�i��TÓ€!Ø €(r\z(\\*)"cóH—d„}tj||«}d|zdz}|S)awEscapes a Windows command-line argument. So that the Win32 CommandLineToArgv function will turn the escaped result back into the original string. See http://msdn.microsoft.com/en-us/library/17w5ykft.aspx ("Parsing C++ Command-Line Arguments") to understand why we have to do this. Args: s: the string to be escaped. Returns: the escaped string. có0—d|jd«zdzS)NérBú\"©rR©Úmatchs rZÚ_Replacez3_EscapeCommandLineArgumentForMSVS.._ReplaceÇs€ð ˆu�{‰{˜1‹~Ñ  Ñ %Ð%r\rË)Úquote_replacer_regexÚsub©r‡rWs rZÚ!_EscapeCommandLineArgumentForMSVSr[¸s-€ò&ô×јx¨Ó+€!à ˆA�g��m€!Ø €(r\z (\\*)([,;]+)có—d„}|jd«}tdt|«d«D]}tj |||«||<Œ dj |«}t|«dzdk(rt d|ztj¬«|S)a©Escapes command line arguments for MSVS. The VCProj format stores string lists in a single string using commas and semi-colons as separators, which must be quoted if they are to be interpreted literally. However, command-line arguments may already have quotes, and the VCProj parser is ignorant of the backslash escaping convention used by CommandLineToArgv, so the command-line quotes and the VCProj quotes may not be the same quotes. So to store a general command-line argument in a VCProj list, we need to parse the existing quoting according to VCProj's convention and quote any delimiters that are not already quoted by that convention. The quotes that we add will also be seen by CommandLineToArgv, so if backslashes precede them then we also have to escape those backslashes according to the CommandLineToArgv convention. Args: s: the string to be escaped. Returns: the escaped string. cóZ—d|jd«zdz|jd«zdzS)NrRrBrËrTrUs rZrWz5_EscapeVCProjCommandLineArgListItem.._Replaceís.€ð ˆu�{‰{˜1‹~Ñ  Ñ # e§k¡k°!£nÑ 4°sÑ :Ð:r\rËrrRz;Warning: MSVS may misinterpret the odd number of quotes in )Úfile) r Úranger}Údelimiters_replacer_regexrYrkr¾rCÚstderr)r‡rWÚsegmentsrqs rZÚ#_EscapeVCProjCommandLineArgListItemrc×s‹€ò,;ð �W‰W�S‹\€(ä �”C˜“M 1Ö %€aÜ+×/Ñ/°¸(À1¹+ÓF€HˆQ‚Kð &ð ‡h�hˆxÓ€!܈ƒ]�Qј!Òô ð 'Ø)*ñ +Ü25·*±*õ>à €(r\có„—t|«}t|«}t|«}|jddt d«z«}|S©zBEscapes a CPP define so that it will reach the compiler unaltered.Ú#z\%03o)rOr[rcrlÚordrNs rZÚ_EscapeCppDefineForMSVSrhs@€ä)¨!Ó,€!Ü'¨Ó*€!Ü)¨!Ó,€!ð‡i�i��X¤ C£Ñ(Ó)€!Ø €(r\z(\\+)"có8—d„}tj||«}|S)z;Escapes a Windows command-line argument for use by MSBuild.cóN—t|jd««dz dzdzdzS)NrBrRérgrS)r}rRrUs rZrWz6_EscapeCommandLineArgumentForMSBuild.._Replaces)€Ü �— ‘ ˜A“Ó  !Ñ # aÑ '¨4Ñ /°%Ñ 7Ð7r\)Úquote_replacer_regex2rYrZs rZÚ$_EscapeCommandLineArgumentForMSBuildrms €ò8ô×Ñ ¨!Ó,€!Ø €(r\c ó‚—ddddddddœ}d j|D�cgc]}|j||«‘Œc}«}|Scc}w) Nz%25z%24z%40z%27z%3Bz%3Fz%2A)rMr^Ú@Ú'röÚ?Ú*r)rkrI)r‡Úescape_dictionaryrJr„s rZÚ_EscapeMSBuildSpecialCharactersrtsV€à Ø Ø Ø Ø Ø Ø ñÐð �7‰7¹Ó;¹°AÐ%×)Ñ)¨!¨QÕ/¸Ñ;Ó <€&Ø €-ùò¨:°tØ" G¨^ô=䘠Ð)9¸5ÕAùòOùÚLs— B¸BÁ B Á#B có°—|D]Ñ}t||«}|D]¾}|jt|««t|j dd««sŒ9t ||«\}}t t|««}t t|««}|jt|««|j|«|s|j|«|j|«ŒÀŒÓy)NÚprocess_outputs_as_sourcesF) rÚdiscardrnrærIrrrrÚremover) r*rƒrzÚ is_msbuildrèrErrírîs rZryryUs³€ã€dä)¨$°Ó8€MÛ%ˆ ð×Ñœx¨ Ó5Ô6ä ˆT�X‰XÐ2°EÓ :Õ ;Ü/°°lÓC‰ˆ�ÜœI fÓ-Ó.ˆÜœY wÓ/Ó0ˆØ� ‰ ”h˜|Ó,Ô-Ø�‰�vÔÙØ × !Ñ ! &Ô )Ø�‰�wÕñ&ñr\cóz—tt|j«««}|D�cgc] }||vsŒ|‘Œ c}Scc}w)a*Take inputs with actions attached out of the list of exclusions. Arguments: excluded_sources: list of source files not to be built. actions_to_add: dict of actions keyed on source file they're attached to. Returns: excluded_sources with files that have actions attached removed. )rrrÚkeys)rzr?Ú must_keepr‡s rZÚ_FilterActionsFromExcludedr†ks=€ôœ >×#6Ñ#6Ó#8Ó9Ó:€)Ù%Ó <Ñ%�¨°)Ò);Š!Ð%Ñ <Ð<ùÒ Ð>r\cóè—t|«}|jd«}|r:tj|«€ t d|›dtj ›d�«‚d|z}|xst j|«}|S)a Get the guid for the project. Arguments: proj_path: Path of the vcproj or vcxproj file to generate. spec: The target dictionary containing the properties of the target. Returns: the guid. Raises: ValueError: if the specified GUID is invalid. Ú msvs_guidzInvalid MSVS guid: "z". Must match regex: "z".z{%s})rŠrIÚVALID_MSVS_GUID_CHARSrVÚ ValueErrorÚpatternÚMSVSNewÚMakeGuid)Ú proj_pathrÙÚdefault_configÚguids rZÚ_GetGuidOfProjectr•|ss€ô,¨DÓ1€.à × Ñ ˜KÓ (€$Ù Ü×"Ñ" 4Ó(Ð0Ý ÚÔ3×;Ó;ð=ó >ð>à �D‰=€DØ Ò ,”×!Ñ! )Ó,€$Ø €+r\có–—t|«}|jd«}|s |j«r|j«}|ddk(rd}|S)aGet the platform toolset for the project. Arguments: proj_path: Path of the vcproj or vcxproj file to generate. spec: The target dictionary containing the properties of the target. version: The MSVSVersion object. Returns: the platform toolset string or None. Úmsbuild_toolsetr˜Úwindows_driverzWindowsKernelModeDriver10.0)rŠrIÚDefaultToolset)r’rÙr¿r“Útoolsets rZÚ_GetMsbuildToolsetOfProjectr›”sR€ô,¨DÓ1€.Ø × Ñ Ð0Ó 1€'Ù �W×+Ñ+Ô-Ø×$Ñ$Ó&€GØ ˆ&�\Ð%Ò%Ø+€GØ €.r\cóª—t|j«}|jd«rgS|j«rt ||||«St ||||«S)aGenerates a vcproj file. Arguments: project: the MSVSProject object. options: global generator options. version: the MSVSVersion object. generator_flags: dict of generator-specific flags. Returns: A list of source files that cannot be found on disk. Úmsvs_existing_vcproj)rŠrÙrIrÚ_GenerateMSBuildProjectÚ_GenerateMSVSProject)Úprojectr,r¿Úgenerator_flagsr“s rZÚ_GenerateProjectr¢¨sV€ô,¨G¯L©LÓ9€.ð×ÑÐ.Ô/Ø €Ià ×ÑÔÜ " 7¨G°W¸oÓ NÐNä  ¨°'¸?Ó KÐKr\có*—|j«rJ‚|jdd«dvry|jdg«}i}|D]k}tjj |«\}}|dv}|sŒ,tjj |«}|j |g«j|«Œmd} |j«D]/\}} t| «dkDsŒ| d|›d d j| «›d �z } Œ1| r"td |d z| zdz«td«‚y)zÎMakes sure if duplicate basenames are not specified in the source list. Arguments: spec: The target dictionary containing the properties of the target. version: The VisualStudioVersion object. r˜N)Ústatic_libraryÚshared_libraryrƒ)ú.cú.ccú.cppú.cxxz.mz.mmz.sz.SrrBz r8rÌr7zð>Ðá ØÜ�w‰w×Ñ Ó%€HØ ×ј 2Ó&×-Ñ-¨fÕ5ðð €%Ø"Ÿ™Ö*�o€h�Ü ˆ5ƒz�Aƒ~Ù šx¨¯©°%­Ð9Ñ9�eð+ñ Ü Ð IØ ˆ}Ñ ñ Ø %ñ &Ø(Dñ EôFä ÐKÓ LÐLð r\c óh—|j}tjj|j«t |«}t j|j||d|j|«}tjj|j«d}t|j«}tjj||«} t||j«} |dj«D]\} } t!||| | | «Œt#||«tjj|j«d} t%||| «\}}i}t'|||||||«|j)dd«}t+|||||||«\}}}t-||«}|j/|«t1||«t3|||«t5||| «t7||«t9|j||«t;||«}t=|||||«t?|||«|jA«|S)a-Generates a .vcproj file. It may create .rules and .user files too. Arguments: project: The project object we will generate the file for. options: Global options passed to the generator. version: The VisualStudioVersion object. generator_flags: dict of generator-specific flags. rrrûrBÚmsvs_list_excluded_filesT)!rÙr:r;ÚEnsureDirExistsr_Ú_GetUniquePlatformsr�r&r”rGr rdÚ build_fileÚ RelativePathÚ_GetMSVSConfigurationTyperþÚ_AddConfigurationToMSVSProjectr±Ú_PrepareListOfSourcesr}rIÚ)_AdjustSourcesAndConvertToFilterHierarchyÚ_VerifySourcesExistÚAddFilesÚ_AddToolFilesToMSVSÚ_HandlePreCompiledHeadersÚ _AddActionsÚ _AddCopiesÚ_WriteMSVSUserFiler†Ú_ExcludeFilesFromBeingBuiltr r()r r,r¿r¡rÙÚ platformsrÚ project_dirÚgyp_pathÚrelative_path_of_gyp_fileÚ config_typer¬r?Úgyp_filerƒrzr?rvÚ excluded_idlÚmissing_sourcess rZrŸrŸãs€ð �‰€$܇*�*×јWŸ\™\Ô*ä! $Ó'€)Ü×јŸ™ w°°]Ñ0CØ Ÿ™ yó2€!ô—‘— ‘ ˜gŸl™lÓ+¨AÑ.€+Ü ˜w×1Ñ1Ó 2€(Ü!Ÿj™j×5Ñ5°hÀ ÓLÐä)¨$°×0BÑ0BÓC€+Ø!Ð"2Ñ3×9Ñ9Ö;Ñ€k�6Ü" 1 d¨K¸ÀfÕMð<ô !  wÔ/ô�W‰W�]‰]˜7×-Ñ-Ó .¨qÑ 1€(Ü3°D¸/Ø4<ó>Ñ€'Ð ð€.ܘ˜;¨°ØÐ!1Ø&ô(ð"×%Ñ%Ð&@À$ÓG€-ä/°°g¸{Ø07Ð9IØ0=¸wóHñ*€'Ð ˜\ô (¨°Ó=€/؇*�*ˆWÔä�a˜ÔܘA˜w¨Ô-Ü ˆn˜dÐ$=Ô>Ü ˆ^˜TÔ"Ü�W—\‘\ 7¨DÔ1ô0ؘó(Ðä˜a Ð'7¸Ø+ô-ä˜q $¨Ô7ð×ÑÔà Ðr\có„—t«}|dD]"}|jt|d|««Œ$t|«}|S)zÑReturns the list of unique platforms for this spec, e.g ['win32', ...]. Arguments: spec: The target dictionary containing the properties of the target. Returns: The MSVSUserFile object created. rû)rrr¨r›)rÙrÄÚ configurations rZrµrµ)sF€ô‹l€)ØÐ,Ô-€mØ ‡M�M”/ $Ð'7Ñ"8¸Ñ"GÓHÕIð.ä�9‹o€)Ø Ðr\có~—t«\}}dj|||dg«}tj|||d«}|S)a�Generates a .user file for the user running this Gyp program. Arguments: proj_path: The path of the project file being created. The .user file shares the same path (with an appropriate suffix). version: The VisualStudioVersion object. spec: The target dictionary containing the properties of the target. Returns: The MSVSUserFile object created. rÊÚuserr)r[rkÚ MSVSUserFiler&)r’r¿rÙrSrTÚvcuser_filenameÚ user_files rZÚ_CreateMSVSUserFilerÓ9sJ€ô-Ó.Ñ€6ˆ8Ø—H‘H˜i¨°¸6ÐBÓC€/Ü×!Ñ! /°7Ø"& }Ñ"5ó7€)à Ðr\c ó— dddddddœ|d}|S#t$rB|jd«rtd|d›d |d ›d |›d �«‚td |d ›d |›d �«‚wxYw)a(Returns the configuration type for this project. It's a number defined by Microsoft. May raise an exception. Args: spec: The target dictionary containing the properties of the target. build_file: The path of the gyp file. Returns: An integer, the configuration type. Ú1Ú2Ú4Ú5Ú10)Ú executabler¥Úloadable_moduler¤r˜Únoner˜z Target type z' is not a valid target type for target rz in rÊzMissing type field for target )ÚKeyErrorrIr)rÙr¶rÈs rZr¸r¸Ks–€ð8àØØØØØñ  ð ˆv‰,ñ€Kð Ðøô ò8Ø ‡x�x�ÔÝ à˜6“l D¨Ó$7ºðEó FðFõ ؘ=Ó)ª:ð7ó 8ð8ð 8ús ‚“A Ac ó„—t|«\}}}t|«}t|«} t|d¬«\} } } t |«} | D�cgc] }t |«‘Œ} }t |«}|jd«}|jd«}t|«}|jd«}t«}|jdi«}tj|«t|ddd g«|D]"}|d|}|D]}t|||||«ŒŒ$t|d d |«t|d d |«t|d d |«t|dd|«t|dd| «| rt|| d| d¬«t|d d| «t|d d| «t|d ddd¬«t|d d|«t|dd|«t|dd|«|rLtjj|«d}t|d dd«t|d d|«t|d d|«|ddk(rt|dd d!«|rt|dd"|«t!||||||«y#cc}w)$a+Adds a configuration to the MSVS project. Many settings in a vcproj file are specific to a configuration. This function the main part of the vcproj file that's configuration specific. Arguments: p: The target project being generated. spec: The target dictionary containing the properties of the target. config_type: The configuration type, a number as defined by Microsoft. config_name: The name of the configuration. config: The dictionary that defines the special processing to be done for this configuration. F©ÚmsbuildÚ msvs_prebuildÚmsvs_postbuildr6Ú msvs_settingsÚ VCLinkerToolrøú $(NOINHERIT)ÚVCCLCompilerToolÚAdditionalIncludeDirectoriesÚ VCMIDLToolÚVCResourceCompilerToolÚAdditionalLibraryDirectoriesÚ OutputFileT©r’ÚPreprocessorDefinitionsÚProgramDataBaseFileNamez $(IntDir)$(ProjectName)\vc80.pdbÚDisableSpecificWarningsÚVCPreBuildEventToolrúÚVCPostBuildEventToolrBÚUsePrecompiledHeaderrÖÚPrecompiledHeaderThroughÚForcedIncludeFilesr˜rÛÚIgnoreImportLibraryÚtrueÚModuleDefinitionFileN)Ú_GetIncludeDirsÚ _GetLibrariesÚ_GetLibraryDirsÚ_GetOutputFilePathAndToolÚ _GetDefinesrhÚ_GetDisabledWarningsrIÚ_GetModuleDefinitionršr×ÚValidateMSVSSettingsr“rGr_r Ú_AddConfigurationToMSVS)rrÙrÈr¬r?Ú include_dirsÚmidl_include_dirsÚresource_include_dirsÚ librariesÚ library_dirsÚout_fileÚvc_toolrªÚdefinesÚdÚdisabled_warningsÚprebuildÚ postbuildÚdef_fileÚprecompiled_headerrŽrãr�Úsettingsr�s rZr¹r¹js“€ô �fÓñ9€,Ð!Ð#8ä˜DÓ!€)Ü  Ó(€,Ü2°4ÀÔGÑ€(ˆG�QÜ ˜Ó €'Ù18Ó 9±¨AÔ $ QÕ '°€'Ð 9Ü*¨6Ó2ÐØ �Z‰Z˜Ó (€(Ø�j‰jÐ)Ó*€)Ü ! $Ó '€(Ø—z‘zÐ";Ó<Ðô ‹&€%à—*‘*˜_¨bÓ1€-Ü×#Ñ# MÔ2ôˆe�^Ð%=ÀÐ?OÔPã€dØ�oÑ& tÑ,€HÛˆÜ�%˜˜w¨°Ñ(9Õ:ñðô ˆeÐ'Ø,¨lô<ä ˆe�\Ø,Ð.?ôAä ˆeÐ-Ø,Ð.CôEôˆe�^Ð%=¸yÔIÜ ˆe�^Ð%CØôá Ü��w  ¨hÀdÕKä ˆeÐ'Ð)BÀGÔLÜ ˆeÐ-Ð/HØôôˆeÐ'Ð)BØ1ÀõGôˆeÐ'Ø'Ð):ô<ôˆeÐ*¨M¸8ÔDä ˆeÐ+¨]¸IÔFáÜŸ™Ÿ™Ð'9Ó:¸1Ñ=ÐÜ�Ð)Ð+AÀ3ÔGÜ�Ð)Ø*Ð,>ô@ä�Ð)Ø$Ð&8ô:ð ˆ&�\Ð&Ò&Ü��~Ð'<¸fÔEá Ü��~Ð'=¸xÔHä˜!˜T 5¨&°+¸{ÕKùò :sÁH=có—|jdg«|jdg«z}|jdg«|jdg«z}|jd|«}t|«}t|«}t|«}|||fS)zîReturns the list of directories to be used for #include directives. Arguments: config: The dictionary that defines the special processing to be done for this configuration. Returns: The list of directory paths. rÚmsvs_system_include_dirsrr©rIrr)r?rrrs rZrørøÁsš€ð ‡j�j� Ó$Ø ‡j�jÐ+¨RÓ0ñ1ðð ‡j�jÐ$ bÓ)Ø ‡j�jÐ+¨RÓ0ñ1ðð!Ÿ*™*Ð%<¸lÓKÐܘ<Ó(€,ÜÐ 1Ó2ÐÜ#Ð$9Ó:ÐØ Ð(Ð*?Ð ?Ð?r\có@—|jdg«}t|«}|S)zïReturns the list of directories to be used for library search paths. Arguments: config: The dictionary that defines the special processing to be done for this configuration. Returns: The list of directory paths. rr)r?rs rZrúrúÙs$€ð—‘˜N¨BÓ/€,ܘ<Ó(€,Ø Ðr\cóL—|jdg«}t«}g}t|«D]g}tjdd|«}t j j|«ds|dz }||vsŒF|j|«|j|«Œi|j«|S)z»Returns the list of libraries for this configuration. Arguments: spec: The target dictionary containing the properties of the target. Returns: The list of directory paths. rz^\-lrrBr) rIrÚreversedrNrYrGr_r rr~r¶)rÙrÚfoundÚunique_libraries_listÚentryÚlibrarys rZrùrùès›€ð�h‰h�{ BÓ'€)ô ‹,€%ØÐܘ Ö"€eÜ�f‰f�W˜b %Ó(€GÜ �7‰7× Ñ ˜GÓ $ QÒ 'Ø �Ñ€gØ�eÒØ ‡i�i�ÔØ×"Ñ" 7Õ+ð #ð×ÑÔ!Ø Ðr\cóž—d}d}d}ddddddœ}|j|d«}|r¥t|jdd ««rŠ|\}}}}|jd d «rd }|jd |«}|jd«} | rd| z}n|rd}|jdd«} |jdd«} tj|| | z|z«}|||fS)aNReturns the path and tool to use for this target. Figures out the path of the file this spec will create and the name of the VC tool that will create it. Arguments: spec: The target dictionary containing the properties of the target. Returns: A triple of (file path, name of the vc tool, name of the msbuild tool) r)räÚLinkrr )rärrr)rärrr )ÚVCLibrarianToolÚLibz $(OutDir)lib\r©rÚr¥rÛr˜r¤r˜Úmsvs_auto_output_filerBÚstandalone_static_libraryrrÚ product_dirÚproduct_extensionrÊz $(TargetExt)Úproduct_prefixÚ product_nameú$(ProjectName))rIræÚntpathrk) rÙràrrÚ msbuild_toolÚoutput_file_mapÚoutput_file_propsÚout_dirr$r"rzr$s rZrûrûs÷€ð€(Ø €'Ø€,àAØEØFØEØLñ €/ð&×)Ñ)¨$¨v©,Ó7ÐÙœ3˜tŸx™xÐ(?ÀÓCÔDØ->Ñ*€Gˆ\˜7 FØ ‡x�xÐ+¨QÔ/Ø€gØ�h‰h�} gÓ.€GØŸ™Ð!4Ó5ÐÙØÐ&Ñ&�f٠؀fØ �X‰XÐ&¨Ó +€FØ—8‘8˜NÐ,<Ó=€LÜ�{‰{˜7 F¨\Ñ$9¸FÑ$BÓC€HØ �7˜LÐ (Ð(r\có4—|jd«}|rd|zSy)aqReturns the extension for this target, including the dot If product_extension is specified, set target_extension to this to avoid MSB8012, returns None otherwise. Ignores any target_extension settings in the input files. Arguments: spec: The target dictionary containing the properties of the target. Returns: A string with the extension, or None r"rÊNr¡)rÙÚtarget_extensions rZÚ_GetOutputTargetExtr-)s&€ð—X‘XÐ1Ó2ÐÙØ Ð!Ñ !Ð!Ø r\c óð—g}|jdg«D]Y}t|«tk(r)dj|D�cgc] }t |«‘Œc}«}n t |«}|j |«Œ[|Scc}w)z÷Returns the list of preprocessor definitions for this configuation. Arguments: config: The dictionary that defines the special processing to be done for this configuration. Returns: The list of preprocessor definitions. rÚ=)rIr˜r›rkr™r~)r?rr ÚdpartÚfds rZrürü;sk€ð €'Ø �:‰:�i Ö $€aÜ ˆAƒw”$‚Ø �8‰8©QÓ/©Q E”S˜•Z¨QÑ/Ó 0�bä ˆq‹6€bØ ‡N�N�2Õð %ð €.ùò 0s¹A3 có^—|jdg«D�cgc] }t|«‘Œc}Scc}w)NÚmsvs_disabled_warnings)rIr™)r?rqs rZrýrýNs,€Ø Ÿ*™*Ð%=¸rÔBÓ CÑB�QŒ#ˆa�&ÐBÑ CÐCùÒ Cs•*có —d}|ddvrt|jdg«D�cgc]}|jd«sŒ|‘Œ}}t|«dk(rt|d«}|S|r#t d|d ›d d j |«›�«‚|Scc}w) Nrr˜)r¥rÛrÚr˜rƒz.defrBrz7Multiple module definition files in one target, target rz lists multiple .def files: rÌ)rIr«r}rnrŽrk)rÙr r‡Ú def_filess rZrþrþRsž€Ø €(Ø ˆ&�\ð(ñ(à ŸH™H Y°Ô3ÓJÑ3�q°q·z±zÀ&Õ7I’Ð3€IÐJÜ ˆ9ƒ~˜Òܘ) A™,Ó'€hð €/ñ Ý ð�=Ó! 3§8¡8¨IÔ#6ð 8ó 9ð9ð €/ùòKs žBµBcóX—g}|j«D]”\}}i}|j«D]U\}}t|«tk(r9|dk(r|dk(s|dk(rdj|«||<Œ€LÜ.6°|Ó.DÀtÑ.K€NÐ*Ñ+ð Ðô˜NÐ+BÑCÓDÀtÑK€LÜ×1Ñ1°,Ó?€LØ.:€NÐ*Ñ+Ø Ðr\có4—|jd„|D««y)Nc3ó2K—|]}t|«–—Œy­wrŒ)rd)Ú.0r‡s rZÚ z(_AddNormalizedSources..ªsèø€ÐA±=¨aÔ& q×)±=ùs‚)r)Ú sources_setÚ sources_arrays rZÚ_AddNormalizedSourcesrQ©s€Ø ×ÑÑA±=ÓAÕAr\cór—t«}t||jdg««t«}|jd«s|j|«|jdg«D]•}|d}|D�cgc] }t |«‘Œ}}t|«}|j |«|jd«s|j |«t |jdd««sŒzt||jdg««Œ—|jd g«D]}t||jd g««Œ ||fScc}w) a.Prepare list of sources and excluded sources. Besides the sources specified directly in the spec, adds the gyp file so that a change to it will cause a re-compile. Also adds appropriate sources for actions and copies. Assumes later stage will un-exclude files which have custom build steps attached. Arguments: spec: The target dictionary containing the properties of the target. gyp_file: The name of the gyp file. Returns: A pair of (list of sources, list of excluded sources). The sources will be relative to the gyp file. rƒÚ standaloneÚactionsrír+rFrîÚcopiesr°)rrQrIrrdrræ) rÙr¡rÉrƒrzrHrírqÚcpys rZrºrº­s€ô ‹L€'ܘ §¡¨)°RÓ!8Ô9Ü“\Ðà × Ñ ˜\Ô *Ø ‡K�K�Ôð �8‰8�I˜rÖ "€aØ ˆx‰[€FÙ,2Ó 3©F qÔ Õ"¨F€FÐ 3ä ˜Ó €FØ ‡N�N�6ÔØ �8‰8Ð+Ô ,Ø×јfÔ%Ü ˆ1�5‰5Ð-¨uÓ 5Õ6ܘG Q§U¡U¨9°bÓ%9Õ:ð #ð�X‰X�h Ö #€cܘ' 3§7¡7¨7°BÓ#7Õ8ð$à Ð#Ð $Ð$ùò4sÁ1D4c ó¾—|jt|jdg«««|j|«t|«}t|«}t ||«}t |«}|D� cgc] } | |vsŒ| ‘Œ } } |D� cgc]} | j d«‘Œ}} t|| ||¬«}|j«�rt|D� cgc]} t| tj«‘Œc} «�rEtt|D� cgc]} | j‘Œc} ««dk(�rt|D� cgc]} t| j «dk(‘Œc} «sJ‚|D� cgc]} | j d‘Œ}} t|D� cgc]} t| tj«‘Œc} «r—tt|D� cgc]} | j‘Œc} ««dk(rŒ®nft|«dk(rXt|dtj«r;|dj }t|«dk(rt|dtj«rŒ;|||fScc} wcc} wcc} wcc} wcc} wcc} wcc} wcc} w)a&Adjusts the list of sources and excluded sources. Also converts the sets to lists. Arguments: spec: The target dictionary containing the properties of the target. options: Global generator options. gyp_dir: The path to the gyp file being processed. sources: A set of sources to be included for this project. excluded_sources: A set of sources to be excluded for this project. version: A MSVSVersion object. Returns: A trio of (list of sources, list of excluded sources, path of excluded IDL file) Úsources_excludedrgrtrBr)rrrIrrÚ_IdlFilesHandledNonNativelyÚ_GetPrecompileRelatedFilesr r€rÚallrçr�r‚r}Úsetr!rx) rÙr,Úgyp_dirrƒrzrvr¿rÊÚprecompiled_relatedrqÚfully_excludedr‡s rZr»r»Ôs€ð$×Ñœ* T§X¡XÐ.@À"Ó%EÓFÔGà ‡.�.Ð!Ô"ô �gÓ €'äÐ/Ó0Ðä,¨T°7Ó;€,ä2°4Ó8Ðá/ÓPÑ/˜!°1Ðs ÁA+ÁA+có²—g}|dj«D]>\}}tD]0}|j|«}|sŒ|jt |««Œ2Œ@|S)Nrû)rþÚ precomp_keysrIr~rn)rÙr^rªr?ÚkrŠs rZrZrZsY€àÐØÐ(Ñ)×/Ñ/Ö1�i€aˆß ˆØ �*‰*�Q‹-€aÚ Ø×"Ñ"¤8¨A£;Õ/ñð2ð Ðr\c óÚ—t|||«}|j«D]K\}}|st|«t|d«k(rŒ#|D]$\}} |j|t || «ddi«Œ&ŒMy)NrûÚExcludedFromBuildrö)Ú_GetExcludedFilesFromBuildrþr}rÿr±) rrÙrzrÊrvÚ exclusionsÚ file_nameÚexcluded_configsr¬r?s rZrÃrÃ$sy€ä)¨$Ð0@À,ÓO€*Ø%/×%5Ñ%5Ö%7Ñ!€iÐ!Ù Ü Ð Ó !¤S¨Ð.>Ñ)?Ó%@Ò @ð ã!1Ñ ˆ+�vØ �‰˜ ¤?°;ÀÓ#GØ,¨fÐ5õ 7ñ"2ñ&8r\c óf—i}|D]h}g}|dj«D]I\}}tD�cgc]}t|j|d««‘Œ} }|| vsŒ7|j ||f«ŒK|||<Œj|D]7}g}|dj«D]\}}|j ||f«Œ|||<Œ9|Scc}w)Nrûr)rþrernrIr~) rÙrzrÊrjrŠrlr¬r?rqÚ precompeds rZriri3sـ؀*ã €aØÐØ#Ð$4Ñ5×;Ñ;Ö=ш �VÝ8DÓE¹ °1”8˜FŸJ™J q¨"Ó-Õ.¸ €iÐEà �)Ò Ø×Ñ ¨fÐ 5Õ6ð >ð %€Jˆq‚Mð ó €aØÐØ#Ð$4Ñ5×;Ñ;Ö=ш �VØ×ј{¨FÐ3Õ4ð >à$€Jˆq‚Mð ð ÐùòFs«"B.cóΗt«}|dj«D]-\}}|jdg«D]}|j|«ŒŒ/|D]}|j |«Œy)NrûÚmsvs_tool_files)rrþrIrr))rrÙÚ tool_filesrªr?rŠs rZr¾r¾Hs`€ä‹|€*ØÐ(Ñ)×/Ñ/Ö1�i€aˆØ �Z‰ZÐ)¨2Ö .ˆØ‡n�n�QÕñ/ð2ó €a؇M�M�!Õñ r\cóx‡‡‡ ‡ —gŠ ‰dj«D]‹\}}|jd«}|sŒt|«}tjdddi«}‰j |t ||«i|g¬«tjj|«\}}|dk(rgd¢Š Œ‰dgŠ Œ�ˆ ˆ ˆˆfd „Š ‰ r ‰ |«yy) Nrûr7ræròrÕrür¦©r§r¨r©c óv•—|D]³}t|tj«r‰|j«Œ0tj j |«\}}|‰vsŒW‰ dj«D]G\}}tjddddœ«}‰ jt|«t||«i|g¬«ŒIŒµy)NrûræÚ0rå)ròrôrü) rçr�r‚rxrGr_r rþrýrÿrnr±) Ú source_treerbrªrr¬r?r�ÚDisableForSourceTreeÚ#extensions_excluded_from_precompilerrÙs €€€€rZrwz7_HandlePreCompiledHeaders..DisableForSourceTreefsµø€ÛˆÜ �FœK×.Ñ.Ô /Ù˜VŸ_™_Õ-ä Ÿg™g×.Ñ.¨vÓ6ш�)Ø Ð;Ò ;Ø%)Ð*:Ñ%;×%AÑ%AÖ%CÑ!ˆk˜6Ü×#Ñ#Ð$6Ø=@Ø;Iñ%KóLˆDð �O‰OœH VÓ,Ü+¨K¸Ó@Ø t fð õ .ñ &Dñ r\) rþrIrnr�rýrÿr±rGr_r ) rrƒrÙr¬r?rbr�rªrrwrxs ` ` @@rZr¿r¿RsÉû€ð )+Ð%Ø!Ð"2Ñ3×9Ñ9Ö;Ñ€k�6Ø �Z‰ZÐ1Ó 2€FÚ Ü˜Ó€fä × Ñ Ð0Ø5°sÐ;ó=€dà‡o�o�fœo¨k¸6ÓBØ  ðô(äŸG™G×,Ñ,¨VÓ4Ñ€h� Ø �dÒ Ú.EÑ+à/3¨fÑ+ð<÷ .ñ)Ù˜Õ!ð)r\c ó.—|jdg«}t«}|D]t}|jd«xs|g}|d}||v}t||d|¬«} |j|«t |||jdg«|jd|d«| ¬ «Œvy) NrTrírFrrîr Ú action_namerì)rIr\rêrró) r?rÙrÇrTÚhave_setup_envrHríÚ attached_toÚneed_setup_envrÒs rZrÀrÀys¡€à �H‰H�Y Ó #€'ô “5€.Û €aà �U‰U�8‹_Ò ;Ð!:Ð ;€Fؘ‘)€KØ ¨Ð6€NÜ " 4¨¸5Ø0>ô @€Cà×Ñ�{Ô#ä�>Ø ØŸ5™5 ¨BÓ/Ø Ÿu™u Y°°-Ñ0@ÓAØö  ñ r\cóz—d|vr<|d}|jdg«}|jdg«}|jdd«}n%t|jdd««r dd g}g}d}nyt|||«}|d j«D]#\}} |j t || «|||«Œ%|j «y) NÚrun_asråÚ environmentÚworking_directoryrÊÚtestrz $(TargetPath)z--gtest_print_timerû)rIrærÓrþÚAddDebugSettingsr±r() Ú project_pathr¿rÙrrår€r�rÒr¬rs rZrÂr‘sË€à �ÑØ �(‰^€FØ �Z‰Z˜ "Ó %€FØ—*‘*˜]¨BÓ/€KØŸ ™ Ð#6¸Ó<ÑÜ ˆ4�8‰8�F˜AÓ ÔØÐ3Ð 4€FØ€KØÑà ä! ,°¸Ó>€)Ø!Ð"2Ñ3×9Ñ9Ö;Ñ€k�6Ø ×Ñœ¨{¸FÓCØ% {Ð4EõGð<ð ×ÑÕr\cóR—t|«}|D]\}}}}t|||||¬«Œy)Nrì)Ú _GetCopiesró)r?rÙrUrírîrÒrïs rZrÁrÁ¦s2€Ü �dÓ €&Û+1Ñ'€fˆg�s˜KÜ�>¨&¸'Ø*°Cö9ñ,2r\c ó —g}|jdg«D�]5}|jdg«D�]}tjj|dtjj |««}|j d«r|dd}t j|«d}t j|«d}t|«}d|›d |›d �} d | ›d t|«›d |›d| ›�} |j|gd|g| d|›d|›�f«ŒÔt|d«} d| ›dt|«›dt|«›d�} |j|g|g| d|›d| ›�f«�Œ�Œ8|S)NrUr°Ú destinationrfrhrrBrËrgrSzmkdir z 2>nul & cd "z" && xcopy /e /f /y "z" Ú dummy_copieszCopying z to zmkdir "z&" 2>nul & set ERRORLEVEL=0 & copy /Y "z" ") rIrGr_rkrªr«Ú posixpathr rnr~) rÙrUrVÚsrcÚdstÚsrc_bareÚbase_dirÚ outer_dirÚ fixed_dstÚfull_dstrÒÚfix_dsts rZr†r†­s2€Ø €&à �X‰X�h × #€cØ�w‰w�w ×#ˆÜ �G‰G�L‰L˜˜]Ñ+¬R¯W©W×-=Ñ-=¸cÓ-BÓ C€cð �‰�cÔ Ø�s˜�8ˆÜ—?‘? 8Ó,¨QÑ/ˆÜ—O‘O HÓ-¨aÑ0ˆ ܘS“M‰ Ú#,ªiÐ8‰â ”h˜xÕ(ª)±Xð?ˆà� ‰ ˜�u˜~¨sÐ3±SÚ-0±)Ð<ð>õ ?ô˜3˜}Ñ-Ó.‰â ”X˜c•]¤H¨S¥Mð3ˆà� ‰ ˜�u˜s˜e¡SÂÁWÐ*MÐNÖOò%$ð$ð( €-r\cóЗ|r|jtj«r|Stjj |«\}}t ||«}||vr t «||<||SrŒ)r«rGÚsepr_r Ú _GetPathDictrš)Úrootr_ÚparentÚfolderÚ parent_dicts rZr•r•Çs\€ñ �—‘œrŸv™vÔ&Ø €KÜ—7‘7—=‘= Ó&�.€&ˆ&ܘT 6Ó*€+Ø �;ÑÜ›&€K�ÑØ �VÑ Ðr\có‚—g}|j«D]©\}}t|«tk(r�ttj j ||«||«}|r||z }ŒKtjtj j ||«d|zdz|¬«}|j|«Œ™|j|«Œ«|S)NÚ(Ú))r!Úentries) rþr˜ršÚ_DictsToFoldersrGr_rkr�Ú MSVSFolderr~)Ú base_pathÚbucketÚflatÚchildrenr˜rxÚfolder_childrens rZržržÓs§€à €(Ø Ÿ,™,ž.Ñ€fˆhÜ ˆHƒ~œÒÜ'¬¯©¯ © °YÀÓ(GØ(0°$ó8€oá Ø�OÑ#‰ä!×,Ñ,¬R¯W©W¯\©\¸)ÀVÓ-LØ25¸±,ÀÑ2DØ5DôFˆð �‰˜Õ(à‡o�o�hÕð)ð €/r\có—t|«tk(r?t|«dk(r1tt |««|dzk(r|tt |««St|«tk7r|S|D]}t |||«||<Œ|S)NrBú.vcproj)r˜ršr}ÚnextÚiterÚ_CollapseSingles)r—ÚnodeÚchilds rZr©r©æsy€ô ˆ4ƒj”DÒÜ ˆ$ƒi�1‚nÜ Œ4�‹:Ó˜& 9Ñ,Ò,Ø ””T˜$“ZÓ Ñ !Ð!Ü ˆ$ƒZ”4ÒØ €KÛ€eÜ" 5¨$¨u©+Ó6€Dˆ‚Kðà €+r\có—i}|D]]}tjj|«dd\}}tjj |«}t ||«}||||dz<Œ_t|«dk(rtt|tt|«««tk(rM|tt|««}t|«dk(r(t|tt|«««tk(rŒMtd|«}td||«S)NrrRr¦rBr)r:r;ÚParseQualifiedTargetrGr_rr•r}r˜r§r¨ršr©rž) Ú sln_projectsÚproject_objectsr¢r–rrÉÚtargetr]Ú path_dicts rZÚ_GatherSolutionFoldersr²õsá€Ø €$ã €aÜ—z‘z×6Ñ6°qÓ9¸!¸AÐ>Ñ€HˆfÜ�g‰g�o‰o˜hÓ'€GܘT 7Ó+€IØ$3°AÑ$6€Iˆf�yÑ Ò!ð ô ˆD‹ �QŠœ4 ¤T¬$¨t«*Ó%5Ñ 6Ó7¼4Ò?Ø ””T˜$“ZÓ Ñ !€Dô ˆD‹ �QŠœ4 ¤T¬$¨t«*Ó%5Ñ 6Ó7¼4Ó?ô ˜"˜dÓ #€$ä ˜˜T 4Ó (Ð(r\có¦—t|«}|jd«}|s#|d|jz|j«z}tj j |«}tjjtjj|«|«}d}|jr£tjjtjj|««} tjj|j|«}tj j| tjj|««}||fS)Nr�r)rŠrIr$ÚProjectExtensionr:r;Ú BuildFilerGr_rkrÚgenerator_outputÚabspathr·) Úqualified_targetrÙr,rwr“Ú proj_filenamer¶r’Ú fix_prefixÚproject_dir_paths rZÚ_GetPathOfProjectr¼s÷€Ü+¨DÓ1€.Ø ×$Ñ$Ð%;Ó<€-٠ؘ-Ñ(¨7¯>©>Ñ9Ø!×2Ñ2Ó4ñ5€Mô�z‰z×#Ñ#Ð$4Ó5€*Ü�g‰g�l‰lœ2Ÿ7™7Ÿ?™?¨:Ó6¸ ÓF€)Ø€*Ø ×ÒÜ—w‘w—‘¤r§w¡w§¡°yÓ'AÓBÐÜ—‘— ‘ ˜W×5Ñ5°yÓA€IÜ—‘×(Ñ(Ð)9Ü)+¯©¯©¸Ó)CóE€Jà �JÐ Ðr\cóÌ—i}|dj«D]K\}}t||«}|jdt|««}t |t|««›d|›�}|||<ŒM|S)NrûÚmsvs_target_platformr°)rþr±rIr¨r®)rÙÚconfig_platform_overridesr¬rJÚconfig_fullnamerDÚfixed_config_fullnames rZÚ_GetPlatformOverridesOfProjectrÂsv€ð!ÐØÐ-Ñ.×4Ñ4Ö6�n€k�1Ü% k°1Ó5€OØ�u‰uÐ+¬_¸QÓ-?Ó@€Hä˜ ¤_°QÓ%7Õ8¹(ðDÐà1FИoÒ.ð 7ð #Ð"r\c ón—i}|D]¸}||}|ddk7rtd|z«‚t||||«\}at||«}t |«} t j j|«} tj||d||| | t¬«} |j«r| jt|||««| ||<Œº|j«D]]} | jjd«rŒ| jjdg«} | D�cgc]}||‘Œ } }| j!| «Œ_|Scc}w)aXCreate a MSVSProject object for the targets found in target list. Arguments: target_list: the list of targets to generate project objects for. target_dicts: the dictionary of specifications. options: global generator options. msvs_version: the MSVSVersion object. Returns: A set of created projects, keyed by target. ršr°z9Multiple toolsets not supported in msvs build (target %s)r)r!r”rÙr¶r¿rir+Ú dependencies)rr¼rir•rÂr:r;rµr�r�rÚset_msbuild_toolsetr›ÚvaluesrÙrIÚset_dependencies)Ú target_listÚ target_dictsr,rwÚprojectsr¸rÙr’r”Ú overridesr¶Úobjr Údepsr s rZÚ_CreateProjectObjectsrÎ'sV€ð€(Û%ÐØ Ð(Ñ )€DØ ˆI�˜(Ò"Ü Ø EØ ñ ó ðô!2Ð2BÀDØ29¸<ó!IÑ€Iˆ~ä ˜Y¨Ó -€DÜ.¨tÓ4€IÜ—‘×%Ñ%Ð&6Ó7€Jä × Ñ ØØ �-Ñ Ø Ø ØØ"+Ü%ô '€Cð×ÑÔ!Ø ×ÑÜ % i°°|Ó DôFà!$€HÐ Òð1&ð6—‘Ö"€gØ �<‰<× Ñ Ð3Õ 4Ø �\‰\× Ñ ˜n¨bÓ 1€dÙ#'Ó (¡4˜aˆh�q‹k 4€dÐ (Ø ×јtÕ$ð #ð €/ùò)sÄ D2có€—|D�]8}||}|jd«rŒ|jdd«}d|d<|jd«s¿tjj|«\}}}tj j |«}d} |jd«dk(r| d z } tj jtjj|d j|«tj|«| «|d<|jd «s |d d dg|d <|jd«r�Œ/|d d ddg|d<�Œ;y)aóInitialize targets for the ninja flavor. This sets up the necessary variables in the targets to generate msvs projects that use ninja as an external builder. The variables in the spec are only set if they have not been set. This allows individual specs to override the default values initialized here. Arguments: params: Params provided to the generator. target_list: List of target pairs: 'base/base.gyp:base'. target_dicts: Dict of target properties keyed on target pair. r+Úmsvs_path_to_ninjaz ninja.exeÚninjar,ú$(Configuration)Ú target_archÚx64Ú_x64r,r-z-Crr%r.z-tcleanN) rIr:r;r­rGr_rrkr·Ú toplevel_dirÚninja_generatorÚComputeOutputDir) ÚparamsrÈrÉr¸rÙÚ path_to_ninjarÉrªr]rÍs rZÚ_InitNinjaFlavorrÛXs;€ô&ÐØ Ð(Ñ )€DØ ‡x�xÐ'Ô(àà—H‘HÐ1°;Ó?€Mà$+€DÐ Ñ!Ø �8‰8Ð3Ô 4Ü—z‘z×6Ñ6Ð7GÓH�n€h��1Ü—‘—‘ Ó)€gØ(€mØ �‰�MÓ " eÒ +ؘш Ü.0¯g©g¯l©lÜ �*‰*× !Ñ ! &¨Ñ"3×"@Ñ"@À'Ó JÜ × *Ñ *¨6Ó 2Ø ó/€dÐ *Ñ+ð �8‰8Ð5Ô 6àØ ØØð 1€dÐ ,Ñ-ð �8‰8Ð5Ö 6àØ ØØØð 1€dÐ ,Ó-ñ7&r\cóЗ|jdi«}tj|jdd««}||d<|j«|d<tj jdd«j d«dk\s2tj jd d«j d«dk\rd |d <nd |d <tjj|«d k(rd|d<yy)z4Generated variables that require params to be known.r¡rwÚautoÚ MSVS_VERSIONÚPROCESSOR_ARCHITECTURErÚ64rÚPROCESSOR_ARCHITEW6432é@Ú MSVS_OS_BITSé rÑz $(OutDir)genrN) rIr¸ÚSelectVisualStudioVersionÚ ShortNamerGrHrÕr:r;Ú GetFlavor)Údefault_variablesrÙr¡rws rZÚCalculateVariablesréˆs߀ð—J‘JÐ0°"Ó5€/ô×6Ñ6Ø×ј.¨&Ó1ó3€,ð(€&ˆÑð'3×&<Ñ&<Ó&>Ð�NÑ#ô  ‡j�j‡n�nÐ-¨rÓ2×7Ñ7¸Ó=ÀÒB܇j�j‡n�nÐ-¨rÓ2×7Ñ7¸Ó=ÀÒBØ(*Ð�nÒ%à(*Ð�nÑ%ä‡Z�Z×ј&Ó! WÒ,Ø3AÐÐ/Ò0ð-r\cóè—|d}|d}tjj|jddd«}|j«D]v\}}tjj |«\}} | dk7rŒ.||j zdz} |j sŒMtjj|j | «} Œx|D].} | d| g} td | ›d | ›�«tj| «} Œ0y) Nr,rwÚCommon7ÚIDEz devenv.comú.gypú.slnz/Buildz Building [z]: ) rGr_rkrþr r$r¶r¾rJÚ check_call)ÚdatarûrÙr,rwÚdevenvr¶Úbuild_file_dictÚbuild_file_rootÚbuild_file_extÚsln_pathr?ráÚrtns rZÚ PerformBuildr÷¤sÚ€Ø �9Ñ €'ؘÑ'€,Ü �7‰7�<‰<˜ ×)Ñ)¨9°e¸\Ó J€&à%)§Z¡Z¦\Ñ!€j�/Ü(*¯©×(8Ñ(8¸Ó(DÑ%€_�nØ˜ÒØØ §¡Ñ/°&Ñ8€HØ×ÓÜ—‘—‘˜g×6Ñ6¸ÓA�hð &2ó€fؘ 8¨VÐ4€IÝ ¢©Ð 3Ô4Ü × Ñ   Ó *�Cñr\cóø—|jd«dk(rf|dj}tjj tjj |t j|«d««}||dœayy)NÚflavorrÑr,zgypfiles-msvs-ninja)ÚtoplevelÚqualified_out_dir) rIrÖrGr_r`rkr×rØÚgenerator_filelist_paths)rÙrúrûs rZÚCalculateGeneratorInputInforý·so€Ø ‡Z�Z�Ó˜WÒ$Ø�iÑ ×-Ñ-€HÜŸ™×(Ñ(¬¯©¯©Ø”/×2Ñ2°6Ó:Øó*ó Ðð Ø.ñ Ñð%r\c óè—|d}|d}|jdi«}tj||«\}}tj||t«\}}|jd«dk(r t |||«t «}|D]=}||} | dj«D] \} } |jt| | ««Œ"Œ?t|«}t||||«} g} | j«D]+}|ja | jt||||««Œ-da |D�]}|j!d«sŒt"j$j'|«d |j(zd z}|j*r*t"j$j-|j*|«}t.j0j3||«}|t.j0j5||«z }t7|| |j9«¬ «}t;j<|||d |¬ «}|j?«�Œ | rIddj-t | ««z}|jdd «r tA|«‚tCd|z«yy)a Generate .sln and .vcproj files. This is the entry point for this generator. Arguments: target_list: List of target pairs: 'base/base.gyp:base'. target_dicts: Dict of target properties keyed on target pair. data: Dictionary containing per .gyp data. r,rwr¡rùrÑrûNrírrî)r¢F)r�ÚvariantsÚwebsitePropertiesr¿zMissing input files: r7Úmsvs_error_on_missing_sourcesz Warning: )"rIÚMSVSUtilÚ ShardTargetsÚInsertLargePdbShimsÚgenerator_default_variablesrÛr\rþrr±r›rÎrÆriÚextendr¢r«rGr_r r$r¶rkr:r;ÚBuildFileTargetsÚDeepDependencyTargetsr²Ú FlatSolutionr�Ú MSVSSolutionÚWriterr¾)rÈrÉrðrÙr,rwr¡Úconfigsr¸rÙr¬r?r¯rËr r¶rõr®Ú root_entriesÚslnÚ error_messages rZÚGenerateOutputrÄsh€ð �9Ñ €'ð˜Ñ'€,à—J‘JÐ0°"Ó5€/ô!)× 5Ñ 5°kÀ<Ó PÑ€;� ô!)× <Ñ <Ø�\Ô#>ó!@Ñ€;� ð ‡Z�Z�Ó˜WÒ$Ü�V˜[¨,Ô7ô ‹E€'Û%ÐØ Ð(Ñ )€DØ#Ð$4Ñ5×;Ñ;Ö=ш �VØ ‡k�k”/ +¨vÓ6Õ7ñ >ð&ô �‹M€'ô*¨+°|ÀWØ*6ó8€/ð€/Ø ×'Ñ'Ö)€gØ×+Ñ+€NØ×ÑÔ+¨G°W¸lØ,;ó=õ>ð*ð€.ä€jà × Ñ ˜vÔ &ØÜ�w‰w×Ñ  Ó+¨AÑ.°·±Ñ?À&ÑH€HØ×ÒÜ—‘—‘˜g×6Ñ6¸ÓA€hä—:‘:×.Ñ.¨{¸JÓG€LØ”C—J‘J×4Ñ4°\À<ÓPÑP€Lä)Ø�o¨L×,EÑ,EÓ,GôI€Lô × Ñ ˜xØ'3Ø(/Ø16Ø'3ô  5€Cð ‡I�I†Kð'ñ*Ø,Ø—I‘Iœc /Ó2Ó3ñ4€Mà×ÑÐ:¸EÔBÜ �]Ó #Ð#ä ˆK˜-Ñ 'Õ(ð r\cóð—g}g}td|||||«|r+ddddœdg|zdg|zg}tj||dd¬«y tjj |«rtj |«y y ) aVGenerate the filters file. This file is used by Visual Studio to organize the presentation of source files into folders. Arguments: filters_path: The path of the file to be created. source_files: The hierarchical structure of all the sources. extension_to_rule_name: A dictionary mapping file extensions to rules. rÚProjectz4.0ú3http://schemas.microsoft.com/developer/msbuild/2003)Ú ToolsVersionÚxmlnsÚ ItemGroupT©Úprettyr9N)Ú_AppendFiltersForMSBuildÚeasy_xmlÚWriteXmlIfChangedrGr_ÚexistsÚunlink)Ú filters_pathÚ source_filesÚrule_dependenciesÚextension_to_rule_nameÚ filter_groupÚ source_groupÚcontents rZÚ_GenerateMSBuildFiltersFiler%sŠ€ð€,Ø€,ܘ2˜|Ð->Ø1°<ÀôOáØØ %ØNñðˆ}˜|Ñ+؈}˜|Ñ+ð €Gô ×јw¨ ¸TÈÖNÜ ‡w�w‡~�~�lÔ#ä‡I�IˆlÕð$r\c óž—|D]È}t|tj«rp|s |j}n|›d|j›�}|j dd|idt j |j«gg«t||j||||«Œ�t|||«\}} | d|ig} |r| j d|g«|j | «ŒÊy)aÍCreates the list of filters and sources to be added in the filter file. Args: parent_filter_name: The name of the filter under which the sources are found. sources: The hierarchy of filters and sources to process. extension_to_rule_name: A dictionary mapping file extensions to rules. filter_group: The list to which filter entries will be appended. source_group: The list to which source entries will be appeneded. rgr‚ÚIncludeÚUniqueIdentifierN) rçr�r‚r!r~r�r‘rrxÚ_MapFileToMsBuildSourceType) Úparent_filter_namerƒr r!r"r#rbÚ filter_namerªÚelementÚ source_entrys rZrr3sØ€ó€fÜ�&œ+×,Ñ,Ô-á Ø—k‘k‰ â"4°f·k²kÐBˆ à×ÑØ �i Ð-Ø ¤× 0Ñ 0°·±Ó =Ð >ð @ôAô˜{¨F¯O©OØ0Ð2HØ+¨\õ;ô /¨vÐ7HØ/EóG�j€aˆà  ¨6Ð2Ð3€lá Ø×јXÐ'9Ð:Ô;Ø×ј,Õ'ñ/r\có —tjj|«\}}||vr d}||}||fS|dvrd}d}||fS|dvrd}d}||fS|dk(rd }d }||fS|d k(rd }d }||fS|dk(rd}d}||fS||vrd}d}||fSd}d}||fS)aReturns the group and element type of the source file. Arguments: source: The source file name. extension_to_rule_name: A dictionary mapping file extensions to rules. Returns: A pair of (group this file should be part of, the label of element) rè)r§r¨r¦r©rOÚ ClCompile)z.hz.hxxÚincludeÚ ClIncludez.rcÚresourceÚResourceCompilez.asmÚmasmÚMASMrbÚmidlÚMidlÚrule_dependencyÚ CustomBuildrÜÚNone)rGr_r )rbr r!rªr­rRr,s rZr)r)Zs€ô �7‰7× Ñ ˜FÓ #�&€!€SØÐ "Ñ"Ø €EØ$ SÑ)€Gð, �Ð Ðð+ Ð+Ñ+Ø €EØ€Gð& �Ð Ðð% ˆnÑØ €EØ€Gð �Ð Ðð ˆe‚|Ø €EØ€Gð �Ð Ðð ˆf‚}Ø €EØ€Gð �Ð Ðð ˆf‚}Ø €EØ€Gð �Ð Ðð Ð"Ñ"Ø €EØ€Gð �Ð Ðð €EØ€GØ �Ð Ðr\c óº—|jdg«} | D� cgc] } t| jdd««rŒ| ‘Œ"} } | D� cgc] } t| jdd««sŒ| ‘Œ"} } g}| D]y}d|vr|jdg«sŒt||«}|j|«|j |j j d««|j| |j<Œ{|rÇ|d|jz}|dz}|d z}|d z}|j|«|j|«tjj||«}tjj||«}tjj||«}t||«t||«t!||«| rt#| |||||«t%| ||d «ycc} wcc} w) Nr*rxrrårrörz.propsz.targetsz.xmlT)rIræÚ MSBuildRuler~rr#r rrr$rrGr_rkÚ_GenerateMSBuildRulePropsFileÚ_GenerateMSBuildRuleTargetsFileÚ_GenerateMSBuildRuleXmlFilerKry)r+r,rÙrƒrzÚprops_files_of_rulesÚtargets_files_of_rulesr?r r!r*r/r{r|Ú msbuild_rulesrèÚ msbuild_ruleÚbaseÚ props_nameÚ targets_nameÚxml_nameÚ props_pathÚ targets_pathÚxml_paths rZÚ_GenerateRulesForMSBuildrK�s´€ð �(‰(�7˜BÓ €%Ù"ÓN™U˜¬#¨a¯e©eÐ4HÈ!Ó.LÕ*M’!˜U€,ÐNÙ$ÓL™u˜!¬¨A¯E©EÐ2FÈÓ,JÕ(K’A˜u€.ÐLà€-Û€dà�tÑ D§H¡H¨^¸RÔ$@ØÜ˜t TÓ*€LØ×јÔ&Ø×ј\×AÑA×GÑGÈÓLÔMØ5A×5KÑ5KИ<×1Ñ1Ò2ðñØ � Ñ  §¡Ñ /€Dؘ‘€Jؘ*Ñ$€LØ�f‰}€Hà×јZÔ(Ø×ј|Ô,ä—‘—‘˜j¨*Ó5€JÜ—7‘7—<‘<  ¨LÓ9€LÜ�w‰w�|‰|˜J¨Ó1€Hä! *¨mÔ<Ü# L°-Ô@Ü ¨-Ô8áܘ>¨:°tØ" G¨^ô=䘠Ð)9¸4Õ@ùòAOùÚLs— G¸GÁ GÁ#Gcó—eZdZdZd„Zy)r<a-Used to store information used to generate an MSBuild rule. Attributes: rule_name: The rule name, sanitized to use in XML. target_name: The name of the target. after_targets: The name of the AfterTargets element. before_targets: The name of the BeforeTargets element. depends_on: The name of the DependsOn element. compute_output: The name of the ComputeOutput element. dirs_to_make: The name of the DirsToMake element. inputs: The name of the _inputs element. tlog: The name of the _tlog element. extension: The extension this rule applies to. description: The message displayed when this rule is invoked. additional_dependencies: A string listing additional dependencies. outputs: The outputs of this rule. command: The command used to run the rule. có,—|d|_tjdd|j«|_d|jz|_|jdz|_|jdz|_|jdz|_d|jz|_|jdz|_ |jd z|_ |jd z|_ |d |_ |jjd «sd |jz|_ tj|j!d |j««|_t%|j!dg««}dj'|D�cgc]}tj|«‘Œc}«|_t%|j!dg««}dj'|D�cgc]}tj|«‘Œc}«|_t-||dd¬«}tj|«|_ycc}wcc}w)Nrz\WrªÚ AfterTargetsÚ BeforeTargetsÚ DependsOnzCompute%sOutputÚ DirsToMakeÚ_inputsÚ_tlogrrÊr rírörîTr)Ú display_namerNrYrrÚ after_targetsÚbefore_targetsÚ depends_onÚcompute_outputÚ dirs_to_makeríÚtlogrr½r×ÚConvertVCMacrosToMSBuildrIrïrrrkr#rîrêrà)ÚselfrèrÙÚold_additional_dependenciesrqÚ old_outputsÚ old_commands rZÚ__init__zMSBuildRule.__init__Âsπؘ[Ñ)€DÔä—V‘V˜E 3¨×(9Ñ(9Ó:€D„Nð˜TŸ^™^Ñ+€DÔØŸ™¨.Ñ8€DÔØŸ.™.¨?Ñ:€DÔØ—n‘n {Ñ2€D„OØ+¨d¯n©nÑ<€DÔØŸ™¨Ñ5€DÔØ—.‘. 9Ñ,€D„KØ—‘ Ñ(€D„Iؘ+Ñ&€D„NØ �>‰>× $Ñ $ SÔ )ؘTŸ^™^Ñ+€d„nä#×<Ñ<Ø �‰�˜DŸN™NÓ+ó-€DÔä"+¨D¯H©H°X¸rÓ,BÓ"CÐà �‰Ù6ó8Ù6�aô×7Ñ7¸Õ:Ø6ñ8ó 9ð Ô ô˜DŸH™H Y°Ó3Ó4€KØ—8‘8Ù&1ó3Ù&1 ô*×BÑBÀ1ÕEØ&1ñ3ó4€D„Lä*¨4°ÀdØ8<ô>€Kä×8Ñ8¸ÓE€D…Lùò8ùò3s Å(H Æ:HN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r`r‰r\rZr<r<®s „ñó&Fr\r<c ó¨—dddig}|D]®}|jddd|j›d|j›d�i|jd g|jd ggd|jdd id |jzggd |jd|j gd|j gd|jgd|jgggg«Œ°tj||dd¬«y)zGenerate the .props file.rrrÚ PropertyGroupÚ Conditionz'$(z)' == '' and '$(z1)' == '' and '$(ConfigurationType)' != 'Makefile'r7r9z$'$(ConfigurationType)' != 'Makefile'z_SelectedFiles;$(%s)ÚItemDefinitionGroupÚCommandLineTemplaterùÚExecutionDescriptionrøTrN) rrVrUrWrràrîrïr#rr)rHrBr$rès rZr=r=ãs€à ØÐLÐ Mð O€'ã€dØ ‡N�NØ Ù Ø48×4GÓ4GØ48×4FÓ4FðHð ð × Ñ ˜vÐ &Ø × Ñ ˜mÐ ,ð  ð Ø �/‰/Ø Ð>Ð ?Ø  4§?¡?Ñ 2ð ð ð Ø �.‰.Ø  $§,¡,Ð /Ø �d—l‘lÐ #Ø ! 4×#3Ñ#3Ð 4Ø # T×%AÑ%AÐ Bð  ð ðõðô2 ×јW j¸ÀTÖJr\cót—dddig}ddddigg}|D].}|jdd|jid |jgg«Œ0|j|«|D]&}|jd |jd d d œddgg«Œ(|D�]}|j}d|z}d|›d|›d�}d|z}d} dddi|d|zddœgg} d|jdd|zigg} d|jd|zd|›d|›d�dœdd |zgd!d"|jzggg} d#d$d%|zd&œg} d'd(|j›d)|j›d�d*d+|j›d,|j›d-�d.œg}d'd(|j›d)|j›d�d/d+|j›d0|j›d1�d.œg}|d(|›d)|›d�d2d$d$d3|zd4|z|d5œg}|j d6|jd7|j zd7|jzd8|zd9|j›d:|j›�||d;œ| | | | |||g dd?|jzgd@dAd?|jzggd6|jd8|zdBœd|jd(|›d)|›d�d|zdCœgdDd|jz| dœgdEd|jz| dœgdFd|jz| dœggdGdHdI|jziggg«�Œtj||dJdJ¬K«yL)MzGenerate the .targets file.rrrrÚPropertyPageSchemar'z5$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xmlÚAvailableItemNameÚTargetsÚ UsingTaskÚXamlTaskFactoryzMicrosoft.Build.Tasks.v4.0)ÚTaskNameÚ TaskFactoryÚ AssemblyNameÚTaskz%%(%s.Outputs)z%(z .Identity);%(z..AdditionalDependencies);$(MSBuildProjectFile)z%%(%s.Identity)zd'%(Extension)'=='.obj' or '%(Extension)'=='.res' or '%(Extension)'=='.rsc' or '%(Extension)'=='.lib'rgz'@(SelectedFiles)' != ''z@(%s)z#'%(Identity)' != '@(SelectedFiles)')ÚRemovergz%%(%s.AdditionalDependencies)z'%(z.Outputs)' != '' and '%(z.ExcludedFromBuild)' != 'true')r'rgÚSourcez @(%s, '|')ÚInputsz@(%s -> '%%(Fullpath)', ';')ÚMessageÚHighz%%(%s.ExecutionDescription))Ú ImportanceÚTextÚWriteLinesToFilez'@(z)' != '' and '%(z$$(IntDir)$(ProjectName).write.1.tlogz^%(z .Source);@(z->'%(Fullpath)'))rgÚFileÚLinesz#$(IntDir)$(ProjectName).read.1.tlogz .Source);%(z.Inputs)röz%%(%s.CommandLineTemplate)z%%(%s.AdditionalOptions))rgÚEchoOffÚStandardOutputImportanceÚStandardErrorImportancerir7rwÚTargetz$(%s)z '@(%s)' != ''z$(z);)ÚNamerOrNrgÚDependsOnTargetsrùrwrfÚComputeLinkInputsTargetsz$(ComputeLinkInputsTargets);z%s;ÚComputeLibInputsTargetsz$(ComputeLibInputsTargets);)rƒrg)rgr'rrÚImpLibÚMakeDirr•z!@(%s->'%%(RootDir)%%(Directory)')TrN) r~rrrírZrrVrUrWrXrYrr)rIrBr$Ú item_grouprèrÚtarget_outputsÚ target_inputsÚ rule_inputsÚextension_conditionÚremove_sectionÚinputs_sectionÚlogging_sectionÚmessage_sectionÚwrite_tlog_sectionÚread_tlog_sectionÚcommand_and_input_sections rZr>r> s€à ØÐLðð €'ð ØØÐJÐKðð€*ó €dØ×ÑØ Ø �T—^‘^Ð $Ø �T×%Ñ%Ð &ð õ ðð  ‡.�.�Ôã€dØ ‡N�NØ Ø—n‘nØ*Ø6ñ ð ÐIÐ Jð  õ ðô€dØ—‘€IØ%¨ Ñ1�Nâ1:ºIðG€Mà# iÑ/€Kð4Ðð Ø Ð0Ð1Ø Ø˜iÑ'Ø<ñ ð ð€Nð Ø �‰�yÐ"AÀIÑ"MÐNÐOð€Nð Ø �‰Ø%¨ Ò1ò#¢Ið/ñ ð �L 9Ñ,Ð -Ø Ð2°T·[±[Ñ@Ð Að ð €Oð ØØ.°Ñ:ñ ð€Oñ à—Y“Y § £ ð+á7Ø<@¿I»IØ<@¿I»IðGñ ðÐñ à—Y“Y § £ ð+á6Ø48·I³I¸t¿y»yÐIñ ðÐñ ⢠ð+àØ%+Ø$*Ø <¸yÑ HØ8¸9ÑDØñ ð !Ðð ‡N�NØ Ø×"Ñ"Ø" T×%8Ñ%8Ñ8Ø! D×$6Ñ$6Ñ6Ø&¨Ò2Ø,0¯O«OØ,0×,?Ò,?ðAà#Ø!ñ ð Ø Ø Ø Ø Ø Ø "ð! ð$ Ø $Ø (Ø �$×%Ñ%Ñ %ð ð $Ø 'Ø �$×%Ñ%Ñ %ð ð ð Ø×%Ñ%Ø&¨Ñ2ñ ð Ø × Ò â6?ÂðLà'¨)Ñ3ñ ð ð Ø(¨4×+<Ñ+<Ñ<Ø,ñ ð ð Ø(¨4×+<Ñ+<Ñ<Ø,ñ ð ð Ø(¨4×+<Ñ+<Ñ<Ø,ñ ð ð# ð. Ø Ð>Ø×,Ñ,ñ-ð ð ð7 ð;>ö>ðMôJ ×јW l¸4ÀtÖLr\có(—ddddddœg}|D�]j}|jd|jd|jd d œd d d |jdœggddddidddgggddddœdddggggddddddœdd d |jddœgggd d!dd"d"d#œgd$|jdd%d"d&œd'dd(ggd)dd*ggd+d,d-d.|jzd/œggd0d d dd1œgggd$|jdd%d"d&œd'dd2ggd)dd3ggd+d,d-d.|jzd/œggd0d d d4dd5œgggdd6d6d"d"d#œgd d7d8d"d"d#œgdd9d:d"d;d<œgd d=d=dd>œd?dd@ggdAdd@gggg dB|j|jdCœgdDdE|j z|jdFœgdG|jd4|jdHœgg«�Œmt j||dIdI¬J«y)KNÚProjectSchemaDefinitionszTclr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Frameworkz,http://schemas.microsoft.com/winfx/2006/xamlz&clr-namespace:System;assembly=mscorlibz+Microsoft.Cpp.Dev10.ConvertPropertyCallback)rzxmlns:xz xmlns:syszxmlns:transformCallbackÚRuler�Ú200)rƒÚ PageTemplateÚ DisplayNameÚOrderzRule.DataSourceÚ DataSourceÚ ProjectFile)Ú PersistenceÚItemTypezRule.CategoriesÚCategoryrƒÚGeneralzCategory.DisplayNamez sys:Stringz Command Linerú)rƒÚSubtypeÚStringListPropertyrwrörÌ)rƒr Ú IsRequiredÚSwitchzStringListProperty.DataSourceÚItem)ržrŸÚ SourceTypeÚStringPropertyriÚFalse)rƒršÚVisibleÚIncludeInCommandLineÚDynamicEnumPropertyrn)rƒr Ú EnumProviderr«zDynamicEnumProperty.DisplayNamezExecute BeforezDynamicEnumProperty.Descriptionz@Specifies the targets for the build customization to run before.z$DynamicEnumProperty.ProviderSettingsÚ NameValuePairÚExcludez ^%s|^Compute)rƒÚValuezDynamicEnumProperty.DataSource)ržÚHasConfigurationConditionz Execute Afterz?Specifies the targets for the build customization to run after.r)ržrŸr±rùrjzExecution DescriptionrøzAdditional DependenciesÚfalse)rƒršr«rªr7)r¢rƒr zStringProperty.DisplayNamezAdditional OptionszStringProperty.DescriptionrŸ)rƒršÚ FileExtensionrr)rƒÚ ContentTyper´)rƒršrŸTr)rrrTrVrUrrr)rJrBr$rès rZr?r?¨ s\€ð!ð6à@Ø<à4ñ ð €'ô€dØ ‡N�NØ Ø—.‘.Ø Ø×*Ñ*Øñ ð Ø Ø(ØŸ™ñ ð ð ð Ø Ø �IÐ Ø "Ø ˜9Ð %ð ð ð Ø"Ø$ñ ð #Ø ˜>Ð *ð ð  ð ð ØØ%ØØñ ð +Ø Ø)ØŸ™Ø!ñ ð ð ð  ð Ø(Ø(ØØ#*ñ ð ð Ø×&Ñ&Ø Ø$Ø#*ñ ð -Ø Ð*Ð +ð ð -Ø ðð ð ð 2Ø ØØ$ t×':Ñ':Ñ:ñ ð ð ð ,Ø Ø)Ø*0ñ ð ð ð+ ð: Ø×%Ñ%Ø Ø$Ø#*ñ ð -Ø ˜/Ð *ð ð -Ø ð,ð ð ð 2Ø ØØ$ t×'9Ñ'9Ñ9ñ ð ð ð ,Ø Ø)ØØ*0ñ ð ð ð+ ð< ØØ#ØØ#*ñ ð ð Ø)Ø1ØØ#*ñ ð ð Ø+Ø3Ø#*Øñ ð ð Ø)Ø&Ø%ñ ð (Ø Ð.Ð /ð ð (Ø Ð.Ð /ð ð ðGO ð` Ø—.‘.Ø×*Ñ*ñ ð ð Ø˜Ÿ™Ñ&ØŸ™ñ ð ð Ø—.‘.ØØ—n‘nñ ð ðwaöaðôF ×јW h°tÀ4ÖHr\cóX—|jdd«d}|jdd«}||fS)NrªrBrr¦r§)ÚrsplitrI)r!rrÍrDs rZÚ_GetConfigurationAndPlatformr·Z s3€Ø—+‘+˜c 1Ó% aÑ(€-Ø �\‰\Ð7¸Ó A€(Ø ˜Ð "Ð"r\có —dt||«zS)Nz''$(Configuration)|$(Platform)'=='%s|%s')r·)r!rs rZÚ_GetConfigurationConditionr¹` s€Ø 4Ü & t¨XÓ 6ñ 7ð8r\có¸—dddig}t|j««D]6\}}t||«\}}|›d|›�}|jdd|id|gd|gg«Œ8|gS) NrÚLabelÚProjectConfigurationsr°ÚProjectConfigurationr'Ú ConfigurationÚPlatform)rºrþr·r~)rûrRr!rrÍrDÚ designations rZÚ _GetMSBuildProjectConfigurationsrÁe s~€Ø ˜Ð"9Ð:Ð ;€%Ü  ×!5Ñ!5Ó!7Ö8Ñ€tˆXÜ:¸4ÀÓJÑ€M�8Ú*©HÐ5€KØ ‡L�LØ  )¨[Ð!9Ø ˜=Ð )Ø �hÐ ð !õ"ð9𠈀.r\có&—tjj|«d}dddid|gddgd|gd d ggg}tjj d «d k(s"tjj d «d k(r|dj ddg«|j d«rv|j d«}|dj d|g«|j d«r(|j d«}|dj d|g«n|dj d|g«|j d«r¹|dj ddg«|dj dd g«|j d«r(|j d«}|dj d|g«n|dj ddg«|j d«r|dj ddg«n|dj ddg«d} d} |dj «D](} | xs t| «} | xs t| |«} | sŒ%| sŒ(n| r |dj dt| «g«n1|jr%t|j›d |j›d!�«‚| d"k(r|dj d#d g«|S)$Nrrfr»ÚGlobalsÚ ProjectGuidÚKeywordÚ Win32ProjÚ RootNamespaceÚ#IgnoreWarnCompileDuplicatedFilenamerörßÚAMD64ráÚPreferredToolArchitecturerÔr4ÚWindowsTargetPlatformVersionr5ÚWindowsTargetPlatformMinVersionr0ÚDefaultLanguagezen-USÚAppContainerApplicationr3ÚApplicationTypeRevisionz8.1r2ÚApplicationTypez Windows Phonez Windows Storerûz requires any SDK of z version, but none were foundÚARMÚWindowsSDKDesktopARMSupport) rGr_r rHrIr~rÆr¨rÈr™r·rrï) rÙr¿r”Ú gyp_file_nameÚ namespaceÚ propertiesÚtarget_platform_versionÚtarget_platform_minversionÚapp_type_revisionr­r³rÍs rZÚ_GetMSBuildGlobalPropertiesrÙq sÇ€Ü�g‰g×ј}Ó-¨aÑ0€)à˜ )Ð,Ø ˜ÐØ �KÐ Ø ˜)Ð$Ø .°Ð7ð ð€*ô‡Z�Z‡^�^Ð,Ó-°Ò8܇Z�Z‡^�^Ð,Ó-°Ò8؈q�M×ÑÐ5°uÐ=Ô>à ‡X�XÐ,Ô-Ø"Ÿh™hÐ'EÓFÐØˆq�M×ÑÐ8Ø1ð3ô4à ‡x�xÐ1Ô2Ø#'§8¡8Ð,MÓ#NÐ Ø��m×ÑÐ=Ø6ð8õ9ð��m×ÑÐ=Ø3ð5ô6ð ‡X�XÐ!Ô"؈q�M×ÑÐ+¨WÐ5Ô6؈q�M×ÑÐ3°VÐ<Ô=Ø ‡x�xÐ0Ô1ØŸ(™(Ð#CÓDÐØ��m×ÑÐ5Ð7HÐIÕJà��m×ÑÐ5°uÐ=Ô>Ø ‡x�xÐ&Ô'Ø��m×ÑÐ-¨Ð?Õ@à��m×ÑÐ-¨Ð?Ô@à€-Ø!ÐØÐ,Ñ-×4Ñ4Ö6€mØ!ÒC¤_°]Ó%C€MØ 8ò!NÜ5°mÀWÓMðâÒ1Ù ð 7ñ ؈q�M×ÑÐ8ÜÐ6Ó7ð9õ:à×ÒÜ Ø×'Ó'¨×)@Ó)@ðBó CðCð�eÒØˆq�M×ÑÐ7¸Ð@ÔAà Ðr\c óª—i}|dj«D]¯\}}t|||«}t||«}|jd«}|jd«}t ||d|«|jd«} | rt ||d| «|dk(r%t ||dd«t ||dt |««|sŒ�d |vsŒ¢t ||d|«Œ±t |d |«S) NrûÚ CharacterSetrCÚSpectreMitigationÚDriverÚ DriverTypeÚWDMÚ TargetVersionr0r¾)rþÚ_GetMSBuildAttributesr¹rIÚ_AddConditionalPropertyr¤Ú_GetMSBuildPropertyGroup) rÙr¶rÕr!rÚmsbuild_attributesÚ conditionÚ character_setrÈÚspectre_mitigations rZÚ_GetMSBuildConfigurationDetailsrè® sò€Ø€*ØÐ-Ñ.×4Ñ4Ö6�n€dˆHÜ.¨t°X¸zÓJÐÜ*¨4°Ó:€IØ&×*Ñ*¨>Ó:€MØ$×(Ñ(Ð)<Ó=€KܘJ¨ Ð3FØ'ô)à+×/Ñ/Ð0CÓDÐÙܘj¨)Ð5HØ0ô2à�hÒܘj¨)°\À5ÔIܘj¨)°_Ü2°8Ó<ô>âØ  DÒ (Ü  ¨I°~Ø -õ /ð#7ô& " $¨¸Ó DÐDr\có"—i}|r dddid|ggg}|S)Nrfr»ÚLocalsÚPlatformToolsetr‰)r—rÕs rZÚ_GetMSBuildLocalPropertiesrìÆ s0€à€*Ùà ˜7 HÐ-Ø ˜oÐ .ð ð€Jð Ðr\có|—d}i}d}t|j««D].\}}t||«}d|vrt|d«||<d}Œ*d||<Œ0|sdddid |d |zd d œgggSg}|j«D]C\}} dd|d œd |d |zd d œgg} | D]} | j d d| ig«Œ|j | «ŒE|S)Nz3$(UserRootDir)\Microsoft.Cpp.$(Platform).user.propsFÚ msbuild_propsTrÚ ImportGroupr»ÚPropertySheetsÚImportz exists('%s')ÚLocalAppDataPlatform)rrgr»)r»rgr)rºrþr¹rrr~) rûÚ user_propsÚadditional_propsÚprops_specifiedr!rrÍÚsheetsråÚpropsÚ import_groupÚ props_files rZÚ_GetMSBuildPropertySheetsrúÒ s*€ØE€*ØÐØ€/ܘ~×3Ñ3Ó5Ö6�n€dˆHÜ.¨t°XÓ>€Mؘ(Ñ"Ü(1°(¸?Ñ2KÓ(LÐ�}Ñ%Ø�oà')Ð�mÒ$ð 7ñ à Ø Ð#Ð $Ø Ø Ø&¨Ñ3Ø*ñ ð ð ð ð ð€FØ,×2Ñ2Ö4ш �5àØ"Øñ ð ØØ%¨ Ñ2Ø)ñ ð ð €lóˆ*Ø×јX¨ °*Ð'=Ð>Õ?ðà ‡m�m�LÕ!ð5ð €Mr\cóN—t||«}t|||«}i}|D]„}|dvr4tj||«}|j d«s|dz }|||<Œ;|dk(rt ||«||<ŒR|dk(rt ||«||<Œi|dk(r ||||<Œwtd|z«Œ†|S)N)rErDrgrÛrCrÜz3Warning: Do not know how to convert MSVS attribute )r¸r=r×r[r«Ú_ConvertMSVSCharacterSetÚ_ConvertMSVSConfigurationTyper¾)rÙr?r¶rÈÚmsvs_attributesrärHÚ directorys rZÚ_ConvertMSVSBuildAttributesrþ s×€Ü)¨$° Ó;€+Ü& t¨V°[ÓA€/ØÐÛ €aØÐ 8Ñ8Ü×7Ñ7¸ÈÑ8JÓK€iØ × Ñ  Ô %Ø�Tш Ø'Ð˜ÒØ ˆnÒ Ü6°ÀqÑ7IÓJÐ˜ÒØ Ð!Ò !Ü;¸OÈAÑ€KØ ×Ñ�[Ô!ÙØ&¨¯©°)Ó)<Ñ<€ià€*Ü% n×&:Ñ&:Ó&<×=Ñ€tˆ]Ü*¨4°Ó?€IÜ& t¨]¸JÓG€JØ$Ð%AÑBÐܘJ¨ °8Ø&Ð'>Ñ?ôAä˜J¨ °8Ø&Ð'8Ñ9ô;ä˜J¨ °<Ø& |Ñ4ô6à�jÑ Ü˜j¨)°[Ø(¨Ñ5ô7ð‡~�~�lÔ#ܘj¨)°\Ø(¨Ñ6ô8à‡~�~�kÔ"ܘj¨)°[Ø(¨Ñ5ô7ñܘj¨)Ð5EØ'ô)à$×(Ñ(¨¨RÓ0€Mܘm×1Ñ1Ó3Ö4‰ ˆˆeÜ4°R¸¸uÓE€oܘj¨)°T¸?ÕKò5ð3 >ô8 " $¨¨jÓ 9Ð9r\có^—||vri||<||}||vrg||<||}|j|«y)a¼Adds a property / conditional value pair to a dictionary. Arguments: properties: The dictionary to be modified. The key is the name of the property. The value is itself a dictionary; its key is the value and the value a list of condition for which this value is true. condition: The condition under which the named property has the value. name: The name of the property. value: The value of the property. Nrð)rÕrår!r‘rÆÚ conditionss rZrâr⎠sH€ð �ÑØ€JˆtÑØ �dÑ €&Ø �&ÑØ€Fˆ5�MØ�e‰}€*Ø ×Ñ�IÕr\z\$\(([a-zA-Z_][a-zA-Z0-9_]*)\)c󦇗dg}|r|jd|i«t|d«}ˆfd„}tjj ‰j «|«}t |«D]g}‰|}t|j««D]D\} } t| «|k(r|j|| g«Œ(| D]} |j|d| i| g«ŒŒFŒi|gS)a†Returns a PropertyGroup definition for the specified properties. Arguments: spec: The target project dict. label: An optional label for the PropertyGroup. properties: The dictionary to be converted. The key is the name of the property. The value is itself a dictionary; its key is the value and the value a list of condition for which this value is true. rfr»rûc óð•—t«}t‰|j««D]F}|jttj |«D�cgc] }|‰vr||k7r|‘Œc}««ŒH|Scc}wrŒ)r\rºr„rÚMSVS_VARIABLE_REFERENCEÚfindall)rªÚedgesr‘ÚvrÕs €rZÚGetEdgesz*_GetMSBuildPropertyGroup..GetEdges´ s}ø€ô ‹E€Eܘ  4Ñ(×-Ñ-Ó/Ö0ˆð ‡l�l”3Ô#:×#BÑ#BÀ5Ô#Ió:Ñ#I˜aØ  ™?¨q°DªyòÐ#Iñ:ó;õ<ð1ð €Lùò:sÁA3rg) r~r}r:r;ÚTopologicallySortedr„rrºrþ) rÙÚlabelrÕrRÚnum_configurationsr+Úproperties_orderedr!rÆr‘r$rås ` rZrãr㦠sÚø€ð Ð €%Ù Ø ‡L�L�'˜5Ð!Ô"ܘ4Ð 0Ñ1Ó2Ðôô"—z‘z×5Ñ5؇o�oÓ˜ó#Ðô Ð)Ö*€dØ ˜Ñ €FÜ# F§L¡L£NÖ3шˆzÜ ˆZ‹Ð.Ò .ð � ‰ �d˜E�]Õ#ã#ˆIØ �,‰,˜˜{¨IÐ6¸Ð>Õ ?ñ$ñ 4ð+𠈀.r\có�—g}t|j««D]§\}}|d}ddt||«ig}t|j««D]`\}}|sŒ |sŒ |g} t|j««D]%\}} t||| «} | j || g«Œ'|j | «Œb|j |«Œ©|S)Nrrhrg)rºrþr¹rr~) rÙrûÚgroupsr!rÍrrRr�r r�r‘r!s rZÚ_GetMSBuildToolSettingsSectionsr2Ø sÜ€Ø €&Ü% n×&:Ñ&:Ó&<Ö=Ñ€tˆ]Ø$Ð%AÑBÐØ "ØÔ5°d¸MÓJÐ Kð €Eô%+Ð+;×+AÑ+AÓ+CÖ$DÑ ˆ �=ò Ú Ø�ˆ$Ü# M×$7Ñ$7Ó$9Ö:‰kˆd�EÜ:¸9ÀdØ;@óBˆOà �K‰K˜˜Ð/Õ 0ð;ð �,‰,�tÕ ð%Eð ‡M�M�%Õð! >ð" €-r\c óz—d|vrd}|d}tj|«n)d}|jdi«}tj|«}t |«\}}}t |«}t |«} t|d¬«\} } } t|«} t|«}|rM|D�cgc] }|dk7sŒ |‘Œ }}dg}|D]0}|j|«}|sŒtd|›d t|«›�«Œ2|D�cgc] }t|«‘Œ}}t|«}|jd «}|jd «}t|«}|jd «}t|d d|«t|dd|«t|dd|«t!|dd|«t|dd| «| rt|| d| d¬«| rt|| d| d¬«t|d d|«t|dd|«t|d d|«|rNt"j$j'|«d}t|d dd«t|d d|«t|d d|g«nt|d dd«t|d dd «|jd!«rt|d"d#d «|d$d%k(rt|d"d#d&«|rt|dd'|«||d(<|rt|d)d*|«|rt|d+d*|«yycc}wcc}w),NrFTrãrßz _HAS_TR1=0rpz=Warning: The automatic conversion to MSBuild does not handle z. Ignoring setting of rárâr6r/rçr7r3rrørêrërìrrírïrBÚPrecompiledHeaderÚUseÚPrecompiledHeaderFilerôÚNotUsingr—r²r1rrõr˜rÛrör÷rÚ PreBuildEventÚCommandÚPostBuildEvent)r×ÚValidateMSBuildSettingsrIÚConvertToMSBuildSettingsrørùrúrûr-rür¾r™rvrýrþr“r�rGr_r )rÙrÍÚ convertedrrãrrrrrrrªr'rrr Úignored_settingsÚignored_settingr‘r r r r rs rZÚ_FinalizeMSBuildSettingsr@î s9€Ø˜=Ñ(Ø€IØ$Ð%7Ñ8ÐÜ×(Ñ(Ð)9Õ:à€IØ!×%Ñ% o°rÓ:€MÜ#×<Ñ<¸]ÓKÐä�mÓ$ñ9€,Ð!Ð#8ä˜DÓ!€)Ü  Ó/€,Ü7¸ÀdÔKÑ€(ˆAˆ|Ü" 4Ó(€*Ü ˜ Ó &€'Ùá!Ó7™'�Q Q¨,Ó%6Šq˜'€GÐ7à)Ð*ÐÛ+ˆØ×Ñ Ó0€eÚ Ý Ú/>ÄÀEÄ ðLõ Mð,ñ 5<Ó <±G¨qÔ '¨Õ *°G€'Ð <Ü*¨=Ó9ÐØ × Ñ ˜Ó /€(Ø×ÑÐ 0Ó1€)Ü ! $Ó '€(Ø$×(Ñ(Ð)BÓCÐô Р Ø,¨lô<ä РØ,Ð.?ôAä ÐÐ 1Ø,Ð.CôEôÐ# VÐ-EØôä РÐ(FØôá ÜÐ  ,° ¸hØ"õ$áÜÐ  ,° ¸ZØ"õ$ôР Ø'¨ô2ä ÐÐ 1Ø'¨ô2ôР Ø'Ð):ô<ñÜŸ™Ÿ™Ð'9Ó:¸1Ñ=ÐÜÐ  +Ð/BÀEÔJÜÐ  +Ø'Ð);ô=äÐ  +Ø$Ð'9Ð&:õ<ôÐ  +Ð/BÀJÔOä Р Ð-=¸wÔGà ‡X�XÐ+Ô,ÜРÐ%:¸GÔDð ˆ&�\Ð&Ò&ÜÐ  "Ð&;¸VÔDá ÜÐ  &Ð*@À(ÔKØ0@€-Ð,Ñ-Ù ÜÐ  /°9¸hÔGÙÜÐ Ð"2°I¸yÕIðùòO8ùò =s J3Â(J3Ã*J8có(—t|«tk(re|dvr|jd|z«dgdgdgdœ}||vr |||vrd}nd}|j|D�cgc]}t j |«‘Œc}«}|St j |«}|Scc}w)N)rçrêr7Ú DelayLoadDLLsrïríz%%(%s)r7)r/rrrÌrö)r˜r›r~rkr×r[)r�r!r‘Ú exceptionsÚcharrqr!s rZrrK s¼€Ü ˆ%ƒ[”DÒð ð+ñ+ð  ‡l�l�8˜d‘?Ô#ð*Ð*Ø$Ð%Ø#Ð$ñ&€Jð�JÑ 4¨:°iÑ+@Ñ#@Ø �dà €dØ—i‘iÙ;@ÓA¹5°aŒ× .Ñ .¨qÕ 1¸5ÑAóC€Oð Ðô#×;Ñ;¸EÓB€OØ Ðùò BsÁBcóD—g}|D]˜}t|tj«r&|jt |j |««ŒCd|vsŒHt jj||«}t jj|«rŒˆ|j|«Œš|S)a›Verifies that all source files exist on disk. Checks that all regular source files, i.e. not created at run time, exist on disk. Missing files cause needless recompilation but no otherwise visible errors. Arguments: sources: A recursive list of Filter/file names. root_dir: The root directory for the relative path names. Returns: A list of source files that cannot be found on disk. r^) rçr�r‚rr¼rxrGr_rkrr~)rƒÚroot_dirrËrbÚ full_paths rZr¼r¼g s€ð€/Û€fÜ�&œ+×,Ñ,Ô-Ø×ÑÔ0°·±À(ÓKÕLà �FÒ Ü—G‘G—L‘L ¨6Ó2ˆ Ü�w‰w�~‰~˜iÕ(Ø × Ñ  Õ +ðð Ðr\c óÊ—gd¢}i} |D]} g| | <Œ t|||| ||||«g}|D] } | | sŒ |jdg| | z«Œ"|r|jdg|z«|S)N)rÜr4r6r0rOr2rèr8r)Ú _AddSources2r~) rÙrƒrjr r!Ú actions_specÚsources_handled_by_actionrvr1Úgrouped_sourcesÚgs rZÚ_GetMSBuildSourcesrN€ s�€ò €&à€/Û €aØ€O�AÒð ôˆt�W˜j¨/Ø Ð"8Ø(¨-ô9ð €'Û €aØ�qÓØ ‡n�n�k�] _°QÑ%7Ñ7Õ8ð ñØ ‡N�N�K�= <Ñ/Ô0Ø €.r\c ó€—g}|D�]¶} t| tj«rt|| j||||||«Œ;| |vsŒ@g} |j | g«} t | «t |d«k(r| jddg«n5t| «D]'\} } t| | «}| jdd|idg«Œ)|dj«D]¿\} } | j dd«}|dk7rØ × Ñ Ð:¸FÐCÔ DÙ à �:‰:Ð>ÀÕ BØ × Ñ Ð:¸GÐDÔ EÙ ðGð ‡l�l�;Öð#+ð$×Ñ�eÔØ Ðr\c ó:—|j}|d}tjj|j«\}}tj j |j«t|j«}tj j||«} tjj|j«d} t||| «\} } i} t«}t«}t«}i}|jdd«}|jd«st|||| | ||| ||« n |jdg«}t|| | d«t|||| | ||«\} } }|jd«s/t!| ||j«t#| |«t%| | «} t'|| |«}t)|| «\}}t+|jdz| ||«t-| |«}|j/«D]}t1||«Œdd d igg}dd d igg}dd d igg}dd d igg}dd digg}dddigg}d d|j3«ddœg} | t5|«z } | t7|||j8|«z } | |z } | t;||j«z } |jd«r| t=d«z } n| t=|j>«z } | |z } | |z } | tA|«z } | tC|«z } | |z } | tE|||j«z } | tG||«z } | tI|| ||||||«z } | tK|«z } | |z } | |z } | tM|«z } |jd«r| tO|«z } tQjR| |jdd¬«|S)NrûrBr³Tr+r*z.filtersrñrz,$(VCTargetsPath)\Microsoft.Cpp.Default.propsz$$(VCTargetsPath)\Microsoft.Cpp.propsz&$(VCTargetsPath)\Microsoft.Cpp.targetsz/$(VCTargetsPath)\BuildCustomizations\masm.propsz1$(VCTargetsPath)\BuildCustomizations\masm.targetsrfr»Ú UserMacrosrÚBuild)rrÚDefaultTargetsr2Ú v120_wp81r)*rÙrGr_r r:r;r´rdr¶r·rºr\rIrKryr»rÀrÁr†riÚ_GenerateActionsForMSBuildr%r¼rÆr@ÚProjectVersionrÁrÙr”rèrìr—Ú_GetMSBuildExtensionsrúr"r2rNr^Ú_GetMSBuildExtensionTargetsÚ!_GetMSBuildExternalBuilderTargetsrr)!r r,r¿r¡rÙrûrÅÚproject_file_namerÆrÇrÉrƒrzr?r@rAr r!rvr*rÊrjrJrKrËrÍÚimport_default_sectionÚimport_cpp_props_sectionÚimport_cpp_targets_sectionÚimport_masm_props_sectionÚimport_masm_targets_sectionÚ macro_sectionr$s! rZržržè sU€Ø �‰€$ØÐ(Ñ)€.Ü#%§7¡7§=¡=°·±Ó#>Ñ €+Р܇*�*×јWŸ\™\Ô*ä ˜w×1Ñ1Ó 2€(Ü!Ÿj™j×5Ñ5°hÀ ÓLÐä �W‰W�]‰]˜7×-Ñ-Ó .¨qÑ 1€(Ü3°D¸/Ø4<ó>Ñ€'Ð ð€.Ü›ÐÜ›5ÐÜ“eÐØÐØ!×%Ñ%Ð&@À$ÓG€-ð �‰Ð)Ô *ܘ[¨'°4Ø$Ð&6Ø1Ð3IØ+Ð->Ø3õ 5ð �H‰H�W˜bÓ !€Eܘ5 'Ð+;¸TÔBô0°°gØ0;¸WØ0@Ø0=¸wóHñ*€'Ð ˜\ð �‰Ð)Ô *Ü�  g×&8Ñ&8Ô9܈~˜tÔ$ô2ؘ.ó*Ðô*¨$Ð0@À,ÓO€*Ü,FØ ˆNó-Ñ)€,Ð)ô˜gŸl™l¨ZÑ7¸Ø/Ø4ô6ô(¨°Ó=€/à%×,Ñ,Ö.€mܘT =Õ1ð/ð �)ÐLÐMÐNðPÐð�)ÐDÐEÐFðHÐð�)ÐFÐGÐHð JÐðØ ÐFÐGðIðJÐðØ ÐHÐIðKð!LÐð$ g¨|Ð%<Ð=Ð>€-ðØEØ×-Ñ-Ó/Ø ñð €'ð Ô -¨nÓ =Ñ=€'Ø Ô (¨¨w¸¿ ¹ Ø):ó<ñ<€'à Ð #Ñ#€'Ø Ô ,¨T°7×3EÑ3EÓ FÑF€'Ø ‡X�XÐ$Ô%Ø Ô(¨Ó5Ñ5�7à Ô(¨×)@Ñ)@ÓAÑA€7Ø Ð %Ñ%€'Ø Ð &Ñ&€'Ø Ô "Ð#7Ó 8Ñ8€'Ø Ô & ~Ó 6Ñ6€'Ø ˆ]Ñ€'Ø Ô 5°d¸NØ6=×6HÑ6HóJñJ€'à Ô ,¨T°>Ó BÑB€'Ø Ô Ø ˆG�ZÐ!2Ð4JØÐ-¨}ó>ñ>€'ð Ô )¨'Ó 2Ñ2€'Ø Ð 'Ñ'€'Ø Ð (Ñ(€'Ø Ô (Ð)?Ó @Ñ@€'à ‡X�XÐ%Ô&Ø Ô0°Ó6Ñ6€Gô  ×јW g§l¡l¸4ÀtÕLà Ðr\cóf—t||ddddd«}dddig}|jdd|ig«t||ddddd«}ddd ig}|jdd|ig«||g}|jd «r?t||d dddd«}ddd ig}|jdd|ig«|j|«|S) anReturn a list of MSBuild targets for external builders. The "Build" and "Clean" targets are always generated. If the spec contains 'msvs_external_builder_clcompile_cmd', then the "ClCompile" target will also be generated, to support building selected C/C++ files. Arguments: spec: The gyp target spec. Returns: List of MSBuild 'Target' specs. r-Fr‚rƒraÚExecr9r.ÚCleanr/r/)râr~rI)rÙÚ build_cmdÚ build_targetÚ clean_cmdÚ clean_targetÚtargetsÚ clcompile_cmdÚclcompile_targets rZrhrh^ s€ô*Ø ˆDÐ2Ñ 3Ø ˆU�E˜5ó"€)ð˜V WÐ-Ð.€,Ø×Ñ�v  ¨9Ð5Ð6Ô7ä)Ø ˆDÐ2Ñ 3Ø ˆU�E˜5ó"€)ð˜V WÐ-Ð.€,Ø×Ñ�v  ¨9Ð5Ð6Ô7à ˜<Ð (€'à ‡X�XÐ3Ô4Ü/Ø ˆdÐ8Ñ9Ø ˆu�e˜Uó$€Mð! 6¨;Ð"7Ð8ÐØ×јV i°Ð%?Ð@ÔAØ ‡N�NÐ#Ô$à €.r\cóL—dddig}|D]}|jdd|ig«Œ|gS)Nrïr»ÚExtensionSettingsrñrrð)r@r"rùs rZrfrfƒ s<€Ø Ð)<Ð=Ð>€*Û(€jØ×Ñ�x )¨ZÐ!8Ð9Õ:ð)à ˆÐr\có^—dddig}t|«D]}|jdd|ig«Œ|gS)Nrïr»ÚExtensionTargetsrñr)rºr~)rAÚ targets_nodeÚ targets_files rZrgrgŠ sB€Ø 'Ð+=Ð!>Ð?€,ÜÐ3Ö4€lØ×ј I¨|Ð#<Ð=Õ>ð5à ˆÐr\c ó—t«}g}|j«D]ä\}}t«}t«}g}g} |D]}} |jt| d««|jt| d««|j| d«| d} | j dd«rd| z} | j| «Œdj |«} d j | D� cgc]} | d z‘Œ c} «}t |||||| ||«Œæ||fScc} w) aYAdd actions accumulated into an actions_to_add, merging as needed. Arguments: spec: the target project dict actions_to_add: dictionary keyed on input name, which maps to a list of dicts describing the actions attached to that input file. Returns: A pair of (action specification, the sources handled by this action). rírîrïràÚmsbuild_use_callTzcall rrz, if %errorlevel% neq 0 exit /b %errorlevel%)rrþrr~rIrkÚ_AddMSBuildAction)rÙr?rKrJrrTrírîrr rårÒrïrJràs rZrdrd‘ s0€ô)›lÐØ€,Ø .× 4Ñ 4Ö 6Ñ€m�WÜ ‹\€FÜ‹l€GØ€LØ€HÛˆØ ‡m�m”J˜v hÑ/Ó0Ô1Ø ‡n�n”Z  yÑ 1Ó2Ô3Ø×ј& Ñ/Ô0Ø �9Ñ €cð �‰Ð&¨Ô -ؘ‰mˆØ‡o�o�cÕðð ×$Ñ$ \Ó2€Kð �k‰kÙ$,ó.Ù$,˜qðÐOÓOØ$,ñ.ó/€Gä�dØ#ØØØØ!Ø/Ø"õ$ð5!7ðD Ð0Ð 0Ð0ùò.sà D có˜—tj|«}t|«}t|«} t|«} dj | D� cgc] } | |k7r| ‘Œ c} «} dj | «}|j |«dd|ig} | j ddgd|gd|gd|gg«| r| jd | g«|j| «ycc} w) Nrör9r'ÚFileTypeÚDocumentr9rxrùÚAdditionalInputs)r×r[rnrrrkrrr~)rÙrrírîrÒrïrKrJràÚ inputs_arrayÚ outputs_arrayrqÚadditional_inputsÚ action_specs rZr‚r‚à sê€ä × 1Ñ 1°#Ó 6€'ܘ=Ó)€-ܘ6Ó"€,ܘGÓ$€-Ø—h‘h©<ó 7©< aØ#$¨ Ò#5ò!"¨<ñ 7ó8Ðà �H‰H�]Ó #€'Ø×Ñ  Ô.Ø ¨MÐ :Ð;€+Ø ×Ñà�JÐØ�7ÐØ�;ÐØ�7Ððô ñØ×ÑÐ*Ð,=Ð>Ô?Ø×Ñ�kÕ"ùò 7sÁC)NNTN)F)£Ú __future__rÚcopyr&rGrŠrNrJrCr{Ú gyp.commonr:Ú gyp.easy_xmlrÚgyp.generator.ninjaÚ generatorrÑr×Ú gyp.MSVSNewr�Úgyp.MSVSProjectr�Úgyp.MSVSSettingsr×Úgyp.MSVSToolFiler%Úgyp.MSVSUserFilerÐÚ gyp.MSVSUtilrÚgyp.MSVSVersionr¸rrrOr�rÚ"generator_additional_path_sectionsÚ+generator_additional_non_configuration_keysrürerFrEr[rirdrnrrr€r“r�r¤r¨r®r±rÈrârêrórr rrrr1r4rKrOrXr[r`rcrhrlrmrtrvr}ryr†rŠr•r›r¢r±rŸrµrÓr¸r¹rørúrùrûr-rürýrþr:rr=rQrºr»rYrZrÃrir¾r¿rÀrÂrÁr†r•ržr©r²r¼rÂrÎrÛrér÷rýrr%rr)rKÚobjectr<r=r>r?r·r¹rÁrÙrèrìrúrrürýrár"râr'rãr2r@rr¼rNrIr^ržrhrfrgrdr‚r‰r\rZÚr›sXðõ &ã Û Û ÛÛ ÛÛ ÛãÝß-Ð-ÝÝ%Ý'Ý'Ý'ÝÝ%ÝÝ!ð#˜Ÿ ™ Ð#3Ó4ÐðØ�Rðà�Vðð˜ðð˜ð ð ˜ð ð ˜ð ð˜ðð˜ðð˜ ððÐAðð ˆ%ðð�;ððˆ~ðð�~ðð˜-ðð �mð!ð"Ð)ð#ð$&Ø0ò'Ðð2Øð&Ð"ò /Ð+ð$ ÐðØð€ ð €ð€ ò*ð0€òò$ò"&ð EIØFJó>óBDó ò2<òAòòPò =ò2H>òV Kò ,òFHò8,ò<ò& &òò*# òLò Nòb ð$"�r—z‘z )Ó,Ðò ð8'˜BŸJ™J Ó7Ðò, ò^ ð#˜Ÿ ™  9Ó-Ðò ò ò òBò: ò, =ò?òò0ò(Lò0 MòFCòL ò ò$ò>TLòn@ò0 òò4$)òNò$ò&Dò òò61ò&ò4Bò$%òN31òl òò 7òò*ò$"òN ò0ò*9òò4 òò& ò)ò&ò$ #ò.òb-ò`Bò8+ò& òN)òbò<$(òN$òN*AôZ2F�&ô2FòjKò@bMòJoIòd#ò 8ò ò:òzEò0 ò*òXò*ò ò2òj-:ò`ð*%˜"Ÿ*™*Ð%FÓGÐò/òdò,ZJòzò8ò2ò*6Oòrò4sòl"òJòò/1ód#r\