Squashed 'nodesource/' changes from ba48c1f..33e0d2a

33e0d2a CI: add NSOLID to the CI tests
a9dab9a CI: add NSOLID to the CI tests
b84e562 Update scripts to support new NSOLID version
7925aa5 Add node25 scripts
612077e Merge pull request #1890 from nodesource/alejo/fix-distributions
2e44c74 ci(rocky): use official Rocky mirrorlist and tolerate unavailable mirrors
904ee90 fix: update apt 3.0.0 (amd64) [#1874] (#1875)
044f89b doc: update docs

git-subtree-dir: nodesource
git-subtree-split: 33e0d2ac2a5421d45bfd9b9fdf04c1fcab35246b
This commit is contained in:
2025-12-07 18:15:02 -05:00
parent 3b916f1cdf
commit af2e9d27df
29 changed files with 2140 additions and 1635 deletions
+209 -19
View File
@@ -16,8 +16,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
version: [18, 20, 22, 23, 24] version: [ 18, 20, 22, 23, 24, 25 ]
os: ["ubuntu:24.04", "ubuntu:22.04", "debian:10"] os: [ "ubuntu:24.04", "ubuntu:22.04", "debian:10" ]
container: container:
image: ${{ matrix.os }} image: ${{ matrix.os }}
defaults: defaults:
@@ -27,35 +27,97 @@ jobs:
- name: Checkout Repo - name: Checkout Repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Run Istallation Script - name: Fix sources.list for Debian 10
if: contains(matrix.os, 'debian:10')
run: |
echo "deb http://archive.debian.org/debian buster main" > /etc/apt/sources.list
apt-get -o Acquire::Check-Valid-Until=false -o Acquire::AllowInsecureRepositories=true update
- name: Run Installation Script
run: ./scripts/deb/setup_${{ matrix.version }}.x run: ./scripts/deb/setup_${{ matrix.version }}.x
- name: Install Nodejs - name: Install Nodejs
run: | run: apt install nodejs -y
apt-get install nodejs -y
- name: Validate Node Version - name: Validate Node Version
run: | run: |
node -e "console.log(process.version)" node -e "console.log(process.version)"
NODE_VERSION=$(node -e "console.log((process.version).split('.')[0])") NODE_VERSION=$(node -e "console.log(process.version.split('.')[0])")
if [[ ${NODE_VERSION} != "v${{ matrix.version }}" ]]; then
echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION" if [[ ${NODE_VERSION} != "v${{ matrix.version }}" ]]; then
exit 1 echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION"
fi exit 1
fi
rpm: nsolid-deb:
name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})" name: "NSolid ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
version: [18, 20, 22, 23, 24] version: [ 18, 20, 22, 24 ]
os: ["fedora:36", "amazonlinux:2023", "rockylinux:9", "redhat/ubi9:latest"] os: [ "ubuntu:24.04", "ubuntu:22.04", "debian:10" ]
container: container:
image: ${{ matrix.os }} image: ${{ matrix.os }}
defaults: defaults:
run: run:
shell: bash shell: bash
steps: steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Fix sources.list for Debian 10
if: contains(matrix.os, 'debian:10')
run: |
echo "deb http://archive.debian.org/debian buster main" > /etc/apt/sources.list
apt-get -o Acquire::Check-Valid-Until=false -o Acquire::AllowInsecureRepositories=true update
- name: Run Installation Script
run: ./scripts/deb/setup_${{ matrix.version }}.x
- name: Install NSolid
run: apt install nsolid -y
- name: Validate NSolid Version
run: |
nsolid -e "console.log(process.version)"
NSOLID_VERSION=$(nsolid -e "console.log(process.version.split('.')[0])")
if [[ ${NSOLID_VERSION} != "v${{ matrix.version }}" ]]; then
echo "NSolid version is not ${{ matrix.version }}. It is $NSOLID_VERSION"
exit 1
fi
rpm:
name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest
strategy:
matrix:
version: [ 18, 20, 22, 23, 24, 25 ]
os: [ "fedora:36", "amazonlinux:2023", "rockylinux:9", "redhat/ubi9:latest" ]
container:
image: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- name: Patch Rocky repos (avoid broken mirror)
if: contains(matrix.os, 'rocky')
run: |
set -euxo pipefail
for f in /etc/yum.repos.d/Rocky-*.repo; do
[ -f "$f" ] || continue
sed -i 's|^baseurl=.*|# baseurl disabled by CI|' "$f" || true
if grep -q '^mirrorlist=' "$f"; then
sed -i 's|^mirrorlist=.*|mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever|g' "$f" || true
else
echo 'mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever' >> "$f" || true
fi
if ! grep -qi '^skip_if_unavailable=' "$f"; then
echo 'skip_if_unavailable=True' >> "$f"
fi
done
(dnf clean all || microdnf clean all || true)
(dnf -y makecache || microdnf -y makecache || true)
- name: install git - name: install git
run: | run: |
dnf update -y dnf update -y
@@ -80,19 +142,92 @@ jobs:
exit 1 exit 1
fi fi
rpm-minimal: nsolid-rpm:
name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})" name: "NSolid ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
version: [18, 20, 22, 23, 24] version: [ 18, 20, 22, 24 ]
os: ["rockylinux:9-minimal", "redhat/ubi9-minimal:latest"] os: [ "fedora:36", "amazonlinux:2023", "rockylinux:9", "redhat/ubi9:latest" ]
container: container:
image: ${{ matrix.os }} image: ${{ matrix.os }}
defaults: defaults:
run: run:
shell: bash shell: bash
steps: steps:
- name: Patch Rocky repos (avoid broken mirror)
if: contains(matrix.os, 'rocky')
run: |
set -euxo pipefail
for f in /etc/yum.repos.d/Rocky-*.repo; do
[ -f "$f" ] || continue
sed -i 's|^baseurl=.*|# baseurl disabled by CI|' "$f" || true
if grep -q '^mirrorlist=' "$f"; then
sed -i 's|^mirrorlist=.*|mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever|g' "$f" || true
else
echo 'mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever' >> "$f" || true
fi
if ! grep -qi '^skip_if_unavailable=' "$f"; then
echo 'skip_if_unavailable=True' >> "$f"
fi
done
(dnf clean all || microdnf clean all || true)
(dnf -y makecache || microdnf -y makecache || true)
- name: install git
run: |
dnf update -y
dnf install git -y
- name: Checkout Repo
uses: actions/checkout@v4
- name: Run Installation Script
run: ./scripts/rpm/setup_${{ matrix.version }}.x
- name: Install NSolid
run: |
dnf install nsolid -y
- name: Validate NSolid Version
run: |
nsolid -e "console.log(process.version)"
NSOLID_VERSION=$(nsolid -e "console.log((process.version).split('.')[0])")
if [[ ${NSOLID_VERSION} != "v${{ matrix.version }}" ]]; then
echo "NSolid version is not ${{ matrix.version }}. It is $NSOLID_VERSION"
exit 1
fi
rpm-minimal:
name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest
strategy:
matrix:
version: [ 18, 20, 22, 23, 24, 25]
os: [ "rockylinux:9-minimal", "redhat/ubi9-minimal:latest" ]
container:
image: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- name: Patch Rocky repos (avoid broken mirror)
if: contains(matrix.os, 'rocky')
run: |
set -euxo pipefail
for f in /etc/yum.repos.d/Rocky-*.repo; do
[ -f "$f" ] || continue
sed -i 's|^baseurl=.*|# baseurl disabled by CI|' "$f" || true
if grep -q '^mirrorlist=' "$f"; then
sed -i 's|^mirrorlist=.*|mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever|g' "$f" || true
else
echo 'mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever' >> "$f" || true
fi
if ! grep -qi '^skip_if_unavailable=' "$f"; then
echo 'skip_if_unavailable=True' >> "$f"
fi
done
(dnf clean all || microdnf clean all || true)
(dnf -y makecache || microdnf -y makecache || true)
- name: install git - name: install git
run: | run: |
microdnf update -y microdnf update -y
@@ -116,3 +251,58 @@ jobs:
echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION" echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION"
exit 1 exit 1
fi fi
nsolid-rpm-minimal:
name: "NSolid ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest
strategy:
matrix:
version: [ 18, 20, 22, 24 ]
os: [ "rockylinux:9-minimal", "redhat/ubi9-minimal:latest" ]
container:
image: ${{ matrix.os }}
defaults:
run:
shell: bash
steps:
- name: Patch Rocky repos (avoid broken mirror)
if: contains(matrix.os, 'rocky')
run: |
set -euxo pipefail
for f in /etc/yum.repos.d/Rocky-*.repo; do
[ -f "$f" ] || continue
sed -i 's|^baseurl=.*|# baseurl disabled by CI|' "$f" || true
if grep -q '^mirrorlist=' "$f"; then
sed -i 's|^mirrorlist=.*|mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever|g' "$f" || true
else
echo 'mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=$repo&release=$releasever' >> "$f" || true
fi
if ! grep -qi '^skip_if_unavailable=' "$f"; then
echo 'skip_if_unavailable=True' >> "$f"
fi
done
(dnf clean all || microdnf clean all || true)
(dnf -y makecache || microdnf -y makecache || true)
- name: install git
run: |
microdnf update -y
microdnf install git -y
- name: Checkout Repo
uses: actions/checkout@v4
- name: Run Installation Script
run: ./scripts/rpm/setup_${{ matrix.version }}.x
- name: Install NSolid
run: |
microdnf install nsolid -y
- name: Validate NSolid Version
run: |
nsolid -e "console.log(process.version)"
NSOLID_VERSION=$(nsolid -e "console.log((process.version).split('.')[0])")
if [[ ${NSOLID_VERSION} != "v${{ matrix.version }}" ]]; then
echo "NSolid version is not ${{ matrix.version }}. It is $NSOLID_VERSION"
exit 1
fi
+13 -8
View File
@@ -16,8 +16,8 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
version: [16] version: [ 16 ]
os: ["ubuntu:20.04", "debian:10"] os: [ "ubuntu:20.04", "debian:10" ]
container: container:
image: ${{ matrix.os }} image: ${{ matrix.os }}
defaults: defaults:
@@ -27,29 +27,34 @@ jobs:
- name: Checkout Repo - name: Checkout Repo
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Run Istallation Script - name: Fix sources.list for Debian 10
if: contains(matrix.os, 'debian:10')
run: |
echo "deb http://archive.debian.org/debian buster main" > /etc/apt/sources.list
apt-get -o Acquire::Check-Valid-Until=false -o Acquire::AllowInsecureRepositories=true update
- name: Run Installation Script
run: ./scripts/deb/setup_${{ matrix.version }}.x run: ./scripts/deb/setup_${{ matrix.version }}.x
- name: Install Nodejs - name: Install Nodejs
run: | run: |
apt-get install nodejs -y apt install nodejs -y
- name: Validate Node Version - name: Validate Node Version
run: | run: |
node -e "console.log(process.version)" node -e "console.log(process.version)"
NODE_VERSION=$(node -e "console.log((process.version).split('.')[0])") NODE_VERSION=$(node -e "console.log(process.version.split('.')[0])")
if [[ ${NODE_VERSION} != "v${{ matrix.version }}" ]]; then if [[ ${NODE_VERSION} != "v${{ matrix.version }}" ]]; then
echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION" echo "Node version is not ${{ matrix.version }}. It is $NODE_VERSION"
exit 1 exit 1
fi fi
rpm: rpm:
name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})" name: "NodeJS ${{ matrix.version }}(${{ matrix.os }})"
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
version: [16] version: [ 16 ]
os: ["fedora:29", "amazonlinux:2023"] os: [ "fedora:29", "amazonlinux:2023" ]
container: container:
image: ${{ matrix.os }} image: ${{ matrix.os }}
defaults: defaults:
+1365
View File
File diff suppressed because it is too large Load Diff
+6 -6
View File
@@ -19,18 +19,18 @@ The relevant bits of our build scripts to install the needed compilers looks lik
if [ "x${DIST}" == "xprecise" ]; then if [ "x${DIST}" == "xprecise" ]; then
echo "Calling $0" echo "Calling $0"
apt-get update apt update
apt-get install -y clang-3.4 apt install -y clang-3.4
fi fi
if [ "x${DIST}" == "xwheezy" ]; then if [ "x${DIST}" == "xwheezy" ]; then
echo "Calling $0" echo "Calling $0"
apt-get update apt update
apt-get -y install curl apt-transport-https ca-certificates apt -y install curl apt-transport-https ca-certificates
echo "deb https://deb.nodesource.com/clang-3.4 wheezy main" >> /etc/apt/sources.list echo "deb https://deb.nodesource.com/clang-3.4 wheezy main" >> /etc/apt/sources.list
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
apt-get update apt update
apt-get install -y clang-3.4 apt install -y clang-3.4
fi fi
``` ```
+17 -17
View File
@@ -163,14 +163,14 @@ NodeSource will maintain support for stable, testing and unstable releases of De
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_20.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
**Node.js v19.x**: **Node.js v19.x**:
@@ -179,14 +179,14 @@ apt-get install -y nodejs
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_19.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_19.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
**Node.js v18.x**: **Node.js v18.x**:
@@ -195,14 +195,14 @@ apt-get install -y nodejs
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
**Node.js v16.x**: **Node.js v16.x**:
@@ -211,14 +211,14 @@ apt-get install -y nodejs
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_16.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
**Node.js LTS (v18.x)**: **Node.js LTS (v18.x)**:
@@ -227,14 +227,14 @@ apt-get install -y nodejs
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
**Node.js Current (v20.x)**: **Node.js Current (v20.x)**:
@@ -243,14 +243,14 @@ apt-get install -y nodejs
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - &&\ curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - &&\
sudo apt-get install -y nodejs sudo apt install -y nodejs
``` ```
##### Using Debian, as root ##### Using Debian, as root
```sh ```sh
curl -fsSL https://deb.nodesource.com/setup_current.x | bash - &&\ curl -fsSL https://deb.nodesource.com/setup_current.x | bash - &&\
apt-get install -y nodejs apt install -y nodejs
``` ```
***Optional***: install build tools ***Optional***: install build tools
@@ -260,7 +260,7 @@ To compile and install native addons from npm you may also need to install build
##### use `sudo` on Ubuntu or run this as root on debian ##### use `sudo` on Ubuntu or run this as root on debian
```sh ```sh
apt-get install -y build-essential apt install -y build-essential
``` ```
`<a name="debuninstall"></a>` `<a name="debuninstall"></a>`
@@ -272,7 +272,7 @@ To completely remove Node.js installed from the deb.nodesource.com package metho
##### use `sudo` on Ubuntu or run this as root on debian ##### use `sudo` on Ubuntu or run this as root on debian
```sh ```sh
apt-get purge nodejs &&\ apt purge nodejs &&\
rm -r /etc/apt/sources.list.d/nodesource.list rm -r /etc/apt/sources.list.d/nodesource.list
``` ```
@@ -290,7 +290,7 @@ This step is only required if you previously used Chris Lea's Node.js PPA.
```sh ```sh
# add-apt-repository may not be present on some Ubuntu releases: # add-apt-repository may not be present on some Ubuntu releases:
# sudo apt-get install python-software-properties # sudo apt install python-software-properties
sudo add-apt-repository -y -r ppa:chris-lea/node.js &&\ sudo add-apt-repository -y -r ppa:chris-lea/node.js &&\
sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list &&\ sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list &&\
sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list.save sudo rm -f /etc/apt/sources.list.d/chris-lea-node_js-*.list.save
@@ -329,8 +329,8 @@ echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO m
**4. Update package lists and install Node.js** **4. Update package lists and install Node.js**
```sh ```sh
sudo apt-get update sudo apt update
sudo apt-get install nodejs sudo apt install nodejs
``` ```
`<a name="rpm"></a>` `<a name="rpm"></a>`
+2 -1364
View File
File diff suppressed because it is too large Load Diff
+79 -77
View File
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0px"
viewBox="0 0 728 216" style="enable-background:new 0 0 728 216;" xml:space="preserve"> y="0px"
viewBox="0 0 728 216" style="enable-background:new 0 0 728 216;" xml:space="preserve">
<style type="text/css"> <style type="text/css">
.st0{fill:#A80030;} .st0{fill:#A80030;}
.st1{fill:#DD4814;} .st1{fill:#DD4814;}
@@ -19,12 +20,12 @@
.st13{fill:#89A19C;} .st13{fill:#89A19C;}
.st14{fill:none;stroke:#E1E7E6;stroke-miterlimit:10;} .st14{fill:none;stroke:#E1E7E6;stroke-miterlimit:10;}
</style> </style>
<path class="st0" d="M90.2,130.2c0.2,0,0.5,0.1,0.5,0.1C90.9,130.3,91,130.3,90.2,130.2"/> <path class="st0" d="M90.2,130.2c0.2,0,0.5,0.1,0.5,0.1C90.9,130.3,91,130.3,90.2,130.2"/>
<polyline class="st0" points="90.7,130.4 90.5,130.4 90.6,130.4 90.7,130.4 "/> <polyline class="st0" points="90.7,130.4 90.5,130.4 90.6,130.4 90.7,130.4 "/>
<path class="st0" d="M90.3,130c0.3-0.1,0.8-0.1,1.1-0.1c-0.4,0-0.8,0.1-1.3,0.1H90.3"/> <path class="st0" d="M90.3,130c0.3-0.1,0.8-0.1,1.1-0.1c-0.4,0-0.8,0.1-1.3,0.1H90.3"/>
<g> <g>
<circle class="st1" cx="230.1" cy="156.9" r="4.9"/> <circle class="st1" cx="230.1" cy="156.9" r="4.9"/>
<path class="st2" d="M227.1,156.3c-0.3,0-0.6,0.3-0.6,0.6s0.3,0.6,0.6,0.6c0.3,0,0.6-0.3,0.6-0.6 <path class="st2" d="M227.1,156.3c-0.3,0-0.6,0.3-0.6,0.6s0.3,0.6,0.6,0.6c0.3,0,0.6-0.3,0.6-0.6
C227.7,156.5,227.4,156.3,227.1,156.3z M231.3,159c-0.3,0.2-0.4,0.5-0.2,0.8c0.2,0.3,0.5,0.4,0.8,0.2s0.4-0.5,0.2-0.8 C227.7,156.5,227.4,156.3,227.1,156.3z M231.3,159c-0.3,0.2-0.4,0.5-0.2,0.8c0.2,0.3,0.5,0.4,0.8,0.2s0.4-0.5,0.2-0.8
C232,158.9,231.6,158.8,231.3,159z M228.4,156.9c0-0.6,0.3-1.1,0.7-1.4l-0.4-0.7c-0.5,0.3-0.9,0.9-1.1,1.5c0.2,0.2,0.3,0.4,0.3,0.6 C232,158.9,231.6,158.8,231.3,159z M228.4,156.9c0-0.6,0.3-1.1,0.7-1.4l-0.4-0.7c-0.5,0.3-0.9,0.9-1.1,1.5c0.2,0.2,0.3,0.4,0.3,0.6
c0,0.3-0.1,0.5-0.3,0.6c0.2,0.6,0.5,1.2,1.1,1.5l0.4-0.7C228.6,158,228.4,157.4,228.4,156.9z M230.1,155.1c0.9,0,1.6,0.7,1.7,1.6 c0,0.3-0.1,0.5-0.3,0.6c0.2,0.6,0.5,1.2,1.1,1.5l0.4-0.7C228.6,158,228.4,157.4,228.4,156.9z M230.1,155.1c0.9,0,1.6,0.7,1.7,1.6
@@ -33,28 +34,28 @@
c0.2,0,0.5,0,0.7-0.1c0-0.2,0.2-0.5,0.4-0.6c0.2-0.1,0.5-0.1,0.7-0.1c0.4-0.4,0.7-1,0.8-1.7h-0.8 c0.2,0,0.5,0,0.7-0.1c0-0.2,0.2-0.5,0.4-0.6c0.2-0.1,0.5-0.1,0.7-0.1c0.4-0.4,0.7-1,0.8-1.7h-0.8
C231.7,157.9,231,158.6,230.1,158.6z M231.3,154.8c0.3,0.2,0.6,0.1,0.8-0.2c0.2-0.3,0.1-0.6-0.2-0.8c-0.3-0.2-0.6-0.1-0.8,0.2 C231.7,157.9,231,158.6,230.1,158.6z M231.3,154.8c0.3,0.2,0.6,0.1,0.8-0.2c0.2-0.3,0.1-0.6-0.2-0.8c-0.3-0.2-0.6-0.1-0.8,0.2
C230.9,154.2,231,154.6,231.3,154.8z"/> C230.9,154.2,231,154.6,231.3,154.8z"/>
<path d="M162.4,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2 <path d="M162.4,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2
c-0.4-0.5-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0 c-0.4-0.5-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0
c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L162.4,169.8L162.4,169.8z"/> c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L162.4,169.8L162.4,169.8z"/>
<path d="M167.8,158.5c0.3-0.2,0.7-0.4,1.2-0.5c0.5-0.1,1.2-0.3,1.9-0.3c0.9,0,1.7,0.2,2.3,0.5c0.7,0.3,1.3,0.8,1.7,1.3 <path d="M167.8,158.5c0.3-0.2,0.7-0.4,1.2-0.5c0.5-0.1,1.2-0.3,1.9-0.3c0.9,0,1.7,0.2,2.3,0.5c0.7,0.3,1.3,0.8,1.7,1.3
c0.5,0.6,0.8,1.2,1.1,2c0.2,0.8,0.4,1.6,0.4,2.6s-0.1,1.9-0.4,2.7c-0.3,0.8-0.7,1.5-1.2,2s-1.2,1-1.9,1.3c-0.8,0.3-1.6,0.4-2.5,0.4 c0.5,0.6,0.8,1.2,1.1,2c0.2,0.8,0.4,1.6,0.4,2.6s-0.1,1.9-0.4,2.7c-0.3,0.8-0.7,1.5-1.2,2s-1.2,1-1.9,1.3c-0.8,0.3-1.6,0.4-2.5,0.4
c-1,0-1.9-0.1-2.7-0.2c-0.8-0.1-1.4-0.3-1.9-0.4v-17.6l2.2-0.4L167.8,158.5L167.8,158.5z M167.8,168.3c0.2,0.1,0.5,0.1,0.9,0.2 c-1,0-1.9-0.1-2.7-0.2c-0.8-0.1-1.4-0.3-1.9-0.4v-17.6l2.2-0.4L167.8,158.5L167.8,158.5z M167.8,168.3c0.2,0.1,0.5,0.1,0.9,0.2
c0.4,0.1,0.9,0.1,1.5,0.1c1.2,0,2.1-0.4,2.8-1.2s1.1-1.9,1.1-3.3c0-0.6-0.1-1.2-0.2-1.8c-0.1-0.5-0.3-1-0.6-1.4 c0.4,0.1,0.9,0.1,1.5,0.1c1.2,0,2.1-0.4,2.8-1.2s1.1-1.9,1.1-3.3c0-0.6-0.1-1.2-0.2-1.8c-0.1-0.5-0.3-1-0.6-1.4
c-0.3-0.4-0.6-0.7-1.1-0.9c-0.4-0.2-1-0.3-1.6-0.3s-1.1,0.1-1.6,0.3s-0.9,0.4-1.2,0.6L167.8,168.3L167.8,168.3z"/> c-0.3-0.4-0.6-0.7-1.1-0.9c-0.4-0.2-1-0.3-1.6-0.3s-1.1,0.1-1.6,0.3s-0.9,0.4-1.2,0.6L167.8,168.3L167.8,168.3z"/>
<path d="M188.6,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2 <path d="M188.6,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2
c-0.4-0.5-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0 c-0.4-0.5-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0
c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L188.6,169.8L188.6,169.8z"/> c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L188.6,169.8L188.6,169.8z"/>
<path d="M191.7,158.3c0.5-0.1,1.2-0.3,2-0.4c0.8-0.1,1.8-0.2,2.9-0.2c1,0,1.8,0.1,2.4,0.4s1.2,0.7,1.5,1.2c0.4,0.5,0.7,1.1,0.8,1.8 <path d="M191.7,158.3c0.5-0.1,1.2-0.3,2-0.4c0.8-0.1,1.8-0.2,2.9-0.2c1,0,1.8,0.1,2.4,0.4s1.2,0.7,1.5,1.2c0.4,0.5,0.7,1.1,0.8,1.8
c0.2,0.7,0.2,1.5,0.2,2.3v6.9h-2.2v-6.4c0-0.8-0.1-1.4-0.2-1.9s-0.3-1-0.5-1.3s-0.5-0.6-0.9-0.7c-0.4-0.1-0.9-0.2-1.5-0.2 c0.2,0.7,0.2,1.5,0.2,2.3v6.9h-2.2v-6.4c0-0.8-0.1-1.4-0.2-1.9s-0.3-1-0.5-1.3s-0.5-0.6-0.9-0.7c-0.4-0.1-0.9-0.2-1.5-0.2
c-0.2,0-0.5,0-0.7,0c-0.3,0-0.5,0-0.7,0.1c-0.2,0-0.4,0.1-0.6,0.1s-0.3,0.1-0.4,0.1v10.3h-2.2v-12.1H191.7z"/> c-0.2,0-0.5,0-0.7,0c-0.3,0-0.5,0-0.7,0.1c-0.2,0-0.4,0.1-0.6,0.1s-0.3,0.1-0.4,0.1v10.3h-2.2v-12.1H191.7z"/>
<path d="M206.6,157.9h4.6v1.8h-4.6v5.6c0,0.6,0,1.1,0.1,1.5c0.1,0.4,0.2,0.7,0.4,0.9c0.2,0.2,0.4,0.4,0.7,0.5 <path d="M206.6,157.9h4.6v1.8h-4.6v5.6c0,0.6,0,1.1,0.1,1.5c0.1,0.4,0.2,0.7,0.4,0.9c0.2,0.2,0.4,0.4,0.7,0.5
c0.3,0.1,0.6,0.1,1,0.1c0.7,0,1.2-0.1,1.6-0.2c0.4-0.1,0.7-0.3,0.8-0.3l0.5,1.8c-0.2,0.1-0.6,0.3-1.2,0.4c-0.6,0.2-1.2,0.3-1.9,0.3 c0.3,0.1,0.6,0.1,1,0.1c0.7,0,1.2-0.1,1.6-0.2c0.4-0.1,0.7-0.3,0.8-0.3l0.5,1.8c-0.2,0.1-0.6,0.3-1.2,0.4c-0.6,0.2-1.2,0.3-1.9,0.3
c-0.8,0-1.5-0.1-2.1-0.3c-0.5-0.2-1-0.5-1.3-1c-0.3-0.4-0.6-0.9-0.7-1.6c-0.1-0.6-0.2-1.3-0.2-2.2v-10.7l2.2-0.4L206.6,157.9 c-0.8,0-1.5-0.1-2.1-0.3c-0.5-0.2-1-0.5-1.3-1c-0.3-0.4-0.6-0.9-0.7-1.6c-0.1-0.6-0.2-1.3-0.2-2.2v-10.7l2.2-0.4L206.6,157.9
L206.6,157.9z"/> L206.6,157.9z"/>
<path d="M223.2,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2 <path d="M223.2,169.8c-0.5,0.1-1.2,0.3-2,0.4c-0.8,0.1-1.8,0.2-2.9,0.2c-0.9,0-1.7-0.1-2.4-0.4c-0.6-0.3-1.2-0.7-1.6-1.2
s-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0 s-0.7-1.1-0.8-1.8c-0.2-0.7-0.3-1.4-0.3-2.3v-6.9h2.2v6.4c0,1.5,0.2,2.6,0.7,3.2c0.5,0.6,1.3,1,2.4,1c0.2,0,0.5,0,0.7,0
c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L223.2,169.8L223.2,169.8z"/> c0.3,0,0.5,0,0.7-0.1c0.2,0,0.4,0,0.6-0.1c0.2,0,0.3-0.1,0.4-0.1v-10.2h2.2L223.2,169.8L223.2,169.8z"/>
<path class="st3" d="M312.9,169.2c-0.7-0.2-1.5-0.3-2.3-0.3c-1.3,0-2.6,0.2-3.5,0.6c-0.1,0-0.2,0.2-0.2,0.3v0.1 <path class="st3" d="M312.9,169.2c-0.7-0.2-1.5-0.3-2.3-0.3c-1.3,0-2.6,0.2-3.5,0.6c-0.1,0-0.2,0.2-0.2,0.3v0.1
c0.1,0.3-0.1,0.6-0.9,0.8c-1.3,0.3-2.1,1.6-2.6,2.1s-2.1,0.8-1.9,0.5c0.2-0.2,0.9-1,1.3-1.8c0.4-0.7,0.7-0.9,1.2-1.6 c0.1,0.3-0.1,0.6-0.9,0.8c-1.3,0.3-2.1,1.6-2.6,2.1s-2.1,0.8-1.9,0.5c0.2-0.2,0.9-1,1.3-1.8c0.4-0.7,0.7-0.9,1.2-1.6
c0.1-0.2,0.7-0.9,0.8-1.5c0.2-0.6,0.1-1.2,0.2-1.5c0.1-0.4,0.5-1.3,0.5-1.8c0-0.3-1.2,0.4-1.8,0.4s-1.1-0.3-1.6-0.4 c0.1-0.2,0.7-0.9,0.8-1.5c0.2-0.6,0.1-1.2,0.2-1.5c0.1-0.4,0.5-1.3,0.5-1.8c0-0.3-1.2,0.4-1.8,0.4s-1.1-0.3-1.6-0.4
c-0.6,0-1,0.5-1.6,0.4c-0.3-0.1-0.6-0.3-1.2-0.4c-0.8,0-1.8,0.5-3.7,0.4c-1.8-0.1-3.5-2.3-3.8-2.7s-0.6-0.4-1-0.1s-0.8,0.1-0.9-0.1 c-0.6,0-1,0.5-1.6,0.4c-0.3-0.1-0.6-0.3-1.2-0.4c-0.8,0-1.8,0.5-3.7,0.4c-1.8-0.1-3.5-2.3-3.8-2.7s-0.6-0.4-1-0.1s-0.8,0.1-0.9-0.1
@@ -62,47 +63,47 @@
c-0.1,0.3-0.5,0.3-0.7,0.3c-0.5,0-0.9-0.1-1.2-0.3c-0.3-0.2-0.6-0.5-0.8-0.9c-0.3-0.5-0.8-0.7-1.4-0.7c-0.3,0-0.5,0.1-0.8,0.2 c-0.1,0.3-0.5,0.3-0.7,0.3c-0.5,0-0.9-0.1-1.2-0.3c-0.3-0.2-0.6-0.5-0.8-0.9c-0.3-0.5-0.8-0.7-1.4-0.7c-0.3,0-0.5,0.1-0.8,0.2
c-0.9,0.5-2,0.8-3.2,0.8h-1.3c-0.6-1.9-1-3.9-1-6.1c0-10.5,8.5-18.9,18.9-18.9c10.5,0,18.9,8.5,18.9,18.9 c-0.9,0.5-2,0.8-3.2,0.8h-1.3c-0.6-1.9-1-3.9-1-6.1c0-10.5,8.5-18.9,18.9-18.9c10.5,0,18.9,8.5,18.9,18.9
C315.9,162.7,314.8,166.2,312.9,169.2z"/> C315.9,162.7,314.8,166.2,312.9,169.2z"/>
<path class="st3" d="M301.1,167.4c0.1,0.1,0.3,0.4,0.1,0.8c-0.1,0.2-0.2,0.4-0.5,0.5c-0.3,0.2-0.8,0.5-1.5,0 <path class="st3" d="M301.1,167.4c0.1,0.1,0.3,0.4,0.1,0.8c-0.1,0.2-0.2,0.4-0.5,0.5c-0.3,0.2-0.8,0.5-1.5,0
c-0.4-0.2-0.4-0.3-0.9-0.3c-0.4,0-0.5-0.3-0.4-0.7c0.1-0.3,0.7-0.6,1.4-0.2c0.3,0.2,0.8,0.6,1.2,0.2 c-0.4-0.2-0.4-0.3-0.9-0.3c-0.4,0-0.5-0.3-0.4-0.7c0.1-0.3,0.7-0.6,1.4-0.2c0.3,0.2,0.8,0.6,1.2,0.2
C300.7,167.8,300.8,167.7,301.1,167.4L301.1,167.4L301.1,167.4z"/> C300.7,167.8,300.8,167.7,301.1,167.4L301.1,167.4L301.1,167.4z"/>
<path class="st4" d="M307.6,153.9c-0.2,0.6-0.5,1.4-1.6,2c-0.2,0.1-0.2-0.1-0.2-0.2c0.4-0.8,0.5-1,0.7-1.3c0.2-0.4,0.3-1.1-0.1-2.4 <path class="st4" d="M307.6,153.9c-0.2,0.6-0.5,1.4-1.6,2c-0.2,0.1-0.2-0.1-0.2-0.2c0.4-0.8,0.5-1,0.7-1.3c0.2-0.4,0.3-1.1-0.1-2.4
c-0.7-2.6-2.2-6-3.3-7.1c-1-1.1-2.9-1.4-4.6-0.9c-0.6,0.2-1.9,0.8-4.1,0.3c-3.9-0.9-4.5,1.1-4.8,1.9c-0.2,0.9-0.8,3.3-0.8,3.3 c-0.7-2.6-2.2-6-3.3-7.1c-1-1.1-2.9-1.4-4.6-0.9c-0.6,0.2-1.9,0.8-4.1,0.3c-3.9-0.9-4.5,1.1-4.8,1.9c-0.2,0.9-0.8,3.3-0.8,3.3
c-0.2,1-0.4,2.7,5.7,3.9c2.9,0.5,3,1.3,3.1,1.8c0.2,1,0.6,1.5,1,1.8s0,0.5-0.5,0.5c-1.2,0.1-5.7-1.2-8.4-2.7 c-0.2,1-0.4,2.7,5.7,3.9c2.9,0.5,3,1.3,3.1,1.8c0.2,1,0.6,1.5,1,1.8s0,0.5-0.5,0.5c-1.2,0.1-5.7-1.2-8.4-2.7
c-2.2-1.3-2.2-2.5-1.7-3.5c-3.3-0.4-5.7,0.3-6.2,1.9c-0.8,2.7,5.9,7.2,13.4,9.5c7.9,2.4,16.1,0.7,17-4.3 c-2.2-1.3-2.2-2.5-1.7-3.5c-3.3-0.4-5.7,0.3-6.2,1.9c-0.8,2.7,5.9,7.2,13.4,9.5c7.9,2.4,16.1,0.7,17-4.3
C312.8,156.3,310.9,154.6,307.6,153.9z"/> C312.8,156.3,310.9,154.6,307.6,153.9z"/>
<path class="st3" d="M315.2,168.4h0.1l0.2,0.3h0.1l-0.2-0.3c0.1,0,0.2-0.1,0.2-0.2c0-0.1-0.1-0.2-0.3-0.2H315v0.7h0.1L315.2,168.4 <path class="st3" d="M315.2,168.4h0.1l0.2,0.3h0.1l-0.2-0.3c0.1,0,0.2-0.1,0.2-0.2c0-0.1-0.1-0.2-0.3-0.2H315v0.7h0.1L315.2,168.4
L315.2,168.4z M315.2,168.3v-0.2h0.2c0.1,0,0.2,0,0.2,0.1c0,0.1-0.1,0.1-0.2,0.1H315.2z"/> L315.2,168.4z M315.2,168.3v-0.2h0.2c0.1,0,0.2,0,0.2,0.1c0,0.1-0.1,0.1-0.2,0.1H315.2z"/>
<path class="st3" d="M316,168.3c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7 <path class="st3" d="M316,168.3c0,0.4-0.3,0.7-0.7,0.7c-0.4,0-0.7-0.3-0.7-0.7c0-0.4,0.3-0.7,0.7-0.7
C315.7,167.6,316,167.9,316,168.3z M315.3,167.7c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6c0.3,0,0.6-0.3,0.6-0.6 C315.7,167.6,316,167.9,316,168.3z M315.3,167.7c-0.3,0-0.6,0.3-0.6,0.6c0,0.3,0.3,0.6,0.6,0.6c0.3,0,0.6-0.3,0.6-0.6
C315.9,168,315.6,167.7,315.3,167.7z"/> C315.9,168,315.6,167.7,315.3,167.7z"/>
<path class="st3" d="M295.5,149c-2.2,0.2-2.4,0.4-2.8,0.8c-0.6,0.6-1.3-0.8-1.3-0.8c-0.5-0.1-1-0.8-0.7-1.5s0.8-0.5,1-0.3 <path class="st3" d="M295.5,149c-2.2,0.2-2.4,0.4-2.8,0.8c-0.6,0.6-1.3-0.8-1.3-0.8c-0.5-0.1-1-0.8-0.7-1.5s0.8-0.5,1-0.3
c0.2,0.3,0.6,0.7,1.2,0.7s1.2-0.1,2.2-0.1c0.9,0,1.6,0.3,1.6,0.6C296.6,148.7,296.5,148.9,295.5,149z"/> c0.2,0.3,0.6,0.7,1.2,0.7s1.2-0.1,2.2-0.1c0.9,0,1.6,0.3,1.6,0.6C296.6,148.7,296.5,148.9,295.5,149z"/>
<path class="st3" d="M297.8,145.4L297.8,145.4L297.8,145.4L297.8,145.4c0.4-0.3,1.1-0.5,1.8-0.6c0.2,0,0.4,0,0.6,0h0.1 <path class="st3" d="M297.8,145.4L297.8,145.4L297.8,145.4L297.8,145.4c0.4-0.3,1.1-0.5,1.8-0.6c0.2,0,0.4,0,0.6,0h0.1
c1.2,0,2.2,0.5,2.2,1.1c0,0.6-1,1-2.2,1c-0.4,0-0.8-0.1-1.1-0.2l-0.1-0.1l0.1-0.1c0.8-0.2,1.3-0.5,1.2-0.7c0-0.4-1-0.6-2.2-0.4 c1.2,0,2.2,0.5,2.2,1.1c0,0.6-1,1-2.2,1c-0.4,0-0.8-0.1-1.1-0.2l-0.1-0.1l0.1-0.1c0.8-0.2,1.3-0.5,1.2-0.7c0-0.4-1-0.6-2.2-0.4
C298,145.3,297.9,145.4,297.8,145.4z"/> C298,145.3,297.9,145.4,297.8,145.4z"/>
<path class="st3" d="M325.8,160.8c0-1.7,0-3-0.1-4.1h2.8l0.1,2.4h0.1c0.6-1.8,2.1-2.7,3.5-2.7c0.3,0,0.5,0,0.8,0.1v3 <path class="st3" d="M325.8,160.8c0-1.7,0-3-0.1-4.1h2.8l0.1,2.4h0.1c0.6-1.8,2.1-2.7,3.5-2.7c0.3,0,0.5,0,0.8,0.1v3
c-0.3-0.1-0.6-0.1-1-0.1c-1.5,0-2.6,1-2.9,2.4c-0.1,0.3-0.1,0.6-0.1,1v6.7h-3.2L325.8,160.8z"/> c-0.3-0.1-0.6-0.1-1-0.1c-1.5,0-2.6,1-2.9,2.4c-0.1,0.3-0.1,0.6-0.1,1v6.7h-3.2L325.8,160.8z"/>
<path class="st3" d="M336.8,164c0.1,2.3,1.9,3.3,3.9,3.3c1.5,0,2.5-0.2,3.5-0.6l0.5,2.2c-1.1,0.5-2.6,0.8-4.4,0.8 <path class="st3" d="M336.8,164c0.1,2.3,1.9,3.3,3.9,3.3c1.5,0,2.5-0.2,3.5-0.6l0.5,2.2c-1.1,0.5-2.6,0.8-4.4,0.8
c-4.1,0-6.5-2.5-6.5-6.4c0-3.5,2.1-6.8,6.2-6.8s5.5,3.4,5.5,6.2c0,0.6-0.1,1.1-0.1,1.4L336.8,164z M342.4,161.7 c-4.1,0-6.5-2.5-6.5-6.4c0-3.5,2.1-6.8,6.2-6.8s5.5,3.4,5.5,6.2c0,0.6-0.1,1.1-0.1,1.4L336.8,164z M342.4,161.7
c0-1.2-0.5-3.1-2.6-3.1c-2,0-2.8,1.8-2.9,3.1H342.4z"/> c0-1.2-0.5-3.1-2.6-3.1c-2,0-2.8,1.8-2.9,3.1H342.4z"/>
<path class="st3" d="M382.9,166.5c0,1,0,2,0.2,3H382l-0.2-1.8h-0.1c-0.6,1-2,2.1-4,2.1c-2.5,0-3.7-1.8-3.7-3.4 <path class="st3" d="M382.9,166.5c0,1,0,2,0.2,3H382l-0.2-1.8h-0.1c-0.6,1-2,2.1-4,2.1c-2.5,0-3.7-1.8-3.7-3.4
c0-2.9,2.5-4.6,7.6-4.6v-0.3c0-1.2-0.2-3.7-3.2-3.7c-1.1,0-2.2,0.3-3.1,0.9l-0.4-0.9c1.1-0.8,2.5-1.1,3.7-1.1 c0-2.9,2.5-4.6,7.6-4.6v-0.3c0-1.2-0.2-3.7-3.2-3.7c-1.1,0-2.2,0.3-3.1,0.9l-0.4-0.9c1.1-0.8,2.5-1.1,3.7-1.1
c3.6,0,4.3,2.7,4.3,4.9L382.9,166.5L382.9,166.5z M381.7,162.8c-2.7-0.1-6.3,0.3-6.3,3.3c0,1.8,1.2,2.6,2.5,2.6 c3.6,0,4.3,2.7,4.3,4.9L382.9,166.5L382.9,166.5z M381.7,162.8c-2.7-0.1-6.3,0.3-6.3,3.3c0,1.8,1.2,2.6,2.5,2.6
c2.1,0,3.3-1.3,3.7-2.5c0.1-0.3,0.1-0.5,0.1-0.8L381.7,162.8L381.7,162.8z"/> c2.1,0,3.3-1.3,3.7-2.5c0.1-0.3,0.1-0.5,0.1-0.8L381.7,162.8L381.7,162.8z"/>
<path class="st3" d="M388,154.2v2.8h3.6v1H388v8.1c0,1.6,0.5,2.6,1.8,2.6c0.6,0,1.1-0.1,1.4-0.2l0.2,1c-0.4,0.2-1,0.3-1.7,0.3 <path class="st3" d="M388,154.2v2.8h3.6v1H388v8.1c0,1.6,0.5,2.6,1.8,2.6c0.6,0,1.1-0.1,1.4-0.2l0.2,1c-0.4,0.2-1,0.3-1.7,0.3
c-0.9,0-1.7-0.3-2.2-0.9c-0.6-0.7-0.8-1.7-0.8-3V158h-2.1v-1h2.1v-2.3L388,154.2z"/> c-0.9,0-1.7-0.3-2.2-0.9c-0.6-0.7-0.8-1.7-0.8-3V158h-2.1v-1h2.1v-2.3L388,154.2z"/>
<path class="st3" d="M367.6,156.7c-1,0-1.8,0.3-2.5,0.7c-0.7,0.4-1.4,1.1-1.7,1.8h-0.1V153l-1.2-0.3v16.8h1.2v-7.7 <path class="st3" d="M367.6,156.7c-1,0-1.8,0.3-2.5,0.7c-0.7,0.4-1.4,1.1-1.7,1.8h-0.1V153l-1.2-0.3v16.8h1.2v-7.7
c0-0.5,0-0.9,0.2-1.2c0.5-1.6,2-2.8,3.8-2.8c2.6,0,3.4,2.1,3.4,4.3v7.4h1.2V162C372,157.2,368.8,156.7,367.6,156.7z"/> c0-0.5,0-0.9,0.2-1.2c0.5-1.6,2-2.8,3.8-2.8c2.6,0,3.4,2.1,3.4,4.3v7.4h1.2V162C372,157.2,368.8,156.7,367.6,156.7z"/>
<path class="st3" d="M359.2,151.9L356,151v7.1h-0.1c-0.6-0.9-1.8-1.7-3.6-1.7c-3.1,0-5.7,2.5-5.7,6.8c0,3.9,2.4,6.5,5.4,6.5 <path class="st3" d="M359.2,151.9L356,151v7.1h-0.1c-0.6-0.9-1.8-1.7-3.6-1.7c-3.1,0-5.7,2.5-5.7,6.8c0,3.9,2.4,6.5,5.4,6.5
c1.8,0,3.4-0.9,4.1-2.3h0.1l0.1,2h2.9c-0.1-0.9-0.1-2.3-0.1-3.6v-13.9H359.2z M356,164c0,0.3,0,0.7-0.1,0.9 c1.8,0,3.4-0.9,4.1-2.3h0.1l0.1,2h2.9c-0.1-0.9-0.1-2.3-0.1-3.6v-13.9H359.2z M356,164c0,0.3,0,0.7-0.1,0.9
c-0.3,1.4-1.5,2.3-2.8,2.3c-2,0-3.2-1.7-3.2-4c0-2.4,1.1-4.2,3.2-4.2c1.4,0,2.5,1,2.8,2.3c0.1,0.3,0.1,0.6,0.1,0.8V164z"/> c-0.3,1.4-1.5,2.3-2.8,2.3c-2,0-3.2-1.7-3.2-4c0-2.4,1.1-4.2,3.2-4.2c1.4,0,2.5,1,2.8,2.3c0.1,0.3,0.1,0.6,0.1,0.8V164z"/>
<path class="st3" d="M393.3,168.9h0.2l0.2,0.4h0.1l-0.2-0.4c0.1,0,0.2-0.1,0.2-0.2c0-0.2-0.1-0.2-0.3-0.2h-0.3v0.9h0.1L393.3,168.9 <path class="st3" d="M393.3,168.9h0.2l0.2,0.4h0.1l-0.2-0.4c0.1,0,0.2-0.1,0.2-0.2c0-0.2-0.1-0.2-0.3-0.2h-0.3v0.9h0.1L393.3,168.9
L393.3,168.9z M393.3,168.8v-0.3h0.2c0.1,0,0.2,0,0.2,0.1c0,0.1-0.1,0.1-0.2,0.1L393.3,168.8L393.3,168.8z"/> L393.3,168.9z M393.3,168.8v-0.3h0.2c0.1,0,0.2,0,0.2,0.1c0,0.1-0.1,0.1-0.2,0.1L393.3,168.8L393.3,168.8z"/>
<path class="st3" d="M394.3,168.8c0,0.5-0.4,0.9-0.9,0.9s-0.9-0.4-0.9-0.9s0.4-0.9,0.9-0.9C393.9,168,394.3,168.4,394.3,168.8z <path class="st3" d="M394.3,168.8c0,0.5-0.4,0.9-0.9,0.9s-0.9-0.4-0.9-0.9s0.4-0.9,0.9-0.9C393.9,168,394.3,168.4,394.3,168.8z
M393.5,168.1c-0.4,0-0.7,0.3-0.7,0.7c0,0.4,0.3,0.7,0.7,0.7c0.4,0,0.7-0.3,0.7-0.7C394.2,168.5,393.8,168.1,393.5,168.1z"/> M393.5,168.1c-0.4,0-0.7,0.3-0.7,0.7c0,0.4,0.3,0.7,0.7,0.7c0.4,0,0.7-0.3,0.7-0.7C394.2,168.5,393.8,168.1,393.5,168.1z"/>
<path class="st5" d="M663.5,148.7c0-4.2-3.4-7.6-7.6-7.6c-4.2,0-7.6,3.4-7.6,7.6l0,0v5.8l0,0c0,0.9,0.8,1.7,1.7,1.7l0,0l0,0h5.8 <path class="st5" d="M663.5,148.7c0-4.2-3.4-7.6-7.6-7.6c-4.2,0-7.6,3.4-7.6,7.6l0,0v5.8l0,0c0,0.9,0.8,1.7,1.7,1.7l0,0l0,0h5.8
C660.1,156.2,663.5,152.8,663.5,148.7"/> C660.1,156.2,663.5,152.8,663.5,148.7"/>
<path class="st6" d="M658.2,142.9c-2,0-3.5,1.6-3.5,3.5v1.9h-1.9c-2,0-3.5,1.6-3.5,3.5c0,2,1.6,3.5,3.5,3.5c2,0,3.5-1.6,3.5-3.5 <path class="st6" d="M658.2,142.9c-2,0-3.5,1.6-3.5,3.5v1.9h-1.9c-2,0-3.5,1.6-3.5,3.5c0,2,1.6,3.5,3.5,3.5c2,0,3.5-1.6,3.5-3.5
v-1.9h1.9c2,0,3.5-1.6,3.5-3.5C661.7,144.5,660.1,142.9,658.2,142.9z M658.2,144.6c1,0,1.9,0.8,1.9,1.9c0,1-0.8,1.9-1.9,1.9l0,0 v-1.9h1.9c2,0,3.5-1.6,3.5-3.5C661.7,144.5,660.1,142.9,658.2,142.9z M658.2,144.6c1,0,1.9,0.8,1.9,1.9c0,1-0.8,1.9-1.9,1.9l0,0
h-1.6c-0.1,0-0.3-0.1-0.3-0.3v-1.6C656.3,145.4,657.1,144.6,658.2,144.6z M609.5,149.3c-0.7,0-1.4,0.6-1.4,1.3v7.1 h-1.6c-0.1,0-0.3-0.1-0.3-0.3v-1.6C656.3,145.4,657.1,144.6,658.2,144.6z M609.5,149.3c-0.7,0-1.4,0.6-1.4,1.3v7.1
c-0.7-1.3-2.2-2.1-3.9-2.1c-3.6,0-6,2.7-6,6.3s2.5,6.3,6,6.3c1.6,0,2.9-0.6,3.7-1.8l0.3,0.8c0.2,0.5,0.7,0.9,1.3,0.9 c-0.7-1.3-2.2-2.1-3.9-2.1c-3.6,0-6,2.7-6,6.3s2.5,6.3,6,6.3c1.6,0,2.9-0.6,3.7-1.8l0.3,0.8c0.2,0.5,0.7,0.9,1.3,0.9
@@ -124,16 +125,17 @@
C615.7,159.8,617.1,158,619.3,158z M642.7,158c2.2,0,3.6,1.8,3.6,3.9c0,2.1-1.4,3.9-3.6,3.9c-2.2,0-3.6-1.8-3.6-3.9 C615.7,159.8,617.1,158,619.3,158z M642.7,158c2.2,0,3.6,1.8,3.6,3.9c0,2.1-1.4,3.9-3.6,3.9c-2.2,0-3.6-1.8-3.6-3.9
C639,159.8,640.5,158,642.7,158z M649.3,166.4L649.3,166.4l0.1,0.1v0.4h0.1v-0.4h0.1v-0.1H649.3z M649.8,166.4v0.5h0.1v-0.3v-0.1 C639,159.8,640.5,158,642.7,158z M649.3,166.4L649.3,166.4l0.1,0.1v0.4h0.1v-0.4h0.1v-0.1H649.3z M649.8,166.4v0.5h0.1v-0.3v-0.1
l0,0l0.1,0.3l0.1-0.3l0,0v0.1v0.3h0.1v-0.5h-0.1l-0.1,0.3v0.1v-0.1L649.8,166.4L649.8,166.4z"/> l0,0l0.1,0.3l0.1-0.3l0,0v0.1v0.3h0.1v-0.5h-0.1l-0.1,0.3v0.1v-0.1L649.8,166.4L649.8,166.4z"/>
<path class="st2" d="M654.6,148.3v-1.8l0,0c0-2,1.6-3.5,3.5-3.5c0.3,0,0.5,0,0.8,0.1c0.4,0.1,0.7,0.4,0.7,0.8 <path class="st2" d="M654.6,148.3v-1.8l0,0c0-2,1.6-3.5,3.5-3.5c0.3,0,0.5,0,0.8,0.1c0.4,0.1,0.7,0.4,0.7,0.8
c0,0.5-0.3,0.8-0.8,0.8c-0.2,0-0.3,0-0.7,0c-1,0-1.9,0.8-1.9,1.9v1.6l0,0c0,0.1,0.1,0.3,0.3,0.3l0,0h1.2c0.5,0,0.8,0.4,0.8,0.8 c0,0.5-0.3,0.8-0.8,0.8c-0.2,0-0.3,0-0.7,0c-1,0-1.9,0.8-1.9,1.9v1.6l0,0c0,0.1,0.1,0.3,0.3,0.3l0,0h1.2c0.5,0,0.8,0.4,0.8,0.8
c0,0.5-0.4,0.8-0.8,0.8h-1.5v1.9l0,0c0,2-1.6,3.5-3.5,3.5c-0.3,0-0.5,0-0.8-0.1c-0.4-0.1-0.7-0.4-0.7-0.8c0-0.5,0.3-0.8,0.8-0.8 c0,0.5-0.4,0.8-0.8,0.8h-1.5v1.9l0,0c0,2-1.6,3.5-3.5,3.5c-0.3,0-0.5,0-0.8-0.1c-0.4-0.1-0.7-0.4-0.7-0.8c0-0.5,0.3-0.8,0.8-0.8
c0.2,0,0.3,0,0.7,0c1,0,1.9-0.8,1.9-1.9v-1.6c0-0.1-0.1-0.3-0.3-0.3l0,0h-1.2c-0.5,0-0.8-0.4-0.8-0.8c0-0.5,0.4-0.8,0.8-0.8 c0.2,0,0.3,0,0.7,0c1,0,1.9-0.8,1.9-1.9v-1.6c0-0.1-0.1-0.3-0.3-0.3l0,0h-1.2c-0.5,0-0.8-0.4-0.8-0.8c0-0.5,0.4-0.8,0.8-0.8
L654.6,148.3"/> L654.6,148.3"/>
<path class="st0" d="M91.9,154.4c-0.5,0,0.1,0.2,0.7,0.3c0.2-0.1,0.3-0.3,0.4-0.4C92.6,154.4,92.3,154.4,91.9,154.4"/> <path class="st0"
<path class="st0" d="M94.3,153.8c0.3-0.4,0.5-0.8,0.5-1.2c-0.1,0.3-0.2,0.6-0.4,0.8c-0.9,0.5-0.1-0.3,0-0.6 d="M91.9,154.4c-0.5,0,0.1,0.2,0.7,0.3c0.2-0.1,0.3-0.3,0.4-0.4C92.6,154.4,92.3,154.4,91.9,154.4"/>
<path class="st0" d="M94.3,153.8c0.3-0.4,0.5-0.8,0.5-1.2c-0.1,0.3-0.2,0.6-0.4,0.8c-0.9,0.5-0.1-0.3,0-0.6
C93.6,153.9,94.4,153.5,94.3,153.8"/> C93.6,153.9,94.4,153.5,94.3,153.8"/>
<path class="st0" d="M95.2,151.4c0.1-0.8-0.2-0.6-0.2-0.2C95.1,151.2,95.2,151.8,95.2,151.4"/> <path class="st0" d="M95.2,151.4c0.1-0.8-0.2-0.6-0.2-0.2C95.1,151.2,95.2,151.8,95.2,151.4"/>
<path class="st0" d="M98.2,151.8c0,0.7-0.2,1.1-0.4,1.7l-0.4,0.2c-0.3,0.6,0,0.4-0.2,0.9c-0.5,0.4-1.5,1.4-1.9,1.5 <path class="st0" d="M98.2,151.8c0,0.7-0.2,1.1-0.4,1.7l-0.4,0.2c-0.3,0.6,0,0.4-0.2,0.9c-0.5,0.4-1.5,1.4-1.9,1.5
c-0.2,0,0.2-0.3,0.2-0.4c-0.7,0.5-0.5,0.7-1.6,1v-0.1c-2.5,1.2-6.1-1.2-6-4.4c0,0.2-0.1,0.2-0.1,0.2c-0.1-1.7,0.8-3.3,2.3-4 c-0.2,0,0.2-0.3,0.2-0.4c-0.7,0.5-0.5,0.7-1.6,1v-0.1c-2.5,1.2-6.1-1.2-6-4.4c0,0.2-0.1,0.2-0.1,0.2c-0.1-1.7,0.8-3.3,2.3-4
c1.5-0.7,3.2-0.4,4.3,0.6c-0.6-0.8-1.7-1.6-3.1-1.5c-1.3,0-2.6,0.9-3,1.8c-0.7,0.4-0.8,1.7-1.1,1.9c-0.4,3,0.8,4.3,2.7,5.8 c1.5-0.7,3.2-0.4,4.3,0.6c-0.6-0.8-1.7-1.6-3.1-1.5c-1.3,0-2.6,0.9-3,1.8c-0.7,0.4-0.8,1.7-1.1,1.9c-0.4,3,0.8,4.3,2.7,5.8
c0.3,0.2,0.1,0.2,0.1,0.4c-0.7-0.3-1.3-0.8-1.7-1.3c0.3,0.4,0.5,0.8,0.9,1c-0.6-0.2-1.4-1.5-1.7-1.5c1.1,1.9,4.3,3.3,6,2.6 c0.3,0.2,0.1,0.2,0.1,0.4c-0.7-0.3-1.3-0.8-1.7-1.3c0.3,0.4,0.5,0.8,0.9,1c-0.6-0.2-1.4-1.5-1.7-1.5c1.1,1.9,4.3,3.3,6,2.6
@@ -150,85 +152,85 @@
c0.2,0.3,0.4,0.3,0.5,0.4c-1-2.5-1.1-0.1-1.8-2.5H81c-0.1-0.2-0.2-0.4-0.3-0.6l0.1-0.7c-0.7-0.8-0.2-3.5-0.1-5 c0.2,0.3,0.4,0.3,0.5,0.4c-1-2.5-1.1-0.1-1.8-2.5H81c-0.1-0.2-0.2-0.4-0.3-0.6l0.1-0.7c-0.7-0.8-0.2-3.5-0.1-5
c0.1-0.6,0.6-1.2,1-2.3h-0.2c0.5-0.8,2.7-3.3,3.7-3.2c0.5-0.6-0.1,0-0.2-0.2c1.1-1.1,1.4-0.8,2.2-1c0.8-0.5-0.7,0.2-0.3-0.2 c0.1-0.6,0.6-1.2,1-2.3h-0.2c0.5-0.8,2.7-3.3,3.7-3.2c0.5-0.6-0.1,0-0.2-0.2c1.1-1.1,1.4-0.8,2.2-1c0.8-0.5-0.7,0.2-0.3-0.2
c1.4-0.4,1-0.8,2.8-1c0.2,0.1-0.4,0.2-0.6,0.3c1.1-0.6,3.6-0.4,5.2,0.3c1.9,0.9,4,3.4,4,5.9h0.1c0,1,0.1,2.1-0.2,3.1L98.2,151.8"/> c1.4-0.4,1-0.8,2.8-1c0.2,0.1-0.4,0.2-0.6,0.3c1.1-0.6,3.6-0.4,5.2,0.3c1.9,0.9,4,3.4,4,5.9h0.1c0,1,0.1,2.1-0.2,3.1L98.2,151.8"/>
<path class="st0" d="M86.9,155l-0.1,0.3c0.3,0.4,0.5,0.8,0.9,1.2C87.5,156,87.3,155.8,86.9,155"/> <path class="st0" d="M86.9,155l-0.1,0.3c0.3,0.4,0.5,0.8,0.9,1.2C87.5,156,87.3,155.8,86.9,155"/>
<path class="st0" d="M87.6,155c-0.2-0.2-0.3-0.4-0.4-0.6c0.1,0.4,0.3,0.7,0.5,1L87.6,155"/> <path class="st0" d="M87.6,155c-0.2-0.2-0.3-0.4-0.4-0.6c0.1,0.4,0.3,0.7,0.5,1L87.6,155"/>
<path class="st0" d="M100.2,152.3l-0.1,0.2c-0.1,0.9-0.4,1.7-0.8,2.5C99.7,154.1,100,153.2,100.2,152.3"/> <path class="st0" d="M100.2,152.3l-0.1,0.2c-0.1,0.9-0.4,1.7-0.8,2.5C99.7,154.1,100,153.2,100.2,152.3"/>
<path class="st0" d="M79.4,145.8c0.1,0.7-0.5,0.9,0.1,0.5C79.9,145.5,79.4,146,79.4,145.8"/> <path class="st0" d="M79.4,145.8c0.1,0.7-0.5,0.9,0.1,0.5C79.9,145.5,79.4,146,79.4,145.8"/>
<path class="st0" d="M78.7,148.8c0.1-0.4,0.2-0.7,0.2-1C78.5,148.4,78.8,148.5,78.7,148.8"/> <path class="st0" d="M78.7,148.8c0.1-0.4,0.2-0.7,0.2-1C78.5,148.4,78.8,148.5,78.7,148.8"/>
<path d="M77.4,178.1c0,0,0,2.3,0,2.9c0,0.5-0.1,1.5-1.1,1.5s-1.3-1.2-1.4-1.7c-0.1-0.6-0.1-1.1-0.1-1.3c0-0.7,0-2.6,1.6-2.6 <path d="M77.4,178.1c0,0,0,2.3,0,2.9c0,0.5-0.1,1.5-1.1,1.5s-1.3-1.2-1.4-1.7c-0.1-0.6-0.1-1.1-0.1-1.3c0-0.7,0-2.6,1.6-2.6
c0.5,0,0.7,0.1,1,0.3V178.1z M73.3,179.8c0,4,2.1,4,2.4,4c0.9,0,1.4-0.5,1.7-1.3v1.3c0.3,0,0.5,0,1,0c0.2,0,0.3,0,0.4,0 c0.5,0,0.7,0.1,1,0.3V178.1z M73.3,179.8c0,4,2.1,4,2.4,4c0.9,0,1.4-0.5,1.7-1.3v1.3c0.3,0,0.5,0,1,0c0.2,0,0.3,0,0.4,0
c0.1,0,0.2,0,0.4,0c-0.2-0.5-0.4-1.5-0.4-3.7c0-2.1,0-5.8,0.2-6.9c-0.5,0.2-0.9,0.4-1.9,0.5c0.4,0.4,0.4,0.6,0.4,2.5 c0.1,0,0.2,0,0.4,0c-0.2-0.5-0.4-1.5-0.4-3.7c0-2.1,0-5.8,0.2-6.9c-0.5,0.2-0.9,0.4-1.9,0.5c0.4,0.4,0.4,0.6,0.4,2.5
c-0.3-0.1-0.6-0.2-1.2-0.2C73.7,176,73.3,178.2,73.3,179.8"/> c-0.3-0.1-0.6-0.2-1.2-0.2C73.7,176,73.3,178.2,73.3,179.8"/>
<path d="M81,179.1c0-1.2,0.3-2.2,1.3-2.2c1.1,0,1.2,1.2,1.2,2.2H81z M84.8,179.2c0-1.7-0.3-3.3-2.4-3.3c-2.9,0-2.9,3.2-2.9,3.9 <path d="M81,179.1c0-1.2,0.3-2.2,1.3-2.2c1.1,0,1.2,1.2,1.2,2.2H81z M84.8,179.2c0-1.7-0.3-3.3-2.4-3.3c-2.9,0-2.9,3.2-2.9,3.9
c0,2.9,1.3,4,3.4,4c1,0,1.4-0.1,1.7-0.2c0-0.5,0.1-0.8,0.1-1.3c-0.3,0.2-0.7,0.4-1.5,0.4c-2.2,0-2.2-2-2.2-2.7h3.8L84.8,179.2"/> c0,2.9,1.3,4,3.4,4c1,0,1.4-0.1,1.7-0.2c0-0.5,0.1-0.8,0.1-1.3c-0.3,0.2-0.7,0.4-1.5,0.4c-2.2,0-2.2-2-2.2-2.7h3.8L84.8,179.2"/>
<path d="M89.4,179.8c0,1.3-0.2,3.1-1.9,3.1c-0.2,0-0.5,0-0.7-0.1c0-0.5,0-1.4,0-2.4c0-1.2,0.1-1.8,0.2-2.2c0.3-1,1-1,1.1-1 <path d="M89.4,179.8c0,1.3-0.2,3.1-1.9,3.1c-0.2,0-0.5,0-0.7-0.1c0-0.5,0-1.4,0-2.4c0-1.2,0.1-1.8,0.2-2.2c0.3-1,1-1,1.1-1
C89.2,177.2,89.4,178.7,89.4,179.8z M85.3,181.4c0,1,0,1.6-0.2,2.1c0.6,0.2,1.3,0.4,2.2,0.4c0.6,0,2.1,0,3-1.8 C89.2,177.2,89.4,178.7,89.4,179.8z M85.3,181.4c0,1,0,1.6-0.2,2.1c0.6,0.2,1.3,0.4,2.2,0.4c0.6,0,2.1,0,3-1.8
c0.4-0.8,0.6-1.9,0.6-2.8c0-0.5-0.1-1.6-0.5-2.3c-0.4-0.7-1-1-1.7-1c-1.4,0-1.8,1.1-2,1.7c0-0.7,0-3.2,0.1-4.5 c0.4-0.8,0.6-1.9,0.6-2.8c0-0.5-0.1-1.6-0.5-2.3c-0.4-0.7-1-1-1.7-1c-1.4,0-1.8,1.1-2,1.7c0-0.7,0-3.2,0.1-4.5
c-0.9,0.4-1.5,0.5-2.1,0.6c0.6,0.2,0.6,1.2,0.6,4.2L85.3,181.4"/> c-0.9,0.4-1.5,0.5-2.1,0.6c0.6,0.2,0.6,1.2,0.6,4.2L85.3,181.4"/>
<path d="M93.6,183.7c-0.3,0-0.5-0.1-0.9-0.1c-0.5,0-0.8,0-1.1,0.1c0.1-0.3,0.2-0.4,0.2-1.3c0.1-1.3,0.1-4.6,0-5.3 <path d="M93.6,183.7c-0.3,0-0.5-0.1-0.9-0.1c-0.5,0-0.8,0-1.1,0.1c0.1-0.3,0.2-0.4,0.2-1.3c0.1-1.3,0.1-4.6,0-5.3
c-0.1-0.5-0.2-0.6-0.4-0.8c1.2-0.1,1.5-0.2,2-0.5c-0.1,0.6-0.1,0.9-0.1,1.9C93.3,182.6,93.3,183.1,93.6,183.7"/> c-0.1-0.5-0.2-0.6-0.4-0.8c1.2-0.1,1.5-0.2,2-0.5c-0.1,0.6-0.1,0.9-0.1,1.9C93.3,182.6,93.3,183.1,93.6,183.7"/>
<path d="M98.1,179.7c0,0.9,0,1.5-0.3,2c-0.3,0.6-0.8,0.8-1.2,0.8c-0.8,0-1-0.7-1-1.4c0-1.3,1.2-1.4,1.7-1.4H98.1z M94.2,181.5 <path d="M98.1,179.7c0,0.9,0,1.5-0.3,2c-0.3,0.6-0.8,0.8-1.2,0.8c-0.8,0-1-0.7-1-1.4c0-1.3,1.2-1.4,1.7-1.4H98.1z M94.2,181.5
c0,0.9,0.3,1.8,1.1,2.2c0.4,0.2,0.7,0.2,0.8,0.2c1.3,0,1.7-1,2-1.6c0,0.6,0,1,0,1.5c0.3,0,0.5,0,0.9,0c0.2,0,0.5,0,0.7,0 c0,0.9,0.3,1.8,1.1,2.2c0.4,0.2,0.7,0.2,0.8,0.2c1.3,0,1.7-1,2-1.6c0,0.6,0,1,0,1.5c0.3,0,0.5,0,0.9,0c0.2,0,0.5,0,0.7,0
c-0.2-0.2-0.2-0.4-0.3-0.9c0-0.5,0-1.1,0-1.8v-2.9c0-1.1-0.3-2.1-2.4-2.1c-1.4,0-2.2,0.4-2.6,0.6c0.2,0.3,0.3,0.6,0.4,1.2 c-0.2-0.2-0.2-0.4-0.3-0.9c0-0.5,0-1.1,0-1.8v-2.9c0-1.1-0.3-2.1-2.4-2.1c-1.4,0-2.2,0.4-2.6,0.6c0.2,0.3,0.3,0.6,0.4,1.2
c0.6-0.5,1.3-0.7,2-0.7c1.2,0,1.2,0.8,1.2,1.9c-0.3,0-0.5,0-0.9,0C95.4,178.9,94.2,179.6,94.2,181.5"/> c0.6-0.5,1.3-0.7,2-0.7c1.2,0,1.2,0.8,1.2,1.9c-0.3,0-0.5,0-0.9,0C95.4,178.9,94.2,179.6,94.2,181.5"/>
<path d="M106.2,182.3c0,0.5,0,1,0.2,1.4c-0.3,0-0.5-0.1-1.1-0.1c-0.3,0-0.5,0-0.8,0.1c0.1-0.2,0.1-0.3,0.1-0.5 <path d="M106.2,182.3c0,0.5,0,1,0.2,1.4c-0.3,0-0.5-0.1-1.1-0.1c-0.3,0-0.5,0-0.8,0.1c0.1-0.2,0.1-0.3,0.1-0.5
c0-0.3,0.1-1.4,0.1-1.8v-1.5c0-0.7,0-1.6,0-2c0-0.2-0.1-0.9-0.9-0.9c-0.8,0-1.1,0.6-1.2,1.1c-0.1,0.5-0.1,1-0.1,3.1 c0-0.3,0.1-1.4,0.1-1.8v-1.5c0-0.7,0-1.6,0-2c0-0.2-0.1-0.9-0.9-0.9c-0.8,0-1.1,0.6-1.2,1.1c-0.1,0.5-0.1,1-0.1,3.1
c0,1.8,0,2,0.2,2.5c-0.2,0-0.5-0.1-1-0.1c-0.3,0-0.6,0-0.8,0.1c0.1-0.2,0.2-0.3,0.2-1.1s0.1-4.6,0-5.5c-0.1-0.6-0.2-0.7-0.4-0.8 c0,1.8,0,2,0.2,2.5c-0.2,0-0.5-0.1-1-0.1c-0.3,0-0.6,0-0.8,0.1c0.1-0.2,0.2-0.3,0.2-1.1s0.1-4.6,0-5.5c-0.1-0.6-0.2-0.7-0.4-0.8
c1.1-0.1,1.5-0.2,1.9-0.4v1.5c0.2-0.4,0.5-1.4,1.9-1.4c1.8,0,1.8,1.3,1.8,2.1L106.2,182.3"/> c1.1-0.1,1.5-0.2,1.9-0.4v1.5c0.2-0.4,0.5-1.4,1.9-1.4c1.8,0,1.8,1.3,1.8,2.1L106.2,182.3"/>
<polyline class="st0" points="93.7,173.9 92.5,175 91.4,173.9 92.5,172.7 93.7,173.9 "/> <polyline class="st0" points="93.7,173.9 92.5,175 91.4,173.9 92.5,172.7 93.7,173.9 "/>
<path class="st7" d="M472.9,167.4H467c-0.6,0-1.2-0.1-1.8-0.2c-1.1-0.3-2-1.1-2.7-2.4c-0.6-1.1-0.9-2.4-0.9-3.9 <path class="st7" d="M472.9,167.4H467c-0.6,0-1.2-0.1-1.8-0.2c-1.1-0.3-2-1.1-2.7-2.4c-0.6-1.1-0.9-2.4-0.9-3.9
c0-1.4,0.3-2.7,0.8-3.8c0.6-1.2,1.4-2.1,2.5-2.5c0.8-0.3,1.7-0.5,2.6-0.5h5.4v2.6h-5.6c-0.9,0-1.6,0.5-2,1.5 c0-1.4,0.3-2.7,0.8-3.8c0.6-1.2,1.4-2.1,2.5-2.5c0.8-0.3,1.7-0.5,2.6-0.5h5.4v2.6h-5.6c-0.9,0-1.6,0.5-2,1.5
c-0.3,0.8-0.5,1.8-0.5,3c0,1,0.2,1.9,0.6,2.7c0.5,0.9,1.1,1.3,2,1.3h5.5V167.4L472.9,167.4z"/> c-0.3,0.8-0.5,1.8-0.5,3c0,1,0.2,1.9,0.6,2.7c0.5,0.9,1.1,1.3,2,1.3h5.5V167.4L472.9,167.4z"/>
<path class="st7" d="M483,167.5h-4.7c-1.1,0-2.1-0.5-3-1.5c-0.8-1-1.2-2.1-1.2-3.4c0-1.4,0.5-2.6,1.4-3.6s1.9-1.5,3.1-1.5h4.4v2 <path class="st7" d="M483,167.5h-4.7c-1.1,0-2.1-0.5-3-1.5c-0.8-1-1.2-2.1-1.2-3.4c0-1.4,0.5-2.6,1.4-3.6s1.9-1.5,3.1-1.5h4.4v2
h-3.3c-0.4,0-0.8,0-1.1,0.1c-0.3,0.1-0.5,0.2-0.8,0.4c-0.4,0.4-0.7,1-0.7,1.6h5.7v2.1h-5.7c0,0.3,0,0.5,0.1,0.7s0.2,0.4,0.4,0.6 h-3.3c-0.4,0-0.8,0-1.1,0.1c-0.3,0.1-0.5,0.2-0.8,0.4c-0.4,0.4-0.7,1-0.7,1.6h5.7v2.1h-5.7c0,0.3,0,0.5,0.1,0.7s0.2,0.4,0.4,0.6
c0.2,0.2,0.5,0.3,0.8,0.4c0.3,0.1,0.7,0.1,1.1,0.1h3.4v2C482.9,167.5,483,167.5,483,167.5z"/> c0.2,0.2,0.5,0.3,0.8,0.4c0.3,0.1,0.7,0.1,1.1,0.1h3.4v2C482.9,167.5,483,167.5,483,167.5z"/>
<path class="st7" d="M494.1,167.4h-2.7v-6.5c0-0.2,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.3-0.3-0.4c-0.3-0.2-0.5-0.3-0.9-0.3h-2.6v7.7h-2.6 <path class="st7" d="M494.1,167.4h-2.7v-6.5c0-0.2,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.3-0.3-0.4c-0.3-0.2-0.5-0.3-0.9-0.3h-2.6v7.7h-2.6
v-10h5.1c0.9,0,1.6,0.1,2,0.2c0.6,0.2,1.1,0.5,1.5,1c0.4,0.6,0.7,1.3,0.7,2v6.7C494.2,167.4,494.1,167.4,494.1,167.4z"/> v-10h5.1c0.9,0,1.6,0.1,2,0.2c0.6,0.2,1.1,0.5,1.5,1c0.4,0.6,0.7,1.3,0.7,2v6.7C494.2,167.4,494.1,167.4,494.1,167.4z"/>
<path class="st7" d="M502.2,159.6h-2.6v4.5c0,0.4,0.1,0.7,0.4,1c0.3,0.3,0.7,0.4,1.3,0.4h0.8v1.9h-2.5c-0.7,0-1.6-0.3-2.1-0.8 <path class="st7" d="M502.2,159.6h-2.6v4.5c0,0.4,0.1,0.7,0.4,1c0.3,0.3,0.7,0.4,1.3,0.4h0.8v1.9h-2.5c-0.7,0-1.6-0.3-2.1-0.8
c-0.3-0.3-0.5-0.7-0.6-1.1c-0.1-0.4-0.1-0.8-0.1-1.4v-4.6h-1.7v-2h1.7V154h2.8v3.5h2.6L502.2,159.6L502.2,159.6z"/> c-0.3-0.3-0.5-0.7-0.6-1.1c-0.1-0.4-0.1-0.8-0.1-1.4v-4.6h-1.7v-2h1.7V154h2.8v3.5h2.6L502.2,159.6L502.2,159.6z"/>
<path class="st7" d="M518.1,160.7c0,2.6-0.7,4.5-2.2,5.6c-1.2,0.9-2.9,1.4-5.1,1.4c-2.5,0-4.3-0.5-5.5-1.6c-1.3-1.1-2-3-2-5.5 <path class="st7" d="M518.1,160.7c0,2.6-0.7,4.5-2.2,5.6c-1.2,0.9-2.9,1.4-5.1,1.4c-2.5,0-4.3-0.5-5.5-1.6c-1.3-1.1-2-3-2-5.5
c0-2.1,0.6-3.7,1.7-4.9c1.3-1.3,3.2-1.9,5.7-1.9c2.8,0,4.7,0.6,5.9,1.8C517.6,156.7,518.1,158.4,518.1,160.7L518.1,160.7z c0-2.1,0.6-3.7,1.7-4.9c1.3-1.3,3.2-1.9,5.7-1.9c2.8,0,4.7,0.6,5.9,1.8C517.6,156.7,518.1,158.4,518.1,160.7L518.1,160.7z
M514.6,160.6c0-1.3-0.3-2.4-0.9-3.1c-0.7-0.9-1.7-1.3-3.1-1.3c-1.4,0-2.4,0.5-3.1,1.4c-0.6,0.8-0.9,1.8-0.9,3 M514.6,160.6c0-1.3-0.3-2.4-0.9-3.1c-0.7-0.9-1.7-1.3-3.1-1.3c-1.4,0-2.4,0.5-3.1,1.4c-0.6,0.8-0.9,1.8-0.9,3
c0,1.4,0.2,2.5,0.7,3.2c0.6,1,1.8,1.4,3.5,1.4c1.5,0,2.5-0.5,3.1-1.4C514.4,163.1,514.6,162.1,514.6,160.6L514.6,160.6z"/> c0,1.4,0.2,2.5,0.7,3.2c0.6,1,1.8,1.4,3.5,1.4c1.5,0,2.5-0.5,3.1-1.4C514.4,163.1,514.6,162.1,514.6,160.6L514.6,160.6z"/>
<path class="st7" d="M533.7,163.3c0,1.2-0.4,2.2-1.2,3s-1.8,1.2-3,1.2H520v-2.4h7.8c0.5,0,1-0.1,1.3-0.4c0.4-0.3,0.6-0.7,0.6-1.1 <path class="st7" d="M533.7,163.3c0,1.2-0.4,2.2-1.2,3s-1.8,1.2-3,1.2H520v-2.4h7.8c0.5,0,1-0.1,1.3-0.4c0.4-0.3,0.6-0.7,0.6-1.1
c0-1.1-0.8-1.7-2.4-1.7h-3.9c-1.1,0-2.1-0.4-3-1.1s-1.3-1.6-1.3-2.7c0-1.2,0.4-2.2,1.2-2.9c0.8-0.8,1.9-1.1,3.3-1.1h9.1v2.3h-8 c0-1.1-0.8-1.7-2.4-1.7h-3.9c-1.1,0-2.1-0.4-3-1.1s-1.3-1.6-1.3-2.7c0-1.2,0.4-2.2,1.2-2.9c0.8-0.8,1.9-1.1,3.3-1.1h9.1v2.3h-8
c-0.4,0-0.7,0.2-1.1,0.5c-0.4,0.3-0.5,0.6-0.5,1.1s0.2,0.8,0.5,1.2c0.4,0.3,0.8,0.5,1.3,0.5h4.3c1.4,0,2.4,0.4,3.2,1.1 c-0.4,0-0.7,0.2-1.1,0.5c-0.4,0.3-0.5,0.6-0.5,1.1s0.2,0.8,0.5,1.2c0.4,0.3,0.8,0.5,1.3,0.5h4.3c1.4,0,2.4,0.4,3.2,1.1
C533.3,161.2,533.7,162.1,533.7,163.3L533.7,163.3z"/> C533.3,161.2,533.7,162.1,533.7,163.3L533.7,163.3z"/>
<polygon class="st8" points="443.8,160.4 438.5,165.5 433.3,160.4 438.5,155.2 "/> <polygon class="st8" points="443.8,160.4 438.5,165.5 433.3,160.4 438.5,155.2 "/>
<polygon class="st2" points="443.8,160.4 443.4,160 438.5,164.8 434,160.4 438.5,155.9 443.4,160.7 443.8,160.4 443.4,160 <polygon class="st2" points="443.8,160.4 443.4,160 438.5,164.8 434,160.4 438.5,155.9 443.4,160.7 443.8,160.4 443.4,160
443.8,160.4 444.1,160 438.5,154.5 432.6,160.4 438.5,166.2 444.5,160.4 444.1,160 "/> 443.8,160.4 444.1,160 438.5,154.5 432.6,160.4 438.5,166.2 444.5,160.4 444.1,160 "/>
<polygon class="st9" points="444.9,159.3 439.7,154.1 444.9,149 450,154.1 "/> <polygon class="st9" points="444.9,159.3 439.7,154.1 444.9,149 450,154.1 "/>
<polygon class="st2" points="444.9,159.3 445.2,159 440.4,154.1 444.9,149.7 449.3,154.1 444.5,159 444.9,159.3 445.2,159 <polygon class="st2" points="444.9,159.3 445.2,159 440.4,154.1 444.9,149.7 449.3,154.1 444.5,159 444.9,159.3 445.2,159
444.9,159.3 445.2,159.7 450.7,154.1 444.9,148.2 439,154.1 444.9,160 445.2,159.7 "/> 444.9,159.3 445.2,159.7 450.7,154.1 444.9,148.2 439,154.1 444.9,160 445.2,159.7 "/>
<polygon class="st10" points="450,166.6 444.8,171.8 439.6,166.6 444.8,161.5 "/> <polygon class="st10" points="450,166.6 444.8,171.8 439.6,166.6 444.8,161.5 "/>
<polygon class="st2" points="450,166.6 449.7,166.3 444.8,171.1 440.3,166.6 444.8,162.2 449.7,167 450,166.6 449.7,166.3 <polygon class="st2" points="450,166.6 449.7,166.3 444.8,171.1 440.3,166.6 444.8,162.2 449.7,167 450,166.6 449.7,166.3
450,166.6 450.4,166.3 444.8,160.8 438.8,166.6 444.8,172.5 450.7,166.6 450.4,166.3 "/> 450,166.6 450.4,166.3 444.8,160.8 438.8,166.6 444.8,172.5 450.7,166.6 450.4,166.3 "/>
<polygon class="st7" points="451.1,165.6 446,160.4 451.1,155.2 456.3,160.4 "/> <polygon class="st7" points="451.1,165.6 446,160.4 451.1,155.2 456.3,160.4 "/>
<polygon class="st2" points="451.1,165.6 451.5,165.2 446.7,160.4 451.1,155.9 455.6,160.4 450.8,165.2 451.1,165.6 451.5,165.2 <polygon class="st2" points="451.1,165.6 451.5,165.2 446.7,160.4 451.1,155.9 455.6,160.4 450.8,165.2 451.1,165.6 451.5,165.2
451.1,165.6 451.5,165.9 457,160.4 451.1,154.5 445.3,160.4 451.1,166.3 451.5,165.9 "/> 451.1,165.6 451.5,165.9 457,160.4 451.1,154.5 445.3,160.4 451.1,166.3 451.5,165.9 "/>
<rect x="436.8" y="152.3" class="st11" width="7" height="7"/> <rect x="436.8" y="152.3" class="st11" width="7" height="7"/>
<rect x="445.9" y="161.4" class="st9" width="7" height="7"/> <rect x="445.9" y="161.4" class="st9" width="7" height="7"/>
<rect x="445.9" y="152.3" class="st8" width="7" height="7"/> <rect x="445.9" y="152.3" class="st8" width="7" height="7"/>
<rect x="436.5" y="152" class="st10" width="7.3" height="7.3"/> <rect x="436.5" y="152" class="st10" width="7.3" height="7.3"/>
<polygon class="st2" points="436.5,152 436.5,152.5 443.3,152.5 443.3,158.8 437,158.8 437,152 436.5,152 436.5,152.5 436.5,152 <polygon class="st2" points="436.5,152 436.5,152.5 443.3,152.5 443.3,158.8 437,158.8 437,152 436.5,152 436.5,152.5 436.5,152
436,152 436,159.8 444.3,159.8 444.3,151.5 436,151.5 436,152 "/> 436,152 436,159.8 444.3,159.8 444.3,151.5 436,151.5 436,152 "/>
<polygon class="st2" points="445.9,161.4 445.9,161.9 452.6,161.9 452.6,168.2 446.4,168.2 446.4,161.4 445.9,161.4 445.9,161.9 <polygon class="st2" points="445.9,161.4 445.9,161.9 452.6,161.9 452.6,168.2 446.4,168.2 446.4,161.4 445.9,161.4 445.9,161.9
445.9,161.4 445.4,161.4 445.4,169.2 453.6,169.2 453.6,160.9 445.4,160.9 445.4,161.4 "/> 445.9,161.4 445.4,161.4 445.4,169.2 453.6,169.2 453.6,160.9 445.4,160.9 445.4,161.4 "/>
<polygon class="st2" points="445.9,152.1 445.9,152.6 452.7,152.6 452.7,158.8 446.4,158.8 446.4,152.1 445.9,152.1 445.9,152.6 <polygon class="st2" points="445.9,152.1 445.9,152.6 452.7,152.6 452.7,158.8 446.4,158.8 446.4,152.1 445.9,152.1 445.9,152.6
445.9,152.1 445.4,152.1 445.4,159.8 453.7,159.8 453.7,151.6 445.4,151.6 445.4,152.1 "/> 445.9,152.1 445.4,152.1 445.4,159.8 453.7,159.8 453.7,151.6 445.4,151.6 445.4,152.1 "/>
<rect x="436.5" y="161.4" class="st7" width="7.3" height="7.3"/> <rect x="436.5" y="161.4" class="st7" width="7.3" height="7.3"/>
<polygon class="st2" points="436.5,161.4 436.5,161.9 443.3,161.9 443.3,168.2 437,168.2 437,161.4 436.5,161.4 436.5,161.9 <polygon class="st2" points="436.5,161.4 436.5,161.9 443.3,161.9 443.3,168.2 437,168.2 437,161.4 436.5,161.4 436.5,161.9
436.5,161.4 436,161.4 436,169.2 444.3,169.2 444.3,160.9 436,160.9 436,161.4 "/> 436.5,161.4 436,161.4 436,169.2 444.3,169.2 444.3,160.9 436,160.9 436,161.4 "/>
<polygon class="st2" points="443.8,160.4 443.4,160 438.5,164.8 434,160.4 438.5,155.9 443.4,160.7 443.8,160.4 443.4,160 <polygon class="st2" points="443.8,160.4 443.4,160 438.5,164.8 434,160.4 438.5,155.9 443.4,160.7 443.8,160.4 443.4,160
443.8,160.4 444.1,160 438.5,154.5 432.6,160.4 438.5,166.2 444.5,160.4 444.1,160 "/> 443.8,160.4 444.1,160 438.5,154.5 432.6,160.4 438.5,166.2 444.5,160.4 444.1,160 "/>
<polygon class="st2" points="444.9,159.3 445.2,159 440.4,154.1 444.9,149.7 449.3,154.1 444.5,159 444.9,159.3 445.2,159 <polygon class="st2" points="444.9,159.3 445.2,159 440.4,154.1 444.9,149.7 449.3,154.1 444.5,159 444.9,159.3 445.2,159
444.9,159.3 445.2,159.7 450.7,154.1 444.9,148.2 439,154.1 444.9,160 445.2,159.7 "/> 444.9,159.3 445.2,159.7 450.7,154.1 444.9,148.2 439,154.1 444.9,160 445.2,159.7 "/>
<polygon class="st2" points="450,166.6 449.7,166.3 444.8,171.1 440.3,166.6 444.8,162.2 449.7,167 450,166.6 449.7,166.3 <polygon class="st2" points="450,166.6 449.7,166.3 444.8,171.1 440.3,166.6 444.8,162.2 449.7,167 450,166.6 449.7,166.3
450,166.6 450.4,166.3 444.8,160.8 438.8,166.6 444.8,172.5 450.7,166.6 450.4,166.3 "/> 450,166.6 450.4,166.3 444.8,160.8 438.8,166.6 444.8,172.5 450.7,166.6 450.4,166.3 "/>
<polygon class="st2" points="451.1,165.6 451.5,165.2 446.7,160.4 451.1,155.9 455.6,160.4 450.8,165.2 451.1,165.6 451.5,165.2 <polygon class="st2" points="451.1,165.6 451.5,165.2 446.7,160.4 451.1,155.9 455.6,160.4 450.8,165.2 451.1,165.6 451.5,165.2
451.1,165.6 451.5,165.9 457,160.4 451.1,154.5 445.3,160.4 451.1,166.3 451.5,165.9 "/> 451.1,165.6 451.5,165.9 457,160.4 451.1,154.5 445.3,160.4 451.1,166.3 451.5,165.9 "/>
</g> </g>
<g> <g>
<g> <g>
<path class="st12" d="M316.7,46.8v14.4c0,0.4-0.3,0.8-0.6,0.9c-0.1,0-0.2,0.1-0.3,0.1c-0.3,0-0.6-0.1-0.7-0.4l-9.7-12.3v11.7 <path class="st12" d="M316.7,46.8v14.4c0,0.4-0.3,0.8-0.6,0.9c-0.1,0-0.2,0.1-0.3,0.1c-0.3,0-0.6-0.1-0.7-0.4l-9.7-12.3v11.7
c0,0.5-0.4,0.9-0.9,0.9s-0.9-0.4-0.9-0.9V46.8c0-0.4,0.3-0.8,0.6-0.9c0.4-0.1,0.8,0,1.1,0.3l9.7,12.3V46.8c0-0.5,0.4-0.9,0.9-0.9 c0,0.5-0.4,0.9-0.9,0.9s-0.9-0.4-0.9-0.9V46.8c0-0.4,0.3-0.8,0.6-0.9c0.4-0.1,0.8,0,1.1,0.3l9.7,12.3V46.8c0-0.5,0.4-0.9,0.9-0.9
@@ -268,7 +270,7 @@
c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4,0-0.6-0.1c-0.3,0-0.7-0.1-1.1-0.3c-0.8-0.3-1.6-0.7-2.2-1.3c-0.7-0.6-1.3-1.3-1.7-2.2 c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4,0-0.6-0.1c-0.3,0-0.7-0.1-1.1-0.3c-0.8-0.3-1.6-0.7-2.2-1.3c-0.7-0.6-1.3-1.3-1.7-2.2
c-0.4-0.9-0.6-1.8-0.6-2.8l0-0.4C437.6,53.5,437.6,53.4,437.6,53.2z"/> c-0.4-0.9-0.6-1.8-0.6-2.8l0-0.4C437.6,53.5,437.6,53.4,437.6,53.2z"/>
</g> </g>
<path class="st13" d="M291.3,44.1l-11.4-6.6c-0.6-0.3-1.2-0.5-1.9-0.5c-0.7,0-1.3,0.2-1.9,0.5l-11.4,6.6c-1.2,0.7-1.9,1.9-1.9,3.3 <path class="st13" d="M291.3,44.1l-11.4-6.6c-0.6-0.3-1.2-0.5-1.9-0.5c-0.7,0-1.3,0.2-1.9,0.5l-11.4,6.6c-1.2,0.7-1.9,1.9-1.9,3.3
l0,13.2c0,1.4,0.7,2.6,1.9,3.3l11.4,6.6c0.6,0.3,1.2,0.5,1.9,0.5c0.7,0,1.3-0.2,1.9-0.5l11.4-6.6c1.2-0.7,1.9-1.9,1.9-3.3l0-13.2 l0,13.2c0,1.4,0.7,2.6,1.9,3.3l11.4,6.6c0.6,0.3,1.2,0.5,1.9,0.5c0.7,0,1.3-0.2,1.9-0.5l11.4-6.6c1.2-0.7,1.9-1.9,1.9-3.3l0-13.2
C293.2,46.1,292.5,44.8,291.3,44.1z M276.8,38.7c0.2-0.1,0.4-0.2,0.6-0.2V44c0,0.4,0.3,0.7,0.7,0.7c0.4,0,0.7-0.3,0.7-0.7v-5.6 C293.2,46.1,292.5,44.8,291.3,44.1z M276.8,38.7c0.2-0.1,0.4-0.2,0.6-0.2V44c0,0.4,0.3,0.7,0.7,0.7c0.4,0,0.7-0.3,0.7-0.7v-5.6
c0.2,0.1,0.4,0.1,0.6,0.3l11.4,6.6c0.2,0.1,0.4,0.2,0.5,0.4l-6.9,4c-1.4-2-3.7-3.3-6.3-3.3c-2.6,0-4.9,1.3-6.3,3.3l-6.9-4 c0.2,0.1,0.4,0.1,0.6,0.3l11.4,6.6c0.2,0.1,0.4,0.2,0.5,0.4l-6.9,4c-1.4-2-3.7-3.3-6.3-3.3c-2.6,0-4.9,1.3-6.3,3.3l-6.9-4
@@ -280,5 +282,5 @@
c0-1.2-0.3-2.3-0.7-3.2l6.9-4c0.1,0.2,0.1,0.4,0.1,0.6l0,13.2c0,0.2,0,0.4-0.1,0.7l-4.4-2.6c-0.3-0.2-0.7-0.1-0.9,0.2 c0-1.2-0.3-2.3-0.7-3.2l6.9-4c0.1,0.2,0.1,0.4,0.1,0.6l0,13.2c0,0.2,0,0.4-0.1,0.7l-4.4-2.6c-0.3-0.2-0.7-0.1-0.9,0.2
c-0.2,0.3-0.1,0.7,0.2,0.9l4.4,2.6c-0.1,0.1-0.3,0.3-0.5,0.4L279.2,69.3z"/> c-0.2,0.3-0.1,0.7,0.2,0.9l4.4,2.6c-0.1,0.1-0.3,0.3-0.5,0.4L279.2,69.3z"/>
</g> </g>
<line class="st14" x1="51.2" y1="108" x2="676.8" y2="108"/> <line class="st14" x1="51.2" y1="108" x2="676.8" y2="108"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

+1 -1
View File
@@ -24,7 +24,7 @@ Each script in this repository performs the following steps:
1. Checks if the system is an Debian based Linux distribution. 1. Checks if the system is an Debian based Linux distribution.
2. Configures the NodeSource Node.js DEB repository for the specified version of Node.js. 2. Configures the NodeSource Node.js DEB repository for the specified version of Node.js.
3. Logs a message indicating that the repository is configured and updated, and instructs the user to run `apt-get install nodejs -y` to complete the installation. 3. Logs a message indicating that the repository is configured and updated, and instructs the user to run `apt install nodejs -y` to complete the installation.
The `setup_current` and `setup_latest` scripts are special scripts that install the current and latest versions of Node.js, respectively. The current version is 20.x and the latest version is 21.x. The `setup_current` and `setup_latest` scripts are special scripts that install the current and latest versions of Node.js, respectively. The current version is 20.x and the latest version is 21.x.
+12 -12
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -75,8 +75,8 @@ configure_repo() {
local node_version=$1 local node_version=$1
arch=$(dpkg --print-architecture) arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+3 -3
View File
@@ -25,7 +25,7 @@ if [ ! -f "$base_script" ]; then
fi fi
# List of versions # List of versions
versions=("18" "20" "22" "23" "24") versions=("23" "24" "25")
# Iterate over the versions and create scripts # Iterate over the versions and create scripts
for version in "${versions[@]}"; do for version in "${versions[@]}"; do
@@ -33,8 +33,8 @@ for version in "${versions[@]}"; do
done done
# Define LTS and current Node.js versions # Define LTS and current Node.js versions
lts_version="22" lts_version="24"
current_version="24" current_version="25"
# Create setup_lts and setup_current scripts # Create setup_lts and setup_current scripts
create_script "$lts_version" "lts" create_script "$lts_version" "lts"
+9 -9
View File
@@ -113,13 +113,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -152,11 +152,11 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully. To install Node.js, run: apt-get install nodejs -y" "success" log "Repository configured successfully. To install Node.js, run: apt install nodejs -y" "success"
fi fi
} }
+37 -10
View File
@@ -1,5 +1,31 @@
#!/bin/bash #!/bin/bash
# Send deprecation Warning
node_deprecation_warning() {
log "
===============================================================================
DEPRECATION WARNING
===============================================================================
Node.js 18.x is no longer actively supported!
You will not receive security or critical stability updates for this version.
You should migrate to a supported version of Node.js as soon as possible.
Please see https://nodesource.com/products/distributions for details about which
version may be appropriate for you.
The NodeSource Node.js distributions site contains
information both about supported versions of Node.js and N|Solid supported Linux
distributions. To learn more about usage, see:
https://nodesource.com/products/distributions
===============================================================================
Continuing in 10 seconds ...
" "error"
sleep 10
}
# Logger Function # Logger Function
log() { log() {
local message="$1" local message="$1"
@@ -42,13 +68,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -91,14 +117,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
@@ -109,5 +135,6 @@ NODE_VERSION="18.x"
check_os check_os
# Main execution # Main execution
node_deprecation_warning
install_pre_reqs || handle_error $? "Failed installing pre-requisites" install_pre_reqs || handle_error $? "Failed installing pre-requisites"
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository" configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
+10 -10
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+10 -10
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+10 -10
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+12 -12
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -75,8 +75,8 @@ configure_repo() {
local node_version=$1 local node_version=$1
arch=$(dpkg --print-architecture) arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+12 -12
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -75,8 +75,8 @@ configure_repo() {
local node_version=$1 local node_version=$1
arch=$(dpkg --print-architecture) arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
@@ -91,14 +91,14 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
+113
View File
@@ -0,0 +1,113 @@
#!/bin/bash
# Logger Function
log() {
local message="$1"
local type="$2"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
local color
local endcolor="\033[0m"
case "$type" in
"info") color="\033[38;5;79m" ;;
"success") color="\033[1;32m" ;;
"error") color="\033[1;31m" ;;
*) color="\033[1;34m" ;;
esac
echo -e "${color}${timestamp} - ${message}${endcolor}"
}
# Error handler function
handle_error() {
local exit_code=$1
local error_message="$2"
log "Error: $error_message (Exit Code: $exit_code)" "error"
exit $exit_code
}
# Function to check for command availability
command_exists() {
command -v "$1" &> /dev/null
}
check_os() {
if ! [ -f "/etc/debian_version" ]; then
echo "Error: This script is only supported on Debian-based systems."
exit 1
fi
}
# Function to Install the script pre-requisites
install_pre_reqs() {
log "Installing pre-requisites" "info"
# Run 'apt update'
if ! apt update -y; then
handle_error "$?" "Failed to run 'apt update'"
fi
# Run 'apt install'
if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages"
fi
if ! mkdir -p /usr/share/keyrings; then
handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo"
fi
rm -f /usr/share/keyrings/nodesource.gpg || true
rm -f /etc/apt/sources.list.d/nodesource.list || true
# Run 'curl' and 'gpg' to download and import the NodeSource signing key
if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then
handle_error "$?" "Failed to download and import the NodeSource signing key"
fi
# Explicitly set the permissions to ensure the file is readable by all
if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then
handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg"
fi
}
# Function to configure the Repo
configure_repo() {
local node_version=$1
arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
# N|solid Config
echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null
# Nodejs Config
echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt update'
if ! apt update -y; then
handle_error "$?" "Failed to run 'apt update'"
else
log "Repository configured successfully."
log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi
}
# Define Node.js version
NODE_VERSION="25.x"
# Check OS
check_os
# Main execution
install_pre_reqs || handle_error $? "Failed installing pre-requisites"
configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository"
+13 -13
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -75,8 +75,8 @@ configure_repo() {
local node_version=$1 local node_version=$1
arch=$(dpkg --print-architecture) arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
@@ -91,19 +91,19 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
# Define Node.js version # Define Node.js version
NODE_VERSION="24.x" NODE_VERSION="25.x"
# Check OS # Check OS
check_os check_os
+13 -13
View File
@@ -42,13 +42,13 @@ check_os() {
install_pre_reqs() { install_pre_reqs() {
log "Installing pre-requisites" "info" log "Installing pre-requisites" "info"
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
fi fi
# Run 'apt-get install' # Run 'apt install'
if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then if ! apt install -y apt-transport-https ca-certificates curl gnupg; then
handle_error "$?" "Failed to install packages" handle_error "$?" "Failed to install packages"
fi fi
@@ -75,8 +75,8 @@ configure_repo() {
local node_version=$1 local node_version=$1
arch=$(dpkg --print-architecture) arch=$(dpkg --print-architecture)
if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ]; then
handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64 are supported. Contact Nodesource for an extended support version https://nodesource.com/pages/contact-us.html."
fi fi
echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null
@@ -91,19 +91,19 @@ configure_repo() {
echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null
# Run 'apt-get update' # Run 'apt update'
if ! apt-get update -y; then if ! apt update -y; then
handle_error "$?" "Failed to run 'apt-get update'" handle_error "$?" "Failed to run 'apt update'"
else else
log "Repository configured successfully." log "Repository configured successfully."
log "To install Node.js, run: apt-get install nodejs -y" "info" log "To install Node.js, run: apt install nodejs -y" "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" log "To install N|solid Runtime, run: apt install nsolid -y \n" "success"
fi fi
} }
# Define Node.js version # Define Node.js version
NODE_VERSION="22.x" NODE_VERSION="24.x"
# Check OS # Check OS
check_os check_os
+4 -4
View File
@@ -66,7 +66,7 @@ module_hotfixes=1"
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version # Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid # Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid] NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
@@ -88,7 +88,7 @@ if command_exists dnf; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -104,7 +104,7 @@ elif command_exists yum; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid" yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -119,7 +119,7 @@ elif command_exists microdnf; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info" log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else else
+3 -3
View File
@@ -25,7 +25,7 @@ if [ ! -f "$base_script" ]; then
fi fi
# List of versions # List of versions
versions=("18" "20" "22" "23" "24") versions=("23" "24" "25")
# Iterate over the versions and create scripts # Iterate over the versions and create scripts
for version in "${versions[@]}"; do for version in "${versions[@]}"; do
@@ -33,8 +33,8 @@ for version in "${versions[@]}"; do
done done
# Define LTS and current Node.js versions # Define LTS and current Node.js versions
lts_version="22" lts_version="24"
current_version="24" current_version="25"
# Create setup_lts and setup_current scripts # Create setup_lts and setup_current scripts
create_script "$lts_version" "lts" create_script "$lts_version" "lts"
+29
View File
@@ -1,5 +1,31 @@
#!/bin/bash #!/bin/bash
# Send deprecation Warning
node_deprecation_warning() {
log "
===============================================================================
DEPRECATION WARNING
===============================================================================
Node.js 18.x is no longer actively supported!
You will not receive security or critical stability updates for this version.
You should migrate to a supported version of Node.js as soon as possible.
Please see https://nodesource.com/products/distributions for details about which
version may be appropriate for you.
The NodeSource Node.js distributions site contains
information both about supported versions of Node.js and N|Solid supported Linux
distributions. To learn more about usage, see:
https://nodesource.com/products/distributions
===============================================================================
Continuing in 10 seconds ...
" "error"
sleep 10
}
# Logger Function # Logger Function
log() { log() {
local message="$1" local message="$1"
@@ -36,6 +62,9 @@ if ! [ -f /etc/redhat-release ] && ! grep -q "Amazon Linux" /etc/system-release
handle_error 1 "This script is intended for RPM-based systems. Please run it on an RPM-based system." handle_error 1 "This script is intended for RPM-based systems. Please run it on an RPM-based system."
fi fi
# Send deprecation Warning
node_deprecation_warning
log "Cleaning up old repositories..." "info" log "Cleaning up old repositories..." "info"
rm -f /etc/yum.repos.d/nodesource*.repo rm -f /etc/yum.repos.d/nodesource*.repo
log "Old repositories removed" "info" log "Old repositories removed" "info"
+4 -4
View File
@@ -66,7 +66,7 @@ module_hotfixes=1"
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version # Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid # Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid] NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
@@ -88,7 +88,7 @@ if command_exists dnf; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -104,7 +104,7 @@ elif command_exists yum; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid" yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -119,7 +119,7 @@ elif command_exists microdnf; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info" log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else else
+4 -4
View File
@@ -66,7 +66,7 @@ module_hotfixes=1"
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version # Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid # Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid] NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
@@ -88,7 +88,7 @@ if command_exists dnf; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -104,7 +104,7 @@ elif command_exists yum; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid" yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -119,7 +119,7 @@ elif command_exists microdnf; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info" log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else else
+132
View File
@@ -0,0 +1,132 @@
#!/bin/bash
# Logger Function
log() {
local message="$1"
local type="$2"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
local color
local endcolor="\033[0m"
case "$type" in
"info") color="\033[38;5;79m" ;;
"success") color="\033[1;32m" ;;
"error") color="\033[1;31m" ;;
*) color="\033[1;34m" ;;
esac
echo -e "${color}${timestamp} - ${message}${endcolor}"
}
# Error handler function
handle_error() {
local exit_code=$1
local error_message="$2"
log "Error: $error_message (Exit Code: $exit_code)" "error"
exit $exit_code
}
# Function to check for command availability
command_exists() {
command -v "$1" &> /dev/null
}
# Check if we are on an RPM-based system
if ! [ -f /etc/redhat-release ] && ! grep -q "Amazon Linux" /etc/system-release 2>/dev/null; then
handle_error 1 "This script is intended for RPM-based systems. Please run it on an RPM-based system."
fi
log "Cleaning up old repositories..." "info"
rm -f /etc/yum.repos.d/nodesource*.repo
log "Old repositories removed" "info"
# Define Node.js version
NODE_VERSION="25.x"
# Get system architecture
SYS_ARCH=$(uname -m)
# Validate system architecture
case "$SYS_ARCH" in
aarch64|x86_64) log "Supported architecture: $SYS_ARCH" "info" ;;
*) handle_error 1 "Unsupported architecture: $SYS_ARCH. Only aarch64 and x86_64 are supported." ;;
esac
# Repository content for Node.js
NODEJS_REPO_CONTENT="[nodesource-nodejs]
name=Node.js Packages for Linux RPM based distros - $SYS_ARCH
baseurl=https://rpm.nodesource.com/pub_${NODE_VERSION}/nodistro/nodejs/$SYS_ARCH
priority=9
enabled=1
gpgcheck=1
gpgkey=https://rpm.nodesource.com/gpgkey/ns-operations-public.key
module_hotfixes=1"
# Write Node.js repository content
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
baseurl=https://rpm.nodesource.com/pub_${NODE_VERSION}/nodistro/nsolid/$SYS_ARCH
priority=9
enabled=1
gpgcheck=1
gpgkey=https://rpm.nodesource.com/gpgkey/ns-operations-public.key
module_hotfixes=1"
# Write N|Solid repository content
echo "$NSOLID_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nsolid.repo > /dev/null
log "Added N|Solid repository for LTS version: $NODE_VERSION" "info"
fi
# Check for availability of dnf, yum or microdnf
if command_exists dnf; then
log "dnf available, updating..." "info"
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info"
log "To install N|solid Runtime, run: dnf install nsolid -y" "success"
else
log "Repository is configured and updated." "info"
fi
log "Run 'dnf install nodejs -y' to complete the installation." "info"
exit 0
elif command_exists yum; then
log "yum available, updating..." "info"
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info"
log "Run 'yum install nsolid -y' to complete the installation." "success"
else
log "Repository is configured and updated." "info"
fi
log "Run 'yum install nodejs -y' to complete the installation." "info"
elif command_exists microdnf; then
log "microdnf available, updating..." "info"
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else
log "Repository is configured and updated." "info"
fi
log "Run 'microdnf install nodejs -y' to complete the installation." "info"
else
handle_error 1 "Neither yum, dnf nor microdnf package manager was found. Please update your system using your package manager."
fi
+5 -5
View File
@@ -41,7 +41,7 @@ rm -f /etc/yum.repos.d/nodesource*.repo
log "Old repositories removed" "info" log "Old repositories removed" "info"
# Define Node.js version # Define Node.js version
NODE_VERSION="24.x" NODE_VERSION="25.x"
# Get system architecture # Get system architecture
SYS_ARCH=$(uname -m) SYS_ARCH=$(uname -m)
@@ -66,7 +66,7 @@ module_hotfixes=1"
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version # Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid # Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid] NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
@@ -88,7 +88,7 @@ if command_exists dnf; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -104,7 +104,7 @@ elif command_exists yum; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid" yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -119,7 +119,7 @@ elif command_exists microdnf; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info" log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else else
+5 -5
View File
@@ -41,7 +41,7 @@ rm -f /etc/yum.repos.d/nodesource*.repo
log "Old repositories removed" "info" log "Old repositories removed" "info"
# Define Node.js version # Define Node.js version
NODE_VERSION="22.x" NODE_VERSION="24.x"
# Get system architecture # Get system architecture
SYS_ARCH=$(uname -m) SYS_ARCH=$(uname -m)
@@ -66,7 +66,7 @@ module_hotfixes=1"
echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null echo "$NODEJS_REPO_CONTENT" | tee /etc/yum.repos.d/nodesource-nodejs.repo > /dev/null
# Check if Node.js version is an LTS version # Check if Node.js version is an LTS version
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
# Repository content for N|Solid # Repository content for N|Solid
NSOLID_REPO_CONTENT="[nodesource-nsolid] NSOLID_REPO_CONTENT="[nodesource-nsolid]
name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH name=N|Solid Packages for Linux RPM based distros - $SYS_ARCH
@@ -88,7 +88,7 @@ if command_exists dnf; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" dnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" dnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -104,7 +104,7 @@ elif command_exists yum; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs" yum makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid" yum makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated." "info" log "Repository is configured and updated." "info"
log "You can use N|solid Runtime as a node.js alternative" "info" log "You can use N|solid Runtime as a node.js alternative" "info"
@@ -119,7 +119,7 @@ elif command_exists microdnf; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nodejs"
# Update N|Solid repository if it's LTS # Update N|Solid repository if it's LTS
if [[ "$NODE_VERSION" == "18.x" ]] || [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]]; then if [[ "$NODE_VERSION" == "20.x" ]] || [[ "$NODE_VERSION" == "22.x" ]] || [[ "$NODE_VERSION" == "24.x" ]]; then
microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid" microdnf makecache --disablerepo="*" --enablerepo="nodesource-nsolid"
log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info" log "Repository is configured and updated. Run 'microdnf install nsolid -y' to complete the installation." "info"
else else