Spaces:
Runtime error
Runtime error
Delete setup_12.x
Browse files- setup_12.x +0 -361
setup_12.x
DELETED
|
@@ -1,361 +0,0 @@
|
|
| 1 |
-
#!/bin/bash
|
| 2 |
-
|
| 3 |
-
# Discussion, issues and change requests at:
|
| 4 |
-
# https://github.com/nodesource/distributions
|
| 5 |
-
#
|
| 6 |
-
# Script to install the NodeSource Node.js 12.x repo onto a
|
| 7 |
-
# Debian or Ubuntu system.
|
| 8 |
-
#
|
| 9 |
-
# Run as root or insert `sudo -E` before `bash`:
|
| 10 |
-
#
|
| 11 |
-
# curl -sL https://deb.nodesource.com/setup_12.x | bash -
|
| 12 |
-
# or
|
| 13 |
-
# wget -qO- https://deb.nodesource.com/setup_12.x | bash -
|
| 14 |
-
#
|
| 15 |
-
# CONTRIBUTIONS TO THIS SCRIPT
|
| 16 |
-
#
|
| 17 |
-
# This script is built from a template in
|
| 18 |
-
# https://github.com/nodesource/distributions/tree/master/deb/src
|
| 19 |
-
# please don't submit pull requests against the built scripts.
|
| 20 |
-
#
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
export DEBIAN_FRONTEND=noninteractive
|
| 24 |
-
SCRSUFFIX="_12.x"
|
| 25 |
-
NODENAME="Node.js 12.x"
|
| 26 |
-
NODEREPO="node_12.x"
|
| 27 |
-
NODEPKG="nodejs"
|
| 28 |
-
|
| 29 |
-
print_status() {
|
| 30 |
-
echo
|
| 31 |
-
echo "## $1"
|
| 32 |
-
echo
|
| 33 |
-
}
|
| 34 |
-
|
| 35 |
-
if test -t 1; then # if terminal
|
| 36 |
-
ncolors=$(which tput > /dev/null && tput colors) # supports color
|
| 37 |
-
if test -n "$ncolors" && test $ncolors -ge 8; then
|
| 38 |
-
termcols=$(tput cols)
|
| 39 |
-
bold="$(tput bold)"
|
| 40 |
-
underline="$(tput smul)"
|
| 41 |
-
standout="$(tput smso)"
|
| 42 |
-
normal="$(tput sgr0)"
|
| 43 |
-
black="$(tput setaf 0)"
|
| 44 |
-
red="$(tput setaf 1)"
|
| 45 |
-
green="$(tput setaf 2)"
|
| 46 |
-
yellow="$(tput setaf 3)"
|
| 47 |
-
blue="$(tput setaf 4)"
|
| 48 |
-
magenta="$(tput setaf 5)"
|
| 49 |
-
cyan="$(tput setaf 6)"
|
| 50 |
-
white="$(tput setaf 7)"
|
| 51 |
-
fi
|
| 52 |
-
fi
|
| 53 |
-
|
| 54 |
-
print_bold() {
|
| 55 |
-
title="$1"
|
| 56 |
-
text="$2"
|
| 57 |
-
|
| 58 |
-
echo
|
| 59 |
-
echo "${red}================================================================================${normal}"
|
| 60 |
-
echo "${red}================================================================================${normal}"
|
| 61 |
-
echo
|
| 62 |
-
echo -e " ${bold}${yellow}${title}${normal}"
|
| 63 |
-
echo
|
| 64 |
-
echo -en " ${text}"
|
| 65 |
-
echo
|
| 66 |
-
echo "${red}================================================================================${normal}"
|
| 67 |
-
echo "${red}================================================================================${normal}"
|
| 68 |
-
}
|
| 69 |
-
|
| 70 |
-
bail() {
|
| 71 |
-
echo 'Error executing command, exiting'
|
| 72 |
-
exit 1
|
| 73 |
-
}
|
| 74 |
-
|
| 75 |
-
exec_cmd_nobail() {
|
| 76 |
-
echo "+ $1"
|
| 77 |
-
bash -c "$1"
|
| 78 |
-
}
|
| 79 |
-
|
| 80 |
-
exec_cmd() {
|
| 81 |
-
exec_cmd_nobail "$1" || bail
|
| 82 |
-
}
|
| 83 |
-
|
| 84 |
-
node_deprecation_warning() {
|
| 85 |
-
if [[ "X${NODENAME}" == "Xio.js 1.x" ||
|
| 86 |
-
"X${NODENAME}" == "Xio.js 2.x" ||
|
| 87 |
-
"X${NODENAME}" == "Xio.js 3.x" ||
|
| 88 |
-
"X${NODENAME}" == "XNode.js 0.10" ||
|
| 89 |
-
"X${NODENAME}" == "XNode.js 0.12" ||
|
| 90 |
-
"X${NODENAME}" == "XNode.js 4.x LTS Argon" ||
|
| 91 |
-
"X${NODENAME}" == "XNode.js 5.x" ||
|
| 92 |
-
"X${NODENAME}" == "XNode.js 6.x LTS Boron" ||
|
| 93 |
-
"X${NODENAME}" == "XNode.js 7.x" ||
|
| 94 |
-
"X${NODENAME}" == "XNode.js 8.x LTS Carbon" ||
|
| 95 |
-
"X${NODENAME}" == "XNode.js 9.x" ||
|
| 96 |
-
"X${NODENAME}" == "XNode.js 10.x" ||
|
| 97 |
-
"X${NODENAME}" == "XNode.js 11.x" ||
|
| 98 |
-
"X${NODENAME}" == "XNode.js 12.x" ||
|
| 99 |
-
"X${NODENAME}" == "XNode.js 13.x" ||
|
| 100 |
-
"X${NODENAME}" == "XNode.js 15.x" ||
|
| 101 |
-
"X${NODENAME}" == "XNode.js 17.x" ]]; then
|
| 102 |
-
|
| 103 |
-
print_bold \
|
| 104 |
-
" DEPRECATION WARNING " "\
|
| 105 |
-
${bold}${NODENAME} is no longer actively supported!${normal}
|
| 106 |
-
|
| 107 |
-
${bold}You will not receive security or critical stability updates${normal} for this version.
|
| 108 |
-
|
| 109 |
-
You should migrate to a supported version of Node.js as soon as possible.
|
| 110 |
-
Use the installation script that corresponds to the version of Node.js you
|
| 111 |
-
wish to install. e.g.
|
| 112 |
-
|
| 113 |
-
* ${green}https://deb.nodesource.com/setup_14.x — Node.js 14 LTS \"Fermium\"${normal} (recommended)
|
| 114 |
-
* ${green}https://deb.nodesource.com/setup_16.x — Node.js 16 \"Gallium\"${normal}
|
| 115 |
-
* ${green}https://deb.nodesource.com/setup_18.x — Node.js 18 \"Eighteen\"${normal} (current)
|
| 116 |
-
|
| 117 |
-
Please see ${bold}https://github.com/nodejs/Release${normal} for details about which
|
| 118 |
-
version may be appropriate for you.
|
| 119 |
-
|
| 120 |
-
The ${bold}NodeSource${normal} Node.js distributions repository contains
|
| 121 |
-
information both about supported versions of Node.js and supported Linux
|
| 122 |
-
distributions. To learn more about usage, see the repository:
|
| 123 |
-
${bold}https://github.com/nodesource/distributions${normal}
|
| 124 |
-
"
|
| 125 |
-
echo
|
| 126 |
-
echo "Continuing in 20 seconds ..."
|
| 127 |
-
echo
|
| 128 |
-
sleep 20
|
| 129 |
-
fi
|
| 130 |
-
}
|
| 131 |
-
|
| 132 |
-
script_deprecation_warning() {
|
| 133 |
-
if [ "X${SCRSUFFIX}" == "X" ]; then
|
| 134 |
-
print_bold \
|
| 135 |
-
" SCRIPT DEPRECATION WARNING " "\
|
| 136 |
-
This script, located at ${bold}https://deb.nodesource.com/setup${normal}, used to
|
| 137 |
-
install Node.js 0.10, is deprecated and will eventually be made inactive.
|
| 138 |
-
|
| 139 |
-
You should use the script that corresponds to the version of Node.js you
|
| 140 |
-
wish to install. e.g.
|
| 141 |
-
|
| 142 |
-
* ${green}https://deb.nodesource.com/setup_14.x — Node.js 14 LTS \"Fermium\"${normal} (recommended)
|
| 143 |
-
* ${green}https://deb.nodesource.com/setup_16.x — Node.js 16 \"Gallium\"${normal}
|
| 144 |
-
* ${green}https://deb.nodesource.com/setup_18.x — Node.js 18 \"Eighteen\"${normal} (current)
|
| 145 |
-
|
| 146 |
-
Please see ${bold}https://github.com/nodejs/Release${normal} for details about which
|
| 147 |
-
version may be appropriate for you.
|
| 148 |
-
|
| 149 |
-
The ${bold}NodeSource${normal} Node.js Linux distributions GitHub repository contains
|
| 150 |
-
information about which versions of Node.js and which Linux distributions
|
| 151 |
-
are supported and how to use the install scripts.
|
| 152 |
-
${bold}https://github.com/nodesource/distributions${normal}
|
| 153 |
-
"
|
| 154 |
-
|
| 155 |
-
echo
|
| 156 |
-
echo "Continuing in 20 seconds (press Ctrl-C to abort) ..."
|
| 157 |
-
echo
|
| 158 |
-
sleep 20
|
| 159 |
-
fi
|
| 160 |
-
}
|
| 161 |
-
|
| 162 |
-
setup() {
|
| 163 |
-
|
| 164 |
-
script_deprecation_warning
|
| 165 |
-
node_deprecation_warning
|
| 166 |
-
|
| 167 |
-
print_status "Installing the NodeSource ${NODENAME} repo..."
|
| 168 |
-
|
| 169 |
-
if $(uname -m | grep -Eq ^armv6); then
|
| 170 |
-
print_status "You appear to be running on ARMv6 hardware. Unfortunately this is not currently supported by the NodeSource Linux distributions. Please use the 'linux-armv6l' binary tarballs available directly from nodejs.org for Node.js 4 and later."
|
| 171 |
-
exit 1
|
| 172 |
-
fi
|
| 173 |
-
|
| 174 |
-
PRE_INSTALL_PKGS=""
|
| 175 |
-
|
| 176 |
-
# Check that HTTPS transport is available to APT
|
| 177 |
-
# (Check snaked from: https://get.docker.io/ubuntu/)
|
| 178 |
-
|
| 179 |
-
if [ ! -e /usr/lib/apt/methods/https ]; then
|
| 180 |
-
PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} apt-transport-https"
|
| 181 |
-
fi
|
| 182 |
-
|
| 183 |
-
if [ ! -x /usr/bin/lsb_release ]; then
|
| 184 |
-
PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} lsb-release"
|
| 185 |
-
fi
|
| 186 |
-
|
| 187 |
-
if [ ! -x /usr/bin/curl ] && [ ! -x /usr/bin/wget ]; then
|
| 188 |
-
PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} curl"
|
| 189 |
-
fi
|
| 190 |
-
|
| 191 |
-
# Used by apt-key to add new keys
|
| 192 |
-
|
| 193 |
-
if [ ! -x /usr/bin/gpg ]; then
|
| 194 |
-
PRE_INSTALL_PKGS="${PRE_INSTALL_PKGS} gnupg"
|
| 195 |
-
fi
|
| 196 |
-
|
| 197 |
-
# Populating Cache
|
| 198 |
-
print_status "Populating apt-get cache..."
|
| 199 |
-
exec_cmd 'apt-get update'
|
| 200 |
-
|
| 201 |
-
if [ "X${PRE_INSTALL_PKGS}" != "X" ]; then
|
| 202 |
-
print_status "Installing packages required for setup:${PRE_INSTALL_PKGS}..."
|
| 203 |
-
# This next command needs to be redirected to /dev/null or the script will bork
|
| 204 |
-
# in some environments
|
| 205 |
-
exec_cmd "apt-get install -y${PRE_INSTALL_PKGS} > /dev/null 2>&1"
|
| 206 |
-
fi
|
| 207 |
-
|
| 208 |
-
IS_PRERELEASE=$(lsb_release -d | grep 'Ubuntu .*development' >& /dev/null; echo $?)
|
| 209 |
-
if [[ $IS_PRERELEASE -eq 0 ]]; then
|
| 210 |
-
print_status "Your distribution, identified as \"$(lsb_release -d -s)\", is a pre-release version of Ubuntu. NodeSource does not maintain official support for Ubuntu versions until they are formally released. You can try using the manual installation instructions available at https://github.com/nodesource/distributions and use the latest supported Ubuntu version name as the distribution identifier, although this is not guaranteed to work."
|
| 211 |
-
exit 1
|
| 212 |
-
fi
|
| 213 |
-
|
| 214 |
-
DISTRO=$(lsb_release -c -s)
|
| 215 |
-
|
| 216 |
-
check_alt() {
|
| 217 |
-
if [ "X${DISTRO}" == "X${2}" ]; then
|
| 218 |
-
echo
|
| 219 |
-
echo "## You seem to be using ${1} version ${DISTRO}."
|
| 220 |
-
echo "## This maps to ${3} \"${4}\"... Adjusting for you..."
|
| 221 |
-
DISTRO="${4}"
|
| 222 |
-
fi
|
| 223 |
-
}
|
| 224 |
-
|
| 225 |
-
check_alt "SolydXK" "solydxk-9" "Debian" "stretch"
|
| 226 |
-
check_alt "Kali" "sana" "Debian" "jessie"
|
| 227 |
-
check_alt "Kali" "kali-rolling" "Debian" "bullseye"
|
| 228 |
-
check_alt "Sparky Linux" "Tyche" "Debian" "stretch"
|
| 229 |
-
check_alt "Sparky Linux" "Nibiru" "Debian" "buster"
|
| 230 |
-
check_alt "Sparky Linux" "Po-Tolo" "Debian" "bullseye"
|
| 231 |
-
check_alt "MX Linux 17" "Horizon" "Debian" "stretch"
|
| 232 |
-
check_alt "MX Linux 18" "Continuum" "Debian" "stretch"
|
| 233 |
-
check_alt "MX Linux 19" "patito feo" "Debian" "buster"
|
| 234 |
-
check_alt "MX Linux 21" "wildflower" "Debian" "bullseye"
|
| 235 |
-
check_alt "Linux Mint" "maya" "Ubuntu" "precise"
|
| 236 |
-
check_alt "Linux Mint" "qiana" "Ubuntu" "trusty"
|
| 237 |
-
check_alt "Linux Mint" "rafaela" "Ubuntu" "trusty"
|
| 238 |
-
check_alt "Linux Mint" "rebecca" "Ubuntu" "trusty"
|
| 239 |
-
check_alt "Linux Mint" "rosa" "Ubuntu" "trusty"
|
| 240 |
-
check_alt "Linux Mint" "sarah" "Ubuntu" "xenial"
|
| 241 |
-
check_alt "Linux Mint" "serena" "Ubuntu" "xenial"
|
| 242 |
-
check_alt "Linux Mint" "sonya" "Ubuntu" "xenial"
|
| 243 |
-
check_alt "Linux Mint" "sylvia" "Ubuntu" "xenial"
|
| 244 |
-
check_alt "Linux Mint" "tara" "Ubuntu" "bionic"
|
| 245 |
-
check_alt "Linux Mint" "tessa" "Ubuntu" "bionic"
|
| 246 |
-
check_alt "Linux Mint" "tina" "Ubuntu" "bionic"
|
| 247 |
-
check_alt "Linux Mint" "tricia" "Ubuntu" "bionic"
|
| 248 |
-
check_alt "Linux Mint" "ulyana" "Ubuntu" "focal"
|
| 249 |
-
check_alt "Linux Mint" "ulyssa" "Ubuntu" "focal"
|
| 250 |
-
check_alt "Linux Mint" "uma" "Ubuntu" "focal"
|
| 251 |
-
check_alt "Linux Mint" "una" "Ubuntu" "focal"
|
| 252 |
-
check_alt "LMDE" "betsy" "Debian" "jessie"
|
| 253 |
-
check_alt "LMDE" "cindy" "Debian" "stretch"
|
| 254 |
-
check_alt "LMDE" "debbie" "Debian" "buster"
|
| 255 |
-
check_alt "LMDE" "elsie" "Debian" "bullseye"
|
| 256 |
-
check_alt "elementaryOS" "luna" "Ubuntu" "precise"
|
| 257 |
-
check_alt "elementaryOS" "freya" "Ubuntu" "trusty"
|
| 258 |
-
check_alt "elementaryOS" "loki" "Ubuntu" "xenial"
|
| 259 |
-
check_alt "elementaryOS" "juno" "Ubuntu" "bionic"
|
| 260 |
-
check_alt "elementaryOS" "hera" "Ubuntu" "bionic"
|
| 261 |
-
check_alt "elementaryOS" "odin" "Ubuntu" "focal"
|
| 262 |
-
check_alt "elementaryOS" "jolnir" "Ubuntu" "focal"
|
| 263 |
-
check_alt "Trisquel" "toutatis" "Ubuntu" "precise"
|
| 264 |
-
check_alt "Trisquel" "belenos" "Ubuntu" "trusty"
|
| 265 |
-
check_alt "Trisquel" "flidas" "Ubuntu" "xenial"
|
| 266 |
-
check_alt "Trisquel" "etiona" "Ubuntu" "bionic"
|
| 267 |
-
check_alt "Uruk GNU/Linux" "lugalbanda" "Ubuntu" "xenial"
|
| 268 |
-
check_alt "BOSS" "anokha" "Debian" "wheezy"
|
| 269 |
-
check_alt "BOSS" "anoop" "Debian" "jessie"
|
| 270 |
-
check_alt "BOSS" "drishti" "Debian" "stretch"
|
| 271 |
-
check_alt "BOSS" "unnati" "Debian" "buster"
|
| 272 |
-
check_alt "bunsenlabs" "bunsen-hydrogen" "Debian" "jessie"
|
| 273 |
-
check_alt "bunsenlabs" "helium" "Debian" "stretch"
|
| 274 |
-
check_alt "bunsenlabs" "lithium" "Debian" "buster"
|
| 275 |
-
check_alt "Tanglu" "chromodoris" "Debian" "jessie"
|
| 276 |
-
check_alt "PureOS" "green" "Debian" "sid"
|
| 277 |
-
check_alt "PureOS" "amber" "Debian" "buster"
|
| 278 |
-
check_alt "PureOS" "byzantium" "Debian" "bullseye"
|
| 279 |
-
check_alt "Devuan" "jessie" "Debian" "jessie"
|
| 280 |
-
check_alt "Devuan" "ascii" "Debian" "stretch"
|
| 281 |
-
check_alt "Devuan" "beowulf" "Debian" "buster"
|
| 282 |
-
check_alt "Devuan" "chimaera" "Debian" "bullseye"
|
| 283 |
-
check_alt "Devuan" "ceres" "Debian" "sid"
|
| 284 |
-
check_alt "Deepin" "panda" "Debian" "sid"
|
| 285 |
-
check_alt "Deepin" "unstable" "Debian" "sid"
|
| 286 |
-
check_alt "Deepin" "stable" "Debian" "buster"
|
| 287 |
-
check_alt "Pardus" "onyedi" "Debian" "stretch"
|
| 288 |
-
check_alt "Liquid Lemur" "lemur-3" "Debian" "stretch"
|
| 289 |
-
check_alt "Astra Linux" "orel" "Debian" "stretch"
|
| 290 |
-
check_alt "Ubilinux" "dolcetto" "Debian" "stretch"
|
| 291 |
-
|
| 292 |
-
if [ "X${DISTRO}" == "Xdebian" ]; then
|
| 293 |
-
print_status "Unknown Debian-based distribution, checking /etc/debian_version..."
|
| 294 |
-
NEWDISTRO=$([ -e /etc/debian_version ] && cut -d/ -f1 < /etc/debian_version)
|
| 295 |
-
if [ "X${NEWDISTRO}" == "X" ]; then
|
| 296 |
-
print_status "Could not determine distribution from /etc/debian_version..."
|
| 297 |
-
else
|
| 298 |
-
DISTRO=$NEWDISTRO
|
| 299 |
-
print_status "Found \"${DISTRO}\" in /etc/debian_version..."
|
| 300 |
-
fi
|
| 301 |
-
fi
|
| 302 |
-
|
| 303 |
-
print_status "Confirming \"${DISTRO}\" is supported..."
|
| 304 |
-
|
| 305 |
-
if [ -x /usr/bin/curl ]; then
|
| 306 |
-
exec_cmd_nobail "curl -sLf -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'"
|
| 307 |
-
RC=$?
|
| 308 |
-
else
|
| 309 |
-
exec_cmd_nobail "wget -qO /dev/null -o /dev/null 'https://deb.nodesource.com/${NODEREPO}/dists/${DISTRO}/Release'"
|
| 310 |
-
RC=$?
|
| 311 |
-
fi
|
| 312 |
-
|
| 313 |
-
if [[ $RC != 0 ]]; then
|
| 314 |
-
print_status "Your distribution, identified as \"${DISTRO}\", is not currently supported, please contact NodeSource at https://github.com/nodesource/distributions/issues if you think this is incorrect or would like your distribution to be considered for support"
|
| 315 |
-
exit 1
|
| 316 |
-
fi
|
| 317 |
-
|
| 318 |
-
if [ -f "/etc/apt/sources.list.d/chris-lea-node_js-$DISTRO.list" ]; then
|
| 319 |
-
print_status 'Removing Launchpad PPA Repository for NodeJS...'
|
| 320 |
-
|
| 321 |
-
exec_cmd_nobail 'add-apt-repository -y -r ppa:chris-lea/node.js'
|
| 322 |
-
exec_cmd "rm -f /etc/apt/sources.list.d/chris-lea-node_js-${DISTRO}.list"
|
| 323 |
-
fi
|
| 324 |
-
|
| 325 |
-
print_status 'Adding the NodeSource signing key to your keyring...'
|
| 326 |
-
keyring='/usr/share/keyrings'
|
| 327 |
-
node_key_url="https://deb.nodesource.com/gpgkey/nodesource.gpg.key"
|
| 328 |
-
local_node_key="$keyring/nodesource.gpg"
|
| 329 |
-
|
| 330 |
-
if [ -x /usr/bin/curl ]; then
|
| 331 |
-
exec_cmd "curl -s $node_key_url | gpg --dearmor | tee $local_node_key >/dev/null"
|
| 332 |
-
else
|
| 333 |
-
exec_cmd "wget -q -O - $node_key_url | gpg --dearmor | tee $local_node_key >/dev/null"
|
| 334 |
-
fi
|
| 335 |
-
|
| 336 |
-
print_status "Creating apt sources list file for the NodeSource ${NODENAME} repo..."
|
| 337 |
-
|
| 338 |
-
exec_cmd "echo 'deb [signed-by=$local_node_key] https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' > /etc/apt/sources.list.d/nodesource.list"
|
| 339 |
-
exec_cmd "echo 'deb-src [signed-by=$local_node_key] https://deb.nodesource.com/${NODEREPO} ${DISTRO} main' >> /etc/apt/sources.list.d/nodesource.list"
|
| 340 |
-
|
| 341 |
-
print_status 'Running `apt-get update` for you...'
|
| 342 |
-
|
| 343 |
-
exec_cmd 'apt-get update'
|
| 344 |
-
|
| 345 |
-
yarn_site='https://dl.yarnpkg.com/debian'
|
| 346 |
-
yarn_key_url="$yarn_site/pubkey.gpg"
|
| 347 |
-
local_yarn_key="$keyring/yarnkey.gpg"
|
| 348 |
-
|
| 349 |
-
print_status """Run \`${bold}sudo apt-get install -y ${NODEPKG}${normal}\` to install ${NODENAME} and npm
|
| 350 |
-
## You may also need development tools to build native addons:
|
| 351 |
-
sudo apt-get install gcc g++ make
|
| 352 |
-
## To install the Yarn package manager, run:
|
| 353 |
-
curl -sL $yarn_key_url | gpg --dearmor | sudo tee $local_yarn_key >/dev/null
|
| 354 |
-
echo \"deb [signed-by=$local_yarn_key] $yarn_site stable main\" | sudo tee /etc/apt/sources.list.d/yarn.list
|
| 355 |
-
sudo apt-get update && sudo apt-get install yarn
|
| 356 |
-
"""
|
| 357 |
-
|
| 358 |
-
}
|
| 359 |
-
|
| 360 |
-
## Defer setup until we have the complete script
|
| 361 |
-
setup
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|