
    ,iz                     r   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZej                  dk  rddlmZ nddlmZ ddlZddlZddlZddlZddlZ	 ddlmZ ddlZ e
j6                  d      ZddlZej<                  Zd	Z%ejL                  jN                  Z'ejL                  jP                  Z(da)ej                  d   d
k\  Z* ejV                         dk(  Z, ejV                         j[                  d      Z.da/d Z0 G d de1      Z2 e3d  e e4e2            D              e2_5        d Z6d Z7d Z8d Z9d Z: e:       Z;d Z<dGdZ=d Z>d Z?dHdZ@	 	 dIdZAd ZBd ZCd ZDd  ZEd! ZFej                  d"        ZHdJd#ZId$ ZJd% ZKdKd&ZLd' ZMd( ZNd) ZOd* ZPd+ ZQd, ZRd- ZSd. ZTd/ ZUd0 ZVd1 ZWd2 ZXd3 ZYdLd4ZZd5 Z[d6 Z\d7 Z]d8 Z^d9d:d;Z_d<d=d;Z`d>Zad?Zbd@ZcdAZddBZedCZfdDZgdEZheidFk(  r e^        yy# e$ r< ddl mZ ddl!m"Z  e
j6                  d      Zddl#Z#e#jH                  j<                  ZY w xY w)Mz
    nodeenv
    ~~~~~~~
    Node.js virtual environment

    :copyright: (c) 2014 by Eugene Kalinin
    :license: BSD, see LICENSE for more details.
    N)   r   )quote)SafeConfigParser	iteritems)ConfigParseritemsz1.10.0r   Windows)CYGWINMSYSFc                 
   | rt         r| S 	 | j                  d      S # t        $ r\ 	 | j                  d       | cY S # t        $ r9 	 | j                  d      j                  d      cY cY S # t        $ r Y nw xY wY Y | S w xY ww xY w)z:Convert given text to UTF-8 encoding (as far as possible).utf8cp1252)is_PY3encodeUnicodeDecodeErrordecode)texts    L/var/www/html/langgraph-service/venv/lib/python3.12/site-packages/nodeenv.pyto_utf8r   D   s    6
{{6"" 	KKK! 	{{8,33F;;% K		sS    	B<B	A>A*%A>&B*	A63A>5A66A>9B=A>>Bc                   ^    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ed
d       Zed	        Zy)Configz"
    Configuration namespace.
    latestF2makeTNc           	      p   t        |      D ].  }t        j                  j                  |      }t        j                  j	                  |      sCt               }|j                  |       d}|j                  |      srt        t        |             D ]  \  }}|j                  d      s|j                  ||      s*t        |t              r|j                  ||      }n|j                  ||      }|r9t!        dj#                  t        j                  j%                  |      ||             t'        | ||        1 t        j                  j	                  d      rNt)        dd      5 }t'        | d|j+                         j-                         j/                  d             ddd       yy# 1 sw Y   yxY w)	z
        Load configuration from the given files in reverse order,
        if they exist and have a [nodeenv] section.
        Additionally, load version from .node-version if file exists.
        nodeenv_zCONFIG {0}: {1} = {2}z.node-versionrnodevN)reversedospath
expanduserexistsr   readhas_sectionr   vars
startswith
has_option
isinstancebool
getbooleangetprintformatbasenamesetattropenreadlinestriplstrip)	clsconfigfilesverbose
configfileini_filesectionattrvalv_files	            r   _loadzConfig._loadj   su    #;/ 	(J++J7J77>>*-#~HMM*%G''0&tCy1 (	c??3'&&w5c4("--gt<C",,w5C188((4dCA BT3'(	(4 77>>/*os+ LvVV__%6%<%<%>%E%Ec%JKL L +L Ls   )9F,,F5c                     t        d       t        ddj                  d t        t        t	        |                   D              z          y)z0
        Print defaults for the README.
        z    [nodeenv]z    z
    c              3   R   K   | ]  \  }}|j                  d       s	|d| ! yw)r   z = Nr)   ).0kr    s      r   	<genexpr>zConfig._dump.<locals>.<genexpr>   s-      %&#'1a<<$ A%&s   %'N)r/   joinsortedr   r(   )r7   s    r   _dumpzConfig._dump   sA    
 	ofx}} %&+1)DI2F+G%& & & 	'    F)__name__
__module____qualname____doc__r   npmwith_npmjobswithout_ssldebugprofiler   prebuiltignore_ssl_certsmirrorclassmethodr@   rI    rJ   r   r   r   X   sj    
 D
CHDKEGDHF"L "LH ' 'rJ   r   c              #   L   K   | ]  \  }}|j                  d       s||f  yw)r   NrC   )rD   r=   r>   s      r   rF   rF      s,      D#??3 
3Ks   "$c                 D    | j                  d      j                  dd      S )z
    Remove new-lines and
    utf-8
 )r   replace)outs    r   clear_outputrb      s      ::g&&tR00rJ   c                 ,    | j                  |dz   d      S )zC
    Remove bin directory of the current environment from PATH
    :r_   )r`   )envenv_bin_dirs     r   remove_env_bin_from_pathrg      s     ;;{S("--rJ   c                     | j                  dd      j                  d      dd }t        |      dk\  r|d   j                  d      d   |d<   t        t	        t
        |            S )	z:
    Parse version string to a tuple of integer parts
    r    r_   .Nr      +r   )r`   splitlentuplemapint)version_strr    s     r   parse_versionrr      s^     	C$**3/3A
1v{tzz#q!!S!rJ   c                     | j                   dk(  rLt        j                  ddgt        j                        j	                         \  }}t        t        |            S t        | j                         S )z7
    Parse the node version from the argparse args
    systemr   	--version)stdout)r   
subprocessPopenPIPEcommunicaterr   rb   )argsra   errs      r   node_version_from_argsr}      s[     yyH##[!*//;;F;= 	S\#.//##rJ   c                  t   t        j                  d      } | j                  t         j                         d }|t         j                  _        t        j                         }|j                  t         j                         t        j                  d      }|j                  |       | j                  |       | S )z&
    Create logger for diagnostic
    r   c                     | j                  |      }t        |dd      rdnd}| j                  j                  |t	        |      z         | j                          y )N	continuedFz%sz%s
)r0   getattrstreamwriter   flush)selfrecordmsgfss       r   emitzcreate_logger.<locals>.emit   sF    kk&!V[%8Tf"ws|+,

rJ   z%(message)s)fmt)
logging	getLoggersetLevelINFOStreamHandlerr   DEBUG	FormattersetFormatter
addHandler)loggrr   ch	formatters       r   create_loggerr      s    
 i(E	NN7<< 
 "&G 
			 BKK !!m4I OOI 
RLrJ   c                     t        j                  d      } | j                  ddt               | j                  dddd	t        j
                  d
       | j                  dddt        j                  d       t        s| j                  dddt        j                  d       | j                  ddd       | j                  dddt        j                  d       | j                  dd dt        j                  d!       | j                  d"d#dt        j                  d$       | j                  d%d&d'd(d)t        j                  *       | j                  d+d,d-t        j                  d.       | j                  d/d0dd1d2d3       | j                  d4d5dd6d2d7       | j                  d8d9d:d;d<       | j                  d=d>d?d@dAdBC       | j                  dDdEdF       | j                  dGdHdIdd2dJ       | j                  dKdLdd2dM       | j                  dNdOdt        j                  dP       | j                  dQdRdSt        j                  dT       | j                  dUdVdd2dW       | j                  dXdYdZdd2d[       | j                  d\d]d^dd2d_       | j                  d`dadd2db       | j                  dcd,dt        j                  dd       | j                  dedfdt        j                   dg       | j                  dhdidjdkl       | S )mz.
    Make a command line argument parser.
    z%(prog)s [OPTIONS] DEST_DIR)usageru   version)actionr   z-nz--noder   NODE_VERzThe node.js version to use, e.g., --node=0.4.3 will use the node-v0.4.3 to create the new environment. The default is last stable version (`latest`). Use `lts` to use the latest LTS release. Use `system` to use system-wide node.)destmetavardefaulthelpz--mirrorstorerX   z1Set mirror server of nodejs.org to download from.)r   r   r   r   z-jz--jobsrR   zOSets number of parallel commands at node.js compilation. The default is 2 jobs.)r   r   r   z--load-averageload_averagezQSets maximum load average for executing parallel commands at node.js compilation.)r   r   --without-sslrS   
store_truez!Build node.js without SSL support)r   r   r   r   --debugrT   z"Build debug variant of the node.js	--profilerU   zEnable profiling for node.jsz--makez-m	make_path	MAKE_PATHzPath to make command)r   r   r   r   z--sourcerV   store_falsezInstall node.js from the sourcez-vz	--verboser9   FzVerbose modez-qz--quietquietz
Quiet modez-Cz--config-fileconfig_fileNzfLoad a different file than '~/.nodeenvrc'. Pass an empty string for no config (use built-in defaults).z-rz--requirementsrequirementsr_   FILENAMEz?Install all the packages listed in the given requirements file.)r   r   r   r   z--promptpromptz:Provides an alternative prompt prefix for this environmentz-lz--listlistz Lists available node.js versionsz--updateupdatez+Install npm packages from file without nodez
--with-npmrQ   zBuild without installing npm into the new virtual environment. Required for node.js < 0.6.3. By default, the npm included with node.js is used. Under Windows, this defaults to true.z--npmrP   NPM_VERzThe npm version to use, e.g., --npm=0.3.18 will use the npm-0.3.18.tgz tarball to install. The default is last available version (`latest`).z--no-npm-cleanno_npm_cleanz9Skip the npm 0.x cleanup.  Cleanup is enabled by default.z--python-virtualenvz-ppython_virtualenvzUse current python virtualenvz--clean-src-c	clean_srcz)Remove "src" directory after installationz--forceforcez.Force installation in a pre-existing directoryz
--prebuiltz/Install node.js from prebuilt package (default)z--ignore_ssl_certsrW   z5Ignore certificates for package downloads. - UNSAFE -DEST_DIRenv_dir?zDestination directory)r   r   nargsr   )argparseArgumentParseradd_argumentnodeenv_versionr   r   rX   is_WINrR   rS   rT   rU   r   rV   rQ   rP   rW   )parsers    r   make_parserr      s    $$+-F I  @ hVZ0  1 Xv}}@  B
 (% 	 	&
 	>& 	 	'
 	-););4 	 	6
 	G5 	 	7
 	i/ 	 	1
 	d'KK	 	 	! 	Z &//2 	 	4
 k)U  
 i'5  
 oM4F  G
 RN  P
 I  K hVU/  1
 U:  <
 :V__A  B e6::<  = ~UH  J
 t*=U,  .
 t+U8  :
 U=  ?
 :V__>  @
 #5V%<%<D  F
 #$  & MrJ   c                    t               }|j                         }|j                  
g d|_        ny|j                  sg |_        net        j                  j                  |j                        s*|j                  dj                  |j                               |j                  g|_        | s|S |j                  s)|j                  s|j                  s|j                  d       |S )z]
    Parses command line arguments.

    Set `check` to False to skip validation checks.
    )z	./tox.iniz./setup.cfgz~/.nodeenvrcz Config file '{0}' doesn't exist!z<You must provide a DEST_DIR or use current python virtualenv)r   
parse_argsr   r"   r#   r%   errorr0   r   r   r   )checkr   r{   s      r   r   r   z  s     ]FDG ww~~d../LL;BB  " # ,,-99%%dllLL 9 : KrJ   c                    t         j                  j                  |       sMt        j	                  d| t        d             t        j                  |        t        j	                  d       yt        j	                  d|        y)z
    Create directory
    z * Creating: %s ... Tr   extradone.z * Directory %s already existsN)r"   r#   r%   loggerrT   dictmakedirsr#   s    r   mkdirr     sS     77>>$+T9MN
DW5t<rJ   c                     t         j                  t         j                  z  t         j                  z  t         j                  z  t         j
                  z  }t        j                  | |       y N)statS_IRWXUS_IXGRPS_IRGRPS_IROTHS_IXOTHr"   chmod)filename	mode_0755s     r   make_executabler     sF    , $-/3||<IHHXy!rJ   c                 v   t        |      }t        rt        |t              st        |d      }t        j
                  j                  |       sit        j                  d| t        d             t        | d      5 }|j                  |       ddd       t        |        t        j                  d       yt        | d	      5 }|j                         }ddd       |v rt        j                  d
|        y|st        j                  d|        y|r=t        j                  d|        t        | d      5 }|j                  |       ddd       yt        j                  d|        t        | d      5 }|j                  |       ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   yxY w)z-
    Create file and write content in it
    r]   z * Writing %s ... Tr   r   wbNr   rbz * Content %s already in placez: * File %s exists with different content;  not overwritingz * Appending data to %sabz" * Overwriting %s with new content)r   r   r+   bytesr"   r#   r%   r   rT   r   r3   r   r   r&   info)r   content	overwriteappendfcs         r   	writefiler     sr    gGj%0)77>>$)4td7KL$ 	GGG	W$ 	A	a<LL94@KK +,02KK148dD! !Q !8$?$ 	GGG	 	1	 		 	!	 	s0   ;FF3F#0F/FF #F,/F8c           	         g }g }| D ]T  }t        |      dkD  r|dd dz   |dd z   }d|v sd|v sd|v sd	|v rd
|j                  dd      z  }|j                  |       V dj                  |      }t        j                  d|z         |rdj                  |       } t        j                  }	|r2t        j                  j                         }
|r|
j                  |       nd}
	 t        j                  | t        j                  d|	||
|      }|j$                  }	|	r|	j'                         }|snq	 t(        r |j+                  d      j-                         }n|j+                  d      j-                         }|j                  |       |rt        j1                  |       |	r|j3                          |j4                  r9|r|D ]  }t        j7                  |        t9        d|d|j4                        |j4                  |fS # t        $ r4 t        j                          d   }t        j#                  d|d|        w xY w# t.        $ r" |j+                  d      j-                         }Y w xY w)z'
    Execute cmd line in sub-shell
    -   N   z...i r^   "'z"%s"z\"z ** Running command %s)stderrstdinrv   cwdre   shell   zError z while executing command mbcsr   cp866zCommand z failed with error code )rm   r`   r   rG   r   rT   rw   ry   r"   environcopyr   rx   STDOUT	Exceptionsysexc_infor   rv   r4   r   r   rstripr   r   wait
returncodecriticalOSError)cmdshow_stdoutin_shellr   	extra_env
all_output	cmd_partspartcmd_descrv   re   proceliness                  r   callitr    sD   
 JI t9r>9u$tCDz1D$;$$,#+DLLe44D xx	"H
LL)H45hhsm __F jjooJJy!
))fH. [[F
 	1{{6*113{{6*113 	$KK  	IIK  #"#!4??4 5 	5 ??J&&=  LLN1aJK " 	1;;w'..0D	1s   !*H  -AI   =H= (I+*I+c                 B    t        |       dkD  rt        d| dS t        S )N)r      z/v/)rr   src_base_url)rq   s    r   get_root_urlr    s     [!F*(+66rJ   c                  2    t        j                  d      dk(  S )NHOST_GNU_TYPEzx86_64-pc-linux-musl)	sysconfigget_config_varrZ   rJ   r   is_x86_64_muslr    s    ##O48NNNrJ   c                  0    t        j                         dk(  S )Nriscv64)platformmachinerZ   rJ   r   
is_riscv64r  !  s    **rJ   c                 h   i 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
dddddd}t        j                         j                         |t        j                         j                            d}t        st
        rd|z  }nt               rd}nd|z  }d| |}t        |       |z   S )Nx86i686x86_64x64amd64armv6larmv7larmv8laarch64arm64zarm64/v8armv8zarmv8.4ppc64les390xr  )rt   archz-win-%(arch)s.zipz-linux-x64-musl.tar.gzz-%(system)s-%(arch)s.tar.gzznode-v)r  rt   lowerr  r   	is_CYGWINr  r  )r   archmapsysinfopostfixr   s        r   get_node_bin_urlr0  %  s<   %% 	% 	%	
 	% 	( 	( 	( 	7 	 	G 	 	7 	9 	  	9!G& //#))+((*0023G %/		*/'9&0H 8++rJ   c                 (    d| z  }t        |       |z   S )Nznode-v%s.tar.gz)r  )r   tar_names     r   get_node_src_urlr3  F  s     7*H 8++rJ   c               /      K   t        j                  | i |}	 | |j                          y# |j                          w xY ww)z!Compatibility layer because py26.N)tarfiler3   close)r{   kwargstfs      r   tarfile_openr9  K  s7      
t	&v	&B


s   A. AA  Ac                    |dkD  r.	 t        j                  t        |       j                               S yy# t        $ r;}t
        j                  dj                  | |             |dz  }|dk(  r|Y d}~nd}~ww xY w|dkD  r|P)zMDo multiple attempts to avoid incomplete data in case
    of unstable networkr   z*Incomplete read while reading from {} - {}r   N)ioBytesIOurlopenr&   IncompleteReadr   warningr0   )node_url	n_attemptr	  s      r   _download_node_filerB  U  s     a-		::gh/44677   	NN%vh2 NIA~ 	 a-s   +5 	A91A44A9c           
         t         j                  dt        d             t        |       }t         j                  dt        d             t        st
        r.t        j                  |      }t        j                  d      }d }n6t        |      }t        j                  d      }t        j                  d	      }|5 }t        j                  |j                        }d
|z  }	 ||      D 
cg c]   }
t        j                  |	 ||
            |
" }}
|j!                  ||       ddd       yc c}
w # 1 sw Y   yxY w)z
    Download source code
    ri   Tr   r   namelistc                     | S r   rZ   )r  s    r   <lambda>z#download_node_src.<locals>.<lambda>p  s     rJ   )fileobj
getmembersnamez0node-v%s[^/]*/(README\.md|CHANGELOG\.md|LICENSE)N)r   r   r   rB  r   r,  zipfileZipFileoperatormethodcallerr9  
attrgetterreescaper   match
extractall)r@  src_dirr{   dl_contentsctxmembersmember_namearchivenode_verrexp_stringmemberextract_lists               r   download_node_srcr]  e  s    KK4$/K0%h/K
KK4$/K0ook*''
3!;/''5))&1	 	299TYY'I "'*
xx[%89A 
 

 	7L1	2 	2
		2 	2s    /D6/%D1D61D66D?c                 &   d}ddt         d|di}t        j                  | d |      }t        rOt	        j
                  t        j                        }t        j                  |_        t        j                  ||      S t        j                  |      S )Nz$https://github.com/ekalinin/nodeenv/z
User-Agentznodeenv/z ())context)
r   urllib2RequestrW   ssl
SSLContextPROTOCOL_TLS	CERT_NONEverify_moder=  )urlhome_urlheadersreqr`  s        r   r=  r=    sm    5H/8LMG
//#tW
-C ..!1!12!mmsG44??3rJ   c                 d   t        j                  |       D ]  }t         j                  j                  | |      }t         j                  j                  ||      }t         j                  j	                  |      r	 t        j                  ||||       |t         j                  j                  |      rJt         j                  j                  |      rt        j                  t        j                  |      |       t        j                  ||        y # t        $ r t        ||||       Y w xY wr   )r"   listdirr#   rG   isdirshutilcopytreer   islinksymlinkreadlinkcopy2)srcdstsymlinksignoreitemr  ds          r   rp  rp    s    

3 #GGLLd#GGLLd#77==11h7 ww~~a ww~~a(JJr{{1~q1Q"#  1Ax01s   9DD/.D/c                 .   t         j                  dt        d             t        rt	        | d      }t        |       n;t        r3t	        | d      }t        |       t        t	        | dd      t               n| }|t        d|z        z   }t        j                  |      \  }t        ||d       t        r?d	D ]:  }t	        | d|      }t        j                  j                  |      s0t        |       < t         j                  dt        d             y
)z1
    Copy prebuilt binaries into environment
    ri   Tr   r   Scriptsbinr   z
/node-v%s*)rP   npxnode.exeN)r   r   r   r   rG   r   r,  r   CYGWIN_NODEr   globrp  r"   r#   r%   r   )r   rS  node_versionr   src_folder_tpl
src_folderr   s          r   copy_node_from_prebuiltr    s     KK4$/K0GY'd	GU#d$wv.<w|l'BCCN))N+KJZt$2 	*HGUH5Hww~~h')	*
 KK4$/K0rJ   c                    i }ddg}t        fd|      }t        ||      D cg c]8  \  }}|1t        |      dkD  rdj                  ||      ndj                  |      : }	}}t	        t
        j                  dt
        j                  d         dkD  rt        j                  d	      }
|
st        d
      t        j                  d|
       t        |d      }t        |d      }t        |       t        j                  j!                  |      st#        dd|
|g       dj                  |t        j$                  j'                  dd            |d<   ddt)        |       z  g}j*                  r|j-                  d       j                  r|j-                  d       j.                  r|j-                  d       j0                  }t#        |j2                  d||       t        j5                  dt7        d             t#        |g|	z   j2                  d||       t        j5                  dt7        d             t#        |dz   gj2                  d||       y c c}}w )Nzload-averagerR   c                 <    t        | j                  dd            S )N-r   )r   r`   )xr{   s    r   rF  z%build_node_from_src.<locals>.<lambda>  s    '$		#s 34 rJ   r   z	--{0}={1}z--{0}majorrj   python2zbPython >=3.0 virtualenv detected, but no python2 command (required for building node.js) was foundz$ * Temporarily pointing python to %stmpbinpythonlnz-sz{}:{}PATHr_   z./configurez--prefix=%sr   r   r   Tri   r   r   z install)ro   ziprm   r0   r   r   version_inforo  whichr   r   rT   rG   r   r"   r#   r%   r  r   r.   _quoterS   r   rU   r   r9   r   r   )r   rS  node_src_dirr{   re   make_param_namesmake_param_valuesrI  value	make_optspython2_pathnode_tmpbin_dirnode_tmpbin_linkconf_cmdmake_cmds      `           r   build_node_from_srcr    s"   
C&/4 /1BC D% u:> 	4'&~~d3	4I  s#*:*:1*=>B ||I.D  	;\Jw1:oww~~./D$.>?@nn_%'ZZ^^FB%?AF 	w'H (zz	"||$~~H
8T\\4s;
KK4$/K0
H:	!4<<|SI
KK4$/K0
Hz!"DLL$cJWs   =Ic                 f    	 t        | ||       y# t        $ r t        j                  d        w xY w)z`
    Download source code for node.js, unpack it
    and install it in virtual environment.
    r_   N)install_node_wrappedBaseExceptionr   r   )r   rS  r{   s      r   install_noder    s0    
Wgt4 Bs     0c                     t        |       } t        |t        d|j                  z              }|j                  rdnd}t
        j                  d|d|j                  dt        d      	       |j                  rt        |j                        }nt        |j                        }t        j                  j                  |      s	 t        |||       t
        j                  dt        d      	       |j                  rt%        | ||j                         nt'        | |||       t
        j                  d       y # t        j                  $ r= d
|v rt        |j!                  d
d      ||       nt
        j#                  d|z         Y w xY w)Nznode-v%srV   sourcez * Install z node (z) Tr   r   r&  r   zFailed to download from %sri   z done.)abspathrG   r   r   rV   r   r   r   r0  r3  r"   r#   r%   r]  ra  	HTTPErrorr`   r?  r  r  )r   rS  r{   r  src_typer@  s         r   r  r    s:   gGdii)?!@AL!]]zH
KKh		BT*  , }}#DII.#DII. 77>>,'	Hh6 KK4$/K0}}$))<GWlDA
KK    	H("!("2"27E"B")41 ;hFG	Hs   D= =AFFc                 D   t         j                  d|j                  z  t        d             t        t        j
                  |j                  rdnd|j                        }t        j                  dd	d
j                  t        t        | dd            |j                        f|t        j                  t        j                  t        j                        }|j                         \  }}|j                  rt         j                  |       t         j                  d       y)\
    Download source code for npm, unpack it
    and install it in virtual environment.
     * Install npm.js (%s) ... Tr   r   noyes)cleannpm_installshr   z. {0} && npm install -g npm@{1}r}  activate)re   r   rv   r   r   N)r   r   rP   r   r"   r   r   rw   rx   r0   r  rG   ry   r   rz   r9   )r   _src_dirr{   re   r  ra   r   s          r   install_npmr  %  s    
 KK-8T*  ,



''dUHHC
 $-44tGUJ78	
 oo  D FC||C
KKrJ   c                 j   t         j                  d|j                  z  t        d             d|j                  z  }t	        j
                  t        |      j                               }t        | d      }t        |dd      }t        j                  j                  |      rt        j                  |       t        j                  j                  t        |d	            rt        j                  t        |d	             t        j                  j                  t        |d
            rt        j                  t        |d
             t        j                   |d      5 }|j#                  |       ddd       d|j                  z  }t        j$                  t        ||      |       t        j&                  t        ||dd	      t        |d	             t        j&                  t        ||dd
      t        |d
             t(        rt        j&                  t        |d
      t        | dd
             t        j$                  t        |d      t        | dd             d}	dj+                  |	|j                        }
t-        t        | dd      t        |
      j                                yy# 1 sw Y   ;xY w)r  r  Tr   r   z*https://github.com/npm/cli/archive/v%s.zipr|  node_modulesrP   znpm.cmdz
npm-cli.jsr   Nzcli-%sr}  z)https://raw.githubusercontent.com/npm/cliz{}/{}/bin/npm)r   r   rP   r   r;  r<  r=  r&   rG   r"   r#   r%   ro  rmtreeremoverJ  rK  rR  rp  r   r,  r0   r   )r   rS  r{   npm_urlnpm_contentsbin_pathnode_modules_pathzipfnpm_ver
npm_gh_urlnpm_bin_urls              r   install_npm_winr  D  s   
 KK-8T*  ,:TXXEG::gg.3356LGY'HX~u=	ww~~'('(	ww~~d8Y/0
		$x+,	ww~~d8\23
		$x./	s	+ !t ! !G
OOD'*,=>
KKWgui8Xy)+
KKWgul;X|,. D<0%6	8X~6We^<	>@
%,,ZB$wu-w{/C/H/H/JK ! !s   J((J2c                 F   t         j                  dt        d             t        |j                        j                         D cg c]  }|j                          }}t        | dd      }|j                  j                  d      dk(  r|j                  n|j                  d	z   }|j                  d
k(  s|dk\  rdt        |      z   dz   }ndt        |      z   dz   dz   }|D ]#  }|st        |d|iz  g|j                  d       % t         j                  d       yc c}w )z*
    Install node.js packages via npm
    z  * Install node.js packages ... Tr   r   r}  r  ri   rj   z.0r   z1.0.0z. z && npm install -g %(pack)sz && npm install %(pack)sz && npm activate %(pack)spack)r   r  r  r   N)r   r   r   r3   r   	readlinesr5   rG   rP   countr  r  r9   )r   r{   packagepackagesactivate_pathreal_npm_verr   s          r   install_packagesr  n  s%    KK2T*  , T&&'1135G 5H 5%4M#xx~~c2a7488TXX_Lxx8|w6VM**+, VM**())*  O67##%26,,	OO KK%5s   Dc                 h   t         r7t        t        t        d}t	        | d      }t	        |d      }t	        |d      }n6t
        t        t        d}t	        | d      }t	        |d      }t	        |d      }t        rt        |       |j                  d	k(  r	t        |d<   t	        d
d      }|j                  xs? dt        j                  j                  t        j                  j                  |             z  }|j                  d	k(  rHt!        t        j"                  d   |      }dD ]  }	t%        j&                  |	|      }| n |sJ d       |j)                         D ]`  \  }
}t	        ||
      }|j+                  d|      }|j+                  dt        j                  j                  |             }|j+                  d|      }|j+                  dt        j                  j                  |            }|j+                  d|      }t        rGt-        ddt        j                  j                  |      gdd      \  }}|j+                  d|d         }n|j+                  dd      }d}|j.                  r?t0        j3                  |
d      }t4        j3                  |
d      }||z   |z   }t7        |      }t9        |||       c t        j                  j;                  |      s/t         r	 t-        d |dgd!d!       yt        jB                  d|       yy# t<        $ r t>        jA                  d"       Y yw xY w)#z7
    Install virtual environment activation script
    )zactivate.batzdeactivate.batzActivate.ps1r|  r  z
nodejs.exe)r  activate.fishshimr}  r   nodejsrt   libr  z(%s)r  )r  r   r   Nz-Did not find nodejs or node system executable__NODE_VIRTUAL_PROMPT____NODE_VIRTUAL_ENV____SHIM_NODE____BIN_NAME____MOD_NAME__cygpathz-wF)r  r  __NPM_CONFIG_PREFIX__r   z$NODE_VIRTUAL_ENVr_   )r   mklinkTz'Error: Failed to create nodejs.exe link)"r   ACTIVATE_BATDEACTIVATE_BATACTIVATE_PS1rG   ACTIVATE_SHACTIVATE_FISHSHIMr,  r   r   r   r"   r#   r1   r  rg   r   ro  r  r   r`   r  r   DISABLE_PROMPTr.   ENABLE_PROMPTr,   r   r%   r   r   r   rr  )r   r{   filesbin_dir	shim_nodeshim_nodejsmod_dirr   path_var	candidaterI  r   	file_pathr   cyg_bin_dirneed_appenddisable_promptenable_prompts                     r   install_activater    s    (,(

 w	**-	7L1 $*

 w&&)	7H-gyyHf5.)G[[OFRWW%5%5bggoog6N%OOFyyH+BJJv,>H+ 	IYX>I$	 IIIy :g$'	//";VD//"8"$''//'":<///9=//."''2B2B72KL//.':#D"''//'":;!E3NA{ oo&={1~NGoo&=&9;G !!+//b9N)--dB7M$w.>G~.K)W[99:< 77>>+&H+z:D$G JJv{+ '  HFGHs   'L L10L1c                     t         s6t        t        | dd      d      5 }|j                  t               d d d        y y # 1 sw Y   y xY w)Nr}  predeactivatea)r   r3   rG   r   PREDEACTIVATE_SH)r   hooks     r   set_predeactivate_hookr    sF    $w7= 	)JJ'(	) 	) 	) 	)s	   >Ac                    t         j                  j                  |       rC|j                  s7t        j                  d|        |j                  st        j                  d       t        t        t        | d                  }t        |       |j                  dk7  rt        | ||       n@t        t        | d             t        t        | d             t        t        | dd             t        | |       t!        |      dk  s|j"                  r"t$        st&        rt(        nt*        } || ||       |j,                  rt/        | |       |j                  rt1        |        |j2                  rt5        j6                  |       y	y	)
z3
    Creates a new environment in ``env_dir``.
    z! * Environment already exists: %srj   ru  rt   r}  r  r  )r      r   N)r"   r#   r%   r   r   r   r   r   exitr   r  rG   r   r   r  r  r}   rQ   r   r,  r  r  r   r  r  r   ro  r  )r   r{   rS  instfuncs       r   create_environmentr    s    
ww~~gt'='=7AzzHHQKgd7E234G	'NyyHWgt,d7E"#d7E"#d7E>23 Wd#d#i/4==&,	?{'4($'w'~~g rJ   c                      t        dt        z        } t        j                  | j	                         j                  d            S )Nz%s/index.jsonzUTF-8)r=  r  jsonloadsr&   r   )responses    r   _get_versions_jsonr    s1    56H::hmmo,,W566rJ   c                  l    t               D  cg c]  } | d   j                  d       c} d d d   S c c} w )Nr   r    )r  r6   )dcts    r   get_node_versionsr    s1    2D2FG3C	N!!#&G"MMGs   1c                      t               } t        dt        |       d      D cg c]
  }| ||dz     }}|D ]&  }t        j	                  dj                  |             ( yc c}w )z;
    Prints into stdout all available node.js versions
    r      	N)r  rangerm   r   r   rG   )versionsposchunks_of_8chunks       r   print_node_versionsr    si     !"H).q#h-)C"%S1WK   &DIIe$%&s   A c                      t        t               t                d        fdt        fdt	               D        d      S )z9
    Return last node.js version matching the filter
    )r  riscltsc                 ^    r| d   syt               rd| d   vryt               rd| d   vryy)Nr
  Fzlinux-x64-muslr  zlinux-riscv64T)r  r  )r    r
  s    r   version_filterz._get_last_node_version.<locals>.version_filter  s:    qx 0'
 B\oQwZ?rJ   c              3   V   K   | ]   } |      r|d    j                  d       " yw)r   r    N)r6   )rD   r    r  s     r   rF   z)_get_last_node_version.<locals>.<genexpr>%  s1      E.2C 9$$S) Es   &)N)r/   r  r  nextr  )r
  r  s   `@r   _get_last_node_versionr    sD     
."JL
EF	  E,.EFJL LrJ   c                      t               S )z,
    Return last stable node.js version
    r  rZ   rJ   r   get_last_stable_node_versionr  )  s     "##rJ   c                      t        d      S )z7
    Return the last node.js version marked as LTS
    T)r
  r  rZ   rJ   r   get_last_lts_node_versionr  0  s     "d++rJ   c                 \   | j                   r	t        t        d      rt        j                  }t        |      S t        t        d      r<t        j                  t        j                  k7  rt        j                  }t        |      S dt
        j                  v rt        j                  }t        |      S dt
        j                  v rt
        j                  d   }t        |      S t        j                  d       t        j                  d       t              S | j                  }t        |      S )Nreal_prefixbase_prefixCONDA_PREFIXVIRTUAL_ENVz!No python virtualenv is availablerj   )r   hasattrr   prefixr  r"   r   r   r   r  r   r   )r{   ress     r   get_env_dirr  7  s    3&**C 3< S-(S__

-J**C 3< rzz)**C 3< bjj(**]+C 3<	 LL<=HHQK 3< ll3<rJ   c                     dt         j                  v rt        j                          yt	        d      } t        j                  | j                  | j                         t	               } | j                  j                         dk(  r&t        r t        j                  d       t        d       | j                  ad}| j                  r(d| j                  v r| j                  an&| j                  }nt#               s
t%               rd	}nd
}t         d|z  a| j                  r| j                  j                         dk(  rt'               | _        n,| j                  j                         dk(  rt)               | _        | j*                  rt-                y| j.                  rt1        |       }t3        ||        yt1        |       }t5        ||        y)z
    Entry point
    z--dump-config-defaultsNF)r   rt   z4Installing system node.js on win32 is not supported!r   z://zunofficial-builds.nodejs.orgz
nodejs.orgzhttps://%s/download/releaser   r
  )r   argvr   rI   r   r@   r   r9   r   r+  r   r   r   r  rW   rX   r  r  r  r  r  r   r  r   r  r  r  )r{   
src_domainr   s      r   mainr!  J  sF   
  388+E"D
LL!!4<<0<DyyH$KLQ
 ,,J{{DKK;;LJ		Z\3
!
4zA99		)X502			e	#-/	yy	d#$'d#7D)rJ   z
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
NODE_VIRTUAL_ENV_DISABLE_PROMPT=1
z
# disable nodeenv's prompt
# (prompt already changed by original virtualenv's script)
# https://github.com/ekalinin/nodeenv/issues/26
set NODE_VIRTUAL_ENV_DISABLE_PROMPT 1
)r  r  z'
unset NODE_VIRTUAL_ENV_DISABLE_PROMPT
z(
set -e NODE_VIRTUAL_ENV_DISABLE_PROMPT
z#!/usr/bin/env sh
export NODE_PATH='__NODE_VIRTUAL_ENV__/lib/node_modules'
export NPM_CONFIG_PREFIX='__NODE_VIRTUAL_ENV__'
export npm_config_prefix='__NODE_VIRTUAL_ENV__'
exec '__SHIM_NODE__' "$@"
aQ  
@echo off
set "NODE_VIRTUAL_ENV=__NODE_VIRTUAL_ENV__"
if not defined PROMPT (
    set "PROMPT=$P$G"
)
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
)
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
set "PROMPT=__NODE_VIRTUAL_PROMPT__ %PROMPT%"
if defined NODE_PATH (
    set "_OLD_VIRTUAL_NODE_PATH=%NODE_PATH%"
    set NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
) else (
    set "_OLD_VIRTUAL_PATH=%PATH%"
)
set "PATH=%NODE_VIRTUAL_ENV%\Scripts;%PATH%"
:END

aV  @echo off
if defined _OLD_VIRTUAL_PROMPT (
    set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
)
set _OLD_VIRTUAL_PROMPT=
if defined _OLD_VIRTUAL_NODE_PATH (
    set "NODE_PATH=%_OLD_VIRTUAL_NODE_PATH%"
    set _OLD_VIRTUAL_NODE_PATH=
)
if defined _OLD_VIRTUAL_PATH (
    set "PATH=%_OLD_VIRTUAL_PATH%"
)
set _OLD_VIRTUAL_PATH=
set NODE_VIRTUAL_ENV=
:END
aj  
function global:deactivate ([switch]$NonDestructive) {
    # Revert to original values
    if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
        copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
        remove-item function:_OLD_VIRTUAL_PROMPT
    }
    if (Test-Path env:_OLD_VIRTUAL_NODE_PATH) {
        copy-item env:_OLD_VIRTUAL_NODE_PATH env:NODE_PATH
        remove-item env:_OLD_VIRTUAL_NODE_PATH
    }
    if (Test-Path env:_OLD_VIRTUAL_PATH) {
        copy-item env:_OLD_VIRTUAL_PATH env:PATH
        remove-item env:_OLD_VIRTUAL_PATH
    }
    if (Test-Path env:NODE_VIRTUAL_ENV) {
        remove-item env:NODE_VIRTUAL_ENV
    }
    if (!$NonDestructive) {
        # Self destruct!
        remove-item function:deactivate
    }
}

deactivate -nondestructive
$env:NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"

# Set the prompt to include the env name
# Make sure _OLD_VIRTUAL_PROMPT is global
function global:_OLD_VIRTUAL_PROMPT {""}
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
function global:prompt {
    Write-Host -NoNewline -ForegroundColor Green '__NODE_VIRTUAL_PROMPT__ '
    _OLD_VIRTUAL_PROMPT
}

# Clear NODE_PATH
if (Test-Path env:NODE_PATH) {
    copy-item env:NODE_PATH env:_OLD_VIRTUAL_NODE_PATH
    remove-item env:NODE_PATH
}

# Add the venv to the PATH
copy-item env:PATH env:_OLD_VIRTUAL_PATH
$env:PATH = "$env:NODE_VIRTUAL_ENV\Scripts;$env:PATH"
a  

# This file must be used with "source bin/activate" *from sh*
# you cannot run it directly

deactivate_node () {
    # reset old environment variables
    if [ -n "${_OLD_NODE_VIRTUAL_PATH:-}" ] ; then
        PATH="${_OLD_NODE_VIRTUAL_PATH:-}"
        export PATH
        unset _OLD_NODE_VIRTUAL_PATH

        NODE_PATH="${_OLD_NODE_PATH:-}"
        export NODE_PATH
        unset _OLD_NODE_PATH

        NPM_CONFIG_PREFIX="${_OLD_NPM_CONFIG_PREFIX:-}"
        npm_config_prefix="${_OLD_npm_config_prefix:-}"
        export NPM_CONFIG_PREFIX
        export npm_config_prefix
        unset _OLD_NPM_CONFIG_PREFIX
        unset _OLD_npm_config_prefix
    fi

    # This should detect bash and zsh, which have a hash command that must
    # be called to get it to forget past commands.  Without forgetting
    # past commands the $PATH changes we made may not be respected
    if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
        hash -r
    fi

    if [ -n "${_OLD_NODE_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_NODE_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_NODE_VIRTUAL_PS1
    fi

    unset NODE_VIRTUAL_ENV
    if [ ! "${1:-}" = "nondestructive" ] ; then
    # Self destruct!
        unset -f deactivate_node
    fi
}

freeze () {
    local NPM_VER=`npm -v | cut -d '.' -f 1`
    local re="[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"
    if [ "$NPM_VER" = '0' ]; then
        NPM_LIST=`npm list installed active 2>/dev/null | \
                  cut -d ' ' -f 1 | grep -v npm`
    else
        local npmls="npm ls -g"
        if [ "${1:-}" = "-l" ]; then
            npmls="npm ls"
            shift
        fi
        NPM_LIST=$(eval ${npmls} | grep -E '^.{4}\w{1}'| \
                                   grep -o -E "$re"| grep -v npm)
    fi

    if [ -z "$@" ]; then
        echo "$NPM_LIST"
    else
        echo "$NPM_LIST" > $@
    fi
}

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
# http://stackoverflow.com/a/246128
if [ "${BASH_SOURCE:-}" ] ; then
    SOURCE="${BASH_SOURCE[0]}"

    while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
    DIR="$( command cd -P "$( dirname "$SOURCE" )" > /dev/null && pwd )"

    NODE_VIRTUAL_ENV="$(dirname "$DIR")"
else
    # dash not movable. fix use case:
    #   dash -c " . node-env/bin/activate && node -v"
    NODE_VIRTUAL_ENV="__NODE_VIRTUAL_ENV__"
fi

# NODE_VIRTUAL_ENV is the parent of the directory where this script is
export NODE_VIRTUAL_ENV

_OLD_NODE_VIRTUAL_PATH="$PATH"
PATH="$NODE_VIRTUAL_ENV/lib/node_modules/.bin:$NODE_VIRTUAL_ENV/__BIN_NAME__:$PATH"
export PATH

_OLD_NODE_PATH="${NODE_PATH:-}"
NODE_PATH="$NODE_VIRTUAL_ENV/__MOD_NAME__"
export NODE_PATH

_OLD_NPM_CONFIG_PREFIX="${NPM_CONFIG_PREFIX:-}"
_OLD_npm_config_prefix="${npm_config_prefix:-}"
NPM_CONFIG_PREFIX="__NPM_CONFIG_PREFIX__"
npm_config_prefix="__NPM_CONFIG_PREFIX__"
export NPM_CONFIG_PREFIX
export npm_config_prefix

if [ -z "${NODE_VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
    _OLD_NODE_VIRTUAL_PS1="${PS1:-}"
    if [ "x__NODE_VIRTUAL_PROMPT__" != x ] ; then
        PS1="__NODE_VIRTUAL_PROMPT__ ${PS1:-}"
    else
    if [ "`basename \"$NODE_VIRTUAL_ENV\"`" = "__" ] ; then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        PS1="[`basename \`dirname \"$NODE_VIRTUAL_ENV\"\``] ${PS1:-}"
    else
        PS1="(`basename \"$NODE_VIRTUAL_ENV\"`) ${PS1:-}"
    fi
    fi
    export PS1
fi

# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands.  Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then
    hash -r
fi
a  

# This file must be used with "source bin/activate.fish" *from fish*
# you cannot run it directly

function deactivate_node -d 'Exit nodeenv and return to normal environment.'
    # reset old environment variables
    if test -n "$_OLD_NODE_VIRTUAL_PATH"
        set -gx PATH $_OLD_NODE_VIRTUAL_PATH
        set -e _OLD_NODE_VIRTUAL_PATH
    end

    if test -n "$_OLD_NODE_PATH"
        set -gx NODE_PATH $_OLD_NODE_PATH
        set -e _OLD_NODE_PATH
    else
        set -e NODE_PATH
    end

    if test -n "$_OLD_NPM_CONFIG_PREFIX"
        set -gx NPM_CONFIG_PREFIX $_OLD_NPM_CONFIG_PREFIX
        set -e _OLD_NPM_CONFIG_PREFIX
    else
        set -e NPM_CONFIG_PREFIX
    end

    if test -n "$_OLD_npm_config_prefix"
        set -gx npm_config_prefix $_OLD_npm_config_prefix
        set -e _OLD_npm_config_prefix
    else
        set -e npm_config_prefix
    end

    if test -n "$_OLD_NODE_FISH_PROMPT_OVERRIDE"
        # Set an empty local `$fish_function_path` to allow the removal of
        # `fish_prompt` using `functions -e`.
        set -l fish_function_path

        # Prevents error when using nested fish instances
        if functions -q _node_old_fish_prompt
            # Erase virtualenv's `fish_prompt` and restore the original.
            functions -e fish_prompt
            functions -c _node_old_fish_prompt fish_prompt
            functions -e _node_old_fish_prompt
        end
        set -e _OLD_NODE_FISH_PROMPT_OVERRIDE
    end

    set -e NODE_VIRTUAL_ENV

    if test (count $argv) = 0 -o "$argv[1]" != "nondestructive"
        # Self destruct!
        functions -e deactivate_node
    end
end

function freeze -d 'Show a list of installed packages - like `pip freeze`'
    set -l NPM_VER (npm -v | cut -d '.' -f 1)
    set -l RE "[a-zA-Z0-9\.\-]+@[0-9]+\.[0-9]+\.[0-9]+([\+\-][a-zA-Z0-9\.\-]+)*"

    if test "$NPM_VER" = "0"
        set -g NPM_LIST (npm list installed active >/dev/null ^/dev/null |                          cut -d ' ' -f 1 | grep -v npm)
    else
        set -l NPM_LS "npm ls -g"
        if test (count $argv) -gt 0 -a "$argv[1]" = "-l"
            set NPM_LS "npm ls"
            set -e argv[1]
        end
        set -l NPM_LIST (eval $NPM_LS | grep -E '^.{4}\w{1}' |                                         grep -o -E "$re" |                                         grep -v npm)
    end

    if test (count $argv) = 0
        echo $NPM_LIST
    else
        echo $NPM_LIST > $argv[1]
    end
end

# unset irrelevant variables
deactivate_node nondestructive

# find the directory of this script
begin
    set -l SOURCE (status filename)
    while test -L "$SOURCE"
        set SOURCE (readlink "$SOURCE")
    end
    set -l DIR (dirname (realpath "$SOURCE"))

    # NODE_VIRTUAL_ENV is the parent of the directory where this script is
    set -gx NODE_VIRTUAL_ENV (dirname "$DIR")
end

set -gx _OLD_NODE_VIRTUAL_PATH $PATH
# The node_modules/.bin path doesn't exists and it will print a warning, and
# that's why we redirect stderr to /dev/null :)
set -gx PATH "$NODE_VIRTUAL_ENV/lib/node_modules/.bin" "$NODE_VIRTUAL_ENV/__BIN_NAME__" $PATH ^/dev/null

if set -q NODE_PATH
    set -gx _OLD_NODE_PATH $NODE_PATH
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__" $NODE_PATH
else
    set -gx NODE_PATH "$NODE_VIRTUAL_ENV/__MOD_NAME__"
end

if set -q NPM_CONFIG_PREFIX
    set -gx _OLD_NPM_CONFIG_PREFIX $NPM_CONFIG_PREFIX
end
set -gx NPM_CONFIG_PREFIX "__NPM_CONFIG_PREFIX__"

if set -q npm_config_prefix
    set -gx _OLD_npm_config_prefix $npm_config_prefix
end
set -gx npm_config_prefix "__NPM_CONFIG_PREFIX__"

if test -z "$NODE_VIRTUAL_ENV_DISABLE_PROMPT"
    # Copy the current `fish_prompt` function as `_node_old_fish_prompt`.
    functions -c fish_prompt _node_old_fish_prompt

    function fish_prompt
        # Save the current $status, for fish_prompts that display it.
        set -l old_status $status

        # Prompt override provided?
        # If not, just prepend the environment name.
        if test -n "__NODE_VIRTUAL_PROMPT__"
            printf '%s%s ' "__NODE_VIRTUAL_PROMPT__" (set_color normal)
        else
            printf '%s(%s) ' (set_color normal) (basename "$NODE_VIRTUAL_ENV")
        end

        # Restore the original $status
        echo "exit $old_status" | source
        _node_old_fish_prompt
    end

    set -gx _OLD_NODE_FISH_PROMPT_OVERRIDE "$NODE_VIRTUAL_ENV"
end
zA
if type -p deactivate_node > /dev/null; then deactivate_node;fi
z#!/bin/sh

if [ -r "$1" ]; then
    SCRIPT_PATH=$(cygpath -w "$1")
    shift
    set - $SCRIPT_PATH $@
    unset SCRIPT_PATH
fi

exec $(dirname "$0")/node.exe "$@"
__main__)T)TF)TFNN)r   )FNrK   )jrO   
contextlibr;  r  r   r"   rO  rc  r   r   rL  r   rw   r5  r  pipesr   r  shlexr  rJ  ro  r  r  r   r   ra  rM  r   httplibr>  ImportErrorconfigparserurllib.requestrequesthttpclientr   r#   rG   r  r  r   rt   r   r)   r,  rW   r   objectr   r   r(   _defaultrb   rg   rr   r}   r   r   r   r   r   r   r   r  r  r  r  r0  r3  contextmanagerr9  rB  r]  r=  rp  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r  r  r  r  r  r  r  r  r  r  rL   rZ   rJ   r   <module>r0     s    	  
 	 	 
      f%%     0=%%%k2I++N 	ww||
''//			!		!		i	'HOO(();<	 (?'V ?'D  !*4<!8 1.	$> 
Pf>	=""J ,1#B'JO+,B,
   2:
  #$1:1Kh
 F>'LT6L,^)B7
N	&L*$,&2*r 	8$-^}@M^ 
 zF e/  0)$%%%g.I[[//N0s   (,G5 5=H65H6