ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.-  Oac@sddlmZddlZddlZddlZddlZddlZddlZ ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmZddlmZddddd gZd d gZd d dddddgZeaiZiZy efZWnek rRefZnXyee fZ!Wnek refZ!nXee!Z"e"e#fZ$dZ%ddddd ddddddddddd d!d"d#d$d%d&gZ&ga'dd'dd d(dd)dd d"d%g Z(e)a*e+a,e+d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3e6fd4YZ7d5e8fd6YZ9d7Z:ed8Z;id9d:6d;d<6d=d>6Z<d?Z=d@Z>e j?dAZ@e j?dBZAe j?dCZBiZCdDZDdEZEdFZFdGZGdHZHiZIdIZJdJZKdKZLdLZMdMZNe+dNZOdOZPdPZQdQZRdRZSdSZTdTZUdUZVdVZWdWZXdXe8fdYYZYdZZZd[Z[d\Z\d]Z]e j?d^Z^d_Z_e)e`d`ZadaZbdbZcdcZdddZedeZfdfZgdgZhdhZidiZjdjZkdkZldlZmdmZndnZodoZpdpZqdS(qi(tprint_functionN(tGypError(t OrderedSett executabletshared_librarytloadable_moduletmac_kernel_extensiontwindows_drivert dependenciestexport_dependent_settingst destinationtfilest include_dirstinputst librariestoutputstsourcescCsx$|r&|ddkr&|d }qW|tkr7tSd|kr|d}|ddkrj|d }n|dd kr~tS|d d kStS( Nis=+?!t_itsit_filet_pathit_dir(RR(t path_sectionstTruetFalse(tsectionttail((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt IsPathSectionJs    tactionstconfigurationstcopiestdefault_configurationtdependencies_originalt postbuildst product_dirtproduct_extensiont product_nametproduct_prefixtrulestrun_aststandalone_static_librarytsuppress_wildcardt target_namettoolsetttoolsetsttypet variablestall_dependent_settingstdirect_dependent_settingst link_settingscCsg|dkrg}n||kr%|S|j|x.||jdgD]}t|||qIW|S(sReturn a list of all build files included into build_file_path. The returned list will contain build_file_path as well as all other files that it included, either directly or indirectly. Note that the list may contain files that were included into a conditional section that evaluated to false and was not merged into build_file_path's dict. aux_data is a dict containing a key for each build file or included build file. Those keys provide access to dicts whose "included" keys contain lists of all other files included by the build file. included should be left at its default None value by external callers. It is used for recursion. The returned list will not contain any duplicate entries. Each build file in the list will be relative to the current directory. tincludedN(tNonetappendtgettGetIncludedBuildFiles(tbuild_file_pathtaux_dataR2tincluded_build_file((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyR6s    cCsztj|}t|tjs't|j}t|dksHt|d}t|tjsjtt|j gS(sReturn the eval of a gyp file. The gyp file is restricted to dictionaries and lists only, and repeated keys are not allowed. Note that this is slower than eval() is. ii( tasttparset isinstancetModuletAssertionErrortbodytlentExprt CheckNodetvalue(t file_contentst syntax_treetc1tc2((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt CheckedEvals   c Cst|tjri}xt|j|jD]\}}t|tjsRt|j}||krt d|dt t |dddj |dnt |}|j|t||||RRtreprR@tjointlistR4RBtListt enumerateteltst TypeError( tnodetkeypathtdicttkeyRCtkptchildrentindextchild((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRBs."  =   c Cs||kr||Stjj|rGt|djjd}ntd|tjfd}y2|rt |}nt |idd6d}WnKt k r}||_ n-t k r}tjj|d|nXt|tk rtd|n|||(?P<(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))sy(?P(?P>(?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))s|(?P(?P[\^](?:(?:!?@?)|\|)?)(?P[-a-zA-Z0-9_.]+)?\((?P\s*\[?)(?P.*?)(\]?)\))cCsdtjdkr`t|tkrHtjdd|dg|d}q`tjdd|}n|S(Ntwin32s^cat stype ii(RtplatformR-RRtretsub(tcmd((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytFixupPlatformCommands 'iiic0 Cs|tkrt}d}nB|tkr6t}d}n'|tkrQt}d}n ts]tt|}t |rt |S||kr|St |j |}|s|S|}|j x|D]} | j} tjtjd| d| dk} | d} d| dk} | jd }| jd }t||\}}||}|||!}||d }|d }|||!}| rtjj|}t||t||||}nt||||}|j}d | dko||k}| s | r>tjj|}|d kr>| r>d}q>n| rt|t kr_|}n|jd }|d}tjj |rt!d|nt"stjj#||}nltjj |rt"d}tj$j%||}n|}t"d}tjj#|||}tj$j&|tj$j%||}tj$j'|}x#|d D]}|j(d|qYW|j)n| rt*} | drt+|}t} nt||f}!t,j-|!d}"|"dkrtjtjd||d }| dkrtj.}#|r)tj/|nzvt0j|}$yt1|$d}%Wn-t2k r~}&t!d|$d|&fnXt|%j3|$d j4}Wdtj/|#X|dkstn| rt!d| |fnt5|}y:t6j7|d| dt6j8dt6j8dt6j8d|}'Wn,t9k rX}&t!d|&||fnX|'j:d \}(})|'j;dks|)r|)j<d}*t=j>j(|*t!d||'j?|fn|(j<dj4}|t,|!t^s Matches: %rt!R-tcommand_stringt|Rit@Rt is(| cannot handle absolute paths, got "%s"ttopleveltqualified_out_dirs%s tis_arrays(Executing command '%s' in directory '%s't pymod_do_mains,Error importing pymod_do_mainmodule (%s): %ss$Unknown command string '%s' in '%s'.tshelltstdoutRtstdintcwds%%s while executing command '%s' in %ssutf-8s1Call to '%s' returned exit status %d while in %s.s2Had cache value for command '%s' in directory '%s'iRsUndefined variable s in s Variable s- must expand to a string or list of strings; slist contains a sfound a s?Found only identity matches on %r, avoiding infinite recursion.sFound output %r, recursing.(RR(HRtearly_variable_ret PHASE_LATEtlate_variable_retPHASE_LATELATEtlatelate_variable_reRR>tstrRtintRRtfinditertreverset groupdictRmR|tDEBUG_VARIABLESRtendRRRtProcessListFiltersInDicttExpandVariableststripRbRcR{R3R-tsplittisabsRtgenerator_filelist_pathsRQRnRtEnsureDirExistst WriteOnDiffRRRRitcached_command_resultsR5Rhtchdirtshlext __import__t ImportErrortDoMaintrstripRt subprocesstPopentPIPERlt communicateRRgRRt returncodeR<t_str_int_typest __class__Rt#ProcessVariablesAndConditionsInListtEncodePOSIXShellListR4RT(0tinputtphaseR.t build_filet variable_retexpansion_symbolRtmatchestoutputt match_grouptmatcht run_commandRt file_listt replace_startt replace_endtc_starttc_endt replacementtcontents_startt contents_endtcontentstprocessed_variablestexpand_to_listtbuild_file_dirt contents_listRcR trel_build_file_dirR tftit use_shellt cache_keyt cached_valuetoldwdtparsed_contentst py_moduleRwtptp_stdouttp_stderrtp_stderr_decodedRtencoded_replacementt new_outputR]toutstr((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRsN                                      #             !  (           c Cst|tk r%t|dnt|dkrft|d|ddtt|nd}d }x#|t|kr||}||d}t|tk rtdj||t|nt||dkrZt||dtkrZ||d} |d}|t|krjtd j||t||qjnd } |d}|d krut||| |||}ququW|S( s]Returns the dict that should be used or None if the result was that nothing should be used.s must be a listiR is must be at least length 2, not is.{} {} must be followed by a dictionary, not {}is&{} {} has {} unexpected trailing itemsN( R-RRRR@RR3RYtformattEvalSingleCondition( Rtconditions_keyR7R.R8RORt cond_exprt true_dictt false_dict((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt EvalConditions2,  0  "  c Cs=t||||}t|tsAtdd|jjnyZ|tkr]t|}nt|dd}|t|RiR`s9%s while evaluating condition '%s' in %s at character %d.is%while evaluating condition '%s' in %sN(RR<R2t ValueErrorR3Rtcached_conditions_aststcompileRiR3RjRRttexttoffsetRktlinenot NameErrorRmRnRoR( R`RaRbR7R.R8tcond_expr_expandedtast_codeRwt syntax_error((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyR^5s,     # cCs|tkrd}n1|tkr*d}n|tkr:dStsFt||krVdS||}||=x[|D]S}t|||||}|dkrnt||||t||||qnqnWdS(NRttarget_conditions( RRRRR>RcR3RR~(tthe_dictR7R.R8R_tconditions_listRt merge_dict((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytProcessConditionsInDictYs$             cCsAx:|jD],\}}t|tr ||d|(R(R((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt__repr__scCst}d}t|jd|}x|r|j}|j|jxrt|jd|D][}t}x6t|jd|D]}|j|krt}PqqW|rc||g7}qcqcWq+Wt |S(NcSs|jS(sAExtracts the object that the node represents from the given node.(R(RW((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytExtractNodeRefsRZ( RtsortedRRRRRRRRR(Rt flat_listRtin_degree_zerosRWtnode_dependenttis_in_degree_zerotnode_dependent_dependency((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt FlattenToLists      csEgtfdj|||gS(sR Returns a list of cycles in the graph, where each cycle is its own list. cs|xu|jD]j}||krDj|g||j|d q |kr j|||g|q q WdS(Ni(RR4R]R(RWRcR^(tVisittresultstvisited(sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRAs  (  (RR(R((RRRsH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt FindCycles:s   cCs^|dkrg}nxB|jD]7}|jdkr|j|kr|j|jqqW|S(s+Returns a list of just direct dependencies.N(R3RRR4(RRR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytDirectDependenciesNs   cCs|dkrg}nd}x|t|kr||}||}d}xG|jdgD]3}||kr]|j||||d}q]q]W|d}qW|S(s^Given a list of direct dependencies, adds indirect dependencies that other dependencies have declared to export their settings. This method does not operate on self. Rather, it operates on the list of dependencies in the |dependencies| argument. For each dependency in that list, if any declares that it exports the settings of one of its own dependencies, those dependencies whose settings are "passed through" are added to the list. As new items are added to the list, they too will be processed, so it is possible to import settings through multiple levels of dependencies. This method is not terribly useful on its own, it depends on being "primed" with a list of direct dependencies such as one provided by DirectDependencies. DirectAndImportedDependencies is intended to be the public entry point. iiR N(R3R@R5R(RRRR]Rtdependency_dictt add_indextimported_dependency((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt_AddImportedDependenciesZs     cCs|j|}|j||S(sReturns a list of a target's direct dependencies and all indirect dependencies that a dependency has advertised settings should be exported through the dependency for. (RR(RRR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytDirectAndImportedDependenciesscCst|dkrt}nxU|jD]J}|jdkr=q"n|j|kr"|j||j|jq"q"W|S(sEReturns an OrderedSet of all of a target's dependencies, recursively.N(R3RRRtDeepDependenciesR(RRR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRs   cCs{|d krt}n|jd kr+|Sd||jkrMtdnd||jkr~td||jdn||jd}|tk}|r| r|S|dkr||jjdt r|j|j|S| r|d kr|S| r|d kr| r|S|j|krw|j|j|sG| rwx*|jD]}|j |||t qQWqwn|S(suReturns an OrderedSet of dependency targets that are linked into this target. This function has a split personality, depending on the setting of |initial|. Outside callers should always leave |initial| at its default setting. When adding a target to the list of dependencies, this function will recurse into itself with |initial| set to False, to collect dependencies that are linked into the linkable target for which the list is being built. If |include_shared_libraries| is False, the resulting dependencies will not include shared_library targets that are linked into this target. R*s&Missing 'target_name' field in target.R-s!Missing 'type' field in target %sRtdependencies_traverseRRRRRN(RRRR( R3RRRtlinkable_typesR5RRRt_LinkDependenciesInternalR(RRtinclude_shared_librariesRtinitialt target_typet is_linkableR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRs@         cCs)||jjdt}|j||S(si Returns a list of dependency targets whose link_settings should be merged into this target. t(allow_sharedlib_linksettings_propagation(RR5RR(RRR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytDependenciesForLinkSettingss cCs|j|tS(sP Returns a list of dependency targets that are linked into this target. (RR(RR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytDependenciesToLinkAgainstsN(RRRRRRRRRR3RRRRRRRR(((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRs   2  ) V cCsi}x9|jD]+\}}||krt||| s%Cycles in dependency graph detected: s (RRR3RmRnRR5RRR4RRR@tnexttiterRRRQR(Rtdependency_nodesRtspect root_nodet target_nodeRRRtdependency_nodeRtcyclestcycleRWtpaths((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytBuildDependencyList sB        cCsi}xE|jD]7}tjj|}||krt|||}t|j dkru|j j | | j j |ququW| j} t| t|kr| j stt|j } | j j | | j j | ng}xJ| jD]<}g|D]}|j^q?}|j ddj|q2Wtjddj|ndS( NRs,while computing dependencies of .gyp file %ssDependancy '%s' not foundis Cycle: %ss -> s/Cycles in .gyp file dependency graph detected: s (RMRmRnRRRR5RRoRR4RR3RNR@RRRRRRQR(RRRR8Rtbuild_file_nodettarget_dependenciesRRRwRRRt file_nodeRRRWR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyt#VerifyNoGYPFileCircularDependencies;sR        c Csx|D]}||}tjj|}|dkrH||j}nT|dkrj||j|}n2|dkr||j|}ntd|xS|D]K}||} || krqntjj|} t|| ||| qWqWdS(NR/R0R1sCDoDependentSettings doesn't know how to determine dependencies for (RmRnRRRRRR~( RZRRRRRR8RRRR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytDoDependentSettingsvs$          c Csx|D]}||}|d}|dkrd|kr?qn|jdg|d<||j|}d}x|t|kr||} || } | ddkr| jdt s| ddkr| |dkr||=qr|d}qrWt|dkr||d^]cCs||kstj|r|Stjjtjjtjjtjj |tjj ||j dd}|ddkr|d7}n|SdS(Ns\Ri( t exception_reR>RbRcRzRQRmRnRR{R(tto_filetfro_fileRtret((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytMakePathRelatives c sdfd}d}tfd|D}x|D]} t} t| tr|rwt||| } n| } t| to| jdst} qnrt| t kri} t | | ||nDt| t krg} t | | ||nt d| jj|rh| s9|| || r|j| | re|j| qeqqAx#| r| |kr|j| qkW|j|| | r|j| n|d}qAWdS(NcSs|jS(N(t__hash__(tval((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytRcs |r||kS||kS(N((txRR(t is_hashable(sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytis_in_set_or_list s  ic3s!|]}|r|VqdS(N((t.0R(R(sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pys sRs/Attempt to merge list item of unsupported type i(RRR<R2RRt startswithRR-RYR~RRt MergeListsRVR3RR4RtremoveR( ttotfroRRtis_pathsR4Rt prepend_indexthashable_to_setRt singletontto_item((RsH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pyRs@      cCs"x|jD] \}}||krt}t|trYt||ts~t}q~n%t|t||k r~t}n|rtd|jjd||jjd|qnt|trt |}|rt |||||s s:%s not allowed in the %s configuration, found in target %s(RmRnRRR5RRRRRRMR4tinvalid_configuration_keysR(RRt key_suffixesR8ROtconfigtconcretetmerged_configurationstconfigsRtold_configuration_dictRRZt target_valtkey_exttkey_baset delete_keysR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytSetUpConfigurationssX                  cCsg}g}x|jD]\}}|d}|dkrM|dkrMqnt|tk rt|d|d|jjn|d }||kr|j|qnt||tk r ||}t|d|d|jjdidd6dd6|n||kr|j|qqWx|D] }||=q3Wx1|D])}||} tdt| } |d} | |krxH|| D]<} x3t| D]%\} }| |krd | | \} }| | |krqun|j |ru|| | Target %s has an invalid target type '%s'. Must be one of %s.RR(is_Target %s has type %s but standalone_static_library flag is only valid for static_library type.N(RRRRRRR(R5R3RRQ(RRtVALID_TARGET_TYPESR((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateTargetType s   c Cs.|s dS|jdddkr&dS|jdg}i}xi|D]a}tjj|\}}|dk} | s{qEntjj|} |j| gj|qEWd } xL|jD]>\} } t | d kr| d| dj | f7} qqW| r*t d|| dt dndS(NR-RRs.cs.ccs.cpps.cxxs.ms.mms.ss.SRis %s: %s R s<static library %s has several files with the same basename: s`libtool on Mac cannot handle that. Use --no-duplicate-basename-check to disable this validation.s6Duplicate basenames in sources section, see list above(s.cs.ccs.cpps.cxxs.ms.mms.ss.S( R5R3RbRctsplitexttbasenameRR4RR@RQRR( RRR8tduplicate_basename_checkRt basenamestsourceRRtis_compiled_fileR+RR ((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateSourcesInTarget s,  $cCsi}i}|jdg}x|D]}|d}||krZtd||fn|||<|d}|jdr|d}n||krtdd||||d|fn|||The 'run_as' in target %s from file %s should be a dictionary.R"sEThe 'run_as' in target %s from file %s must have an 'action' section.sCThe 'action' for 'run_as' in target %s from file %s must be a list.tworking_directorysPThe 'working_directory' for 'run_as' in target %s in file %s should be a string.t environmentsNThe 'environment' for 'run_as' in target %s in file %s should be a dictionary.(R5R-RYRRRR<R(RRR8R*R'R"R>R?((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateRunAsInTarget) s,c Cs|jd}|jdg}x|D]}|jd}|sVtd|n|jdd }|d krtd|n|jd}|r(|d r(td |q(q(Wd S( s0Validates the inputs to the actions in a target.R*Rt action_namesKAnonymous action in target %s. An action must have an 'action_name' field.R s"Action in target %s has no inputs.R"is%Empty action as command in target %s.N(R5RR3( RRR8R*RR"RAR taction_command((sH//opt/alt/alt-nodejs16/root/usr/lib/python2.7/site-packages/gyp/input.pytValidateActionsInTargetG s   cCsx|jD]\}}t|trAt|}|||t|tkr`t|nt|tkrt|nt|tr ||=||t|s*                             !   0 ' % s -0 4        D # $ .   o "  ' E    2 ;  N H c  O    :    #