diff --git a/.gitignore b/.gitignore index 54779cc..3554cd7 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ runtime # Filetypes *.cfg *.log +*.db # Unique Directories /tmp/ diff --git a/README.md b/README.md index 8473f1c..c11ae7f 100644 --- a/README.md +++ b/README.md @@ -30,5 +30,9 @@ Contributions to corePY are welcome! If you have ideas for new features or have - **Create a New Branch**: For new features or bug fixes, create a new branch in your fork. - **Submit a Pull Request**: Once your changes are ready, submit a pull request to the main repository. +## To Do + - **Provisioning System**: Develop a provisioning system for easier deployment and management. + - **Log on file**: Add the ability to save the log on file. + ## Wait, where is the documentation? Review the [Documentation](https://laswitchtech.com/en/blog/projects/corepy/index). diff --git a/VERSION b/VERSION index e946d6b..3e7bcf0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v1.0.3 +v1.0.4 diff --git a/__init__.py b/__init__.py index b974bf6..4223ff4 100644 --- a/__init__.py +++ b/__init__.py @@ -11,6 +11,9 @@ from .network.diagnostic import Diagnostic from .network.tools import Tools +from .database import SQLite +from .filesystem import FileSystem + __version__ = "1.0.0" -__all__ = ["Application", "CommandLine", "Helper", "Configuration", "Log", "MsgBox", "StepIndicator", "Form", "Diagnostic", "Tools"] +__all__ = ["Application", "CommandLine", "Helper", "Configuration", "Log", "MsgBox", "StepIndicator", "Form", "Diagnostic", "Tools", "SQLite", "FileSystem"] diff --git a/application.py b/application.py index 8e97fad..1bacf1e 100644 --- a/application.py +++ b/application.py @@ -9,6 +9,7 @@ from .helper import Helper from .configuration import Configuration from .log import Log +from .service import Service from .ui import MsgBox import os import subprocess @@ -195,6 +196,9 @@ def __init__(self, name: Optional[str] = None, argv=None): # Logger self._logger = Log() + # Service manager + self._service = Service(self._logger, self._configuration) + # Initial stylesheet load self._loadStylesheet() @@ -214,6 +218,10 @@ def logger(self) -> Log: def configuration(self) -> Configuration: return self._configuration + @property + def service(self) -> Service: + return self._service + @property def mainWindow(self): return self._mainWindow diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..932220a --- /dev/null +++ b/build.sh @@ -0,0 +1,1402 @@ +#!/bin/bash +set -euo pipefail + +# ----------------------------------------------------------------------------- +# build.sh (generic PyInstaller build script) +# - Designed to be reused across LaswitchTech projects +# - Defaults work out-of-the-box for this repo (Replicator) +# ----------------------------------------------------------------------------- + +log() { + echo "$(date +'%Y-%m-%d %H:%M:%S') - $*" +} + +die() { + echo "ERROR: $*" >&2 + exit 1 +} + +detect_os() { + case "$(uname -s)" in + Darwin) echo "macos" ;; + Linux) echo "linux" ;; + WindowsNT|MINGW64*|MINGW32*|MSYS*|CYGWIN*) echo "windows" ;; + *) echo "unsupported" ;; + esac +} + + +# Portable in-place sed (macOS vs GNU) +sed_inplace() { + # usage: sed_inplace 's/a/b/' file + if sed --version >/dev/null 2>&1; then + sed -i "$1" "$2" + else + sed -i '' "$1" "$2" + fi +} + +# ----------------------------------------------------------------------------- +# corePY vendored bin sync +# Some projects vendor corePY under src/core/src and keep binaries there. +# To make PyInstaller data inclusion consistent, mirror vendored binaries into +# src/bin (overwriting existing content). +# ----------------------------------------------------------------------------- + +sync_vendored_bins() { + local src_dir="src/core/src/bin" + local dst_dir="src/bin" + + [ -d "$src_dir" ] || return 0 + + log "Syncing vendored binaries: $src_dir -> $dst_dir" + mkdir -p "$dst_dir" + + # Use cp -R to stay portable across macOS/Linux/Windows Git Bash. + # Trailing '/.' copies contents (including hidden files) into destination. + cp -R "$src_dir/." "$dst_dir/" 2>/dev/null || cp -R "$src_dir"/* "$dst_dir/" 2>/dev/null || true +} + +# +# Icon generation +# - macOS: icon.svg -> icon.icns (every build) +# - Windows: icon.svg -> icon.ico (best-effort, every build) +# Requires: iconutil (macOS) + either rsvg-convert (librsvg) OR inkscape. +# Windows ICO generation prefers: ImageMagick (magick/convert) OR Python + Pillow. +# ----------------------------------------------------------------------------- + +generate_icns_from_svg_macos() { + [ "$OS" = "macos" ] || return 0 + + local svg="src/icons/icon.svg" + local out="src/icons/icon.icns" + + [ -f "$svg" ] || return 0 + + if ! command -v iconutil >/dev/null 2>&1; then + log "WARN: iconutil not found; cannot generate .icns from $svg" + return 0 + fi + + local renderer="" + if command -v rsvg-convert >/dev/null 2>&1; then + renderer="rsvg" + elif command -v inkscape >/dev/null 2>&1; then + renderer="inkscape" + else + log "WARN: Neither rsvg-convert nor inkscape found; cannot generate .icns from $svg" + log " Install one of them (recommended: brew install librsvg)" + return 0 + fi + + mkdir -p "build" + + local iconset="build/icon.iconset" + rm -rf "$iconset" + mkdir -p "$iconset" + + # Required sizes for iconutil + local sizes=(16 32 128 256 512) + + log "Regenerating macOS icon: $out (from $svg using $renderer)" + + for s in "${sizes[@]}"; do + local s2=$((s * 2)) + + if [ "$renderer" = "rsvg" ]; then + rsvg-convert -w "$s" -h "$s" "$svg" -o "$iconset/icon_${s}x${s}.png" + rsvg-convert -w "$s2" -h "$s2" "$svg" -o "$iconset/icon_${s}x${s}@2x.png" + else + # inkscape CLI (v1+) + inkscape "$svg" --export-type=png --export-width="$s" --export-height="$s" --export-filename="$iconset/icon_${s}x${s}.png" >/dev/null 2>&1 + inkscape "$svg" --export-type=png --export-width="$s2" --export-height="$s2" --export-filename="$iconset/icon_${s}x${s}@2x.png" >/dev/null 2>&1 + fi + done + + # Build .icns + iconutil -c icns "$iconset" -o "$out" + + # Cleanup iconset directory (keep build folder) + rm -rf "$iconset" +} + +# ----------------------------------------------------------------------------- +# Windows icon generation: icon.svg -> icon.ico +# Best-effort: uses inkscape/rsvg-convert to render PNGs then combines to ICO. +# Prefers ImageMagick; falls back to Python+Pillow if available. +# ----------------------------------------------------------------------------- + +generate_ico_from_svg_windows() { + [ "$OS" = "windows" ] || return 0 + + local svg="src/icons/icon.svg" + local out="src/icons/icon.ico" + + [ -f "$svg" ] || return 0 + + local renderer="" + if command -v rsvg-convert >/dev/null 2>&1; then + renderer="rsvg" + elif command -v inkscape >/dev/null 2>&1; then + renderer="inkscape" + else + log "WARN: Neither rsvg-convert nor inkscape found; cannot generate .ico from $svg" + log " Install one of them (recommended: Inkscape)" + return 0 + fi + + mkdir -p "build" + + local tmpdir="build/icon.ico.tmp" + rm -rf "$tmpdir" + mkdir -p "$tmpdir" + + # Common ICO sizes + local sizes=(16 24 32 48 64 128 256) + + log "Regenerating Windows icon: $out (from $svg using $renderer)" + + for s in "${sizes[@]}"; do + if [ "$renderer" = "rsvg" ]; then + rsvg-convert -w "$s" -h "$s" "$svg" -o "$tmpdir/${s}.png" + else + # inkscape CLI (v1+) + inkscape "$svg" --export-type=png --export-width="$s" --export-height="$s" --export-filename="$tmpdir/${s}.png" >/dev/null 2>&1 + fi + done + + # Combine PNGs into ICO + if command -v magick >/dev/null 2>&1; then + # ImageMagick 7+ + magick "$tmpdir/16.png" "$tmpdir/24.png" "$tmpdir/32.png" "$tmpdir/48.png" "$tmpdir/64.png" "$tmpdir/128.png" "$tmpdir/256.png" "$out" 2>/dev/null || true + elif command -v convert >/dev/null 2>&1; then + # ImageMagick 6 (convert) + convert "$tmpdir/16.png" "$tmpdir/24.png" "$tmpdir/32.png" "$tmpdir/48.png" "$tmpdir/64.png" "$tmpdir/128.png" "$tmpdir/256.png" "$out" 2>/dev/null || true + else + # Fallback: Python + Pillow (if available) + python - <<'PY' "$tmpdir" "$out" 2>/dev/null || true +import sys +from pathlib import Path + +tmpdir = Path(sys.argv[1]) +out = Path(sys.argv[2]) + +try: + from PIL import Image +except Exception: + raise SystemExit(1) + +sizes = [16, 24, 32, 48, 64, 128, 256] +imgs = [] +for s in sizes: + p = tmpdir / f"{s}.png" + if p.exists(): + imgs.append(Image.open(p)) + +if not imgs: + raise SystemExit(1) + +# Pillow writes multi-size ICO when you pass sizes +base = imgs[-1] +base.save(out, format="ICO", sizes=[(s, s) for s in sizes]) +PY + fi + + if [ -f "$out" ]; then + log "Windows icon generated: $out" + else + log "WARN: Failed to generate $out (install ImageMagick or Python Pillow for best results)" + fi + + rm -rf "$tmpdir" +} + +# Guess app name from current folder if not provided +infer_name() { + local base + base="$(basename "$(pwd)")" + # keep it simple: only allow alnum, dash, underscore + echo "$base" | tr -cd '[:alnum:]_-' +} + +show_help() { + cat <<'EOF' +Usage: + ./build.sh [options] + +Options: + --name NAME App name (default: folder name) + --entry PATH Entry script/module for PyInstaller (default: src/main.py) + --config PATH Path to build.cfg (default: ./build.cfg if present) + --windowed Build GUI app (no console) (macOS: --windowed; Linux: still onefile) + --console Build console app (default) + --icon PATH Icon path (macOS: .icns recommended) + --add-data SRC:DST Add data folder/file (repeatable). Uses PyInstaller --add-data=SRC:DST. + --hidden-import MOD Add hidden import (repeatable) + --onefile Force onefile (default on Linux) + --onedir Force onedir (default on macOS) + --python PY Python 3.11 binary (default: python3.11 from PATH) + --system-pyqt On Linux ARM, prefer APT PyQt5 with --system-site-packages + --clean Remove build/dist artifacts before building + --debug-pyi Enable PyInstaller debug output (--log-level=DEBUG --debug=all) + --dmg On macOS, create a DMG (only meaningful for onedir .app) + --gen-install Generate install/run wrapper scripts into repo root (default) + --no-gen-install Do not generate install/run wrapper scripts + --venv-dir DIR Virtualenv directory for wrapper scripts (default: .venv) + --requirements PATH Requirements file used by wrapper scripts if present (default: requirements.txt) + -h, --help Show this help + +Examples: + ./build.sh --name Replicator --entry src/main.py --windowed --add-data src/app:app + ./build.sh --console --hidden-import PyQt5.QtSvg +EOF +} + +# ----------------------------------------------------------------------------- +# Defaults (good for Replicator) +# ----------------------------------------------------------------------------- +OS="$(detect_os)" +[ "$OS" = "unsupported" ] && die "Unsupported operating system." + +APP_NAME="$(infer_name)" +ENTRY="src/main.py" +MODE="console" # console|windowed + +# Packaging defaults: macOS prefers onedir (for .app), Linux prefers onefile +PKG="" # empty = auto, or onefile/onedir + +# +# Python discovery +# - macOS/Linux: prefer python3.11 +# - Windows (Git Bash): prefer the Python Launcher when available, but only if the requested runtime exists. +PYTHON_BIN="" +PYTHON_LAUNCH_ARGS="" + +python_cmd_ok() { + # usage: python_cmd_ok [args...] + # returns 0 if command runs and Python version is >= 3.11 + "$@" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")' >/tmp/.replicator_pyver 2>/dev/null || return 1 + local ver + ver="$(cat /tmp/.replicator_pyver 2>/dev/null || true)" + rm -f /tmp/.replicator_pyver 2>/dev/null || true + case "$ver" in + 3.11|3.12|3.13|3.14|3.15|3.16|3.17|3.18|3.19|4.*) return 0 ;; + *) return 1 ;; + esac +} + +# Candidate selection (ordered) +if command -v python3.11 >/dev/null 2>&1 && python_cmd_ok python3.11; then + PYTHON_BIN="python3.11" + PYTHON_LAUNCH_ARGS="" +elif [ "$OS" = "windows" ] && command -v py >/dev/null 2>&1; then + # Try explicit 3.11 first, then any 3.x that satisfies >=3.11 + if python_cmd_ok py -3.11; then + PYTHON_BIN="py" + PYTHON_LAUNCH_ARGS="-3.11" + elif python_cmd_ok py -3.12; then + PYTHON_BIN="py" + PYTHON_LAUNCH_ARGS="-3.12" + elif python_cmd_ok py -3.13; then + PYTHON_BIN="py" + PYTHON_LAUNCH_ARGS="-3.13" + elif python_cmd_ok py -3; then + PYTHON_BIN="py" + PYTHON_LAUNCH_ARGS="-3" + fi +fi + +# Fallbacks (Git Bash often exposes only `python`) +if [ -z "$PYTHON_BIN" ]; then + if command -v python3 >/dev/null 2>&1 && python_cmd_ok python3; then + PYTHON_BIN="python3" + PYTHON_LAUNCH_ARGS="" + elif command -v python >/dev/null 2>&1 && python_cmd_ok python; then + PYTHON_BIN="python" + PYTHON_LAUNCH_ARGS="" + fi +fi + +# If user supplied --python, we still validate it later in the script. + +python_exec() { + # Wrapper so we can call: python_exec -m venv ... + [ -n "${PYTHON_BIN:-}" ] || die "Python not found. Install Python 3.11+ and ensure it is in PATH (python) or via the Windows Python Launcher (py)." + + if [ -n "${PYTHON_LAUNCH_ARGS:-}" ]; then + # shellcheck disable=SC2086 + "$PYTHON_BIN" ${PYTHON_LAUNCH_ARGS} "$@" + else + "$PYTHON_BIN" "$@" + fi +} + +venv_python_path() { + if [ "$OS" = "windows" ]; then + echo "$VENV_DIR/Scripts/python.exe" + else + echo "$VENV_DIR/bin/python" + fi +} + +venv_activate_path() { + if [ "$OS" = "windows" ]; then + echo "$VENV_DIR/Scripts/activate" + else + echo "$VENV_DIR/bin/activate" + fi +} + +USE_SYSTEM_PYQT=0 + +# macOS DMG toggle +MAKE_DMG=0 + +# PyInstaller debug toggle +PYI_DEBUG=0 + +# Icon (optional) +ICON_FILE="" + +# Repeatable arrays +declare -a ADD_DATA +ADD_DATA=() + +declare -a HIDDEN_IMPORTS +HIDDEN_IMPORTS=() + +# Common default data folders (only add if they exist) +# Replicator usually has icons/app/styles/img in some projects; keep generic. +DEFAULT_DATA_CANDIDATES=( + "src/app:app" + "src/styles:styles" + "src/icons:icons" + "src/img:img" + "assets:assets" +) + +# Optional config file +CFG_FILE="" + +# Wrapper script defaults +GENERATE_INSTALL=1 +VENV_DIR=".venv" +REQ_FILE="requirements.txt" + +# Load simple KEY=VALUE config (no code execution) +# Supported keys: +# NAME, ENTRY, MODE, PKG, ICON, PYTHON, SYSTEM_PYQT, DMG, CLEAN +# ADD_DATA, HIDDEN_IMPORTS +# Notes: +# - Lines beginning with # or ; are ignored +# - Whitespace around keys/values is trimmed +# - ADD_DATA / HIDDEN_IMPORTS can be comma or semicolon separated +trim_ws() { + # trim leading/trailing whitespace + local s="$1" + s="${s#${s%%[![:space:]]*}}" + s="${s%${s##*[![:space:]]}}" + echo "$s" +} + +split_list() { + # split comma/semicolon separated list into lines + echo "$1" | tr ';' '\n' | tr ',' '\n' +} + +apply_cfg_kv() { + local key="$1" val="$2" + key="$(trim_ws "$key")" + val="$(trim_ws "$val")" + [ -z "$key" ] && return 0 + + case "$key" in + NAME) + APP_NAME="$val" + ;; + ENTRY) + ENTRY="$val" + ;; + MODE) + # console|windowed + if [ "$val" = "console" ] || [ "$val" = "windowed" ]; then + MODE="$val" + fi + ;; + PKG) + # onefile|onedir|auto + if [ "$val" = "onefile" ] || [ "$val" = "onedir" ]; then + PKG="$val" + elif [ "$val" = "auto" ]; then + PKG="" + fi + ;; + ICON) + ICON_FILE="$val" + ;; + PYTHON) + PYTHON_BIN="$val" + ;; + SYSTEM_PYQT) + if [ "$val" = "1" ] || [ "$val" = "true" ] || [ "$val" = "yes" ]; then + USE_SYSTEM_PYQT=1 + elif [ "$val" = "0" ] || [ "$val" = "false" ] || [ "$val" = "no" ]; then + USE_SYSTEM_PYQT=0 + fi + ;; + DMG) + if [ "$val" = "1" ] || [ "$val" = "true" ] || [ "$val" = "yes" ]; then + MAKE_DMG=1 + elif [ "$val" = "0" ] || [ "$val" = "false" ] || [ "$val" = "no" ]; then + MAKE_DMG=0 + fi + ;; + CLEAN) + if [ "$val" = "1" ] || [ "$val" = "true" ] || [ "$val" = "yes" ]; then + CLEAN=1 + elif [ "$val" = "0" ] || [ "$val" = "false" ] || [ "$val" = "no" ]; then + CLEAN=0 + fi + ;; + ADD_DATA) + # replaces current list + ADD_DATA=() + while IFS= read -r item; do + item="$(trim_ws "$item")" + [ -n "$item" ] && ADD_DATA+=("$item") + done < <(split_list "$val") + ;; + HIDDEN_IMPORTS) + # replaces current list + HIDDEN_IMPORTS=() + while IFS= read -r item; do + item="$(trim_ws "$item")" + [ -n "$item" ] && HIDDEN_IMPORTS+=("$item") + done < <(split_list "$val") + ;; + GEN_INSTALL) + if [ "$val" = "1" ] || [ "$val" = "true" ] || [ "$val" = "yes" ]; then + GENERATE_INSTALL=1 + elif [ "$val" = "0" ] || [ "$val" = "false" ] || [ "$val" = "no" ]; then + GENERATE_INSTALL=0 + fi + ;; + VENV_DIR) + VENV_DIR="$val" + ;; + REQUIREMENTS) + REQ_FILE="$val" + ;; + *) + # unknown keys ignored for forward-compat + ;; + esac +} + +load_cfg_file() { + local f="$1" + [ -f "$f" ] || return 0 + log "Loading config: $f" + + while IFS= read -r line || [ -n "$line" ]; do + # strip CR (Windows line endings) + line="${line%$'\r'}" + + # ignore comments/blank lines + case "$(trim_ws "$line")" in + ""|\#*|\;*) continue ;; + esac + + # allow inline comments after a value using # + # (only if there is at least one space before #) + if echo "$line" | grep -q "[[:space:]]#"; then + line="$(echo "$line" | sed 's/[[:space:]]#.*$//')" + fi + + if echo "$line" | grep -q "="; then + local k v + k="${line%%=*}" + v="${line#*=}" + apply_cfg_kv "$k" "$v" + fi + done < "$f" +} + +# ----------------------------------------------------------------------------- +# Parse args +# ----------------------------------------------------------------------------- +while [ $# -gt 0 ]; do + case "$1" in + --name) + shift + [ $# -gt 0 ] || die "--name requires a value" + APP_NAME="$1" + ;; + --entry) + shift + [ $# -gt 0 ] || die "--entry requires a value" + ENTRY="$1" + ;; + --config) + shift + [ $# -gt 0 ] || die "--config requires a value" + CFG_FILE="$1" + ;; + --windowed) + MODE="windowed" + ;; + --console) + MODE="console" + ;; + --icon) + shift + [ $# -gt 0 ] || die "--icon requires a value" + ICON_FILE="$1" + ;; + --add-data) + shift + [ $# -gt 0 ] || die "--add-data requires a value like SRC:DST" + ADD_DATA+=("$1") + ;; + --hidden-import) + shift + [ $# -gt 0 ] || die "--hidden-import requires a module name" + HIDDEN_IMPORTS+=("$1") + ;; + --onefile) + PKG="onefile" + ;; + --onedir) + PKG="onedir" + ;; + --python) + shift + [ $# -gt 0 ] || die "--python requires a path/binary" + PYTHON_BIN="$1" + ;; + --system-pyqt) + USE_SYSTEM_PYQT=1 + ;; + --clean) + CLEAN=1 + ;; + --debug-pyi) + PYI_DEBUG=1 + ;; + --dmg) + MAKE_DMG=1 + ;; + --gen-install) + GENERATE_INSTALL=1 + ;; + --no-gen-install) + GENERATE_INSTALL=0 + ;; + --venv-dir) + shift + [ $# -gt 0 ] || die "--venv-dir requires a value" + VENV_DIR="$1" + ;; + --requirements) + shift + [ $# -gt 0 ] || die "--requirements requires a value" + REQ_FILE="$1" + ;; + -h|--help) + show_help + exit 0 + ;; + *) + die "Unknown option: $1 (use --help)" + ;; + esac + shift +done + +# ----------------------------------------------------------------------------- +# Load config (if provided, or if ./build.cfg exists) +# CLI flags should override config values. +# ----------------------------------------------------------------------------- + +# Capture what the user explicitly set via CLI so we can re-apply after config +CLI_APP_NAME="$APP_NAME" +CLI_ENTRY="$ENTRY" +CLI_MODE="$MODE" +CLI_PKG="$PKG" +CLI_ICON="$ICON_FILE" +CLI_PYTHON_BIN="$PYTHON_BIN" +CLI_USE_SYSTEM_PYQT="$USE_SYSTEM_PYQT" +CLI_MAKE_DMG="$MAKE_DMG" +CLI_CLEAN="${CLEAN:-0}" +CLI_ADD_DATA=("${ADD_DATA[@]+${ADD_DATA[@]}}") +CLI_HIDDEN_IMPORTS=("${HIDDEN_IMPORTS[@]+${HIDDEN_IMPORTS[@]}}") +CLI_GENERATE_INSTALL="$GENERATE_INSTALL" +CLI_VENV_DIR="$VENV_DIR" +CLI_REQ_FILE="$REQ_FILE" + +# Determine config path +if [ -z "$CFG_FILE" ] && [ -f "build.cfg" ]; then + CFG_FILE="build.cfg" +fi + +# Apply config +if [ -n "$CFG_FILE" ]; then + load_cfg_file "$CFG_FILE" +fi + +# Re-apply CLI values only when the user actually supplied flags. +# Heuristic: if arrays were empty pre-config but are non-empty post-config, +# we only override them when CLI provided values (captured arrays non-empty). +# Scalars: if CLI value differs from the default-initialized value AND the flag was used, +# we treat it as explicitly set. For simplicity, we treat any CLI value as authoritative +# when it differs from what config loaded. + +# Scalars +[ "$CLI_APP_NAME" != "$(infer_name)" ] && APP_NAME="$CLI_APP_NAME" || true +[ "$CLI_ENTRY" != "src/main.py" ] && ENTRY="$CLI_ENTRY" || true +[ "$CLI_MODE" != "console" ] && MODE="$CLI_MODE" || true +[ -n "$CLI_PKG" ] && PKG="$CLI_PKG" || true +[ -n "$CLI_ICON" ] && ICON_FILE="$CLI_ICON" || true +[ "$CLI_PYTHON_BIN" != "$(command -v python3.11 || true)" ] && PYTHON_BIN="$CLI_PYTHON_BIN" || true +[ "$CLI_USE_SYSTEM_PYQT" != "0" ] && USE_SYSTEM_PYQT="$CLI_USE_SYSTEM_PYQT" || true +[ "$CLI_MAKE_DMG" != "0" ] && MAKE_DMG="$CLI_MAKE_DMG" || true +if [ "$CLI_CLEAN" = "1" ]; then CLEAN=1; fi +# New CLI re-apply for wrapper script settings +if [ "$CLI_GENERATE_INSTALL" != "1" ]; then + GENERATE_INSTALL="$CLI_GENERATE_INSTALL" +fi +if [ "$CLI_VENV_DIR" != ".venv" ]; then + VENV_DIR="$CLI_VENV_DIR" +fi +if [ "$CLI_REQ_FILE" != "requirements.txt" ]; then + REQ_FILE="$CLI_REQ_FILE" +fi + +# Arrays +if [ "${#CLI_ADD_DATA[@]}" -gt 0 ]; then + nonempty=0 + for v in "${CLI_ADD_DATA[@]}"; do + [ -n "$v" ] && nonempty=1 + done + if [ "$nonempty" -eq 1 ]; then + ADD_DATA=("${CLI_ADD_DATA[@]}") + fi +fi + +if [ "${#CLI_HIDDEN_IMPORTS[@]}" -gt 0 ]; then + nonempty=0 + for v in "${CLI_HIDDEN_IMPORTS[@]}"; do + [ -n "$v" ] && nonempty=1 + done + if [ "$nonempty" -eq 1 ]; then + HIDDEN_IMPORTS=("${CLI_HIDDEN_IMPORTS[@]}") + fi +fi + +# ----------------------------------------------------------------------------- +# Regenerate platform icons from icon.svg on every build (if present) +# ----------------------------------------------------------------------------- +sync_vendored_bins +generate_icns_from_svg_macos +generate_ico_from_svg_windows + +# ----------------------------------------------------------------------------- +# Generate developer-friendly install/run wrapper scripts (if enabled) +# ----------------------------------------------------------------------------- +generate_wrapper_scripts() { + [ "${GENERATE_INSTALL:-1}" -eq 1 ] || return 0 + + local out_dir="$1" # e.g. . (repo root) + mkdir -p "$out_dir" + + # --------------------------------------------------------------------------- + # POSIX shell wrapper (macOS/Linux + Windows Git Bash) + # --------------------------------------------------------------------------- + cat >"$out_dir/launch.sh" <<'SH' +#!/usr/bin/env bash +set -euo pipefail + +# Replicator dev launcher (macOS/Linux + Windows Git Bash) +# - Creates a virtualenv if missing +# - Installs runtime deps (prefers requirements.txt if present) +# - Runs src/main.py + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$ROOT_DIR" + +VENV_DIR="__VENV_DIR__" +REQ_FILE="__REQ_FILE__" + +# Detect Windows Git Bash (MSYS/MINGW/CYGWIN) +UNAME_S="$(uname -s 2>/dev/null || echo '')" +IS_WINDOWS=0 +case "$UNAME_S" in + MINGW*|MSYS*|CYGWIN*) IS_WINDOWS=1 ;; + *) IS_WINDOWS=0 ;; +esac + +# Choose python command +PY_CMD="" +PY_ARGS=() + +# Prefer explicit python3.11 on macOS/Linux +if command -v python3.11 >/dev/null 2>&1; then + PY_CMD="python3.11" +elif [ "$IS_WINDOWS" -eq 1 ] && command -v py >/dev/null 2>&1; then + # Prefer Windows Python Launcher (does NOT require python.exe in PATH) + PY_CMD="py" + PY_ARGS=(-3.11) +elif command -v python3 >/dev/null 2>&1; then + PY_CMD="python3" +elif command -v python >/dev/null 2>&1; then + PY_CMD="python" +else + echo "ERROR: Python not found in PATH. On Windows, install Python 3.11+ and/or ensure the Python Launcher (py) is available." >&2 + exit 1 +fi + +# Resolve venv python/activate paths +if [ "$IS_WINDOWS" -eq 1 ]; then + VENV_PY="$VENV_DIR/Scripts/python.exe" + ACTIVATE_SH="$VENV_DIR/Scripts/activate" +else + VENV_PY="$VENV_DIR/bin/python" + ACTIVATE_SH="$VENV_DIR/bin/activate" +fi + +# Create venv if needed +if [ ! -x "$VENV_PY" ]; then + echo "Creating virtualenv: $VENV_DIR" + # shellcheck disable=SC2086 + "$PY_CMD" "${PY_ARGS[@]}" -m venv "$VENV_DIR" +fi + +# Activate venv +# shellcheck disable=SC1090 +source "$ACTIVATE_SH" + +python -m pip install --upgrade pip wheel + +if [ -f "$REQ_FILE" ]; then + echo "Installing requirements from $REQ_FILE" + python -m pip install -r "$REQ_FILE" +else + echo "Installing minimal runtime deps (PyQt5)" + python -m pip install "PyQt5>=5.15,<6" +fi + +exec python "src/main.py" "$@" +SH + + # Patch placeholders + sed_inplace "s|__VENV_DIR__|$VENV_DIR|g" "$out_dir/launch.sh" + sed_inplace "s|__REQ_FILE__|$REQ_FILE|g" "$out_dir/launch.sh" + chmod +x "$out_dir/launch.sh" || true + + # CLI convenience (same as launch.sh but kept as a stable name for docs/scripts) + cat >"$out_dir/cli.sh" <<'SH' +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$ROOT_DIR" + +exec "./launch.sh" "$@" +SH + chmod +x "$out_dir/cli.sh" || true + + # --------------------------------------------------------------------------- + # Windows: VBS launcher (launch.vbs) and CLI .bat launcher (cli.bat) + # --------------------------------------------------------------------------- + cat >"$out_dir/launch.vbs" <<'VBS' +' Replicator Windows launcher (no console) +' - Prefers launching the built binary if present +' - Falls back to launching Git Bash + launch.sh if available + +Option Explicit + +Dim shell, fso, scriptDir, exePath, bashPath, cmd +Set shell = CreateObject("WScript.Shell") +Set fso = CreateObject("Scripting.FileSystemObject") + +scriptDir = fso.GetParentFolderName(WScript.ScriptFullName) + +' Try built EXE first +exePath = scriptDir & "\\dist\\windows\\Replicator.exe" +If fso.FileExists(exePath) Then + shell.CurrentDirectory = scriptDir + shell.Run Chr(34) & exePath & Chr(34), 1, False + WScript.Quit 0 +End If + +' Fallback: Git Bash launch.sh (if user is in a dev checkout) +bashPath = shell.ExpandEnvironmentStrings("%ProgramFiles%") & "\\Git\\bin\\bash.exe" +If fso.FileExists(bashPath) Then + cmd = Chr(34) & bashPath & Chr(34) & " -lc " & Chr(34) & "cd \"" & scriptDir & "\" && ./launch.sh" & Chr(34) + shell.Run cmd, 0, False +End If +VBS + + cat >"$out_dir/cli.bat" <<'BAT' +@echo off +setlocal EnableExtensions EnableDelayedExpansion + +REM --------------------------------------------------------------------------- +REM Replicator CLI launcher (Windows) +REM - Ensures a local venv exists (.venv) +REM - Installs minimal runtime deps (PyQt5) +REM - Runs src\main.py with a visible console +REM +REM Note: If you double-click this file, the console may flash and close. +REM Run it from an existing Command Prompt for persistent output. +REM --------------------------------------------------------------------------- + +set "SCRIPT_DIR=%~dp0" +set "VENV_DIR=%SCRIPT_DIR%.venv" +set "VENV_PY=%VENV_DIR%\Scripts\python.exe" + +REM Prefer Windows Python Launcher +set "PY_CMD=" +set "PY_ARGS=" +where py >nul 2>&1 +if %ERRORLEVEL%==0 ( + set "PY_CMD=py" + set "PY_ARGS=-3.11" +) else ( + where python >nul 2>&1 + if %ERRORLEVEL%==0 ( + set "PY_CMD=python" + set "PY_ARGS=" + ) +) + +if "%PY_CMD%"=="" ( + echo ERROR: Python not found. Install Python 3.11+ and ensure either `py` or `python` is available in PATH. + exit /b 1 +) + +REM Create venv if missing +if not exist "%VENV_PY%" ( + echo Creating virtualenv: %VENV_DIR% + %PY_CMD% %PY_ARGS% -m venv "%VENV_DIR%" + if %ERRORLEVEL% NEQ 0 ( + echo ERROR: Failed to create virtualenv. + exit /b %ERRORLEVEL% + ) +) + +REM Upgrade pip/wheel +"%VENV_PY%" -m pip install --upgrade pip wheel >nul + +REM Install minimal deps (idempotent) +echo Installing minimal runtime deps (PyQt5)... +"%VENV_PY%" -m pip install "PyQt5>=5.15,<6" >nul + +REM Prefer the built console companion if available +if exist "%SCRIPT_DIR%dist\windows\Replicator-cli.exe" ( + "%SCRIPT_DIR%dist\windows\Replicator-cli.exe" %* + endlocal + exit /b %ERRORLEVEL% +) + +REM Fallback: Run the source entry in console mode (dev checkout) +if not exist "%SCRIPT_DIR%src\main.py" ( + echo ERROR: Entry not found: %SCRIPT_DIR%src\main.py + echo NOTE: Replicator-cli.exe not found at %SCRIPT_DIR%dist\windows\Replicator-cli.exe + exit /b 1 +) + +"%VENV_PY%" "%SCRIPT_DIR%src\main.py" %* +endlocal +exit /b %ERRORLEVEL% +BAT +} + +# ----------------------------------------------------------------------------- +# Validate +# ----------------------------------------------------------------------------- +[ -n "$PYTHON_BIN" ] || die "Python not found. Install Python 3.11+ and ensure it is available as python (Windows/Git Bash) or via the Windows Python Launcher (py), or as python3.11 (macOS/Linux)." +[ -f "$ENTRY" ] || die "Entry not found: $ENTRY" + +# Validate python runtime is actually runnable and >= 3.11 +if ! python_exec -c "import sys; assert (sys.version_info.major, sys.version_info.minor) >= (3, 11), sys.version" >/dev/null 2>&1; then + if [ "$OS" = "windows" ] && [ "$PYTHON_BIN" = "py" ]; then + die "Python launcher found, but no suitable Python 3.11+ runtime is installed. Install Python 3.11+ (check 'Add python.exe to PATH') or run: py --list to verify installed versions." + fi + die "Python is not runnable or is < 3.11. Install Python 3.11+ and try again." +fi + +ARCH="$(uname -m)" +if [ "$OS" = "linux" ] && { [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "armv7l" ] || [ "$ARCH" = "armhf" ]; }; then + # Auto-enable system PyQt on ARM unless explicitly overridden by user (flag) + # Keeping your prior behavior but behind the switch. + : +fi + +# Auto package choice +if [ -z "$PKG" ]; then + if [ "$OS" = "macos" ]; then + PKG="onedir" + else + PKG="onefile" + fi +fi + +# Auto icon discovery if not provided +if [ -z "$ICON_FILE" ]; then + if [ "$OS" = "macos" ] && [ -f "src/icons/icon.icns" ]; then + ICON_FILE="src/icons/icon.icns" + elif [ "$OS" = "windows" ] && [ -f "src/icons/icon.ico" ]; then + ICON_FILE="src/icons/icon.ico" + elif [ -f "src/icons/icon.png" ]; then + ICON_FILE="src/icons/icon.png" + fi +fi + +# Add default data folders if present (and not already provided) +for cand in "${DEFAULT_DATA_CANDIDATES[@]}"; do + src="${cand%%:*}" + if [ -e "$src" ]; then + # Avoid duplicates + dup=0 + for existing in "${ADD_DATA[@]+${ADD_DATA[@]}}"; do + [ "$existing" = "$cand" ] && dup=1 + done + [ "$dup" -eq 0 ] && ADD_DATA+=("$cand") + fi +done + +# ----------------------------------------------------------------------------- +# Prepare output +# ----------------------------------------------------------------------------- +FINAL_DIR="dist/$OS" + +if [ "${CLEAN:-0}" -eq 1 ]; then + log "Cleaning build artifacts..." + rm -rf build dist *.spec || true +fi + +mkdir -p "$FINAL_DIR" +generate_wrapper_scripts "." + +# +# ----------------------------------------------------------------------------- +# Create/verify venv (Python 3.11) +# ----------------------------------------------------------------------------- +NEED_RECREATE=0 +if [ ! -x "$(venv_python_path)" ]; then + NEED_RECREATE=1 +else + VENV_VER="$("$(venv_python_path)" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")' || echo unknown)" + if [ "$VENV_VER" != "3.11" ]; then + NEED_RECREATE=1 + fi +fi + +if [ "$NEED_RECREATE" -eq 1 ]; then + log "Creating fresh Python 3.11 virtual environment in $VENV_DIR..." + rm -rf "$VENV_DIR" + if [ "$USE_SYSTEM_PYQT" -eq 1 ]; then + python_exec -m venv --system-site-packages "$VENV_DIR" + else + python_exec -m venv "$VENV_DIR" + fi +fi + +# shellcheck disable=SC1091 +source "$(venv_activate_path)" + +ACTIVE_VER="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')" +[ "$ACTIVE_VER" = "3.11" ] || die "Active Python is $ACTIVE_VER, expected 3.11. On Windows, install Python 3.11 and/or use: py -3.11" +log "Using Python $(python -V)" + +log "Updating pip..." +python -m pip install --upgrade pip wheel + +log "Installing build dependencies..." +python -m pip install "pyinstaller>=6.9,<7" + +# PyInstaller on Windows requires .ico (or Pillow for automatic conversion from .png). +# Install Pillow when building on Windows so we can safely use .png icons or generate .ico. +if [ "$OS" = "windows" ]; then + python -m pip install "pillow>=10,<12" || true +fi + + +# Optional: system PyQt5 on Linux ARM (APT) +if [ "$USE_SYSTEM_PYQT" -eq 1 ]; then + if [ "$OS" != "linux" ]; then + die "--system-pyqt is only supported on Linux" + fi + if command -v apt-get >/dev/null 2>&1; then + log "Installing system PyQt5 via APT (requires sudo)..." + sudo apt-get update + sudo apt-get install -y python3-pyqt5 python3-pyqt5.qtsvg + else + die "APT not found; cannot install system PyQt5. Install PyQt5 manually or omit --system-pyqt." + fi +else + # Default: wheels + # (Only install PyQt5 if the project uses it; safe to install regardless.) + python -m pip install "PyQt5>=5.15,<6" || true +fi + +# Ensure SIP bindings are bundled for PyQt5. +# Note: the importable module is typically `PyQt5.sip` (not `sip`). +# PyInstaller may still emit a non-fatal warning about hidden import "sip" depending on hooks. +has_pyqt5=0 +if python -c "import importlib.util; import sys; sys.exit(0 if importlib.util.find_spec('PyQt5') else 1)" >/dev/null 2>&1; then + has_pyqt5=1 +fi + +if [ "$has_pyqt5" -eq 1 ]; then + # Add PyQt5.sip unless the user already provided it. + found=0 + for h in "${HIDDEN_IMPORTS[@]+${HIDDEN_IMPORTS[@]}}"; do + [ "$h" = "PyQt5.sip" ] && found=1 + done + if [ "$found" -eq 0 ]; then + HIDDEN_IMPORTS+=("PyQt5.sip") + fi + + # If the user ever provided `sip`, normalize it early. + for i in "${!HIDDEN_IMPORTS[@]}"; do + if [ "${HIDDEN_IMPORTS[$i]}" = "sip" ]; then + HIDDEN_IMPORTS[$i]="PyQt5.sip" + fi + done +fi + +# ----------------------------------------------------------------------------- +# Build +# ----------------------------------------------------------------------------- +log "Building $APP_NAME for $OS ($PKG, $MODE) from entry: $ENTRY" + +PYI_ARGS=( + --name "$APP_NAME" + --noconfirm +) + +# Optional PyInstaller debug +if [ "${PYI_DEBUG:-0}" -eq 1 ]; then + PYI_ARGS+=(--log-level=DEBUG --debug=all) +fi + +# Packaging +if [ "$PKG" = "onefile" ]; then + PYI_ARGS+=(--onefile) +else + PYI_ARGS+=(--onedir) +fi + +# Window mode +if [ "$MODE" = "windowed" ]; then + PYI_ARGS+=(--windowed) +fi + +# Icon +if [ -n "$ICON_FILE" ] && [ -f "$ICON_FILE" ]; then + if [ "$OS" = "windows" ]; then + ext="${ICON_FILE##*.}" + ext="$(echo "$ext" | tr '[:upper:]' '[:lower:]')" + + # On Windows, PyInstaller only accepts .ico/.exe as icon inputs unless Pillow is installed. + # If the provided icon is .png, convert it to a temporary .ico using Pillow. + if [ "$ext" = "png" ]; then + mkdir -p build + ICO_FROM_PNG="build/icon_from_png.ico" + python - <<'PY' "$ICON_FILE" "$ICO_FROM_PNG" || true +import sys +from pathlib import Path + +src = Path(sys.argv[1]) +dst = Path(sys.argv[2]) + +try: + from PIL import Image +except Exception as e: + raise SystemExit(1) + +img = Image.open(src).convert("RGBA") +# Common Windows icon sizes +sizes = [(16,16), (24,24), (32,32), (48,48), (64,64), (128,128), (256,256)] +img.save(dst, format="ICO", sizes=sizes) +print(dst) +PY + if [ -f "$ICO_FROM_PNG" ]; then + PYI_ARGS+=(--icon "$ICO_FROM_PNG") + else + log "WARN: Failed to convert PNG icon to ICO; continuing without --icon" + fi + else + # .ico/.exe already + PYI_ARGS+=(--icon "$ICON_FILE") + fi + else + PYI_ARGS+=(--icon "$ICON_FILE") + fi +fi + +# Hidden imports +# NOTE: +# - PyQt5 typically exposes SIP bindings as `PyQt5.sip` (and ships `PyQt5_sip` as a wheel). +# - Users sometimes add `sip` as a hidden import; that module often does not exist and causes warnings. +# We normalize `sip` -> `PyQt5.sip` when available, and skip hidden imports that cannot be resolved. +can_import() { + # usage: can_import module.name + python - </dev/null 2>&1 +import importlib.util +spec = importlib.util.find_spec("$1") +raise SystemExit(0 if spec is not None else 1) +PY +} + +for hi in "${HIDDEN_IMPORTS[@]+${HIDDEN_IMPORTS[@]}}"; do + [ -n "$hi" ] || continue + + # Normalize common SIP hidden import for PyQt5. + # The standalone `sip` module is often NOT importable even if the sip build tooling is installed. + if [ "$hi" = "sip" ]; then + if can_import "PyQt5.sip"; then + log "Normalizing hidden import: sip -> PyQt5.sip" + hi="PyQt5.sip" + else + log "WARN: Skipping hidden import not found: sip (and PyQt5.sip not available)" + continue + fi + fi + + if can_import "$hi"; then + PYI_ARGS+=(--hidden-import "$hi") + else + log "WARN: Skipping hidden import not found: $hi" + fi +done + +# Data +# PyInstaller (on some versions) requires the equals form: --add-data=SRC:DST +for ad in "${ADD_DATA[@]+${ADD_DATA[@]}}"; do + # Allow config/CLI to provide either: + # - SRC:DST + # - --add-data=SRC:DST + # - --add-data SRC:DST (accidentally split by callers) + [ -n "$ad" ] || continue + if [ "$ad" = "--add-data" ]; then + # Skip stray flag (the next token would have been the value) + continue + fi + + if [[ "$ad" == --add-data=* ]]; then + PYI_ARGS+=("$ad") + else + PYI_ARGS+=("--add-data=$ad") + fi + +done + +# Extra sanity checks (don’t fail builds for optional modules) +log "Running a quick import sanity check (best-effort)..." +python - <<'PY' || true +import sys +print("Python:", sys.version) +try: + import PyInstaller # noqa + print("PyInstaller OK") +except Exception as e: + print("PyInstaller import failed:", e) +PY + +# Print PyInstaller command for debug +log "PyInstaller command:" +printf ' %q ' pyinstaller "${PYI_ARGS[@]}" "$ENTRY" +printf '\n' + + +# Execute PyInstaller +pyinstaller "${PYI_ARGS[@]}" "$ENTRY" + +# --------------------------------------------------------------------------- +# Windows: also build a console-subsystem companion EXE for CLI usage. +# - Keeps the main EXE as --windowed (nice for double-click) +# - Produces -cli.exe without --windowed so stdout/stderr work in terminals +# --------------------------------------------------------------------------- +if [ "$OS" = "windows" ] && [ "$MODE" = "windowed" ]; then + CLI_APP_NAME="${APP_NAME}-cli" + + log "Building $CLI_APP_NAME for $OS ($PKG, console) from entry: $ENTRY" + + # Copy args and adjust for console build + PYI_CLI_ARGS=("${PYI_ARGS[@]}") + + # Replace --name value + for i in "${!PYI_CLI_ARGS[@]}"; do + if [ "${PYI_CLI_ARGS[$i]}" = "--name" ]; then + PYI_CLI_ARGS[$((i+1))]="$CLI_APP_NAME" + fi + done + + # Remove --windowed if present + PYI_CLI_ARGS_STRIPPED=() + for a in "${PYI_CLI_ARGS[@]}"; do + if [ "$a" = "--windowed" ]; then + continue + fi + PYI_CLI_ARGS_STRIPPED+=("$a") + done + + log "PyInstaller command (CLI companion):" + printf ' %q ' pyinstaller "${PYI_CLI_ARGS_STRIPPED[@]}" "$ENTRY" + printf '\n' + + pyinstaller "${PYI_CLI_ARGS_STRIPPED[@]}" "$ENTRY" +fi + +# ----------------------------------------------------------------------------- +# Collect output +# ----------------------------------------------------------------------------- +if [ "$OS" = "macos" ]; then + # If entry builds a .app bundle, it'll appear under dist/.app for onedir+windowed. + if [ -d "dist/$APP_NAME.app" ]; then + log "Moving .app to $FINAL_DIR/" + rm -rf "$FINAL_DIR/$APP_NAME.app" || true + mv "dist/$APP_NAME.app" "$FINAL_DIR/" + + if [ "$MAKE_DMG" -eq 1 ]; then + log "Creating DMG..." + DMG_NAME="$FINAL_DIR/$APP_NAME.dmg" + hdiutil create "$DMG_NAME" -volname "$APP_NAME" -srcfolder "$FINAL_DIR/$APP_NAME.app" -ov -format UDZO + log "DMG created at $DMG_NAME" + fi + else + # Non-windowed or non-app outputs (e.g., console onedir) + log "Moving build output to $FINAL_DIR/" + rm -rf "$FINAL_DIR/$APP_NAME" || true + mv "dist/$APP_NAME" "$FINAL_DIR/" + fi +else + log "Moving build output to $FINAL_DIR/" + + # Windows onefile creates dist/.exe; onedir creates dist// + # Move all matching outputs for this app (and its -cli companion). + if [ "$OS" = "windows" ]; then + # Clean old outputs + rm -f "$FINAL_DIR/${APP_NAME}.exe" "$FINAL_DIR/${APP_NAME}-cli.exe" || true + rm -rf "$FINAL_DIR/$APP_NAME" "$FINAL_DIR/${APP_NAME}-cli" || true + + # Prefer moving EXEs if they exist + if [ -f "dist/${APP_NAME}.exe" ]; then + mv "dist/${APP_NAME}.exe" "$FINAL_DIR/" + elif [ -f "dist/$APP_NAME" ]; then + mv "dist/$APP_NAME" "$FINAL_DIR/" || true + fi + + if [ -f "dist/${APP_NAME}-cli.exe" ]; then + mv "dist/${APP_NAME}-cli.exe" "$FINAL_DIR/" + elif [ -f "dist/${APP_NAME}-cli" ]; then + mv "dist/${APP_NAME}-cli" "$FINAL_DIR/" || true + fi + + # If onedir outputs were produced, move them too + if [ -d "dist/$APP_NAME" ]; then + rm -rf "$FINAL_DIR/$APP_NAME" || true + mv "dist/$APP_NAME" "$FINAL_DIR/" + fi + if [ -d "dist/${APP_NAME}-cli" ]; then + rm -rf "$FINAL_DIR/${APP_NAME}-cli" || true + mv "dist/${APP_NAME}-cli" "$FINAL_DIR/" + fi + + else + rm -rf "$FINAL_DIR/$APP_NAME" || true + mv "dist/$APP_NAME" "$FINAL_DIR/" + fi +fi + +log "Build completed successfully. Output: $FINAL_DIR" + +# --------------------------------------------------------------------------- +# Windows: create a .lnk shortcut (best-effort) +# --------------------------------------------------------------------------- +if [ "$OS" = "windows" ]; then + EXE_PATH="$(pwd)/$FINAL_DIR/$APP_NAME.exe" + LNK_PATH="$(pwd)/$FINAL_DIR/$APP_NAME.lnk" + + # Create a shortcut inside dist/windows (so we can ship it alongside the exe) + if [ -f "$EXE_PATH" ]; then + mkdir -p "$FINAL_DIR" || true + cat >"build/make_shortcut.vbs" <<'VBS' +Option Explicit +Dim shell, args, exePath, lnkPath +Set shell = CreateObject("WScript.Shell") +Set args = WScript.Arguments +exePath = args.Item(0) +lnkPath = args.Item(1) +Dim sc +Set sc = shell.CreateShortcut(lnkPath) +sc.TargetPath = exePath +sc.WorkingDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(exePath) +sc.WindowStyle = 1 +sc.Description = "Replicator" +sc.Save +VBS + + if command -v cscript >/dev/null 2>&1; then + cscript //nologo "build/make_shortcut.vbs" "$(cygpath -w "$EXE_PATH" 2>/dev/null || echo "$EXE_PATH")" "$(cygpath -w "$LNK_PATH" 2>/dev/null || echo "$LNK_PATH")" >/dev/null 2>&1 || true + fi + + # Fallback: create a .url shortcut (always works) + if [ ! -f "$LNK_PATH" ]; then + cat >"$FINAL_DIR/$APP_NAME.url" </dev/null 2>&1; then + cscript //nologo "build/make_shortcut.vbs" "$(cygpath -w "$CLI_EXE_PATH" 2>/dev/null || echo "$CLI_EXE_PATH")" "$(cygpath -w "$CLI_LNK_PATH" 2>/dev/null || echo "$CLI_LNK_PATH")" >/dev/null 2>&1 || true + fi + if [ ! -f "$CLI_LNK_PATH" ]; then + cat >"$FINAL_DIR/${APP_NAME}-cli.url" < [folder-name]" >&2 + exit 1 +fi + +TARGET_BIN="$1" +TARGET_DIR="${2:-$TARGET_BIN}" + +# Root of your project (adjust if needed) +PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +UNAME_OS="$(uname -s)" + +case "$UNAME_OS" in + Linux) + OS="linux" + ;; + Darwin) + OS="macos" + ;; + *) + echo "Unsupported OS: $UNAME_OS" >&2 + exit 1 + ;; +esac +ARCH="$(uname -m)" + +case "$ARCH" in + armv6l|armv7l|armhf) + ARCH="armhf" + ;; + aarch64|arm64) + ARCH="arm64" + ;; + *) + echo "Unsupported architecture: $ARCH" >&2 + exit 1 + ;; +esac + +DEST_DIR="$PROJECT_ROOT/src/bin/${TARGET_DIR}/${OS}/${ARCH}" +mkdir -p "$DEST_DIR" + +SOURCE_BIN="$(command -v "${TARGET_BIN}" || true)" + +if [[ -z "$SOURCE_BIN" ]]; then + echo "${TARGET_BIN} not found in PATH. Attempting installation..." + + if [[ "$OS" == "macos" ]]; then + if ! command -v brew >/dev/null 2>&1; then + echo "Homebrew is required but not installed." >&2 + exit 1 + fi + echo "Installing ${TARGET_BIN} using Homebrew..." + brew install "${TARGET_BIN}" || { + echo "Failed to install ${TARGET_BIN} via Homebrew." >&2 + exit 1 + } + elif [[ "$OS" == "linux" ]]; then + echo "Installing ${TARGET_BIN} using apt-get..." + sudo apt-get update -y + sudo apt-get install -y "${TARGET_BIN}" || { + echo "Failed to install ${TARGET_BIN} via apt-get." >&2 + exit 1 + } + fi + + SOURCE_BIN="$(command -v "${TARGET_BIN}" || true)" + if [[ -z "$SOURCE_BIN" ]]; then + echo "Installation succeeded but ${TARGET_BIN} is still not in PATH." >&2 + exit 1 + fi +fi + +echo "Found ${TARGET_BIN} at: $SOURCE_BIN" +echo "Copying to: $DEST_DIR/${TARGET_BIN}" + +cp "$SOURCE_BIN" "$DEST_DIR/${TARGET_BIN}" +chmod 755 "$DEST_DIR/${TARGET_BIN}" + +echo "Done." diff --git a/cli.py b/cli.py index efe4d54..0baf85c 100644 --- a/cli.py +++ b/cli.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# src/core/command-line.py +# src/core/cli.py import sys from typing import Any, Optional @@ -8,6 +8,7 @@ from .helper import Helper from .configuration import Configuration from .log import Log +from .service import Service # --------------------------------------------------------------------------- # CommandLine class @@ -42,11 +43,16 @@ def __init__(self, name: Optional[str] = None, argv=None): # Logger self._logger = Log() + # Service manager + self._service = Service(self._logger, self._configuration) + # Initialize core commands if hasattr(self._configuration, "cli") and callable(getattr(self._configuration, "cli")): self._configuration.cli(self) if hasattr(self._logger, "cli") and callable(getattr(self._logger, "cli")): self._logger.cli(self) + if hasattr(self._service, "cli") and callable(getattr(self._service, "cli")): + self._service.cli(self) # ------------------------------------------------------------------ # Properties / accessors @@ -64,6 +70,10 @@ def logger(self) -> Log: def configuration(self) -> Configuration: return self._configuration + @property + def service(self) -> Service: + return self._service + @property def name(self) -> str: return self.applicationName() @@ -83,10 +93,21 @@ def help(self) -> None: print("Available commands:") print() - entries: list[tuple[str, str]] = [] + # Group entries by category while preserving insertion order. + # Category order is the order we first see a category during add(). + categories_order: list[str] = [] + grouped: dict[str, list[tuple[str, str]]] = {} # Build usage strings including required arguments - for cmd, info in sorted(self._commands.items()): + # Preserve insertion order (the order commands were added) + for cmd, info in self._commands.items(): + category = info.get("category") or "General" + # Capitalize category + category = category.capitalize() + if category not in grouped: + grouped[category] = [] + categories_order.append(category) + desc = info.get("description", "") or "" args_required = info.get("args_required", 0) or 0 arg_names = info.get("arg_names") or [] @@ -102,20 +123,41 @@ def help(self) -> None: if args_required > 0: usage += " " + " ".join(arg_names[:args_required]) - entries.append((usage, desc)) + grouped[category].append((usage, desc)) + + # Compute padding for alignment across all commands + all_entries: list[tuple[str, str]] = [] + for cat in categories_order: + all_entries.extend(grouped.get(cat, [])) - # Compute padding for alignment - if entries: - max_cmd_len = max(len(usage) for usage, _ in entries) + if all_entries: + max_cmd_len = max(len(usage) for usage, _ in all_entries) else: max_cmd_len = 0 - for usage, desc in entries: - print(f" {usage:<{max_cmd_len}} {desc}") + # Print grouped commands with a simple separator/header per category + for idx, cat in enumerate(categories_order): + if idx != 0: + print() + print(f"[{cat}]") + for usage, desc in grouped.get(cat, []): + print(f" {usage:<{max_cmd_len}} {desc}") print() def add(self, command: str, description: str = "", callable: Optional[callable] = None, args: int = 0, arg_names: Optional[list[str]] = None) -> None: + # Support category prefixes using dot notation (e.g. "service.status"). + # The CLI token remains the final segment ("--status"), while the prefix + # is used only for grouping in help output. + category: Optional[str] = None + + raw = command.lstrip("-") + if "." in raw: + parts = [p for p in raw.split(".") if p] + if len(parts) >= 2: + category = ".".join(parts[:-1]) + command = parts[-1] + if not command.startswith("--"): command = f"--{command}" # Normalize argument names @@ -127,6 +169,7 @@ def add(self, command: str, description: str = "", callable: Optional[callable] "callable": callable, "args_required": args, "arg_names": arg_names, + "category": category, } def run(self, command: str, *args: Any, **kwargs: Any) -> Any: diff --git a/configuration.py b/configuration.py index d9473e4..7b24a7a 100644 --- a/configuration.py +++ b/configuration.py @@ -99,7 +99,7 @@ def __init__( # Built-in provisioning settings self.add("provisioning.host", "", "text", label="Host/URL") self.add("provisioning.token", "", "password", label="Token") - self.add("provisioning.appid", "PyRDPConnect", "text", label="App ID") + self.add("provisioning.appid", self._app.applicationName() if self._app else "corePY App", "text", label="App ID") # ------------------------------------------------------------------ # Core API @@ -292,8 +292,9 @@ def schema(self) -> dict[str, dict[str, Any]]: # ------------------------------------------------------------------ def cli(self, cli: QApplication = None) -> None: - cli.add("import", "Import configuration from the given file.", self.import_from_path, args=1, arg_names=[""]) - cli.add("provision", "Contact the provisioning server and import the returned configuration.", self.provision) + # cli.add("config.import", "Import configuration from the given file.", self.import_from_path, args=1, arg_names=[""]) + # cli.add("config.provision", "Contact the provisioning server and import the returned configuration.", self.provision) + pass # ------------------------------------------------------------------ # UI dialog builder @@ -749,40 +750,16 @@ def _update_from_widgets(self) -> None: self.set(key, value) def _get_config_dir(self) -> str: - # Legacy default (macOS, Windows, etc.) - default_dir = os.path.join(self.root_dir, "config") + """Return the directory used to store configuration files. - # Try to get OS name from helper to stay consistent with Application + Prefer Helper.get_config_path() (new, OS-appropriate location). + Fall back to the legacy project-root `config/` directory if the + helper doesn't provide get_config_path(). + """ + # Preferred: OS-appropriate config directory via Helper try: - os_name = self._helper.get_os() + # Let Helper resolve the app name (or use the QApplication name) + return self._helper.get_config_path(ensure=True, scope="system") except Exception: - os_name = None - - # Only change behavior on Linux and when we have an application name - if os_name == "linux": - app_name = "" - - # If we have an Application instance, try to use its name - if self._app is not None: - try: - # Prefer the Application.name property if available - if hasattr(self._app, "name"): - app_name = self._app.name # type: ignore[attr-defined] - else: - app_name = self._app.applicationName() - except Exception: - app_name = "" - - # In CLI usage there may be no Application; fall back to the root_dir name - if not app_name: - try: - app_name = os.path.basename(self.root_dir) or "" - except Exception: - app_name = "" - - if app_name: - home = os.path.expanduser("~") - if home: - return os.path.join(home, ".config", app_name) - - return default_dir + # Legacy fallback (kept for backward compatibility) + return os.path.join(self.root_dir, "config") diff --git a/database/__init__.py b/database/__init__.py new file mode 100644 index 0000000..287f550 --- /dev/null +++ b/database/__init__.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +# src/core/filesystem/__init__.py + +from .sqlite import SQLite + +__version__ = "1.0.0" + +__all__ = ["SQLite"] diff --git a/database/sqlite.py b/database/sqlite.py new file mode 100644 index 0000000..7489d1c --- /dev/null +++ b/database/sqlite.py @@ -0,0 +1,324 @@ +#!/usr/bin/env python3 +# src/core/database/sqlite.py + +from __future__ import annotations + +import os +import sqlite3 +from contextlib import contextmanager +from typing import Any, Optional, Iterable, Dict, List, Tuple, Union + +from PyQt5.QtWidgets import QApplication + +try: + from core.helper import Helper + from core.log import Log +except ImportError: + from helper import Helper + from log import Log + + +Row = Dict[str, Any] + + +class SQLite: + """ + Lightweight SQLite wrapper for corePY. + + Features: + - Auto-wires Helper/Logger from QApplication when available + - Centralized DB path handling + - Connection lifecycle (connect/close) + - CRUD for tables (exists, create, drop, list, columns) + - CRUD for records (insert/select/update/delete/upsert) + - Parameterized queries (safe) + - Transaction context manager + """ + + def __init__( + self, + *, + helper: Optional[Helper] = None, + logger: Optional[Log] = None, + db_path: Optional[str] = None, + app_name: Optional[str] = None, + ensure_dir: bool = True, + timeout: float = 30.0, + ): + super().__init__() + + # --- auto-wire from QApplication if not provided --- + if helper is None or logger is None: + app = QApplication.instance() + if app is not None: + helper = helper or getattr(app, "helper", None) + logger = logger or getattr(app, "logger", None) + + self._helper: Helper = helper or Helper() + self._logger: Optional[Log] = logger + + self._timeout = float(timeout) + + # Determine DB path + self._db_path = self._resolve_db_path( + db_path=db_path, + app_name=app_name or getattr(QApplication.instance(), "name", None) or "corePY", + ) + + if ensure_dir: + self._ensure_parent_dir(self._db_path) + + self._conn: Optional[sqlite3.Connection] = None + + # ------------------------------------------------------------------ + # Path / connection + # ------------------------------------------------------------------ + + def _resolve_db_path(self, *, db_path: Optional[str], app_name: str) -> str: + if db_path: + return os.path.abspath(db_path) + + # Prefer corePY's config/data folder if Helper exposes one; else fallback to ~/./ + # Adjust this to your Helper conventions if you already have something like get_path("config") etc. + base = None + try: + # If your helper has a dedicated config/data directory, use it + # Example patterns used in your projects: helper.get_path("config"), helper.get_path("Data"), etc. + base = self._helper.get_path("config") # may be None depending on your helper + except Exception: + base = None + + if not base or not os.path.isdir(base): + home = os.path.expanduser("~") + base = os.path.join(home, f".{app_name.lower()}") + + return os.path.join(base, "database.sqlite") + + def _ensure_parent_dir(self, path: str) -> None: + parent = os.path.dirname(path) + if parent and not os.path.isdir(parent): + os.makedirs(parent, exist_ok=True) + + @property + def path(self) -> str: + return self._db_path + + def connect(self) -> sqlite3.Connection: + if self._conn is not None: + return self._conn + + self._log(f"[SQLite] opening: {self._db_path}", level="debug", channel="sqlite") + + conn = sqlite3.connect( + self._db_path, + timeout=self._timeout, + isolation_level=None, # we manage transactions manually when needed + check_same_thread=False, + ) + conn.row_factory = sqlite3.Row + + # IMPORTANT: set _conn before running any PRAGMAs to avoid recursion + self._conn = conn + + # Sensible defaults (execute directly on the connection to avoid calling self.execute/connect) + conn.execute("PRAGMA foreign_keys = ON;") + conn.execute("PRAGMA journal_mode = WAL;") # good concurrency for desktop apps + conn.execute("PRAGMA synchronous = NORMAL;") # good balance for WAL + + return conn + + def close(self) -> None: + if self._conn is not None: + try: + self._conn.close() + except Exception: + pass + self._conn = None + + # ------------------------------------------------------------------ + # Low-level query helpers + # ------------------------------------------------------------------ + + def execute(self, sql: str, params: Union[Tuple[Any, ...], Dict[str, Any], None] = None) -> sqlite3.Cursor: + conn = self.connect() + cur = conn.cursor() + if params is None: + cur.execute(sql) + else: + cur.execute(sql, params) + return cur + + def executemany(self, sql: str, seq: Iterable[Union[Tuple[Any, ...], Dict[str, Any]]]) -> int: + conn = self.connect() + cur = conn.cursor() + cur.executemany(sql, seq) + return cur.rowcount + + def query(self, sql: str, params: Union[Tuple[Any, ...], Dict[str, Any], None] = None) -> List[Row]: + cur = self.execute(sql, params) + rows = cur.fetchall() + return [dict(r) for r in rows] + + def one(self, sql: str, params: Union[Tuple[Any, ...], Dict[str, Any], None] = None) -> Optional[Row]: + cur = self.execute(sql, params) + r = cur.fetchone() + return dict(r) if r else None + + def scalar(self, sql: str, params: Union[Tuple[Any, ...], Dict[str, Any], None] = None) -> Any: + cur = self.execute(sql, params) + r = cur.fetchone() + if not r: + return None + # sqlite3.Row is indexable + return r[0] + + @contextmanager + def transaction(self): + """ + Usage: + with db.transaction(): + db.insert(...) + db.update(...) + """ + conn = self.connect() + try: + conn.execute("BEGIN;") + yield + conn.execute("COMMIT;") + except Exception: + conn.execute("ROLLBACK;") + raise + + # ------------------------------------------------------------------ + # Table CRUD + # ------------------------------------------------------------------ + + def list_tables(self) -> List[str]: + rows = self.query( + "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name;" + ) + return [r["name"] for r in rows] + + def table_exists(self, table: str) -> bool: + r = self.scalar( + "SELECT 1 FROM sqlite_master WHERE type='table' AND name=? LIMIT 1;", + (table,), + ) + return bool(r) + + def drop_table(self, table: str) -> None: + self.execute(f'DROP TABLE IF EXISTS "{table}";') + + def create_table(self, table: str, columns_sql: str) -> None: + """ + columns_sql example: + "id INTEGER PRIMARY KEY, name TEXT NOT NULL, created_utc TEXT" + """ + self.execute(f'CREATE TABLE IF NOT EXISTS "{table}" ({columns_sql});') + + def columns(self, table: str) -> List[Row]: + # PRAGMA doesn't accept binding for identifiers; table must be trusted input + return self.query(f'PRAGMA table_info("{table}");') + + # ------------------------------------------------------------------ + # Record CRUD + # ------------------------------------------------------------------ + + def insert(self, table: str, data: Row) -> int: + keys = list(data.keys()) + cols = ", ".join([f'"{k}"' for k in keys]) + placeholders = ", ".join([f":{k}" for k in keys]) + sql = f'INSERT INTO "{table}" ({cols}) VALUES ({placeholders});' + cur = self.execute(sql, data) + return int(cur.lastrowid or 0) + + def select( + self, + table: str, + where: Optional[str] = None, + params: Union[Tuple[Any, ...], Dict[str, Any], None] = None, + *, + columns: Optional[List[str]] = None, + order_by: Optional[str] = None, + limit: Optional[int] = None, + offset: Optional[int] = None, + ) -> List[Row]: + cols = "*" + if columns: + cols = ", ".join([f'"{c}"' for c in columns]) + + sql = f'SELECT {cols} FROM "{table}"' + if where: + sql += f" WHERE {where}" + if order_by: + sql += f" ORDER BY {order_by}" + if limit is not None: + sql += f" LIMIT {int(limit)}" + if offset is not None: + sql += f" OFFSET {int(offset)}" + sql += ";" + return self.query(sql, params) + + def update(self, table: str, data: Row, where: str, params: Union[Tuple[Any, ...], Dict[str, Any]]) -> int: + keys = list(data.keys()) + set_clause = ", ".join([f'"{k}"=:{k}' for k in keys]) + sql = f'UPDATE "{table}" SET {set_clause} WHERE {where};' + + merged: Dict[str, Any] + if isinstance(params, dict): + merged = dict(params) + else: + # If params is tuple, we can't merge by name; require dict for update WHERE params + raise ValueError("SQLite.update requires WHERE params as dict for safe named binding.") + + merged.update(data) + cur = self.execute(sql, merged) + return int(cur.rowcount or 0) + + def delete(self, table: str, where: str, params: Union[Tuple[Any, ...], Dict[str, Any]]) -> int: + sql = f'DELETE FROM "{table}" WHERE {where};' + cur = self.execute(sql, params) + return int(cur.rowcount or 0) + + def upsert( + self, + table: str, + data: Row, + conflict_columns: List[str], + update_columns: Optional[List[str]] = None, + ) -> None: + """ + INSERT ... ON CONFLICT(...) DO UPDATE SET ... + """ + keys = list(data.keys()) + cols = ", ".join([f'"{k}"' for k in keys]) + placeholders = ", ".join([f":{k}" for k in keys]) + + conflict = ", ".join([f'"{c}"' for c in conflict_columns]) + + if update_columns is None: + update_columns = [k for k in keys if k not in conflict_columns] + + if update_columns: + set_clause = ", ".join([f'"{k}"=excluded."{k}"' for k in update_columns]) + sql = ( + f'INSERT INTO "{table}" ({cols}) VALUES ({placeholders}) ' + f"ON CONFLICT({conflict}) DO UPDATE SET {set_clause};" + ) + else: + sql = ( + f'INSERT INTO "{table}" ({cols}) VALUES ({placeholders}) ' + f"ON CONFLICT({conflict}) DO NOTHING;" + ) + + self.execute(sql, data) + + # ------------------------------------------------------------------ + # Logging + # ------------------------------------------------------------------ + + def _log(self, msg: str, *, level: str = "info", channel: str = "sqlite") -> None: + if self._logger is not None and hasattr(self._logger, "append"): + self._logger.append(msg, level=level, channel=channel) # type: ignore[call-arg] + else: + print(msg) diff --git a/filesystem/__init__.py b/filesystem/__init__.py new file mode 100644 index 0000000..1d9dfde --- /dev/null +++ b/filesystem/__init__.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +# src/core/filesystem/__init__.py + +from .filesystem import FileSystem +from .share import Share + +__version__ = "1.0.0" + +__all__ = ["FileSystem", "Share"] diff --git a/filesystem/filesystem.py b/filesystem/filesystem.py new file mode 100644 index 0000000..dcbe8bf --- /dev/null +++ b/filesystem/filesystem.py @@ -0,0 +1,390 @@ +#!/usr/bin/env python3 +# corePY/filesystem/filesystem.py + +from __future__ import annotations + +import os +import shutil +from dataclasses import dataclass +from pathlib import Path +from typing import Optional, Union, Iterable, Tuple + +from PyQt5.QtWidgets import QApplication + +try: + from core.helper import Helper +except ImportError: + from helper import Helper + +PathLike = Union[str, os.PathLike] + +@dataclass(frozen=True) +class CommandSpec: + """A simple command container useful for logging/execution.""" + + argv: list[str] + label: str + sensitive: bool = False + + +class FileSystem: + """Cross-platform filesystem helper. + + Goals: + - Provide *basic* operations (read/copy/delete) for files/folders. + - Prefer native tools when asked to preserve metadata: + - Windows: robocopy (best for NTFS ACLs) + - Linux/macOS: rsync (best for POSIX perms/ACL/xattrs when supported) + - Fall back to Python stdlib when tools are missing. + + Notes: + - UNC paths (\\\\server\\share\\path) are treated as normal paths on Windows. + - "preserve_metadata" is best-effort; some filesystems/mounts can't store all metadata. + """ + + def __init__( + self, + helper: Optional[Helper] = None, + logger: Optional[object] = None, + ): + super().__init__() + + # --- auto-wire from QApplication if not provided --- + if helper is None or logger is None: + app = QApplication.instance() + if app is None: + raise RuntimeError("FileSystem must be created after QApplication/Application.") + helper = helper or app.helper # type: ignore[attr-defined] + logger = logger or getattr(app, "logger", None) + + self._helper: Helper = helper + self._logger = logger + self._os: str = self._helper.get_os() + + # Cache for tool capability detection + self._rsync_caps: Optional[dict[str, bool]] = None + + # ------------------------------------------------------------------ + # Small helpers + # ------------------------------------------------------------------ + + def _p(self, path: PathLike) -> str: + return str(path) + + def _log(self, msg: str, level: str = "debug", channel: str = "filesystem") -> None: + if self._logger is not None and hasattr(self._logger, "append"): + try: + self._logger.append(msg, level=level, channel=channel) # type: ignore[call-arg] + return + except Exception: + pass + # Fallback: silent unless explicitly needed + + def _rsync_capabilities(self) -> dict[str, bool]: + """Detect which rsync flags are supported on this host. + + macOS often ships an older rsync that does not support -A/-X. + We detect capabilities once and cache them. + """ + if self._rsync_caps is not None: + return self._rsync_caps + + caps = { + "has_rsync": False, + "acls": False, # -A / --acls + "xattrs": False, # -X / --xattrs + "hardlinks": False, # -H / --hard-links + "numeric_ids": False, # --numeric-ids + } + + rsync = shutil.which("rsync") + if not rsync: + self._rsync_caps = caps + return caps + + caps["has_rsync"] = True + + # Try `--help` (most reliable to see flag availability) + rc, out = self._helper.run([rsync, "--help"]) + if rc != 0: + # If help fails, assume minimal support + self._rsync_caps = caps + return caps + + help_text = out or "" + + # Look for common help strings + if "--acls" in help_text or " -A" in help_text: + caps["acls"] = True + if "--xattrs" in help_text or " -X" in help_text: + caps["xattrs"] = True + if "--hard-links" in help_text or " -H" in help_text: + caps["hardlinks"] = True + if "--numeric-ids" in help_text: + caps["numeric_ids"] = True + + self._rsync_caps = caps + return caps + + def _build_rsync_args(self, *, allow_deletion: bool, preserve_metadata: bool) -> Optional[list[str]]: + """Build a safe rsync argv for the current host. + + We always include `-a` (archive) when preserve_metadata=True. + Additional flags (-H/-A/-X/--numeric-ids) are appended only if supported. + """ + caps = self._rsync_capabilities() + if not caps.get("has_rsync"): + return None + + rsync = shutil.which("rsync") or "rsync" + + args: list[str] = [rsync] + + if preserve_metadata: + # archive mode preserves perms, times, symlinks, etc. + args.append("-a") + else: + # minimal recursion + times (best-effort) + args.extend(["-r", "-t"]) + + if caps.get("hardlinks"): + args.append("-H") + if preserve_metadata and caps.get("acls"): + args.append("-A") + if preserve_metadata and caps.get("xattrs"): + args.append("-X") + if preserve_metadata and caps.get("numeric_ids"): + args.append("--numeric-ids") + + if allow_deletion: + args.append("--delete") + + return args + + def exists(self, path: PathLike) -> bool: + return os.path.exists(self._p(path)) + + def is_file(self, path: PathLike) -> bool: + return os.path.isfile(self._p(path)) + + def is_dir(self, path: PathLike) -> bool: + return os.path.isdir(self._p(path)) + + def mkdirs(self, path: PathLike) -> None: + os.makedirs(self._p(path), exist_ok=True) + + # ------------------------------------------------------------------ + # Read operations + # ------------------------------------------------------------------ + + def read_bytes(self, path: PathLike) -> bytes: + p = self._p(path) + with open(p, "rb") as f: + return f.read() + + def read_text(self, path: PathLike, encoding: str = "utf-8", errors: str = "strict") -> str: + p = self._p(path) + with open(p, "r", encoding=encoding, errors=errors) as f: + return f.read() + + # ------------------------------------------------------------------ + # Delete operations + # ------------------------------------------------------------------ + + def delete(self, path: PathLike) -> bool: + """Delete a file or folder (recursive). Returns True if deleted, False if not found.""" + p = self._p(path) + if not os.path.exists(p): + return False + + if os.path.isdir(p) and not os.path.islink(p): + shutil.rmtree(p) + else: + os.remove(p) + return True + + # ------------------------------------------------------------------ + # Copy operations + # ------------------------------------------------------------------ + + def copy( + self, + src: PathLike, + dst: PathLike, + *, + preserve_metadata: bool = True, + allow_deletion: bool = False, + ) -> bool: + """Copy file or directory from src to dst. + + If src is a directory: + - preserve_metadata=True prefers robocopy (Windows) or rsync (Linux/macOS) + - allow_deletion=True makes it a mirror (best-effort with stdlib fallback) + + Returns: + - True on success + - False on failure + """ + src_s = self._p(src) + dst_s = self._p(dst) + + if not os.path.exists(src_s): + self._log(f"[FileSystem] copy: source not found: {src_s}", level="warning") + return False + + try: + if os.path.isdir(src_s): + return self._copy_dir(src_s, dst_s, preserve_metadata=preserve_metadata, allow_deletion=allow_deletion) + else: + return self._copy_file(src_s, dst_s, preserve_metadata=preserve_metadata) + except Exception as e: + self._log(f"[FileSystem] copy failed: {src_s} -> {dst_s} ({e})", level="error") + return False + + def _copy_file(self, src: str, dst: str, *, preserve_metadata: bool = True) -> bool: + self.mkdirs(os.path.dirname(dst) or ".") + + # shutil.copy2 preserves basic metadata (mtime/atime + mode where possible) + if preserve_metadata: + shutil.copy2(src, dst) + else: + shutil.copy(src, dst) + + return True + + def _copy_dir( + self, + src: str, + dst: str, + *, + preserve_metadata: bool = True, + allow_deletion: bool = False, + ) -> bool: + # Prefer native tools when metadata matters + if preserve_metadata: + cmd = self.build_mirror_command(src, dst, allow_deletion=allow_deletion) + if cmd is not None: + self._log(f"[FileSystem] executing: {cmd.label}: {' '.join(cmd.argv)}") + rc, out = self._helper.run(cmd.argv) + + # robocopy has special return codes: 0-7 are generally success-ish. + if cmd.argv and os.path.basename(cmd.argv[0]).lower().startswith("robocopy"): + ok = rc <= 7 + else: + ok = rc == 0 + + if not ok: + self._log(f"[FileSystem] tool copy failed rc={rc}: {out}", level="warning") + return ok + + # Fallback: Python stdlib directory copy + # Ensure destination exists + os.makedirs(dst, exist_ok=True) + + # Copy/update files + for root, dirs, files in os.walk(src): + rel = os.path.relpath(root, src) + target_root = dst if rel == "." else os.path.join(dst, rel) + os.makedirs(target_root, exist_ok=True) + + for d in dirs: + os.makedirs(os.path.join(target_root, d), exist_ok=True) + + for f in files: + s = os.path.join(root, f) + t = os.path.join(target_root, f) + # copy2 for metadata best-effort + shutil.copy2(s, t) + + # Mirror delete extras if requested (best-effort) + if allow_deletion: + self._mirror_delete_extras(src, dst) + + return True + + def _mirror_delete_extras(self, src: str, dst: str) -> None: + """Delete files/dirs that exist in dst but not in src (best-effort).""" + # Walk destination and compare + for root, dirs, files in os.walk(dst, topdown=False): + rel = os.path.relpath(root, dst) + src_root = src if rel == "." else os.path.join(src, rel) + + # Remove files not present in src + for f in files: + d_path = os.path.join(root, f) + s_path = os.path.join(src_root, f) + if not os.path.exists(s_path): + try: + os.remove(d_path) + except Exception as e: + self._log(f"[FileSystem] mirror delete file failed: {d_path} ({e})", level="warning") + + # Remove dirs not present in src + for d in dirs: + d_path = os.path.join(root, d) + s_path = os.path.join(src_root, d) + if not os.path.exists(s_path): + try: + shutil.rmtree(d_path) + except Exception as e: + self._log(f"[FileSystem] mirror delete dir failed: {d_path} ({e})", level="warning") + + # ------------------------------------------------------------------ + # Command generation (reusable by Replicator) + # ------------------------------------------------------------------ + + def build_mirror_command(self, src_dir: PathLike, dst_dir: PathLike, *, allow_deletion: bool) -> Optional[CommandSpec]: + """Build the best command to mirror src_dir -> dst_dir on this host. + + Returns a CommandSpec or None if no suitable tool is available. + """ + src = self._p(src_dir) + dst = self._p(dst_dir) + + # ------------------------- + # Windows: robocopy + # ------------------------- + if self._os == "windows": + # robocopy is typically available in PATH on Windows + robocopy = shutil.which("robocopy") or "robocopy" + + # /MIR implies /E + delete extras; /E copies subdirs including empty + # /COPY:DATSOU preserves Data, Attributes, Timestamps, Security (ACL), Owner, Auditing + # /DCOPY:DATSOU preserves directory timestamps + # /R /W keep retries low for UI responsiveness + args = [ + robocopy, + src, + dst, + "/MIR" if allow_deletion else "/E", + "/COPYALL", + "/DCOPY:DAT", + "/SECFIX", + "/R:1", + "/W:1", + "/XJ", + "/FFT", + "/NP", + "/NDL", + "/NFL", + "/IS", + "/IT", + ] + return CommandSpec(argv=args, label="robocopy") + + # ------------------------- + # Linux/macOS: rsync + # ------------------------- + if self._os in ("linux", "macos"): + # Use trailing slashes to copy contents of src into dst + src_arg = src.rstrip("/") + "/" + dst_arg = dst.rstrip("/") + "/" + + base = self._build_rsync_args(allow_deletion=allow_deletion, preserve_metadata=True) + if not base: + return None + + args = base + [src_arg, dst_arg] + return CommandSpec(argv=args, label="rsync") + + return None diff --git a/filesystem/share.py b/filesystem/share.py new file mode 100644 index 0000000..55e8e88 --- /dev/null +++ b/filesystem/share.py @@ -0,0 +1,644 @@ +#!/usr/bin/env python3 +# src/core/filesystem/share.py + +"""Share mounting utilities for corePY (SMB-only). + +Goal +---- +Provide a single, cross-platform interface for mounting/unmounting SMB shares. + +Supported protocol: + - SMB (CIFS / Windows shares) + +Backends +-------- +Native OS tools (preferred): + * Linux: mount.cifs / umount + * macOS: mount_smbfs / umount + * Windows: net use + +Notes +----- +* Many mount operations require elevated privileges depending on target path. + This class does not force privilege escalation; you can pass `elevate=True` + to prefix commands with sudo on Unix-like systems. +* On Windows, SMB mounting via `net use` maps network resources to a drive letter. + - If you pass a drive letter (e.g. `mount_point='Z:'`), it will map directly. + - If you pass a directory path, corePY will map the share to a free drive letter + and create a directory junction at `mount_point` pointing to that drive. +""" + +from __future__ import annotations + +import os +import platform +import shlex +import shutil +import subprocess +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Dict, List, Optional, Tuple +from urllib.parse import quote, unquote + + +class ShareError(RuntimeError): + pass + + +@dataclass +class ShareAuth: + username: Optional[str] = None + password: Optional[str] = None + domain: Optional[str] = None + + +@dataclass +class ShareTarget: + protocol: str # smb + host: str + path: str = "" # share name and optional subpath (e.g. "Share" or "Share/dir") + port: Optional[int] = None # unused for smb, kept for compatibility + + def normalized_protocol(self) -> str: + p = (self.protocol or "").strip().lower() + if p in {"cifs"}: + return "smb" + return p + + def decoded_path(self) -> str: + # Accept either raw share names or percent-encoded ones (e.g. "Test%20with%20spaces"). + try: + return unquote(self.path or "") + except Exception: + return self.path or "" + +class ShareLoggerAdapter: + """Adapter to feed Share's logging into Replicator/corePY style append().""" + + def __init__(self, append_fn: Callable[..., None]): + self._append = append_fn + + def _call(self, msg: str, level: str) -> None: + msg = redact_secrets(msg) + try: + self._append(msg, level=level) # core Log.append style + except TypeError: + try: + self._append(msg, level) # positional callable style + except TypeError: + self._append(msg) # best-effort fallback + + def debug(self, msg: str) -> None: + self._call(msg, "debug") + + def info(self, msg: str) -> None: + self._call(msg, "info") + + def warning(self, msg: str) -> None: + self._call(msg, "warning") + + def error(self, msg: str) -> None: + self._call(msg, "error") + +class Share: + """Mount and unmount SMB shares.""" + + def __init__(self, logger=None, bin_root: Optional[str] = None): + self._logger = logger + self._bin_root = Path(bin_root) if bin_root else None + + self._backend: Optional[str] = None # native_smb_linux|native_smb_macos|native_smb_windows + self._last_cmd: Optional[List[str]] = None + self._last_mount_point: Optional[str] = None + self._last_probe_ok: Optional[bool] = None + self._last_probe_message: Optional[str] = None + self._last_windows_drive: Optional[str] = None + self._last_windows_junction: Optional[str] = None + self._last_windows_unc: Optional[str] = None + + # --------------------------------------------------------------------- + # Public API + # --------------------------------------------------------------------- + + def mount( + self, + protocol: str, + host: str, + remote: str, + mount_point: str, + auth: Optional[ShareAuth] = None, + *, + port: Optional[int] = None, + options: Optional[Dict[str, str]] = None, + read_only: bool = False, + elevate: bool = False, + timeout: int = 60, + ) -> None: + """Mount a share. + + Parameters + ---------- + protocol: + smb + host: + Hostname or IP. + remote: + SMB share name and optional path (e.g. "Share" or "Share/dir"). + mount_point: + Local mount directory (Linux/macOS) or drive letter like "Z:" (Windows). + auth: + Username/password/domain. + options: + Backend-specific mount options. + read_only: + Attempt to mount read-only. + elevate: + On Linux/macOS, prefix with sudo. + timeout: + Seconds. + """ + auth = auth or ShareAuth() + options = options or {} + + target = ShareTarget(protocol=protocol, host=host, path=remote or "", port=port) + p = target.normalized_protocol() + + # Normalize remote path early (accept percent-encoded share names) + target.path = target.decoded_path() + + self._log_debug(f"Mount request: protocol={p} host={host} remote={remote} mount_point={mount_point}") + + if p != "smb": + raise ShareError(f"Unsupported protocol: {protocol}. Supported protocol(s): smb") + + # Ensure mountpoint exists for directory-based mounts + # On Windows, directory mounts are implemented as symlinks and any pre-created empty directory will be replaced. + if not self._is_windows_drive_letter(mount_point): + Path(mount_point).mkdir(parents=True, exist_ok=True) + + self._mount_smb(target, mount_point, auth, options, read_only, elevate, timeout) + + # Probe the mount to confirm it is usable. + ok, msg = self._probe_mount(mount_point, timeout=timeout) + self._last_probe_ok = ok + self._last_probe_message = msg + self._log_debug(f"Share mount probe: mount_point={mount_point} ok={ok} msg={msg}") + + if not ok: + raise ShareError(f"Mount completed but mount probe failed: {msg}") + + self._last_mount_point = mount_point + + def umount(self, mount_point: Optional[str] = None, *, elevate: bool = False, timeout: int = 60) -> None: + """Unmount a share.""" + mp = mount_point or self._last_mount_point + if not mp: + raise ShareError("No mount point provided, and no previous mount point is known.") + + self._log_debug(f"Unmount request: mount_point={mp} backend={self._backend}") + + # Best-effort probe before unmount. + ok_before, msg_before = self._probe_mount(mp, timeout=min(5, timeout)) + self._log_debug(f"Share pre-unmount probe: mount_point={mp} ok={ok_before} msg={msg_before}") + + system = platform.system().lower() + if system == "windows": + # If we created a directory symlink, remove it first, then disconnect. + drive: Optional[str] = None + unc: Optional[str] = None + + if mp and not self._is_windows_drive_letter(mp): + # Directory-style mount (symlink) + junction = mp + unc = self._last_windows_unc + try: + if junction and os.path.exists(junction): + # Remove symlink directory (best-effort) + self._run(["cmd", "/c", "rmdir", "/S", "/Q", junction], timeout=timeout) + except Exception: + pass + else: + # Drive-letter mount + drive = mp + + if drive: + # Example: net use Z: /delete /y + self._run(["net", "use", drive, "/delete", "/y"], timeout=timeout) + + if unc: + # Example: net use \\server\Share /delete /y + self._run(["net", "use", unc, "/delete", "/y"], timeout=timeout) + + # Clear remembered mapping + self._last_windows_drive = None + self._last_windows_junction = None + self._last_windows_unc = None + + ok_after, msg_after = self._probe_mount(mp, timeout=min(5, timeout)) + self._log_debug(f"Share post-unmount probe: mount_point={mp} ok={ok_after} msg={msg_after}") + return + + # Linux/macOS + umount_bin = shutil.which("umount") or "umount" + cmd = (["sudo"] if elevate else []) + [umount_bin, mp] + self._run(cmd, timeout=timeout) + + ok_after, msg_after = self._probe_mount(mp, timeout=min(5, timeout)) + self._log_debug(f"Share post-unmount probe: mount_point={mp} ok={ok_after} msg={msg_after}") + + # --------------------------------------------------------------------- + # SMB + # --------------------------------------------------------------------- + + def _mount_smb( + self, + target: ShareTarget, + mount_point: str, + auth: ShareAuth, + options: Dict[str, str], + read_only: bool, + elevate: bool, + timeout: int, + ) -> None: + system = platform.system().lower() + + if system == "windows": + self._backend = "native_smb_windows" + + # `net use` supports mapping to a drive letter. + # If the caller provided a directory path, we: + # 1) create an authenticated connection to the UNC path (no drive letter) + # 2) create a directory symlink at mount_point pointing to that UNC path + # + # IMPORTANT: `mklink /J` (junction) cannot target mapped drives / UNC paths + # and will fail with "Local volumes are required...". For UNC we must use + # a directory symbolic link (`mklink /D`). + + unc = self._smb_unc(target.host, target.path) + + junction_path: Optional[str] = None + drive_letter: Optional[str] = None + + if self._is_windows_drive_letter(mount_point): + # Drive-letter style mount + drive_letter = mount_point.upper() + + cmd = ["net", "use", drive_letter, unc] + if auth.username: + if auth.domain: + cmd += [f"/user:{auth.domain}\\{auth.username}"] + else: + cmd += [f"/user:{auth.username}"] + if auth.password is not None: + cmd += [auth.password] + cmd += ["/persistent:no"] + + # Retry once on 1219 by clearing existing connections to that host + try: + self._run(cmd, timeout=timeout) + except ShareError as e: + if "1219" in str(e): + self._log_debug(f"Windows SMB: detected error 1219; clearing connections to host {target.host} and retrying") + try: + self._run(["net", "use", f"\\\\{target.host}\\*", "/delete", "/y"], timeout=timeout) + except Exception: + pass + self._run(cmd, timeout=timeout) + else: + raise + + self._last_windows_drive = drive_letter + self._last_windows_junction = None + self._last_windows_unc = None + return + + # Directory-style mount (symlink to UNC) + junction_path = mount_point + + # 1) Create (or refresh) an authenticated connection to the UNC path + # without assigning a drive letter. + cmd = ["net", "use", unc] + if auth.username: + if auth.domain: + cmd += [f"/user:{auth.domain}\\{auth.username}"] + else: + cmd += [f"/user:{auth.username}"] + # Avoid interactive password prompt: pass empty string when password is None. + cmd += [(auth.password if auth.password is not None else "")] + cmd += ["/persistent:no"] + + try: + self._run(cmd, timeout=timeout) + except ShareError as e: + if "1219" in str(e): + self._log_debug(f"Windows SMB: detected error 1219; clearing connections to host {target.host} and retrying") + try: + self._run(["net", "use", f"\\\\{target.host}\\*", "/delete", "/y"], timeout=timeout) + except Exception: + pass + self._run(cmd, timeout=timeout) + else: + raise + + # 2) Create a directory symlink pointing to the UNC path. + try: + if os.path.exists(junction_path): + self._run(["cmd", "/c", "rmdir", "/S", "/Q", junction_path], timeout=timeout) + + # NOTE: Creating symlinks may require admin privileges unless Developer Mode is enabled. + self._run(["cmd", "/c", "mklink", "/D", junction_path, unc], timeout=timeout) + + self._last_windows_drive = None + self._last_windows_junction = junction_path + self._last_windows_unc = unc + except Exception: + # Best-effort rollback of the UNC connection + try: + self._run(["net", "use", unc, "/delete", "/y"], timeout=timeout) + except Exception: + pass + raise + + return + + if system == "darwin": + self._backend = "native_smb_macos" + mount_smbfs = self._bin("mount_smbfs") + + # Format: //user:pass@server/share /mnt/point + userinfo = "" + if auth.username: + userinfo = auth.username + if auth.password: + userinfo += ":" + self._url_escape(auth.password) + userinfo += "@" + + # For SMB URLs, the path portion must be URL-encoded (but keep '/'). + path = (target.path or "").lstrip("/") + path = quote(path, safe="/") + url = f"//{userinfo}{target.host}/{path}" + if read_only: + cmd = (["sudo"] if elevate else []) + [mount_smbfs, "-o", "ro", url, mount_point] + else: + cmd = (["sudo"] if elevate else []) + [mount_smbfs, url, mount_point] + + self._run(cmd, timeout=timeout) + return + + # Linux + self._backend = "native_smb_linux" + mount_cifs = self._bin("mount.cifs") + + share, subpath = self._split_share_and_subpath(target.path) + if not share: + raise ShareError("SMB mount requires a share name (remote='Share' or 'Share/subpath').") + + unc = f"//{target.host}/{share}" + + mount_opts: Dict[str, str] = {} + if auth.username is not None: + mount_opts["username"] = auth.username + if auth.password is not None: + mount_opts["password"] = auth.password + if auth.domain: + mount_opts["domain"] = auth.domain + if read_only: + mount_opts["ro"] = "" + + # Allow caller overrides + mount_opts.update(options) + + opts_str = self._kv_to_mount_opts(mount_opts) + + cmd = (["sudo"] if elevate else []) + [mount_cifs, unc, mount_point] + if opts_str: + cmd += ["-o", opts_str] + + self._run(cmd, timeout=timeout) + + # If a subpath was requested, verify it exists (informational only) + if subpath: + check_path = os.path.join(mount_point, subpath) + if not os.path.exists(check_path): + self._log_debug(f"Warning: SMB subpath does not exist after mount: {check_path}") + + # --------------------------------------------------------------------- + # Helpers + # --------------------------------------------------------------------- + + def _run(self, cmd: List[str], *, timeout: int) -> None: + self._last_cmd = cmd + printable = [shlex.quote(str(c)) for c in cmd] + self._log_debug("Executing: " + " ".join(printable)) + + try: + # On Windows, launching console utilities from a GUI process can flash a console window. + # Use CREATE_NO_WINDOW / SW_HIDE best-effort to avoid visible windows. + run_kwargs: Dict[str, object] = { + "stdout": subprocess.PIPE, + "stderr": subprocess.PIPE, + "text": True, + "timeout": timeout, + "check": False, + "stdin": subprocess.DEVNULL, + } + + if platform.system().lower() == "windows": + # Hide console window (best-effort) + create_no_window = getattr(subprocess, "CREATE_NO_WINDOW", 0) + if create_no_window: + run_kwargs["creationflags"] = int(create_no_window) + + # Some Windows builds still flash; STARTUPINFO can help in many cases. + try: + si = subprocess.STARTUPINFO() # type: ignore[attr-defined] + si.dwFlags |= getattr(subprocess, "STARTF_USESHOWWINDOW", 1) + si.wShowWindow = getattr(subprocess, "SW_HIDE", 0) + run_kwargs["startupinfo"] = si + except Exception: + pass + + completed = subprocess.run(cmd, **run_kwargs) # type: ignore[arg-type] + except FileNotFoundError as e: + raise ShareError(f"Required executable not found: {cmd[0]}") from e + except subprocess.TimeoutExpired as e: + raise ShareError(f"Command timed out after {timeout}s: {' '.join(cmd)}") from e + + if completed.returncode != 0: + msg = (completed.stderr or completed.stdout or "").strip() + raise ShareError(f"Mount command failed (code {completed.returncode}): {msg}") + + if completed.stdout: + self._log_debug(completed.stdout.strip()) + + def _bin(self, name: str) -> str: + """Resolve an executable. + + Resolution order: + 1) PATH + 2) Bundled binary under src/bin/[name]/[OS]/[arch]/(bin/)[exe] (best-effort) + """ + candidates = [name] + if platform.system().lower() == "windows" and not name.lower().endswith(".exe"): + candidates.insert(0, name + ".exe") + + # PATH first + for c in candidates: + p = shutil.which(c) + if p: + return p + + # Bundled fallback + root = self._resolve_bin_root() + os_name = self._os_folder() + arch = self._arch_folder() + + for c in candidates: + bundled_bin = root / name / os_name / arch / "bin" / c + bundled_flat = root / name / os_name / arch / c + for bundled in (bundled_bin, bundled_flat): + if bundled.exists() and bundled.is_file(): + return str(bundled) + + return candidates[0] + + def _resolve_bin_root(self) -> Path: + if self._bin_root: + return self._bin_root + + here = Path(__file__).resolve() + + search_roots: List[Path] = [] + try: + search_roots.append(Path.cwd()) + except Exception: + pass + + search_roots.append(here.parent) + search_roots.extend(list(here.parents)) + search_roots.append(here.parent.parent) + search_roots.append(here.parent.parent.parent) + + for root in search_roots: + candidate = root / "src" / "bin" + if candidate.exists(): + self._bin_root = candidate + return candidate + + for root in search_roots: + candidate = root / "bin" + if candidate.exists(): + self._bin_root = candidate + return candidate + + self._bin_root = Path.cwd() / "src" / "bin" + return self._bin_root + + def _os_folder(self) -> str: + s = platform.system().lower() + if s == "darwin": + return "macos" + if s == "windows": + return "windows" + return "linux" + + def _arch_folder(self) -> str: + m = (platform.machine() or "").lower() + if m in {"x86_64", "amd64"}: + return "x86_64" + if m in {"aarch64", "arm64"}: + return "arm64" + if m.startswith("arm"): + return "arm" + if m in {"i386", "i686", "x86"}: + return "x86" + return m or "unknown" + + def _is_windows_drive_letter(self, s: str) -> bool: + return len(s) == 2 and s[1] == ":" and s[0].isalpha() + + def _smb_unc(self, host: str, remote: str) -> str: + remote = unquote(remote or "") + remote = remote.replace("/", "\\").lstrip("\\") + return f"\\\\{host}\\{remote}" + + def _split_share_and_subpath(self, remote: str) -> Tuple[str, str]: + r = unquote(remote or "").lstrip("/") + if not r: + return "", "" + parts = r.split("/") + share = parts[0] + sub = "/".join(parts[1:]) if len(parts) > 1 else "" + return share, sub + + def _kv_to_mount_opts(self, d: Dict[str, str]) -> str: + parts = [] + for k, v in d.items(): + if v is None: + continue + if v == "": + parts.append(str(k)) + else: + parts.append(f"{k}={v}") + return ",".join(parts) + + def _url_escape(self, s: str) -> str: + # Minimal escaping suitable for passwords in smb URLs + safe = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~" + out = [] + for ch in s: + if ch in safe: + out.append(ch) + else: + out.append("%" + format(ord(ch), "02X")) + return "".join(out) + + def _log_debug(self, msg: str) -> None: + if self._logger is not None: + for method in ("debug", "info"): + if hasattr(self._logger, method): + getattr(self._logger, method)(msg) + return + + def _probe_mount(self, mount_point: str, *, timeout: int = 10) -> Tuple[bool, str]: + """Best-effort probe to determine if a mount point is usable.""" + try: + if self._is_windows_drive_letter(mount_point): + return self._probe_windows_drive(mount_point) + + mp = str(mount_point) + if not os.path.exists(mp): + return False, "mount point does not exist" + if not os.path.isdir(mp): + return False, "mount point is not a directory" + + deadline = time.time() + float(timeout) + last_err: Optional[str] = None + while time.time() < deadline: + try: + _ = os.listdir(mp) + return True, "listdir ok" + except Exception as e: + last_err = str(e) + time.sleep(0.25) + + return False, f"listdir failed: {last_err or 'unknown error'}" + except Exception as e: + return False, f"probe exception: {e}" + + def _probe_windows_drive(self, drive: str) -> Tuple[bool, str]: + try: + d = drive.upper() + if not d.endswith(":"): + d += ":" + root = d + "\\" + if not os.path.exists(root): + return False, "drive root does not exist" + try: + _ = os.listdir(root) + return True, "drive listdir ok" + except Exception as e: + return False, f"drive listdir failed: {e}" + except Exception as e: + return False, f"drive probe exception: {e}" diff --git a/helper.py b/helper.py index 4f69c74..c7a638c 100644 --- a/helper.py +++ b/helper.py @@ -5,7 +5,7 @@ import platform import subprocess -from PyQt5.QtCore import Qt +from pathlib import Path from PyQt5.QtWidgets import QApplication class Helper: @@ -31,7 +31,29 @@ def __init__(self, root_dir: str | None = None, script_dir: str | None = None): self.home_dir = os.path.expanduser("~") - def get_path(self, rel_path: str) -> str | None: + def get_path(self, rel_path: str, type: str = "SYS") -> str | None: + """ + Locate a resource file according to the specified type. + Wrapper around get_sys_path, get_config_path, get_data_path. + + Types: + - SYS: Search in standard system locations (PyInstaller, .app Resources, src/) + - CONFIG: User or system configuration directory (see get_config_path) + - DATA: User or system data directory (see get_data_path) + """ + rel = rel_path.replace("\\", "/") + + if type.upper() == "SYS": + return self.get_sys_path(rel) + elif type.upper() == "CONFIG": + return self.get_config_path(rel) + elif type.upper() == "DATA": + return self.get_data_path(rel) + else: + print(f"[Helper] Unknown path type: {type}") + return None + + def get_sys_path(self, rel_path: str) -> str | None: rel = rel_path.replace("\\", "/") # 1) PyInstaller onefile temp dir @@ -47,12 +69,20 @@ def get_path(self, rel_path: str) -> str | None: if os.path.exists(p): return p - # 3) macOS .app Resources + # 3) macOS .app Resources in onefile + if getattr(sys, "frozen", False) and self.get_os() == "macos": + # .../Replicator.app/Contents/MacOS/Replicator -> parents[1] = Contents + contents = Path(sys.executable).resolve().parents[1] + p = contents / "Resources" / rel + if p.exists(): + return str(p) + + # 4) macOS .app Resources res = os.path.join(self.root_dir, "Resources", rel) if os.path.exists(res): return res - # 4) repo src/ + # 5) repo src/ src = os.path.join(self.root_dir, "src", rel) if os.path.exists(src): return src @@ -60,6 +90,198 @@ def get_path(self, rel_path: str) -> str | None: print(f"[Helper] Could not find resource: {rel}") return None + def _get_app_name(self, app_name: str | None = None) -> str: + """Resolve the application name used for user directories.""" + if app_name: + name = str(app_name).strip() + if name: + return name + + # Prefer QApplication name when running with a Qt app + try: + qapp = QApplication.instance() + if qapp: + qname = (qapp.applicationName() or "").strip() + if qname: + return qname + except Exception: + pass + + # Fallback: executable/script name + try: + base = os.path.basename(sys.executable if getattr(sys, "frozen", False) else sys.argv[0]) + name = os.path.splitext(base)[0].strip() + return name or "app" + except Exception: + return "app" + + def get_data_path( + self, + rel_path: str | None = None, + app_name: str | None = None, + scope: str | None = None, + ensure: bool = True, + ) -> str: + """Return the OS-appropriate directory for app *data*. + + Scope: + - scope="user" (default): per-user data directory + - scope="system": system-wide/shared data directory (requires appropriate permissions) + + Defaults by OS: + - Windows: + user -> %LOCALAPPDATA%\\ + system -> %PROGRAMDATA%\\ + - macOS: + user -> ~/Library/Application Support/ + system -> ~/Library/Application Support/ + - Linux: + user -> $XDG_DATA_HOME/ (fallback ~/.local/share/) + system -> /var/lib/ + + If `rel_path` is provided, it is appended under the app directory. + If `ensure` is True, the directory is created (or its parent if `rel_path` looks like a file). + + Notes: + - If scope="system" is requested but the target is not writable, this function falls back + to the user scope directory. + - You can set COREPY_DATA_SCOPE to "user" or "system" to change the default scope. + """ + name = self._get_app_name(app_name) + os_name = self.get_os() + + # Resolve scope: explicit arg wins, then env override, then default to "user" + resolved_scope = (scope or os.environ.get("COREPY_DATA_SCOPE") or "user").strip().lower() + if resolved_scope not in ("user", "system"): + resolved_scope = "user" + + if os_name == "windows": + if resolved_scope == "system": + base = os.environ.get("PROGRAMDATA") or os.environ.get("ALLUSERSPROFILE") or self.home_dir + root = Path(base) / name + else: + base = os.environ.get("LOCALAPPDATA") or os.environ.get("APPDATA") or self.home_dir + root = Path(base) / name + elif os_name == "macos": + # if resolved_scope == "system": + # root = Path("/Library") / "Application Support" / name + # else: + # root = Path(self.home_dir) / "Library" / "Application Support" / name + root = Path(self.home_dir) / "Library" / "Application Support" / name + else: + if resolved_scope == "system": + root = Path("/var") / "lib" / name + else: + xdg = os.environ.get("XDG_DATA_HOME") + if xdg: + root = Path(xdg) / name + else: + root = Path(self.home_dir) / ".local" / "share" / name + + if rel_path: + rel = rel_path.replace("\\", "/").lstrip("/") + root = root / rel + + if ensure: + # If rel_path includes a filename, create parent; otherwise create dir + target_dir = root.parent if root.suffix else root + target_dir.mkdir(parents=True, exist_ok=True) + + if resolved_scope == "system" and ensure: + try: + # If we cannot write to the chosen system directory, fall back to user scope. + probe_dir = root.parent if root.suffix else root + if not os.access(str(probe_dir), os.W_OK): + fallback = self.get_data_path(rel_path=rel_path, app_name=app_name, scope="user", ensure=ensure) + return fallback + except Exception: + fallback = self.get_data_path(rel_path=rel_path, app_name=app_name, scope="user", ensure=ensure) + return fallback + + return str(root) + + def get_config_path( + self, + rel_path: str | None = None, + app_name: str | None = None, + scope: str | None = None, + ensure: bool = True, + ) -> str: + """Return the OS-appropriate directory for app *configuration*. + + Scope: + - scope="user" (default): per-user configuration directory + - scope="system": system-wide/shared configuration directory (requires appropriate permissions) + + Defaults by OS: + - Windows: + user -> %APPDATA%\\ + system -> %PROGRAMDATA%\\\\config + - macOS: + user -> ~/Library/Preferences/ + system -> /Library/Preferences/ + - Linux: + user -> $XDG_CONFIG_HOME/ (fallback ~/.config/) + system -> /etc/ + + If `rel_path` is provided, it is appended under the app directory. + If `ensure` is True, the directory is created (or its parent if `rel_path` looks like a file). + + Notes: + - If scope="system" is requested but the target is not writable, this function falls back + to the user scope directory. + - You can set COREPY_CONFIG_SCOPE to "user" or "system" to change the default scope. + """ + name = self._get_app_name(app_name) + os_name = self.get_os() + + # Resolve scope: explicit arg wins, then env override, then default to "user" + resolved_scope = (scope or os.environ.get("COREPY_CONFIG_SCOPE") or "user").strip().lower() + if resolved_scope not in ("user", "system"): + resolved_scope = "user" + + if os_name == "windows": + if resolved_scope == "system": + base = os.environ.get("PROGRAMDATA") or os.environ.get("ALLUSERSPROFILE") or self.home_dir + root = Path(base) / name / "config" + else: + base = os.environ.get("APPDATA") or os.environ.get("LOCALAPPDATA") or self.home_dir + root = Path(base) / name + elif os_name == "macos": + if resolved_scope == "system": + root = Path("/Library") / "Preferences" / name + else: + root = Path(self.home_dir) / "Library" / "Preferences" / name + else: + if resolved_scope == "system": + root = Path("/etc") / name + else: + xdg = os.environ.get("XDG_CONFIG_HOME") + if xdg: + root = Path(xdg) / name + else: + root = Path(self.home_dir) / ".config" / name + + if rel_path: + rel = rel_path.replace("\\", "/").lstrip("/") + root = root / rel + + if ensure: + target_dir = root.parent if root.suffix else root + target_dir.mkdir(parents=True, exist_ok=True) + + if resolved_scope == "system" and ensure: + try: + probe_dir = root.parent if root.suffix else root + if not os.access(str(probe_dir), os.W_OK): + fallback = self.get_config_path(rel_path=rel_path, app_name=app_name, scope="user", ensure=ensure) + return fallback + except Exception: + fallback = self.get_config_path(rel_path=rel_path, app_name=app_name, scope="user", ensure=ensure) + return fallback + + return str(root) + @staticmethod def get_os() -> str: name = platform.system() diff --git a/icons/0-circle-fill.svg b/icons/0-circle-fill.svg new file mode 100644 index 0000000..e17575c --- /dev/null +++ b/icons/0-circle-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/0-circle.svg b/icons/0-circle.svg new file mode 100644 index 0000000..b3b4ce3 --- /dev/null +++ b/icons/0-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/0-square-fill.svg b/icons/0-square-fill.svg new file mode 100644 index 0000000..4da9369 --- /dev/null +++ b/icons/0-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/0-square.svg b/icons/0-square.svg new file mode 100644 index 0000000..1c76aa4 --- /dev/null +++ b/icons/0-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/1-circle-fill.svg b/icons/1-circle-fill.svg new file mode 100644 index 0000000..7bb27ab --- /dev/null +++ b/icons/1-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/1-circle.svg b/icons/1-circle.svg new file mode 100644 index 0000000..6349aa1 --- /dev/null +++ b/icons/1-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/1-square-fill.svg b/icons/1-square-fill.svg new file mode 100644 index 0000000..f3aff4c --- /dev/null +++ b/icons/1-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/1-square.svg b/icons/1-square.svg new file mode 100644 index 0000000..218c013 --- /dev/null +++ b/icons/1-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/123.svg b/icons/123.svg new file mode 100644 index 0000000..47a886f --- /dev/null +++ b/icons/123.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/2-circle-fill.svg b/icons/2-circle-fill.svg new file mode 100644 index 0000000..19b5316 --- /dev/null +++ b/icons/2-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/2-circle.svg b/icons/2-circle.svg new file mode 100644 index 0000000..35c78c0 --- /dev/null +++ b/icons/2-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/2-square-fill.svg b/icons/2-square-fill.svg new file mode 100644 index 0000000..7d1af27 --- /dev/null +++ b/icons/2-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/2-square.svg b/icons/2-square.svg new file mode 100644 index 0000000..2b0787b --- /dev/null +++ b/icons/2-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/3-circle-fill.svg b/icons/3-circle-fill.svg new file mode 100644 index 0000000..5dccb79 --- /dev/null +++ b/icons/3-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/3-circle.svg b/icons/3-circle.svg new file mode 100644 index 0000000..34d70f2 --- /dev/null +++ b/icons/3-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/3-square-fill.svg b/icons/3-square-fill.svg new file mode 100644 index 0000000..97e0d8e --- /dev/null +++ b/icons/3-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/3-square.svg b/icons/3-square.svg new file mode 100644 index 0000000..9366c9b --- /dev/null +++ b/icons/3-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/4-circle-fill.svg b/icons/4-circle-fill.svg new file mode 100644 index 0000000..895307c --- /dev/null +++ b/icons/4-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/4-circle.svg b/icons/4-circle.svg new file mode 100644 index 0000000..7fab0bb --- /dev/null +++ b/icons/4-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/4-square-fill.svg b/icons/4-square-fill.svg new file mode 100644 index 0000000..56bccf9 --- /dev/null +++ b/icons/4-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/4-square.svg b/icons/4-square.svg new file mode 100644 index 0000000..478e909 --- /dev/null +++ b/icons/4-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/5-circle-fill.svg b/icons/5-circle-fill.svg new file mode 100644 index 0000000..576a087 --- /dev/null +++ b/icons/5-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/5-circle.svg b/icons/5-circle.svg new file mode 100644 index 0000000..b1e9060 --- /dev/null +++ b/icons/5-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/5-square-fill.svg b/icons/5-square-fill.svg new file mode 100644 index 0000000..d8e7940 --- /dev/null +++ b/icons/5-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/5-square.svg b/icons/5-square.svg new file mode 100644 index 0000000..a3d2609 --- /dev/null +++ b/icons/5-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/6-circle-fill.svg b/icons/6-circle-fill.svg new file mode 100644 index 0000000..a22914b --- /dev/null +++ b/icons/6-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/6-circle.svg b/icons/6-circle.svg new file mode 100644 index 0000000..f9be6c5 --- /dev/null +++ b/icons/6-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/6-square-fill.svg b/icons/6-square-fill.svg new file mode 100644 index 0000000..8ae7838 --- /dev/null +++ b/icons/6-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/6-square.svg b/icons/6-square.svg new file mode 100644 index 0000000..53a8ab4 --- /dev/null +++ b/icons/6-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/7-circle-fill.svg b/icons/7-circle-fill.svg new file mode 100644 index 0000000..7ff2cd4 --- /dev/null +++ b/icons/7-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/7-circle.svg b/icons/7-circle.svg new file mode 100644 index 0000000..56039ba --- /dev/null +++ b/icons/7-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/7-square-fill.svg b/icons/7-square-fill.svg new file mode 100644 index 0000000..c2cdc62 --- /dev/null +++ b/icons/7-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/7-square.svg b/icons/7-square.svg new file mode 100644 index 0000000..257f8d0 --- /dev/null +++ b/icons/7-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/8-circle-fill.svg b/icons/8-circle-fill.svg new file mode 100644 index 0000000..8964170 --- /dev/null +++ b/icons/8-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/8-circle.svg b/icons/8-circle.svg new file mode 100644 index 0000000..3a68a2d --- /dev/null +++ b/icons/8-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/8-square-fill.svg b/icons/8-square-fill.svg new file mode 100644 index 0000000..8485452 --- /dev/null +++ b/icons/8-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/8-square.svg b/icons/8-square.svg new file mode 100644 index 0000000..2ae6355 --- /dev/null +++ b/icons/8-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/9-circle-fill.svg b/icons/9-circle-fill.svg new file mode 100644 index 0000000..f251ce3 --- /dev/null +++ b/icons/9-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/9-circle.svg b/icons/9-circle.svg new file mode 100644 index 0000000..5ace6bd --- /dev/null +++ b/icons/9-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/9-square-fill.svg b/icons/9-square-fill.svg new file mode 100644 index 0000000..154faca --- /dev/null +++ b/icons/9-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/9-square.svg b/icons/9-square.svg new file mode 100644 index 0000000..98f9ac6 --- /dev/null +++ b/icons/9-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/airplane-engines-fill.svg b/icons/airplane-engines-fill.svg new file mode 100644 index 0000000..a79a83e --- /dev/null +++ b/icons/airplane-engines-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/airplane-engines.svg b/icons/airplane-engines.svg new file mode 100644 index 0000000..b49f241 --- /dev/null +++ b/icons/airplane-engines.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/airplane-fill.svg b/icons/airplane-fill.svg new file mode 100644 index 0000000..0d84afc --- /dev/null +++ b/icons/airplane-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/airplane.svg b/icons/airplane.svg new file mode 100644 index 0000000..90cea15 --- /dev/null +++ b/icons/airplane.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/alarm-fill.svg b/icons/alarm-fill.svg new file mode 100644 index 0000000..6d50427 --- /dev/null +++ b/icons/alarm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/alarm.svg b/icons/alarm.svg new file mode 100644 index 0000000..e45b01a --- /dev/null +++ b/icons/alarm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/alexa.svg b/icons/alexa.svg new file mode 100644 index 0000000..4263993 --- /dev/null +++ b/icons/alexa.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/align-bottom.svg b/icons/align-bottom.svg new file mode 100644 index 0000000..02a8534 --- /dev/null +++ b/icons/align-bottom.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/align-center.svg b/icons/align-center.svg new file mode 100644 index 0000000..9edc0dc --- /dev/null +++ b/icons/align-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/align-end.svg b/icons/align-end.svg new file mode 100644 index 0000000..a828259 --- /dev/null +++ b/icons/align-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/align-middle.svg b/icons/align-middle.svg new file mode 100644 index 0000000..552515e --- /dev/null +++ b/icons/align-middle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/align-start.svg b/icons/align-start.svg new file mode 100644 index 0000000..d3f1a53 --- /dev/null +++ b/icons/align-start.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/align-top.svg b/icons/align-top.svg new file mode 100644 index 0000000..fbae04d --- /dev/null +++ b/icons/align-top.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/alipay.svg b/icons/alipay.svg new file mode 100644 index 0000000..c8eaaae --- /dev/null +++ b/icons/alipay.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/alphabet-uppercase.svg b/icons/alphabet-uppercase.svg new file mode 100644 index 0000000..a7f55ff --- /dev/null +++ b/icons/alphabet-uppercase.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/alphabet.svg b/icons/alphabet.svg new file mode 100644 index 0000000..667a14a --- /dev/null +++ b/icons/alphabet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/alt.svg b/icons/alt.svg new file mode 100644 index 0000000..cd13668 --- /dev/null +++ b/icons/alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/amazon.svg b/icons/amazon.svg new file mode 100644 index 0000000..d2d9618 --- /dev/null +++ b/icons/amazon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/amd.svg b/icons/amd.svg new file mode 100644 index 0000000..35bc7e4 --- /dev/null +++ b/icons/amd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/android.svg b/icons/android.svg new file mode 100644 index 0000000..81f9d2b --- /dev/null +++ b/icons/android.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/android2.svg b/icons/android2.svg new file mode 100644 index 0000000..16d5215 --- /dev/null +++ b/icons/android2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/anthropic.svg b/icons/anthropic.svg new file mode 100644 index 0000000..4a2df0d --- /dev/null +++ b/icons/anthropic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/app-indicator.svg b/icons/app-indicator.svg new file mode 100644 index 0000000..b720a40 --- /dev/null +++ b/icons/app-indicator.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/app.svg b/icons/app.svg new file mode 100644 index 0000000..597cca3 --- /dev/null +++ b/icons/app.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/apple-music.svg b/icons/apple-music.svg new file mode 100644 index 0000000..28f3c58 --- /dev/null +++ b/icons/apple-music.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/apple.svg b/icons/apple.svg new file mode 100644 index 0000000..a2acef2 --- /dev/null +++ b/icons/apple.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/archive-fill.svg b/icons/archive-fill.svg new file mode 100644 index 0000000..85ea9e7 --- /dev/null +++ b/icons/archive-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/archive.svg b/icons/archive.svg new file mode 100644 index 0000000..06c03fe --- /dev/null +++ b/icons/archive.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-90deg-down.svg b/icons/arrow-90deg-down.svg new file mode 100644 index 0000000..e6ab5a3 --- /dev/null +++ b/icons/arrow-90deg-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-90deg-left.svg b/icons/arrow-90deg-left.svg new file mode 100644 index 0000000..e46a840 --- /dev/null +++ b/icons/arrow-90deg-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-90deg-right.svg b/icons/arrow-90deg-right.svg new file mode 100644 index 0000000..abd788c --- /dev/null +++ b/icons/arrow-90deg-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-90deg-up.svg b/icons/arrow-90deg-up.svg new file mode 100644 index 0000000..c1c8dec --- /dev/null +++ b/icons/arrow-90deg-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-bar-down.svg b/icons/arrow-bar-down.svg new file mode 100644 index 0000000..77e8a32 --- /dev/null +++ b/icons/arrow-bar-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-bar-left.svg b/icons/arrow-bar-left.svg new file mode 100644 index 0000000..7d9c376 --- /dev/null +++ b/icons/arrow-bar-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-bar-right.svg b/icons/arrow-bar-right.svg new file mode 100644 index 0000000..a1f8b5f --- /dev/null +++ b/icons/arrow-bar-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-bar-up.svg b/icons/arrow-bar-up.svg new file mode 100644 index 0000000..af49eee --- /dev/null +++ b/icons/arrow-bar-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-counterclockwise.svg b/icons/arrow-counterclockwise.svg new file mode 100644 index 0000000..2f1df60 --- /dev/null +++ b/icons/arrow-counterclockwise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/arrow-down-circle-fill.svg b/icons/arrow-down-circle-fill.svg new file mode 100644 index 0000000..4bee2fd --- /dev/null +++ b/icons/arrow-down-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-circle.svg b/icons/arrow-down-circle.svg new file mode 100644 index 0000000..ed25631 --- /dev/null +++ b/icons/arrow-down-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-left-circle-fill.svg b/icons/arrow-down-left-circle-fill.svg new file mode 100644 index 0000000..fd7d750 --- /dev/null +++ b/icons/arrow-down-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-left-circle.svg b/icons/arrow-down-left-circle.svg new file mode 100644 index 0000000..c2ea60a --- /dev/null +++ b/icons/arrow-down-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-left-square-fill.svg b/icons/arrow-down-left-square-fill.svg new file mode 100644 index 0000000..135695e --- /dev/null +++ b/icons/arrow-down-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-left-square.svg b/icons/arrow-down-left-square.svg new file mode 100644 index 0000000..5f292e4 --- /dev/null +++ b/icons/arrow-down-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-left.svg b/icons/arrow-down-left.svg new file mode 100644 index 0000000..b1b7ad1 --- /dev/null +++ b/icons/arrow-down-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-right-circle-fill.svg b/icons/arrow-down-right-circle-fill.svg new file mode 100644 index 0000000..2a19ac4 --- /dev/null +++ b/icons/arrow-down-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-right-circle.svg b/icons/arrow-down-right-circle.svg new file mode 100644 index 0000000..21dd81e --- /dev/null +++ b/icons/arrow-down-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-right-square-fill.svg b/icons/arrow-down-right-square-fill.svg new file mode 100644 index 0000000..40109aa --- /dev/null +++ b/icons/arrow-down-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-right-square.svg b/icons/arrow-down-right-square.svg new file mode 100644 index 0000000..e144965 --- /dev/null +++ b/icons/arrow-down-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-right.svg b/icons/arrow-down-right.svg new file mode 100644 index 0000000..0c4ca1a --- /dev/null +++ b/icons/arrow-down-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-short.svg b/icons/arrow-down-short.svg new file mode 100644 index 0000000..214c54d --- /dev/null +++ b/icons/arrow-down-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-square-fill.svg b/icons/arrow-down-square-fill.svg new file mode 100644 index 0000000..42dfed3 --- /dev/null +++ b/icons/arrow-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-square.svg b/icons/arrow-down-square.svg new file mode 100644 index 0000000..d33f1b8 --- /dev/null +++ b/icons/arrow-down-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down-up.svg b/icons/arrow-down-up.svg new file mode 100644 index 0000000..46578df --- /dev/null +++ b/icons/arrow-down-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-down.svg b/icons/arrow-down.svg new file mode 100644 index 0000000..fa3a1ff --- /dev/null +++ b/icons/arrow-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-circle-fill.svg b/icons/arrow-left-circle-fill.svg new file mode 100644 index 0000000..c550c55 --- /dev/null +++ b/icons/arrow-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-circle.svg b/icons/arrow-left-circle.svg new file mode 100644 index 0000000..4e4d71c --- /dev/null +++ b/icons/arrow-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-right.svg b/icons/arrow-left-right.svg new file mode 100644 index 0000000..25eba34 --- /dev/null +++ b/icons/arrow-left-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-short.svg b/icons/arrow-left-short.svg new file mode 100644 index 0000000..1adfaf2 --- /dev/null +++ b/icons/arrow-left-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-square-fill.svg b/icons/arrow-left-square-fill.svg new file mode 100644 index 0000000..d883005 --- /dev/null +++ b/icons/arrow-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left-square.svg b/icons/arrow-left-square.svg new file mode 100644 index 0000000..a0df705 --- /dev/null +++ b/icons/arrow-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-left.svg b/icons/arrow-left.svg new file mode 100644 index 0000000..3599fe3 --- /dev/null +++ b/icons/arrow-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-return-left.svg b/icons/arrow-return-left.svg new file mode 100644 index 0000000..b058ffb --- /dev/null +++ b/icons/arrow-return-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-return-right.svg b/icons/arrow-return-right.svg new file mode 100644 index 0000000..5ad5ff1 --- /dev/null +++ b/icons/arrow-return-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right-circle-fill.svg b/icons/arrow-right-circle-fill.svg new file mode 100644 index 0000000..cec2852 --- /dev/null +++ b/icons/arrow-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right-circle.svg b/icons/arrow-right-circle.svg new file mode 100644 index 0000000..7b3271a --- /dev/null +++ b/icons/arrow-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right-short.svg b/icons/arrow-right-short.svg new file mode 100644 index 0000000..c068ec0 --- /dev/null +++ b/icons/arrow-right-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right-square-fill.svg b/icons/arrow-right-square-fill.svg new file mode 100644 index 0000000..99e1ec4 --- /dev/null +++ b/icons/arrow-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right-square.svg b/icons/arrow-right-square.svg new file mode 100644 index 0000000..0eafc08 --- /dev/null +++ b/icons/arrow-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-right.svg b/icons/arrow-right.svg new file mode 100644 index 0000000..2a1a051 --- /dev/null +++ b/icons/arrow-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-through-heart-fill.svg b/icons/arrow-through-heart-fill.svg new file mode 100644 index 0000000..18d576c --- /dev/null +++ b/icons/arrow-through-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-through-heart.svg b/icons/arrow-through-heart.svg new file mode 100644 index 0000000..27fdbb7 --- /dev/null +++ b/icons/arrow-through-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-circle-fill.svg b/icons/arrow-up-circle-fill.svg new file mode 100644 index 0000000..833888d --- /dev/null +++ b/icons/arrow-up-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-circle.svg b/icons/arrow-up-circle.svg new file mode 100644 index 0000000..9aef366 --- /dev/null +++ b/icons/arrow-up-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-left-circle-fill.svg b/icons/arrow-up-left-circle-fill.svg new file mode 100644 index 0000000..b5065a3 --- /dev/null +++ b/icons/arrow-up-left-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-left-circle.svg b/icons/arrow-up-left-circle.svg new file mode 100644 index 0000000..dd0fdfa --- /dev/null +++ b/icons/arrow-up-left-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-left-square-fill.svg b/icons/arrow-up-left-square-fill.svg new file mode 100644 index 0000000..75f471c --- /dev/null +++ b/icons/arrow-up-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-left-square.svg b/icons/arrow-up-left-square.svg new file mode 100644 index 0000000..56fbb1e --- /dev/null +++ b/icons/arrow-up-left-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-left.svg b/icons/arrow-up-left.svg new file mode 100644 index 0000000..8b1704e --- /dev/null +++ b/icons/arrow-up-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-right-circle-fill.svg b/icons/arrow-up-right-circle-fill.svg new file mode 100644 index 0000000..7c19156 --- /dev/null +++ b/icons/arrow-up-right-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-right-circle.svg b/icons/arrow-up-right-circle.svg new file mode 100644 index 0000000..381ab1d --- /dev/null +++ b/icons/arrow-up-right-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-right-square-fill.svg b/icons/arrow-up-right-square-fill.svg new file mode 100644 index 0000000..a6fc9ae --- /dev/null +++ b/icons/arrow-up-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-right-square.svg b/icons/arrow-up-right-square.svg new file mode 100644 index 0000000..c54d232 --- /dev/null +++ b/icons/arrow-up-right-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-right.svg b/icons/arrow-up-right.svg new file mode 100644 index 0000000..4550452 --- /dev/null +++ b/icons/arrow-up-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-short.svg b/icons/arrow-up-short.svg new file mode 100644 index 0000000..09387cb --- /dev/null +++ b/icons/arrow-up-short.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-square-fill.svg b/icons/arrow-up-square-fill.svg new file mode 100644 index 0000000..5cad3c6 --- /dev/null +++ b/icons/arrow-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up-square.svg b/icons/arrow-up-square.svg new file mode 100644 index 0000000..0329da5 --- /dev/null +++ b/icons/arrow-up-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrow-up.svg b/icons/arrow-up.svg new file mode 100644 index 0000000..20033f9 --- /dev/null +++ b/icons/arrow-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-angle-contract.svg b/icons/arrows-angle-contract.svg new file mode 100644 index 0000000..7828def --- /dev/null +++ b/icons/arrows-angle-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-angle-expand.svg b/icons/arrows-angle-expand.svg new file mode 100644 index 0000000..aae25f4 --- /dev/null +++ b/icons/arrows-angle-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-collapse-vertical.svg b/icons/arrows-collapse-vertical.svg new file mode 100644 index 0000000..5da861f --- /dev/null +++ b/icons/arrows-collapse-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-collapse.svg b/icons/arrows-collapse.svg new file mode 100644 index 0000000..a4b7c64 --- /dev/null +++ b/icons/arrows-collapse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-expand-vertical.svg b/icons/arrows-expand-vertical.svg new file mode 100644 index 0000000..13b8db2 --- /dev/null +++ b/icons/arrows-expand-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-expand.svg b/icons/arrows-expand.svg new file mode 100644 index 0000000..7ee3c4a --- /dev/null +++ b/icons/arrows-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-fullscreen.svg b/icons/arrows-fullscreen.svg new file mode 100644 index 0000000..04b08df --- /dev/null +++ b/icons/arrows-fullscreen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-move.svg b/icons/arrows-move.svg new file mode 100644 index 0000000..3783f04 --- /dev/null +++ b/icons/arrows-move.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows-vertical.svg b/icons/arrows-vertical.svg new file mode 100644 index 0000000..6c3386a --- /dev/null +++ b/icons/arrows-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/arrows.svg b/icons/arrows.svg new file mode 100644 index 0000000..12e5649 --- /dev/null +++ b/icons/arrows.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/aspect-ratio-fill.svg b/icons/aspect-ratio-fill.svg new file mode 100644 index 0000000..47c33a7 --- /dev/null +++ b/icons/aspect-ratio-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/aspect-ratio.svg b/icons/aspect-ratio.svg new file mode 100644 index 0000000..8cb8987 --- /dev/null +++ b/icons/aspect-ratio.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/asterisk.svg b/icons/asterisk.svg new file mode 100644 index 0000000..408c80a --- /dev/null +++ b/icons/asterisk.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/at.svg b/icons/at.svg new file mode 100644 index 0000000..73d8596 --- /dev/null +++ b/icons/at.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/award-fill.svg b/icons/award-fill.svg new file mode 100644 index 0000000..7c484a6 --- /dev/null +++ b/icons/award-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/award.svg b/icons/award.svg new file mode 100644 index 0000000..f24db7b --- /dev/null +++ b/icons/award.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/back.svg b/icons/back.svg new file mode 100644 index 0000000..78333a7 --- /dev/null +++ b/icons/back.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/backpack-fill.svg b/icons/backpack-fill.svg new file mode 100644 index 0000000..e002e85 --- /dev/null +++ b/icons/backpack-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack.svg b/icons/backpack.svg new file mode 100644 index 0000000..377011a --- /dev/null +++ b/icons/backpack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack2-fill.svg b/icons/backpack2-fill.svg new file mode 100644 index 0000000..f97c549 --- /dev/null +++ b/icons/backpack2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack2.svg b/icons/backpack2.svg new file mode 100644 index 0000000..51ca845 --- /dev/null +++ b/icons/backpack2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/backpack3-fill.svg b/icons/backpack3-fill.svg new file mode 100644 index 0000000..8eead8d --- /dev/null +++ b/icons/backpack3-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack3.svg b/icons/backpack3.svg new file mode 100644 index 0000000..7debe2d --- /dev/null +++ b/icons/backpack3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack4-fill.svg b/icons/backpack4-fill.svg new file mode 100644 index 0000000..e847313 --- /dev/null +++ b/icons/backpack4-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backpack4.svg b/icons/backpack4.svg new file mode 100644 index 0000000..355923f --- /dev/null +++ b/icons/backpack4.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backspace-fill.svg b/icons/backspace-fill.svg new file mode 100644 index 0000000..fe14f28 --- /dev/null +++ b/icons/backspace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/backspace-reverse-fill.svg b/icons/backspace-reverse-fill.svg new file mode 100644 index 0000000..bdfaf30 --- /dev/null +++ b/icons/backspace-reverse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/backspace-reverse.svg b/icons/backspace-reverse.svg new file mode 100644 index 0000000..7745329 --- /dev/null +++ b/icons/backspace-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/backspace.svg b/icons/backspace.svg new file mode 100644 index 0000000..987aaa1 --- /dev/null +++ b/icons/backspace.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-3d-fill.svg b/icons/badge-3d-fill.svg new file mode 100644 index 0000000..bdf92e9 --- /dev/null +++ b/icons/badge-3d-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-3d.svg b/icons/badge-3d.svg new file mode 100644 index 0000000..cfeec16 --- /dev/null +++ b/icons/badge-3d.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-4k-fill.svg b/icons/badge-4k-fill.svg new file mode 100644 index 0000000..920101b --- /dev/null +++ b/icons/badge-4k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-4k.svg b/icons/badge-4k.svg new file mode 100644 index 0000000..35d76a8 --- /dev/null +++ b/icons/badge-4k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-8k-fill.svg b/icons/badge-8k-fill.svg new file mode 100644 index 0000000..0e06541 --- /dev/null +++ b/icons/badge-8k-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-8k.svg b/icons/badge-8k.svg new file mode 100644 index 0000000..63798a3 --- /dev/null +++ b/icons/badge-8k.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-ad-fill.svg b/icons/badge-ad-fill.svg new file mode 100644 index 0000000..34113ed --- /dev/null +++ b/icons/badge-ad-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-ad.svg b/icons/badge-ad.svg new file mode 100644 index 0000000..0cf2533 --- /dev/null +++ b/icons/badge-ad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-ar-fill.svg b/icons/badge-ar-fill.svg new file mode 100644 index 0000000..3837112 --- /dev/null +++ b/icons/badge-ar-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-ar.svg b/icons/badge-ar.svg new file mode 100644 index 0000000..c034497 --- /dev/null +++ b/icons/badge-ar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-cc-fill.svg b/icons/badge-cc-fill.svg new file mode 100644 index 0000000..4676e2a --- /dev/null +++ b/icons/badge-cc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/badge-cc.svg b/icons/badge-cc.svg new file mode 100644 index 0000000..35459b9 --- /dev/null +++ b/icons/badge-cc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-hd-fill.svg b/icons/badge-hd-fill.svg new file mode 100644 index 0000000..ef2773e --- /dev/null +++ b/icons/badge-hd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-hd.svg b/icons/badge-hd.svg new file mode 100644 index 0000000..3fb7c77 --- /dev/null +++ b/icons/badge-hd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-sd-fill.svg b/icons/badge-sd-fill.svg new file mode 100644 index 0000000..f1fda89 --- /dev/null +++ b/icons/badge-sd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-sd.svg b/icons/badge-sd.svg new file mode 100644 index 0000000..3993e40 --- /dev/null +++ b/icons/badge-sd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/badge-tm-fill.svg b/icons/badge-tm-fill.svg new file mode 100644 index 0000000..d9bbd65 --- /dev/null +++ b/icons/badge-tm-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/badge-tm.svg b/icons/badge-tm.svg new file mode 100644 index 0000000..5c0b6d8 --- /dev/null +++ b/icons/badge-tm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-vo-fill.svg b/icons/badge-vo-fill.svg new file mode 100644 index 0000000..90be502 --- /dev/null +++ b/icons/badge-vo-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-vo.svg b/icons/badge-vo.svg new file mode 100644 index 0000000..5082ed7 --- /dev/null +++ b/icons/badge-vo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-vr-fill.svg b/icons/badge-vr-fill.svg new file mode 100644 index 0000000..edae16f --- /dev/null +++ b/icons/badge-vr-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-vr.svg b/icons/badge-vr.svg new file mode 100644 index 0000000..814e572 --- /dev/null +++ b/icons/badge-vr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/badge-wc-fill.svg b/icons/badge-wc-fill.svg new file mode 100644 index 0000000..83b8367 --- /dev/null +++ b/icons/badge-wc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/badge-wc.svg b/icons/badge-wc.svg new file mode 100644 index 0000000..7b16cf3 --- /dev/null +++ b/icons/badge-wc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bag-check-fill.svg b/icons/bag-check-fill.svg new file mode 100644 index 0000000..e09113e --- /dev/null +++ b/icons/bag-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-check.svg b/icons/bag-check.svg new file mode 100644 index 0000000..7f031c6 --- /dev/null +++ b/icons/bag-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bag-dash-fill.svg b/icons/bag-dash-fill.svg new file mode 100644 index 0000000..118994b --- /dev/null +++ b/icons/bag-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-dash.svg b/icons/bag-dash.svg new file mode 100644 index 0000000..c857b82 --- /dev/null +++ b/icons/bag-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bag-fill.svg b/icons/bag-fill.svg new file mode 100644 index 0000000..04215d2 --- /dev/null +++ b/icons/bag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-heart-fill.svg b/icons/bag-heart-fill.svg new file mode 100644 index 0000000..ef00bbf --- /dev/null +++ b/icons/bag-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-heart.svg b/icons/bag-heart.svg new file mode 100644 index 0000000..3037e6d --- /dev/null +++ b/icons/bag-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-plus-fill.svg b/icons/bag-plus-fill.svg new file mode 100644 index 0000000..b438dae --- /dev/null +++ b/icons/bag-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-plus.svg b/icons/bag-plus.svg new file mode 100644 index 0000000..545950b --- /dev/null +++ b/icons/bag-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bag-x-fill.svg b/icons/bag-x-fill.svg new file mode 100644 index 0000000..07eea18 --- /dev/null +++ b/icons/bag-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bag-x.svg b/icons/bag-x.svg new file mode 100644 index 0000000..1a2436d --- /dev/null +++ b/icons/bag-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bag.svg b/icons/bag.svg new file mode 100644 index 0000000..8e7537a --- /dev/null +++ b/icons/bag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/balloon-fill.svg b/icons/balloon-fill.svg new file mode 100644 index 0000000..c8e82ed --- /dev/null +++ b/icons/balloon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/balloon-heart-fill.svg b/icons/balloon-heart-fill.svg new file mode 100644 index 0000000..9edb3d7 --- /dev/null +++ b/icons/balloon-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/balloon-heart.svg b/icons/balloon-heart.svg new file mode 100644 index 0000000..af91c68 --- /dev/null +++ b/icons/balloon-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/balloon.svg b/icons/balloon.svg new file mode 100644 index 0000000..79c6413 --- /dev/null +++ b/icons/balloon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ban-fill.svg b/icons/ban-fill.svg new file mode 100644 index 0000000..f7435bd --- /dev/null +++ b/icons/ban-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ban.svg b/icons/ban.svg new file mode 100644 index 0000000..87514d9 --- /dev/null +++ b/icons/ban.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bandaid-fill.svg b/icons/bandaid-fill.svg new file mode 100644 index 0000000..df13e1f --- /dev/null +++ b/icons/bandaid-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bandaid.svg b/icons/bandaid.svg new file mode 100644 index 0000000..77f805e --- /dev/null +++ b/icons/bandaid.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bank.svg b/icons/bank.svg new file mode 100644 index 0000000..c368920 --- /dev/null +++ b/icons/bank.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bank2.svg b/icons/bank2.svg new file mode 100644 index 0000000..94ab825 --- /dev/null +++ b/icons/bank2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bar-chart-fill.svg b/icons/bar-chart-fill.svg new file mode 100644 index 0000000..a841929 --- /dev/null +++ b/icons/bar-chart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bar-chart-line-fill.svg b/icons/bar-chart-line-fill.svg new file mode 100644 index 0000000..37efe41 --- /dev/null +++ b/icons/bar-chart-line-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bar-chart-line.svg b/icons/bar-chart-line.svg new file mode 100644 index 0000000..ee4a972 --- /dev/null +++ b/icons/bar-chart-line.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bar-chart-steps.svg b/icons/bar-chart-steps.svg new file mode 100644 index 0000000..654aa0d --- /dev/null +++ b/icons/bar-chart-steps.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bar-chart.svg b/icons/bar-chart.svg new file mode 100644 index 0000000..f4f8fda --- /dev/null +++ b/icons/bar-chart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/basket-fill.svg b/icons/basket-fill.svg new file mode 100644 index 0000000..120ddf3 --- /dev/null +++ b/icons/basket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/basket.svg b/icons/basket.svg new file mode 100644 index 0000000..db15a99 --- /dev/null +++ b/icons/basket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/basket2-fill.svg b/icons/basket2-fill.svg new file mode 100644 index 0000000..7620f97 --- /dev/null +++ b/icons/basket2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/basket2.svg b/icons/basket2.svg new file mode 100644 index 0000000..4a511b3 --- /dev/null +++ b/icons/basket2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/basket3-fill.svg b/icons/basket3-fill.svg new file mode 100644 index 0000000..3d127bf --- /dev/null +++ b/icons/basket3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/basket3.svg b/icons/basket3.svg new file mode 100644 index 0000000..43faea3 --- /dev/null +++ b/icons/basket3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/battery-charging.svg b/icons/battery-charging.svg new file mode 100644 index 0000000..c124009 --- /dev/null +++ b/icons/battery-charging.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/battery-full.svg b/icons/battery-full.svg new file mode 100644 index 0000000..33dbca9 --- /dev/null +++ b/icons/battery-full.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/battery-half.svg b/icons/battery-half.svg new file mode 100644 index 0000000..2299b6c --- /dev/null +++ b/icons/battery-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/battery-low.svg b/icons/battery-low.svg new file mode 100644 index 0000000..a550a39 --- /dev/null +++ b/icons/battery-low.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/battery.svg b/icons/battery.svg new file mode 100644 index 0000000..db8b666 --- /dev/null +++ b/icons/battery.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/beaker-fill.svg b/icons/beaker-fill.svg new file mode 100644 index 0000000..87f1e8a --- /dev/null +++ b/icons/beaker-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/beaker.svg b/icons/beaker.svg new file mode 100644 index 0000000..b9458de --- /dev/null +++ b/icons/beaker.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/behance.svg b/icons/behance.svg new file mode 100644 index 0000000..a5fe873 --- /dev/null +++ b/icons/behance.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bell-fill.svg b/icons/bell-fill.svg new file mode 100644 index 0000000..d8ed0a1 --- /dev/null +++ b/icons/bell-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bell-slash-fill.svg b/icons/bell-slash-fill.svg new file mode 100644 index 0000000..b0c21ea --- /dev/null +++ b/icons/bell-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bell-slash.svg b/icons/bell-slash.svg new file mode 100644 index 0000000..4f9a4f6 --- /dev/null +++ b/icons/bell-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bell.svg b/icons/bell.svg new file mode 100644 index 0000000..9645d67 --- /dev/null +++ b/icons/bell.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bezier.svg b/icons/bezier.svg new file mode 100644 index 0000000..c2f2fad --- /dev/null +++ b/icons/bezier.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bezier2.svg b/icons/bezier2.svg new file mode 100644 index 0000000..fe55353 --- /dev/null +++ b/icons/bezier2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bicycle.svg b/icons/bicycle.svg new file mode 100644 index 0000000..2a1794d --- /dev/null +++ b/icons/bicycle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bing.svg b/icons/bing.svg new file mode 100644 index 0000000..a6f4e57 --- /dev/null +++ b/icons/bing.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/binoculars-fill.svg b/icons/binoculars-fill.svg new file mode 100644 index 0000000..a4cd4b6 --- /dev/null +++ b/icons/binoculars-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/binoculars.svg b/icons/binoculars.svg new file mode 100644 index 0000000..aea3ce6 --- /dev/null +++ b/icons/binoculars.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/blockquote-left.svg b/icons/blockquote-left.svg new file mode 100644 index 0000000..2b035d7 --- /dev/null +++ b/icons/blockquote-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/blockquote-right.svg b/icons/blockquote-right.svg new file mode 100644 index 0000000..b7ba554 --- /dev/null +++ b/icons/blockquote-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bluesky.svg b/icons/bluesky.svg new file mode 100644 index 0000000..ecae00f --- /dev/null +++ b/icons/bluesky.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bluetooth.svg b/icons/bluetooth.svg new file mode 100644 index 0000000..d72a384 --- /dev/null +++ b/icons/bluetooth.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/body-text.svg b/icons/body-text.svg new file mode 100644 index 0000000..c2e9072 --- /dev/null +++ b/icons/body-text.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/book-fill.svg b/icons/book-fill.svg new file mode 100644 index 0000000..5ceac95 --- /dev/null +++ b/icons/book-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/book-half.svg b/icons/book-half.svg new file mode 100644 index 0000000..f5fc89b --- /dev/null +++ b/icons/book-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/book.svg b/icons/book.svg new file mode 100644 index 0000000..e8ad0a4 --- /dev/null +++ b/icons/book.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-check-fill.svg b/icons/bookmark-check-fill.svg new file mode 100644 index 0000000..b206230 --- /dev/null +++ b/icons/bookmark-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-check.svg b/icons/bookmark-check.svg new file mode 100644 index 0000000..15dc47a --- /dev/null +++ b/icons/bookmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark-dash-fill.svg b/icons/bookmark-dash-fill.svg new file mode 100644 index 0000000..c7cee4d --- /dev/null +++ b/icons/bookmark-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-dash.svg b/icons/bookmark-dash.svg new file mode 100644 index 0000000..34d50d7 --- /dev/null +++ b/icons/bookmark-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark-fill.svg b/icons/bookmark-fill.svg new file mode 100644 index 0000000..ff293b7 --- /dev/null +++ b/icons/bookmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-heart-fill.svg b/icons/bookmark-heart-fill.svg new file mode 100644 index 0000000..e4e0f36 --- /dev/null +++ b/icons/bookmark-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-heart.svg b/icons/bookmark-heart.svg new file mode 100644 index 0000000..d8a0546 --- /dev/null +++ b/icons/bookmark-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark-plus-fill.svg b/icons/bookmark-plus-fill.svg new file mode 100644 index 0000000..286983f --- /dev/null +++ b/icons/bookmark-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-plus.svg b/icons/bookmark-plus.svg new file mode 100644 index 0000000..5102423 --- /dev/null +++ b/icons/bookmark-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark-star-fill.svg b/icons/bookmark-star-fill.svg new file mode 100644 index 0000000..c6469d6 --- /dev/null +++ b/icons/bookmark-star-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-star.svg b/icons/bookmark-star.svg new file mode 100644 index 0000000..4c53fdd --- /dev/null +++ b/icons/bookmark-star.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark-x-fill.svg b/icons/bookmark-x-fill.svg new file mode 100644 index 0000000..3b7c86c --- /dev/null +++ b/icons/bookmark-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmark-x.svg b/icons/bookmark-x.svg new file mode 100644 index 0000000..edb6cc2 --- /dev/null +++ b/icons/bookmark-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmark.svg b/icons/bookmark.svg new file mode 100644 index 0000000..3fb2287 --- /dev/null +++ b/icons/bookmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bookmarks-fill.svg b/icons/bookmarks-fill.svg new file mode 100644 index 0000000..3ee1ebf --- /dev/null +++ b/icons/bookmarks-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookmarks.svg b/icons/bookmarks.svg new file mode 100644 index 0000000..3db2699 --- /dev/null +++ b/icons/bookmarks.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bookshelf.svg b/icons/bookshelf.svg new file mode 100644 index 0000000..027a182 --- /dev/null +++ b/icons/bookshelf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/boombox-fill.svg b/icons/boombox-fill.svg new file mode 100644 index 0000000..c22f41f --- /dev/null +++ b/icons/boombox-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/boombox.svg b/icons/boombox.svg new file mode 100644 index 0000000..9341cae --- /dev/null +++ b/icons/boombox.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/bootstrap-fill.svg b/icons/bootstrap-fill.svg new file mode 100644 index 0000000..117a3f3 --- /dev/null +++ b/icons/bootstrap-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bootstrap-icons.css b/icons/bootstrap-icons.css new file mode 100644 index 0000000..5f7ae28 --- /dev/null +++ b/icons/bootstrap-icons.css @@ -0,0 +1,2106 @@ +/*! + * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: url("./fonts/bootstrap-icons.woff2?e34853135f9e39acf64315236852cd5a") format("woff2"), +url("./fonts/bootstrap-icons.woff?e34853135f9e39acf64315236852cd5a") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } +.bi-bluesky::before { content: "\f7f9"; } +.bi-tux::before { content: "\f904"; } +.bi-beaker-fill::before { content: "\f905"; } +.bi-beaker::before { content: "\f906"; } +.bi-flask-fill::before { content: "\f907"; } +.bi-flask-florence-fill::before { content: "\f908"; } +.bi-flask-florence::before { content: "\f909"; } +.bi-flask::before { content: "\f90a"; } +.bi-leaf-fill::before { content: "\f90b"; } +.bi-leaf::before { content: "\f90c"; } +.bi-measuring-cup-fill::before { content: "\f90d"; } +.bi-measuring-cup::before { content: "\f90e"; } +.bi-unlock2-fill::before { content: "\f90f"; } +.bi-unlock2::before { content: "\f910"; } +.bi-battery-low::before { content: "\f911"; } +.bi-anthropic::before { content: "\f912"; } +.bi-apple-music::before { content: "\f913"; } +.bi-claude::before { content: "\f914"; } +.bi-openai::before { content: "\f915"; } +.bi-perplexity::before { content: "\f916"; } +.bi-css::before { content: "\f917"; } +.bi-javascript::before { content: "\f918"; } +.bi-typescript::before { content: "\f919"; } +.bi-fork-knife::before { content: "\f91a"; } +.bi-globe-americas-fill::before { content: "\f91b"; } +.bi-globe-asia-australia-fill::before { content: "\f91c"; } +.bi-globe-central-south-asia-fill::before { content: "\f91d"; } +.bi-globe-europe-africa-fill::before { content: "\f91e"; } diff --git a/icons/bootstrap-icons.json b/icons/bootstrap-icons.json new file mode 100644 index 0000000..9d8873b --- /dev/null +++ b/icons/bootstrap-icons.json @@ -0,0 +1,2080 @@ +{ + "123": 63103, + "alarm-fill": 61697, + "alarm": 61698, + "align-bottom": 61699, + "align-center": 61700, + "align-end": 61701, + "align-middle": 61702, + "align-start": 61703, + "align-top": 61704, + "alt": 61705, + "app-indicator": 61706, + "app": 61707, + "archive-fill": 61708, + "archive": 61709, + "arrow-90deg-down": 61710, + "arrow-90deg-left": 61711, + "arrow-90deg-right": 61712, + "arrow-90deg-up": 61713, + "arrow-bar-down": 61714, + "arrow-bar-left": 61715, + "arrow-bar-right": 61716, + "arrow-bar-up": 61717, + "arrow-clockwise": 61718, + "arrow-counterclockwise": 61719, + "arrow-down-circle-fill": 61720, + "arrow-down-circle": 61721, + "arrow-down-left-circle-fill": 61722, + "arrow-down-left-circle": 61723, + "arrow-down-left-square-fill": 61724, + "arrow-down-left-square": 61725, + "arrow-down-left": 61726, + "arrow-down-right-circle-fill": 61727, + "arrow-down-right-circle": 61728, + "arrow-down-right-square-fill": 61729, + "arrow-down-right-square": 61730, + "arrow-down-right": 61731, + "arrow-down-short": 61732, + "arrow-down-square-fill": 61733, + "arrow-down-square": 61734, + "arrow-down-up": 61735, + "arrow-down": 61736, + "arrow-left-circle-fill": 61737, + "arrow-left-circle": 61738, + "arrow-left-right": 61739, + "arrow-left-short": 61740, + "arrow-left-square-fill": 61741, + "arrow-left-square": 61742, + "arrow-left": 61743, + "arrow-repeat": 61744, + "arrow-return-left": 61745, + "arrow-return-right": 61746, + "arrow-right-circle-fill": 61747, + "arrow-right-circle": 61748, + "arrow-right-short": 61749, + "arrow-right-square-fill": 61750, + "arrow-right-square": 61751, + "arrow-right": 61752, + "arrow-up-circle-fill": 61753, + "arrow-up-circle": 61754, + "arrow-up-left-circle-fill": 61755, + "arrow-up-left-circle": 61756, + "arrow-up-left-square-fill": 61757, + "arrow-up-left-square": 61758, + "arrow-up-left": 61759, + "arrow-up-right-circle-fill": 61760, + "arrow-up-right-circle": 61761, + "arrow-up-right-square-fill": 61762, + "arrow-up-right-square": 61763, + "arrow-up-right": 61764, + "arrow-up-short": 61765, + "arrow-up-square-fill": 61766, + "arrow-up-square": 61767, + "arrow-up": 61768, + "arrows-angle-contract": 61769, + "arrows-angle-expand": 61770, + "arrows-collapse": 61771, + "arrows-expand": 61772, + "arrows-fullscreen": 61773, + "arrows-move": 61774, + "aspect-ratio-fill": 61775, + "aspect-ratio": 61776, + "asterisk": 61777, + "at": 61778, + "award-fill": 61779, + "award": 61780, + "back": 61781, + "backspace-fill": 61782, + "backspace-reverse-fill": 61783, + "backspace-reverse": 61784, + "backspace": 61785, + "badge-3d-fill": 61786, + "badge-3d": 61787, + "badge-4k-fill": 61788, + "badge-4k": 61789, + "badge-8k-fill": 61790, + "badge-8k": 61791, + "badge-ad-fill": 61792, + "badge-ad": 61793, + "badge-ar-fill": 61794, + "badge-ar": 61795, + "badge-cc-fill": 61796, + "badge-cc": 61797, + "badge-hd-fill": 61798, + "badge-hd": 61799, + "badge-tm-fill": 61800, + "badge-tm": 61801, + "badge-vo-fill": 61802, + "badge-vo": 61803, + "badge-vr-fill": 61804, + "badge-vr": 61805, + "badge-wc-fill": 61806, + "badge-wc": 61807, + "bag-check-fill": 61808, + "bag-check": 61809, + "bag-dash-fill": 61810, + "bag-dash": 61811, + "bag-fill": 61812, + "bag-plus-fill": 61813, + "bag-plus": 61814, + "bag-x-fill": 61815, + "bag-x": 61816, + "bag": 61817, + "bar-chart-fill": 61818, + "bar-chart-line-fill": 61819, + "bar-chart-line": 61820, + "bar-chart-steps": 61821, + "bar-chart": 61822, + "basket-fill": 61823, + "basket": 61824, + "basket2-fill": 61825, + "basket2": 61826, + "basket3-fill": 61827, + "basket3": 61828, + "battery-charging": 61829, + "battery-full": 61830, + "battery-half": 61831, + "battery": 61832, + "bell-fill": 61833, + "bell": 61834, + "bezier": 61835, + "bezier2": 61836, + "bicycle": 61837, + "binoculars-fill": 61838, + "binoculars": 61839, + "blockquote-left": 61840, + "blockquote-right": 61841, + "book-fill": 61842, + "book-half": 61843, + "book": 61844, + "bookmark-check-fill": 61845, + "bookmark-check": 61846, + "bookmark-dash-fill": 61847, + "bookmark-dash": 61848, + "bookmark-fill": 61849, + "bookmark-heart-fill": 61850, + "bookmark-heart": 61851, + "bookmark-plus-fill": 61852, + "bookmark-plus": 61853, + "bookmark-star-fill": 61854, + "bookmark-star": 61855, + "bookmark-x-fill": 61856, + "bookmark-x": 61857, + "bookmark": 61858, + "bookmarks-fill": 61859, + "bookmarks": 61860, + "bookshelf": 61861, + "bootstrap-fill": 61862, + "bootstrap-reboot": 61863, + "bootstrap": 61864, + "border-all": 61865, + "border-bottom": 61866, + "border-center": 61867, + "border-inner": 61868, + "border-left": 61869, + "border-middle": 61870, + "border-outer": 61871, + "border-right": 61872, + "border-style": 61873, + "border-top": 61874, + "border-width": 61875, + "border": 61876, + "bounding-box-circles": 61877, + "bounding-box": 61878, + "box-arrow-down-left": 61879, + "box-arrow-down-right": 61880, + "box-arrow-down": 61881, + "box-arrow-in-down-left": 61882, + "box-arrow-in-down-right": 61883, + "box-arrow-in-down": 61884, + "box-arrow-in-left": 61885, + "box-arrow-in-right": 61886, + "box-arrow-in-up-left": 61887, + "box-arrow-in-up-right": 61888, + "box-arrow-in-up": 61889, + "box-arrow-left": 61890, + "box-arrow-right": 61891, + "box-arrow-up-left": 61892, + "box-arrow-up-right": 61893, + "box-arrow-up": 61894, + "box-seam": 61895, + "box": 61896, + "braces": 61897, + "bricks": 61898, + "briefcase-fill": 61899, + "briefcase": 61900, + "brightness-alt-high-fill": 61901, + "brightness-alt-high": 61902, + "brightness-alt-low-fill": 61903, + "brightness-alt-low": 61904, + "brightness-high-fill": 61905, + "brightness-high": 61906, + "brightness-low-fill": 61907, + "brightness-low": 61908, + "broadcast-pin": 61909, + "broadcast": 61910, + "brush-fill": 61911, + "brush": 61912, + "bucket-fill": 61913, + "bucket": 61914, + "bug-fill": 61915, + "bug": 61916, + "building": 61917, + "bullseye": 61918, + "calculator-fill": 61919, + "calculator": 61920, + "calendar-check-fill": 61921, + "calendar-check": 61922, + "calendar-date-fill": 61923, + "calendar-date": 61924, + "calendar-day-fill": 61925, + "calendar-day": 61926, + "calendar-event-fill": 61927, + "calendar-event": 61928, + "calendar-fill": 61929, + "calendar-minus-fill": 61930, + "calendar-minus": 61931, + "calendar-month-fill": 61932, + "calendar-month": 61933, + "calendar-plus-fill": 61934, + "calendar-plus": 61935, + "calendar-range-fill": 61936, + "calendar-range": 61937, + "calendar-week-fill": 61938, + "calendar-week": 61939, + "calendar-x-fill": 61940, + "calendar-x": 61941, + "calendar": 61942, + "calendar2-check-fill": 61943, + "calendar2-check": 61944, + "calendar2-date-fill": 61945, + "calendar2-date": 61946, + "calendar2-day-fill": 61947, + "calendar2-day": 61948, + "calendar2-event-fill": 61949, + "calendar2-event": 61950, + "calendar2-fill": 61951, + "calendar2-minus-fill": 61952, + "calendar2-minus": 61953, + "calendar2-month-fill": 61954, + "calendar2-month": 61955, + "calendar2-plus-fill": 61956, + "calendar2-plus": 61957, + "calendar2-range-fill": 61958, + "calendar2-range": 61959, + "calendar2-week-fill": 61960, + "calendar2-week": 61961, + "calendar2-x-fill": 61962, + "calendar2-x": 61963, + "calendar2": 61964, + "calendar3-event-fill": 61965, + "calendar3-event": 61966, + "calendar3-fill": 61967, + "calendar3-range-fill": 61968, + "calendar3-range": 61969, + "calendar3-week-fill": 61970, + "calendar3-week": 61971, + "calendar3": 61972, + "calendar4-event": 61973, + "calendar4-range": 61974, + "calendar4-week": 61975, + "calendar4": 61976, + "camera-fill": 61977, + "camera-reels-fill": 61978, + "camera-reels": 61979, + "camera-video-fill": 61980, + "camera-video-off-fill": 61981, + "camera-video-off": 61982, + "camera-video": 61983, + "camera": 61984, + "camera2": 61985, + "capslock-fill": 61986, + "capslock": 61987, + "card-checklist": 61988, + "card-heading": 61989, + "card-image": 61990, + "card-list": 61991, + "card-text": 61992, + "caret-down-fill": 61993, + "caret-down-square-fill": 61994, + "caret-down-square": 61995, + "caret-down": 61996, + "caret-left-fill": 61997, + "caret-left-square-fill": 61998, + "caret-left-square": 61999, + "caret-left": 62000, + "caret-right-fill": 62001, + "caret-right-square-fill": 62002, + "caret-right-square": 62003, + "caret-right": 62004, + "caret-up-fill": 62005, + "caret-up-square-fill": 62006, + "caret-up-square": 62007, + "caret-up": 62008, + "cart-check-fill": 62009, + "cart-check": 62010, + "cart-dash-fill": 62011, + "cart-dash": 62012, + "cart-fill": 62013, + "cart-plus-fill": 62014, + "cart-plus": 62015, + "cart-x-fill": 62016, + "cart-x": 62017, + "cart": 62018, + "cart2": 62019, + "cart3": 62020, + "cart4": 62021, + "cash-stack": 62022, + "cash": 62023, + "cast": 62024, + "chat-dots-fill": 62025, + "chat-dots": 62026, + "chat-fill": 62027, + "chat-left-dots-fill": 62028, + "chat-left-dots": 62029, + "chat-left-fill": 62030, + "chat-left-quote-fill": 62031, + "chat-left-quote": 62032, + "chat-left-text-fill": 62033, + "chat-left-text": 62034, + "chat-left": 62035, + "chat-quote-fill": 62036, + "chat-quote": 62037, + "chat-right-dots-fill": 62038, + "chat-right-dots": 62039, + "chat-right-fill": 62040, + "chat-right-quote-fill": 62041, + "chat-right-quote": 62042, + "chat-right-text-fill": 62043, + "chat-right-text": 62044, + "chat-right": 62045, + "chat-square-dots-fill": 62046, + "chat-square-dots": 62047, + "chat-square-fill": 62048, + "chat-square-quote-fill": 62049, + "chat-square-quote": 62050, + "chat-square-text-fill": 62051, + "chat-square-text": 62052, + "chat-square": 62053, + "chat-text-fill": 62054, + "chat-text": 62055, + "chat": 62056, + "check-all": 62057, + "check-circle-fill": 62058, + "check-circle": 62059, + "check-square-fill": 62060, + "check-square": 62061, + "check": 62062, + "check2-all": 62063, + "check2-circle": 62064, + "check2-square": 62065, + "check2": 62066, + "chevron-bar-contract": 62067, + "chevron-bar-down": 62068, + "chevron-bar-expand": 62069, + "chevron-bar-left": 62070, + "chevron-bar-right": 62071, + "chevron-bar-up": 62072, + "chevron-compact-down": 62073, + "chevron-compact-left": 62074, + "chevron-compact-right": 62075, + "chevron-compact-up": 62076, + "chevron-contract": 62077, + "chevron-double-down": 62078, + "chevron-double-left": 62079, + "chevron-double-right": 62080, + "chevron-double-up": 62081, + "chevron-down": 62082, + "chevron-expand": 62083, + "chevron-left": 62084, + "chevron-right": 62085, + "chevron-up": 62086, + "circle-fill": 62087, + "circle-half": 62088, + "circle-square": 62089, + "circle": 62090, + "clipboard-check": 62091, + "clipboard-data": 62092, + "clipboard-minus": 62093, + "clipboard-plus": 62094, + "clipboard-x": 62095, + "clipboard": 62096, + "clock-fill": 62097, + "clock-history": 62098, + "clock": 62099, + "cloud-arrow-down-fill": 62100, + "cloud-arrow-down": 62101, + "cloud-arrow-up-fill": 62102, + "cloud-arrow-up": 62103, + "cloud-check-fill": 62104, + "cloud-check": 62105, + "cloud-download-fill": 62106, + "cloud-download": 62107, + "cloud-drizzle-fill": 62108, + "cloud-drizzle": 62109, + "cloud-fill": 62110, + "cloud-fog-fill": 62111, + "cloud-fog": 62112, + "cloud-fog2-fill": 62113, + "cloud-fog2": 62114, + "cloud-hail-fill": 62115, + "cloud-hail": 62116, + "cloud-haze-fill": 62118, + "cloud-haze": 62119, + "cloud-haze2-fill": 62120, + "cloud-lightning-fill": 62121, + "cloud-lightning-rain-fill": 62122, + "cloud-lightning-rain": 62123, + "cloud-lightning": 62124, + "cloud-minus-fill": 62125, + "cloud-minus": 62126, + "cloud-moon-fill": 62127, + "cloud-moon": 62128, + "cloud-plus-fill": 62129, + "cloud-plus": 62130, + "cloud-rain-fill": 62131, + "cloud-rain-heavy-fill": 62132, + "cloud-rain-heavy": 62133, + "cloud-rain": 62134, + "cloud-slash-fill": 62135, + "cloud-slash": 62136, + "cloud-sleet-fill": 62137, + "cloud-sleet": 62138, + "cloud-snow-fill": 62139, + "cloud-snow": 62140, + "cloud-sun-fill": 62141, + "cloud-sun": 62142, + "cloud-upload-fill": 62143, + "cloud-upload": 62144, + "cloud": 62145, + "clouds-fill": 62146, + "clouds": 62147, + "cloudy-fill": 62148, + "cloudy": 62149, + "code-slash": 62150, + "code-square": 62151, + "code": 62152, + "collection-fill": 62153, + "collection-play-fill": 62154, + "collection-play": 62155, + "collection": 62156, + "columns-gap": 62157, + "columns": 62158, + "command": 62159, + "compass-fill": 62160, + "compass": 62161, + "cone-striped": 62162, + "cone": 62163, + "controller": 62164, + "cpu-fill": 62165, + "cpu": 62166, + "credit-card-2-back-fill": 62167, + "credit-card-2-back": 62168, + "credit-card-2-front-fill": 62169, + "credit-card-2-front": 62170, + "credit-card-fill": 62171, + "credit-card": 62172, + "crop": 62173, + "cup-fill": 62174, + "cup-straw": 62175, + "cup": 62176, + "cursor-fill": 62177, + "cursor-text": 62178, + "cursor": 62179, + "dash-circle-dotted": 62180, + "dash-circle-fill": 62181, + "dash-circle": 62182, + "dash-square-dotted": 62183, + "dash-square-fill": 62184, + "dash-square": 62185, + "dash": 62186, + "diagram-2-fill": 62187, + "diagram-2": 62188, + "diagram-3-fill": 62189, + "diagram-3": 62190, + "diamond-fill": 62191, + "diamond-half": 62192, + "diamond": 62193, + "dice-1-fill": 62194, + "dice-1": 62195, + "dice-2-fill": 62196, + "dice-2": 62197, + "dice-3-fill": 62198, + "dice-3": 62199, + "dice-4-fill": 62200, + "dice-4": 62201, + "dice-5-fill": 62202, + "dice-5": 62203, + "dice-6-fill": 62204, + "dice-6": 62205, + "disc-fill": 62206, + "disc": 62207, + "discord": 62208, + "display-fill": 62209, + "display": 62210, + "distribute-horizontal": 62211, + "distribute-vertical": 62212, + "door-closed-fill": 62213, + "door-closed": 62214, + "door-open-fill": 62215, + "door-open": 62216, + "dot": 62217, + "download": 62218, + "droplet-fill": 62219, + "droplet-half": 62220, + "droplet": 62221, + "earbuds": 62222, + "easel-fill": 62223, + "easel": 62224, + "egg-fill": 62225, + "egg-fried": 62226, + "egg": 62227, + "eject-fill": 62228, + "eject": 62229, + "emoji-angry-fill": 62230, + "emoji-angry": 62231, + "emoji-dizzy-fill": 62232, + "emoji-dizzy": 62233, + "emoji-expressionless-fill": 62234, + "emoji-expressionless": 62235, + "emoji-frown-fill": 62236, + "emoji-frown": 62237, + "emoji-heart-eyes-fill": 62238, + "emoji-heart-eyes": 62239, + "emoji-laughing-fill": 62240, + "emoji-laughing": 62241, + "emoji-neutral-fill": 62242, + "emoji-neutral": 62243, + "emoji-smile-fill": 62244, + "emoji-smile-upside-down-fill": 62245, + "emoji-smile-upside-down": 62246, + "emoji-smile": 62247, + "emoji-sunglasses-fill": 62248, + "emoji-sunglasses": 62249, + "emoji-wink-fill": 62250, + "emoji-wink": 62251, + "envelope-fill": 62252, + "envelope-open-fill": 62253, + "envelope-open": 62254, + "envelope": 62255, + "eraser-fill": 62256, + "eraser": 62257, + "exclamation-circle-fill": 62258, + "exclamation-circle": 62259, + "exclamation-diamond-fill": 62260, + "exclamation-diamond": 62261, + "exclamation-octagon-fill": 62262, + "exclamation-octagon": 62263, + "exclamation-square-fill": 62264, + "exclamation-square": 62265, + "exclamation-triangle-fill": 62266, + "exclamation-triangle": 62267, + "exclamation": 62268, + "exclude": 62269, + "eye-fill": 62270, + "eye-slash-fill": 62271, + "eye-slash": 62272, + "eye": 62273, + "eyedropper": 62274, + "eyeglasses": 62275, + "facebook": 62276, + "file-arrow-down-fill": 62277, + "file-arrow-down": 62278, + "file-arrow-up-fill": 62279, + "file-arrow-up": 62280, + "file-bar-graph-fill": 62281, + "file-bar-graph": 62282, + "file-binary-fill": 62283, + "file-binary": 62284, + "file-break-fill": 62285, + "file-break": 62286, + "file-check-fill": 62287, + "file-check": 62288, + "file-code-fill": 62289, + "file-code": 62290, + "file-diff-fill": 62291, + "file-diff": 62292, + "file-earmark-arrow-down-fill": 62293, + "file-earmark-arrow-down": 62294, + "file-earmark-arrow-up-fill": 62295, + "file-earmark-arrow-up": 62296, + "file-earmark-bar-graph-fill": 62297, + "file-earmark-bar-graph": 62298, + "file-earmark-binary-fill": 62299, + "file-earmark-binary": 62300, + "file-earmark-break-fill": 62301, + "file-earmark-break": 62302, + "file-earmark-check-fill": 62303, + "file-earmark-check": 62304, + "file-earmark-code-fill": 62305, + "file-earmark-code": 62306, + "file-earmark-diff-fill": 62307, + "file-earmark-diff": 62308, + "file-earmark-easel-fill": 62309, + "file-earmark-easel": 62310, + "file-earmark-excel-fill": 62311, + "file-earmark-excel": 62312, + "file-earmark-fill": 62313, + "file-earmark-font-fill": 62314, + "file-earmark-font": 62315, + "file-earmark-image-fill": 62316, + "file-earmark-image": 62317, + "file-earmark-lock-fill": 62318, + "file-earmark-lock": 62319, + "file-earmark-lock2-fill": 62320, + "file-earmark-lock2": 62321, + "file-earmark-medical-fill": 62322, + "file-earmark-medical": 62323, + "file-earmark-minus-fill": 62324, + "file-earmark-minus": 62325, + "file-earmark-music-fill": 62326, + "file-earmark-music": 62327, + "file-earmark-person-fill": 62328, + "file-earmark-person": 62329, + "file-earmark-play-fill": 62330, + "file-earmark-play": 62331, + "file-earmark-plus-fill": 62332, + "file-earmark-plus": 62333, + "file-earmark-post-fill": 62334, + "file-earmark-post": 62335, + "file-earmark-ppt-fill": 62336, + "file-earmark-ppt": 62337, + "file-earmark-richtext-fill": 62338, + "file-earmark-richtext": 62339, + "file-earmark-ruled-fill": 62340, + "file-earmark-ruled": 62341, + "file-earmark-slides-fill": 62342, + "file-earmark-slides": 62343, + "file-earmark-spreadsheet-fill": 62344, + "file-earmark-spreadsheet": 62345, + "file-earmark-text-fill": 62346, + "file-earmark-text": 62347, + "file-earmark-word-fill": 62348, + "file-earmark-word": 62349, + "file-earmark-x-fill": 62350, + "file-earmark-x": 62351, + "file-earmark-zip-fill": 62352, + "file-earmark-zip": 62353, + "file-earmark": 62354, + "file-easel-fill": 62355, + "file-easel": 62356, + "file-excel-fill": 62357, + "file-excel": 62358, + "file-fill": 62359, + "file-font-fill": 62360, + "file-font": 62361, + "file-image-fill": 62362, + "file-image": 62363, + "file-lock-fill": 62364, + "file-lock": 62365, + "file-lock2-fill": 62366, + "file-lock2": 62367, + "file-medical-fill": 62368, + "file-medical": 62369, + "file-minus-fill": 62370, + "file-minus": 62371, + "file-music-fill": 62372, + "file-music": 62373, + "file-person-fill": 62374, + "file-person": 62375, + "file-play-fill": 62376, + "file-play": 62377, + "file-plus-fill": 62378, + "file-plus": 62379, + "file-post-fill": 62380, + "file-post": 62381, + "file-ppt-fill": 62382, + "file-ppt": 62383, + "file-richtext-fill": 62384, + "file-richtext": 62385, + "file-ruled-fill": 62386, + "file-ruled": 62387, + "file-slides-fill": 62388, + "file-slides": 62389, + "file-spreadsheet-fill": 62390, + "file-spreadsheet": 62391, + "file-text-fill": 62392, + "file-text": 62393, + "file-word-fill": 62394, + "file-word": 62395, + "file-x-fill": 62396, + "file-x": 62397, + "file-zip-fill": 62398, + "file-zip": 62399, + "file": 62400, + "files-alt": 62401, + "files": 62402, + "film": 62403, + "filter-circle-fill": 62404, + "filter-circle": 62405, + "filter-left": 62406, + "filter-right": 62407, + "filter-square-fill": 62408, + "filter-square": 62409, + "filter": 62410, + "flag-fill": 62411, + "flag": 62412, + "flower1": 62413, + "flower2": 62414, + "flower3": 62415, + "folder-check": 62416, + "folder-fill": 62417, + "folder-minus": 62418, + "folder-plus": 62419, + "folder-symlink-fill": 62420, + "folder-symlink": 62421, + "folder-x": 62422, + "folder": 62423, + "folder2-open": 62424, + "folder2": 62425, + "fonts": 62426, + "forward-fill": 62427, + "forward": 62428, + "front": 62429, + "fullscreen-exit": 62430, + "fullscreen": 62431, + "funnel-fill": 62432, + "funnel": 62433, + "gear-fill": 62434, + "gear-wide-connected": 62435, + "gear-wide": 62436, + "gear": 62437, + "gem": 62438, + "geo-alt-fill": 62439, + "geo-alt": 62440, + "geo-fill": 62441, + "geo": 62442, + "gift-fill": 62443, + "gift": 62444, + "github": 62445, + "globe": 62446, + "globe2": 62447, + "google": 62448, + "graph-down": 62449, + "graph-up": 62450, + "grid-1x2-fill": 62451, + "grid-1x2": 62452, + "grid-3x2-gap-fill": 62453, + "grid-3x2-gap": 62454, + "grid-3x2": 62455, + "grid-3x3-gap-fill": 62456, + "grid-3x3-gap": 62457, + "grid-3x3": 62458, + "grid-fill": 62459, + "grid": 62460, + "grip-horizontal": 62461, + "grip-vertical": 62462, + "hammer": 62463, + "hand-index-fill": 62464, + "hand-index-thumb-fill": 62465, + "hand-index-thumb": 62466, + "hand-index": 62467, + "hand-thumbs-down-fill": 62468, + "hand-thumbs-down": 62469, + "hand-thumbs-up-fill": 62470, + "hand-thumbs-up": 62471, + "handbag-fill": 62472, + "handbag": 62473, + "hash": 62474, + "hdd-fill": 62475, + "hdd-network-fill": 62476, + "hdd-network": 62477, + "hdd-rack-fill": 62478, + "hdd-rack": 62479, + "hdd-stack-fill": 62480, + "hdd-stack": 62481, + "hdd": 62482, + "headphones": 62483, + "headset": 62484, + "heart-fill": 62485, + "heart-half": 62486, + "heart": 62487, + "heptagon-fill": 62488, + "heptagon-half": 62489, + "heptagon": 62490, + "hexagon-fill": 62491, + "hexagon-half": 62492, + "hexagon": 62493, + "hourglass-bottom": 62494, + "hourglass-split": 62495, + "hourglass-top": 62496, + "hourglass": 62497, + "house-door-fill": 62498, + "house-door": 62499, + "house-fill": 62500, + "house": 62501, + "hr": 62502, + "hurricane": 62503, + "image-alt": 62504, + "image-fill": 62505, + "image": 62506, + "images": 62507, + "inbox-fill": 62508, + "inbox": 62509, + "inboxes-fill": 62510, + "inboxes": 62511, + "info-circle-fill": 62512, + "info-circle": 62513, + "info-square-fill": 62514, + "info-square": 62515, + "info": 62516, + "input-cursor-text": 62517, + "input-cursor": 62518, + "instagram": 62519, + "intersect": 62520, + "journal-album": 62521, + "journal-arrow-down": 62522, + "journal-arrow-up": 62523, + "journal-bookmark-fill": 62524, + "journal-bookmark": 62525, + "journal-check": 62526, + "journal-code": 62527, + "journal-medical": 62528, + "journal-minus": 62529, + "journal-plus": 62530, + "journal-richtext": 62531, + "journal-text": 62532, + "journal-x": 62533, + "journal": 62534, + "journals": 62535, + "joystick": 62536, + "justify-left": 62537, + "justify-right": 62538, + "justify": 62539, + "kanban-fill": 62540, + "kanban": 62541, + "key-fill": 62542, + "key": 62543, + "keyboard-fill": 62544, + "keyboard": 62545, + "ladder": 62546, + "lamp-fill": 62547, + "lamp": 62548, + "laptop-fill": 62549, + "laptop": 62550, + "layer-backward": 62551, + "layer-forward": 62552, + "layers-fill": 62553, + "layers-half": 62554, + "layers": 62555, + "layout-sidebar-inset-reverse": 62556, + "layout-sidebar-inset": 62557, + "layout-sidebar-reverse": 62558, + "layout-sidebar": 62559, + "layout-split": 62560, + "layout-text-sidebar-reverse": 62561, + "layout-text-sidebar": 62562, + "layout-text-window-reverse": 62563, + "layout-text-window": 62564, + "layout-three-columns": 62565, + "layout-wtf": 62566, + "life-preserver": 62567, + "lightbulb-fill": 62568, + "lightbulb-off-fill": 62569, + "lightbulb-off": 62570, + "lightbulb": 62571, + "lightning-charge-fill": 62572, + "lightning-charge": 62573, + "lightning-fill": 62574, + "lightning": 62575, + "link-45deg": 62576, + "link": 62577, + "linkedin": 62578, + "list-check": 62579, + "list-nested": 62580, + "list-ol": 62581, + "list-stars": 62582, + "list-task": 62583, + "list-ul": 62584, + "list": 62585, + "lock-fill": 62586, + "lock": 62587, + "mailbox": 62588, + "mailbox2": 62589, + "map-fill": 62590, + "map": 62591, + "markdown-fill": 62592, + "markdown": 62593, + "mask": 62594, + "megaphone-fill": 62595, + "megaphone": 62596, + "menu-app-fill": 62597, + "menu-app": 62598, + "menu-button-fill": 62599, + "menu-button-wide-fill": 62600, + "menu-button-wide": 62601, + "menu-button": 62602, + "menu-down": 62603, + "menu-up": 62604, + "mic-fill": 62605, + "mic-mute-fill": 62606, + "mic-mute": 62607, + "mic": 62608, + "minecart-loaded": 62609, + "minecart": 62610, + "moisture": 62611, + "moon-fill": 62612, + "moon-stars-fill": 62613, + "moon-stars": 62614, + "moon": 62615, + "mouse-fill": 62616, + "mouse": 62617, + "mouse2-fill": 62618, + "mouse2": 62619, + "mouse3-fill": 62620, + "mouse3": 62621, + "music-note-beamed": 62622, + "music-note-list": 62623, + "music-note": 62624, + "music-player-fill": 62625, + "music-player": 62626, + "newspaper": 62627, + "node-minus-fill": 62628, + "node-minus": 62629, + "node-plus-fill": 62630, + "node-plus": 62631, + "nut-fill": 62632, + "nut": 62633, + "octagon-fill": 62634, + "octagon-half": 62635, + "octagon": 62636, + "option": 62637, + "outlet": 62638, + "paint-bucket": 62639, + "palette-fill": 62640, + "palette": 62641, + "palette2": 62642, + "paperclip": 62643, + "paragraph": 62644, + "patch-check-fill": 62645, + "patch-check": 62646, + "patch-exclamation-fill": 62647, + "patch-exclamation": 62648, + "patch-minus-fill": 62649, + "patch-minus": 62650, + "patch-plus-fill": 62651, + "patch-plus": 62652, + "patch-question-fill": 62653, + "patch-question": 62654, + "pause-btn-fill": 62655, + "pause-btn": 62656, + "pause-circle-fill": 62657, + "pause-circle": 62658, + "pause-fill": 62659, + "pause": 62660, + "peace-fill": 62661, + "peace": 62662, + "pen-fill": 62663, + "pen": 62664, + "pencil-fill": 62665, + "pencil-square": 62666, + "pencil": 62667, + "pentagon-fill": 62668, + "pentagon-half": 62669, + "pentagon": 62670, + "people-fill": 62671, + "people": 62672, + "percent": 62673, + "person-badge-fill": 62674, + "person-badge": 62675, + "person-bounding-box": 62676, + "person-check-fill": 62677, + "person-check": 62678, + "person-circle": 62679, + "person-dash-fill": 62680, + "person-dash": 62681, + "person-fill": 62682, + "person-lines-fill": 62683, + "person-plus-fill": 62684, + "person-plus": 62685, + "person-square": 62686, + "person-x-fill": 62687, + "person-x": 62688, + "person": 62689, + "phone-fill": 62690, + "phone-landscape-fill": 62691, + "phone-landscape": 62692, + "phone-vibrate-fill": 62693, + "phone-vibrate": 62694, + "phone": 62695, + "pie-chart-fill": 62696, + "pie-chart": 62697, + "pin-angle-fill": 62698, + "pin-angle": 62699, + "pin-fill": 62700, + "pin": 62701, + "pip-fill": 62702, + "pip": 62703, + "play-btn-fill": 62704, + "play-btn": 62705, + "play-circle-fill": 62706, + "play-circle": 62707, + "play-fill": 62708, + "play": 62709, + "plug-fill": 62710, + "plug": 62711, + "plus-circle-dotted": 62712, + "plus-circle-fill": 62713, + "plus-circle": 62714, + "plus-square-dotted": 62715, + "plus-square-fill": 62716, + "plus-square": 62717, + "plus": 62718, + "power": 62719, + "printer-fill": 62720, + "printer": 62721, + "puzzle-fill": 62722, + "puzzle": 62723, + "question-circle-fill": 62724, + "question-circle": 62725, + "question-diamond-fill": 62726, + "question-diamond": 62727, + "question-octagon-fill": 62728, + "question-octagon": 62729, + "question-square-fill": 62730, + "question-square": 62731, + "question": 62732, + "rainbow": 62733, + "receipt-cutoff": 62734, + "receipt": 62735, + "reception-0": 62736, + "reception-1": 62737, + "reception-2": 62738, + "reception-3": 62739, + "reception-4": 62740, + "record-btn-fill": 62741, + "record-btn": 62742, + "record-circle-fill": 62743, + "record-circle": 62744, + "record-fill": 62745, + "record": 62746, + "record2-fill": 62747, + "record2": 62748, + "reply-all-fill": 62749, + "reply-all": 62750, + "reply-fill": 62751, + "reply": 62752, + "rss-fill": 62753, + "rss": 62754, + "rulers": 62755, + "save-fill": 62756, + "save": 62757, + "save2-fill": 62758, + "save2": 62759, + "scissors": 62760, + "screwdriver": 62761, + "search": 62762, + "segmented-nav": 62763, + "server": 62764, + "share-fill": 62765, + "share": 62766, + "shield-check": 62767, + "shield-exclamation": 62768, + "shield-fill-check": 62769, + "shield-fill-exclamation": 62770, + "shield-fill-minus": 62771, + "shield-fill-plus": 62772, + "shield-fill-x": 62773, + "shield-fill": 62774, + "shield-lock-fill": 62775, + "shield-lock": 62776, + "shield-minus": 62777, + "shield-plus": 62778, + "shield-shaded": 62779, + "shield-slash-fill": 62780, + "shield-slash": 62781, + "shield-x": 62782, + "shield": 62783, + "shift-fill": 62784, + "shift": 62785, + "shop-window": 62786, + "shop": 62787, + "shuffle": 62788, + "signpost-2-fill": 62789, + "signpost-2": 62790, + "signpost-fill": 62791, + "signpost-split-fill": 62792, + "signpost-split": 62793, + "signpost": 62794, + "sim-fill": 62795, + "sim": 62796, + "skip-backward-btn-fill": 62797, + "skip-backward-btn": 62798, + "skip-backward-circle-fill": 62799, + "skip-backward-circle": 62800, + "skip-backward-fill": 62801, + "skip-backward": 62802, + "skip-end-btn-fill": 62803, + "skip-end-btn": 62804, + "skip-end-circle-fill": 62805, + "skip-end-circle": 62806, + "skip-end-fill": 62807, + "skip-end": 62808, + "skip-forward-btn-fill": 62809, + "skip-forward-btn": 62810, + "skip-forward-circle-fill": 62811, + "skip-forward-circle": 62812, + "skip-forward-fill": 62813, + "skip-forward": 62814, + "skip-start-btn-fill": 62815, + "skip-start-btn": 62816, + "skip-start-circle-fill": 62817, + "skip-start-circle": 62818, + "skip-start-fill": 62819, + "skip-start": 62820, + "slack": 62821, + "slash-circle-fill": 62822, + "slash-circle": 62823, + "slash-square-fill": 62824, + "slash-square": 62825, + "slash": 62826, + "sliders": 62827, + "smartwatch": 62828, + "snow": 62829, + "snow2": 62830, + "snow3": 62831, + "sort-alpha-down-alt": 62832, + "sort-alpha-down": 62833, + "sort-alpha-up-alt": 62834, + "sort-alpha-up": 62835, + "sort-down-alt": 62836, + "sort-down": 62837, + "sort-numeric-down-alt": 62838, + "sort-numeric-down": 62839, + "sort-numeric-up-alt": 62840, + "sort-numeric-up": 62841, + "sort-up-alt": 62842, + "sort-up": 62843, + "soundwave": 62844, + "speaker-fill": 62845, + "speaker": 62846, + "speedometer": 62847, + "speedometer2": 62848, + "spellcheck": 62849, + "square-fill": 62850, + "square-half": 62851, + "square": 62852, + "stack": 62853, + "star-fill": 62854, + "star-half": 62855, + "star": 62856, + "stars": 62857, + "stickies-fill": 62858, + "stickies": 62859, + "sticky-fill": 62860, + "sticky": 62861, + "stop-btn-fill": 62862, + "stop-btn": 62863, + "stop-circle-fill": 62864, + "stop-circle": 62865, + "stop-fill": 62866, + "stop": 62867, + "stoplights-fill": 62868, + "stoplights": 62869, + "stopwatch-fill": 62870, + "stopwatch": 62871, + "subtract": 62872, + "suit-club-fill": 62873, + "suit-club": 62874, + "suit-diamond-fill": 62875, + "suit-diamond": 62876, + "suit-heart-fill": 62877, + "suit-heart": 62878, + "suit-spade-fill": 62879, + "suit-spade": 62880, + "sun-fill": 62881, + "sun": 62882, + "sunglasses": 62883, + "sunrise-fill": 62884, + "sunrise": 62885, + "sunset-fill": 62886, + "sunset": 62887, + "symmetry-horizontal": 62888, + "symmetry-vertical": 62889, + "table": 62890, + "tablet-fill": 62891, + "tablet-landscape-fill": 62892, + "tablet-landscape": 62893, + "tablet": 62894, + "tag-fill": 62895, + "tag": 62896, + "tags-fill": 62897, + "tags": 62898, + "telegram": 62899, + "telephone-fill": 62900, + "telephone-forward-fill": 62901, + "telephone-forward": 62902, + "telephone-inbound-fill": 62903, + "telephone-inbound": 62904, + "telephone-minus-fill": 62905, + "telephone-minus": 62906, + "telephone-outbound-fill": 62907, + "telephone-outbound": 62908, + "telephone-plus-fill": 62909, + "telephone-plus": 62910, + "telephone-x-fill": 62911, + "telephone-x": 62912, + "telephone": 62913, + "terminal-fill": 62914, + "terminal": 62915, + "text-center": 62916, + "text-indent-left": 62917, + "text-indent-right": 62918, + "text-left": 62919, + "text-paragraph": 62920, + "text-right": 62921, + "textarea-resize": 62922, + "textarea-t": 62923, + "textarea": 62924, + "thermometer-half": 62925, + "thermometer-high": 62926, + "thermometer-low": 62927, + "thermometer-snow": 62928, + "thermometer-sun": 62929, + "thermometer": 62930, + "three-dots-vertical": 62931, + "three-dots": 62932, + "toggle-off": 62933, + "toggle-on": 62934, + "toggle2-off": 62935, + "toggle2-on": 62936, + "toggles": 62937, + "toggles2": 62938, + "tools": 62939, + "tornado": 62940, + "trash-fill": 62941, + "trash": 62942, + "trash2-fill": 62943, + "trash2": 62944, + "tree-fill": 62945, + "tree": 62946, + "triangle-fill": 62947, + "triangle-half": 62948, + "triangle": 62949, + "trophy-fill": 62950, + "trophy": 62951, + "tropical-storm": 62952, + "truck-flatbed": 62953, + "truck": 62954, + "tsunami": 62955, + "tv-fill": 62956, + "tv": 62957, + "twitch": 62958, + "twitter": 62959, + "type-bold": 62960, + "type-h1": 62961, + "type-h2": 62962, + "type-h3": 62963, + "type-italic": 62964, + "type-strikethrough": 62965, + "type-underline": 62966, + "type": 62967, + "ui-checks-grid": 62968, + "ui-checks": 62969, + "ui-radios-grid": 62970, + "ui-radios": 62971, + "umbrella-fill": 62972, + "umbrella": 62973, + "union": 62974, + "unlock-fill": 62975, + "unlock": 62976, + "upc-scan": 62977, + "upc": 62978, + "upload": 62979, + "vector-pen": 62980, + "view-list": 62981, + "view-stacked": 62982, + "vinyl-fill": 62983, + "vinyl": 62984, + "voicemail": 62985, + "volume-down-fill": 62986, + "volume-down": 62987, + "volume-mute-fill": 62988, + "volume-mute": 62989, + "volume-off-fill": 62990, + "volume-off": 62991, + "volume-up-fill": 62992, + "volume-up": 62993, + "vr": 62994, + "wallet-fill": 62995, + "wallet": 62996, + "wallet2": 62997, + "watch": 62998, + "water": 62999, + "whatsapp": 63000, + "wifi-1": 63001, + "wifi-2": 63002, + "wifi-off": 63003, + "wifi": 63004, + "wind": 63005, + "window-dock": 63006, + "window-sidebar": 63007, + "window": 63008, + "wrench": 63009, + "x-circle-fill": 63010, + "x-circle": 63011, + "x-diamond-fill": 63012, + "x-diamond": 63013, + "x-octagon-fill": 63014, + "x-octagon": 63015, + "x-square-fill": 63016, + "x-square": 63017, + "x": 63018, + "youtube": 63019, + "zoom-in": 63020, + "zoom-out": 63021, + "bank": 63022, + "bank2": 63023, + "bell-slash-fill": 63024, + "bell-slash": 63025, + "cash-coin": 63026, + "check-lg": 63027, + "coin": 63028, + "currency-bitcoin": 63029, + "currency-dollar": 63030, + "currency-euro": 63031, + "currency-exchange": 63032, + "currency-pound": 63033, + "currency-yen": 63034, + "dash-lg": 63035, + "exclamation-lg": 63036, + "file-earmark-pdf-fill": 63037, + "file-earmark-pdf": 63038, + "file-pdf-fill": 63039, + "file-pdf": 63040, + "gender-ambiguous": 63041, + "gender-female": 63042, + "gender-male": 63043, + "gender-trans": 63044, + "headset-vr": 63045, + "info-lg": 63046, + "mastodon": 63047, + "messenger": 63048, + "piggy-bank-fill": 63049, + "piggy-bank": 63050, + "pin-map-fill": 63051, + "pin-map": 63052, + "plus-lg": 63053, + "question-lg": 63054, + "recycle": 63055, + "reddit": 63056, + "safe-fill": 63057, + "safe2-fill": 63058, + "safe2": 63059, + "sd-card-fill": 63060, + "sd-card": 63061, + "skype": 63062, + "slash-lg": 63063, + "translate": 63064, + "x-lg": 63065, + "safe": 63066, + "apple": 63067, + "microsoft": 63069, + "windows": 63070, + "behance": 63068, + "dribbble": 63071, + "line": 63072, + "medium": 63073, + "paypal": 63074, + "pinterest": 63075, + "signal": 63076, + "snapchat": 63077, + "spotify": 63078, + "stack-overflow": 63079, + "strava": 63080, + "wordpress": 63081, + "vimeo": 63082, + "activity": 63083, + "easel2-fill": 63084, + "easel2": 63085, + "easel3-fill": 63086, + "easel3": 63087, + "fan": 63088, + "fingerprint": 63089, + "graph-down-arrow": 63090, + "graph-up-arrow": 63091, + "hypnotize": 63092, + "magic": 63093, + "person-rolodex": 63094, + "person-video": 63095, + "person-video2": 63096, + "person-video3": 63097, + "person-workspace": 63098, + "radioactive": 63099, + "webcam-fill": 63100, + "webcam": 63101, + "yin-yang": 63102, + "bandaid-fill": 63104, + "bandaid": 63105, + "bluetooth": 63106, + "body-text": 63107, + "boombox": 63108, + "boxes": 63109, + "dpad-fill": 63110, + "dpad": 63111, + "ear-fill": 63112, + "ear": 63113, + "envelope-check-fill": 63115, + "envelope-check": 63116, + "envelope-dash-fill": 63118, + "envelope-dash": 63119, + "envelope-exclamation-fill": 63121, + "envelope-exclamation": 63122, + "envelope-plus-fill": 63123, + "envelope-plus": 63124, + "envelope-slash-fill": 63126, + "envelope-slash": 63127, + "envelope-x-fill": 63129, + "envelope-x": 63130, + "explicit-fill": 63131, + "explicit": 63132, + "git": 63133, + "infinity": 63134, + "list-columns-reverse": 63135, + "list-columns": 63136, + "meta": 63137, + "nintendo-switch": 63140, + "pc-display-horizontal": 63141, + "pc-display": 63142, + "pc-horizontal": 63143, + "pc": 63144, + "playstation": 63145, + "plus-slash-minus": 63146, + "projector-fill": 63147, + "projector": 63148, + "qr-code-scan": 63149, + "qr-code": 63150, + "quora": 63151, + "quote": 63152, + "robot": 63153, + "send-check-fill": 63154, + "send-check": 63155, + "send-dash-fill": 63156, + "send-dash": 63157, + "send-exclamation-fill": 63159, + "send-exclamation": 63160, + "send-fill": 63161, + "send-plus-fill": 63162, + "send-plus": 63163, + "send-slash-fill": 63164, + "send-slash": 63165, + "send-x-fill": 63166, + "send-x": 63167, + "send": 63168, + "steam": 63169, + "terminal-dash": 63171, + "terminal-plus": 63172, + "terminal-split": 63173, + "ticket-detailed-fill": 63174, + "ticket-detailed": 63175, + "ticket-fill": 63176, + "ticket-perforated-fill": 63177, + "ticket-perforated": 63178, + "ticket": 63179, + "tiktok": 63180, + "window-dash": 63181, + "window-desktop": 63182, + "window-fullscreen": 63183, + "window-plus": 63184, + "window-split": 63185, + "window-stack": 63186, + "window-x": 63187, + "xbox": 63188, + "ethernet": 63189, + "hdmi-fill": 63190, + "hdmi": 63191, + "usb-c-fill": 63192, + "usb-c": 63193, + "usb-fill": 63194, + "usb-plug-fill": 63195, + "usb-plug": 63196, + "usb-symbol": 63197, + "usb": 63198, + "boombox-fill": 63199, + "displayport": 63201, + "gpu-card": 63202, + "memory": 63203, + "modem-fill": 63204, + "modem": 63205, + "motherboard-fill": 63206, + "motherboard": 63207, + "optical-audio-fill": 63208, + "optical-audio": 63209, + "pci-card": 63210, + "router-fill": 63211, + "router": 63212, + "thunderbolt-fill": 63215, + "thunderbolt": 63216, + "usb-drive-fill": 63217, + "usb-drive": 63218, + "usb-micro-fill": 63219, + "usb-micro": 63220, + "usb-mini-fill": 63221, + "usb-mini": 63222, + "cloud-haze2": 63223, + "device-hdd-fill": 63224, + "device-hdd": 63225, + "device-ssd-fill": 63226, + "device-ssd": 63227, + "displayport-fill": 63228, + "mortarboard-fill": 63229, + "mortarboard": 63230, + "terminal-x": 63231, + "arrow-through-heart-fill": 63232, + "arrow-through-heart": 63233, + "badge-sd-fill": 63234, + "badge-sd": 63235, + "bag-heart-fill": 63236, + "bag-heart": 63237, + "balloon-fill": 63238, + "balloon-heart-fill": 63239, + "balloon-heart": 63240, + "balloon": 63241, + "box2-fill": 63242, + "box2-heart-fill": 63243, + "box2-heart": 63244, + "box2": 63245, + "braces-asterisk": 63246, + "calendar-heart-fill": 63247, + "calendar-heart": 63248, + "calendar2-heart-fill": 63249, + "calendar2-heart": 63250, + "chat-heart-fill": 63251, + "chat-heart": 63252, + "chat-left-heart-fill": 63253, + "chat-left-heart": 63254, + "chat-right-heart-fill": 63255, + "chat-right-heart": 63256, + "chat-square-heart-fill": 63257, + "chat-square-heart": 63258, + "clipboard-check-fill": 63259, + "clipboard-data-fill": 63260, + "clipboard-fill": 63261, + "clipboard-heart-fill": 63262, + "clipboard-heart": 63263, + "clipboard-minus-fill": 63264, + "clipboard-plus-fill": 63265, + "clipboard-pulse": 63266, + "clipboard-x-fill": 63267, + "clipboard2-check-fill": 63268, + "clipboard2-check": 63269, + "clipboard2-data-fill": 63270, + "clipboard2-data": 63271, + "clipboard2-fill": 63272, + "clipboard2-heart-fill": 63273, + "clipboard2-heart": 63274, + "clipboard2-minus-fill": 63275, + "clipboard2-minus": 63276, + "clipboard2-plus-fill": 63277, + "clipboard2-plus": 63278, + "clipboard2-pulse-fill": 63279, + "clipboard2-pulse": 63280, + "clipboard2-x-fill": 63281, + "clipboard2-x": 63282, + "clipboard2": 63283, + "emoji-kiss-fill": 63284, + "emoji-kiss": 63285, + "envelope-heart-fill": 63286, + "envelope-heart": 63287, + "envelope-open-heart-fill": 63288, + "envelope-open-heart": 63289, + "envelope-paper-fill": 63290, + "envelope-paper-heart-fill": 63291, + "envelope-paper-heart": 63292, + "envelope-paper": 63293, + "filetype-aac": 63294, + "filetype-ai": 63295, + "filetype-bmp": 63296, + "filetype-cs": 63297, + "filetype-css": 63298, + "filetype-csv": 63299, + "filetype-doc": 63300, + "filetype-docx": 63301, + "filetype-exe": 63302, + "filetype-gif": 63303, + "filetype-heic": 63304, + "filetype-html": 63305, + "filetype-java": 63306, + "filetype-jpg": 63307, + "filetype-js": 63308, + "filetype-jsx": 63309, + "filetype-key": 63310, + "filetype-m4p": 63311, + "filetype-md": 63312, + "filetype-mdx": 63313, + "filetype-mov": 63314, + "filetype-mp3": 63315, + "filetype-mp4": 63316, + "filetype-otf": 63317, + "filetype-pdf": 63318, + "filetype-php": 63319, + "filetype-png": 63320, + "filetype-ppt": 63322, + "filetype-psd": 63323, + "filetype-py": 63324, + "filetype-raw": 63325, + "filetype-rb": 63326, + "filetype-sass": 63327, + "filetype-scss": 63328, + "filetype-sh": 63329, + "filetype-svg": 63330, + "filetype-tiff": 63331, + "filetype-tsx": 63332, + "filetype-ttf": 63333, + "filetype-txt": 63334, + "filetype-wav": 63335, + "filetype-woff": 63336, + "filetype-xls": 63338, + "filetype-xml": 63339, + "filetype-yml": 63340, + "heart-arrow": 63341, + "heart-pulse-fill": 63342, + "heart-pulse": 63343, + "heartbreak-fill": 63344, + "heartbreak": 63345, + "hearts": 63346, + "hospital-fill": 63347, + "hospital": 63348, + "house-heart-fill": 63349, + "house-heart": 63350, + "incognito": 63351, + "magnet-fill": 63352, + "magnet": 63353, + "person-heart": 63354, + "person-hearts": 63355, + "phone-flip": 63356, + "plugin": 63357, + "postage-fill": 63358, + "postage-heart-fill": 63359, + "postage-heart": 63360, + "postage": 63361, + "postcard-fill": 63362, + "postcard-heart-fill": 63363, + "postcard-heart": 63364, + "postcard": 63365, + "search-heart-fill": 63366, + "search-heart": 63367, + "sliders2-vertical": 63368, + "sliders2": 63369, + "trash3-fill": 63370, + "trash3": 63371, + "valentine": 63372, + "valentine2": 63373, + "wrench-adjustable-circle-fill": 63374, + "wrench-adjustable-circle": 63375, + "wrench-adjustable": 63376, + "filetype-json": 63377, + "filetype-pptx": 63378, + "filetype-xlsx": 63379, + "1-circle-fill": 63382, + "1-circle": 63383, + "1-square-fill": 63384, + "1-square": 63385, + "2-circle-fill": 63388, + "2-circle": 63389, + "2-square-fill": 63390, + "2-square": 63391, + "3-circle-fill": 63394, + "3-circle": 63395, + "3-square-fill": 63396, + "3-square": 63397, + "4-circle-fill": 63400, + "4-circle": 63401, + "4-square-fill": 63402, + "4-square": 63403, + "5-circle-fill": 63406, + "5-circle": 63407, + "5-square-fill": 63408, + "5-square": 63409, + "6-circle-fill": 63412, + "6-circle": 63413, + "6-square-fill": 63414, + "6-square": 63415, + "7-circle-fill": 63418, + "7-circle": 63419, + "7-square-fill": 63420, + "7-square": 63421, + "8-circle-fill": 63424, + "8-circle": 63425, + "8-square-fill": 63426, + "8-square": 63427, + "9-circle-fill": 63430, + "9-circle": 63431, + "9-square-fill": 63432, + "9-square": 63433, + "airplane-engines-fill": 63434, + "airplane-engines": 63435, + "airplane-fill": 63436, + "airplane": 63437, + "alexa": 63438, + "alipay": 63439, + "android": 63440, + "android2": 63441, + "box-fill": 63442, + "box-seam-fill": 63443, + "browser-chrome": 63444, + "browser-edge": 63445, + "browser-firefox": 63446, + "browser-safari": 63447, + "c-circle-fill": 63450, + "c-circle": 63451, + "c-square-fill": 63452, + "c-square": 63453, + "capsule-pill": 63454, + "capsule": 63455, + "car-front-fill": 63456, + "car-front": 63457, + "cassette-fill": 63458, + "cassette": 63459, + "cc-circle-fill": 63462, + "cc-circle": 63463, + "cc-square-fill": 63464, + "cc-square": 63465, + "cup-hot-fill": 63466, + "cup-hot": 63467, + "currency-rupee": 63468, + "dropbox": 63469, + "escape": 63470, + "fast-forward-btn-fill": 63471, + "fast-forward-btn": 63472, + "fast-forward-circle-fill": 63473, + "fast-forward-circle": 63474, + "fast-forward-fill": 63475, + "fast-forward": 63476, + "filetype-sql": 63477, + "fire": 63478, + "google-play": 63479, + "h-circle-fill": 63482, + "h-circle": 63483, + "h-square-fill": 63484, + "h-square": 63485, + "indent": 63486, + "lungs-fill": 63487, + "lungs": 63488, + "microsoft-teams": 63489, + "p-circle-fill": 63492, + "p-circle": 63493, + "p-square-fill": 63494, + "p-square": 63495, + "pass-fill": 63496, + "pass": 63497, + "prescription": 63498, + "prescription2": 63499, + "r-circle-fill": 63502, + "r-circle": 63503, + "r-square-fill": 63504, + "r-square": 63505, + "repeat-1": 63506, + "repeat": 63507, + "rewind-btn-fill": 63508, + "rewind-btn": 63509, + "rewind-circle-fill": 63510, + "rewind-circle": 63511, + "rewind-fill": 63512, + "rewind": 63513, + "train-freight-front-fill": 63514, + "train-freight-front": 63515, + "train-front-fill": 63516, + "train-front": 63517, + "train-lightrail-front-fill": 63518, + "train-lightrail-front": 63519, + "truck-front-fill": 63520, + "truck-front": 63521, + "ubuntu": 63522, + "unindent": 63523, + "unity": 63524, + "universal-access-circle": 63525, + "universal-access": 63526, + "virus": 63527, + "virus2": 63528, + "wechat": 63529, + "yelp": 63530, + "sign-stop-fill": 63531, + "sign-stop-lights-fill": 63532, + "sign-stop-lights": 63533, + "sign-stop": 63534, + "sign-turn-left-fill": 63535, + "sign-turn-left": 63536, + "sign-turn-right-fill": 63537, + "sign-turn-right": 63538, + "sign-turn-slight-left-fill": 63539, + "sign-turn-slight-left": 63540, + "sign-turn-slight-right-fill": 63541, + "sign-turn-slight-right": 63542, + "sign-yield-fill": 63543, + "sign-yield": 63544, + "ev-station-fill": 63545, + "ev-station": 63546, + "fuel-pump-diesel-fill": 63547, + "fuel-pump-diesel": 63548, + "fuel-pump-fill": 63549, + "fuel-pump": 63550, + "0-circle-fill": 63551, + "0-circle": 63552, + "0-square-fill": 63553, + "0-square": 63554, + "rocket-fill": 63555, + "rocket-takeoff-fill": 63556, + "rocket-takeoff": 63557, + "rocket": 63558, + "stripe": 63559, + "subscript": 63560, + "superscript": 63561, + "trello": 63562, + "envelope-at-fill": 63563, + "envelope-at": 63564, + "regex": 63565, + "text-wrap": 63566, + "sign-dead-end-fill": 63567, + "sign-dead-end": 63568, + "sign-do-not-enter-fill": 63569, + "sign-do-not-enter": 63570, + "sign-intersection-fill": 63571, + "sign-intersection-side-fill": 63572, + "sign-intersection-side": 63573, + "sign-intersection-t-fill": 63574, + "sign-intersection-t": 63575, + "sign-intersection-y-fill": 63576, + "sign-intersection-y": 63577, + "sign-intersection": 63578, + "sign-merge-left-fill": 63579, + "sign-merge-left": 63580, + "sign-merge-right-fill": 63581, + "sign-merge-right": 63582, + "sign-no-left-turn-fill": 63583, + "sign-no-left-turn": 63584, + "sign-no-parking-fill": 63585, + "sign-no-parking": 63586, + "sign-no-right-turn-fill": 63587, + "sign-no-right-turn": 63588, + "sign-railroad-fill": 63589, + "sign-railroad": 63590, + "building-add": 63591, + "building-check": 63592, + "building-dash": 63593, + "building-down": 63594, + "building-exclamation": 63595, + "building-fill-add": 63596, + "building-fill-check": 63597, + "building-fill-dash": 63598, + "building-fill-down": 63599, + "building-fill-exclamation": 63600, + "building-fill-gear": 63601, + "building-fill-lock": 63602, + "building-fill-slash": 63603, + "building-fill-up": 63604, + "building-fill-x": 63605, + "building-fill": 63606, + "building-gear": 63607, + "building-lock": 63608, + "building-slash": 63609, + "building-up": 63610, + "building-x": 63611, + "buildings-fill": 63612, + "buildings": 63613, + "bus-front-fill": 63614, + "bus-front": 63615, + "ev-front-fill": 63616, + "ev-front": 63617, + "globe-americas": 63618, + "globe-asia-australia": 63619, + "globe-central-south-asia": 63620, + "globe-europe-africa": 63621, + "house-add-fill": 63622, + "house-add": 63623, + "house-check-fill": 63624, + "house-check": 63625, + "house-dash-fill": 63626, + "house-dash": 63627, + "house-down-fill": 63628, + "house-down": 63629, + "house-exclamation-fill": 63630, + "house-exclamation": 63631, + "house-gear-fill": 63632, + "house-gear": 63633, + "house-lock-fill": 63634, + "house-lock": 63635, + "house-slash-fill": 63636, + "house-slash": 63637, + "house-up-fill": 63638, + "house-up": 63639, + "house-x-fill": 63640, + "house-x": 63641, + "person-add": 63642, + "person-down": 63643, + "person-exclamation": 63644, + "person-fill-add": 63645, + "person-fill-check": 63646, + "person-fill-dash": 63647, + "person-fill-down": 63648, + "person-fill-exclamation": 63649, + "person-fill-gear": 63650, + "person-fill-lock": 63651, + "person-fill-slash": 63652, + "person-fill-up": 63653, + "person-fill-x": 63654, + "person-gear": 63655, + "person-lock": 63656, + "person-slash": 63657, + "person-up": 63658, + "scooter": 63659, + "taxi-front-fill": 63660, + "taxi-front": 63661, + "amd": 63662, + "database-add": 63663, + "database-check": 63664, + "database-dash": 63665, + "database-down": 63666, + "database-exclamation": 63667, + "database-fill-add": 63668, + "database-fill-check": 63669, + "database-fill-dash": 63670, + "database-fill-down": 63671, + "database-fill-exclamation": 63672, + "database-fill-gear": 63673, + "database-fill-lock": 63674, + "database-fill-slash": 63675, + "database-fill-up": 63676, + "database-fill-x": 63677, + "database-fill": 63678, + "database-gear": 63679, + "database-lock": 63680, + "database-slash": 63681, + "database-up": 63682, + "database-x": 63683, + "database": 63684, + "houses-fill": 63685, + "houses": 63686, + "nvidia": 63687, + "person-vcard-fill": 63688, + "person-vcard": 63689, + "sina-weibo": 63690, + "tencent-qq": 63691, + "wikipedia": 63692, + "alphabet-uppercase": 62117, + "alphabet": 63114, + "amazon": 63117, + "arrows-collapse-vertical": 63120, + "arrows-expand-vertical": 63125, + "arrows-vertical": 63128, + "arrows": 63138, + "ban-fill": 63139, + "ban": 63158, + "bing": 63170, + "cake": 63200, + "cake2": 63213, + "cookie": 63214, + "copy": 63321, + "crosshair": 63337, + "crosshair2": 63380, + "emoji-astonished-fill": 63381, + "emoji-astonished": 63386, + "emoji-grimace-fill": 63387, + "emoji-grimace": 63392, + "emoji-grin-fill": 63393, + "emoji-grin": 63398, + "emoji-surprise-fill": 63399, + "emoji-surprise": 63404, + "emoji-tear-fill": 63405, + "emoji-tear": 63410, + "envelope-arrow-down-fill": 63411, + "envelope-arrow-down": 63416, + "envelope-arrow-up-fill": 63417, + "envelope-arrow-up": 63422, + "feather": 63423, + "feather2": 63428, + "floppy-fill": 63429, + "floppy": 63448, + "floppy2-fill": 63449, + "floppy2": 63460, + "gitlab": 63461, + "highlighter": 63480, + "marker-tip": 63490, + "nvme-fill": 63491, + "nvme": 63500, + "opencollective": 63501, + "pci-card-network": 63693, + "pci-card-sound": 63694, + "radar": 63695, + "send-arrow-down-fill": 63696, + "send-arrow-down": 63697, + "send-arrow-up-fill": 63698, + "send-arrow-up": 63699, + "sim-slash-fill": 63700, + "sim-slash": 63701, + "sourceforge": 63702, + "substack": 63703, + "threads-fill": 63704, + "threads": 63705, + "transparency": 63706, + "twitter-x": 63707, + "type-h4": 63708, + "type-h5": 63709, + "type-h6": 63710, + "backpack-fill": 63711, + "backpack": 63712, + "backpack2-fill": 63713, + "backpack2": 63714, + "backpack3-fill": 63715, + "backpack3": 63716, + "backpack4-fill": 63717, + "backpack4": 63718, + "brilliance": 63719, + "cake-fill": 63720, + "cake2-fill": 63721, + "duffle-fill": 63722, + "duffle": 63723, + "exposure": 63724, + "gender-neuter": 63725, + "highlights": 63726, + "luggage-fill": 63727, + "luggage": 63728, + "mailbox-flag": 63729, + "mailbox2-flag": 63730, + "noise-reduction": 63731, + "passport-fill": 63732, + "passport": 63733, + "person-arms-up": 63734, + "person-raised-hand": 63735, + "person-standing-dress": 63736, + "person-standing": 63737, + "person-walking": 63738, + "person-wheelchair": 63739, + "shadows": 63740, + "suitcase-fill": 63741, + "suitcase-lg-fill": 63742, + "suitcase-lg": 63743, + "suitcase": 63744, + "suitcase2-fill": 63745, + "suitcase2": 63746, + "vignette": 63747, + "bluesky": 63481, + "tux": 63748, + "beaker-fill": 63749, + "beaker": 63750, + "flask-fill": 63751, + "flask-florence-fill": 63752, + "flask-florence": 63753, + "flask": 63754, + "leaf-fill": 63755, + "leaf": 63756, + "measuring-cup-fill": 63757, + "measuring-cup": 63758, + "unlock2-fill": 63759, + "unlock2": 63760, + "battery-low": 63761, + "anthropic": 63762, + "apple-music": 63763, + "claude": 63764, + "openai": 63765, + "perplexity": 63766, + "css": 63767, + "javascript": 63768, + "typescript": 63769, + "fork-knife": 63770, + "globe-americas-fill": 63771, + "globe-asia-australia-fill": 63772, + "globe-central-south-asia-fill": 63773, + "globe-europe-africa-fill": 63774 +} \ No newline at end of file diff --git a/icons/bootstrap-icons.min.css b/icons/bootstrap-icons.min.css new file mode 100644 index 0000000..706a5c8 --- /dev/null +++ b/icons/bootstrap-icons.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */@font-face{font-display:block;font-family:bootstrap-icons;src:url("fonts/bootstrap-icons.woff2?e34853135f9e39acf64315236852cd5a") format("woff2"),url("fonts/bootstrap-icons.woff?e34853135f9e39acf64315236852cd5a") format("woff")}.bi::before,[class*=" bi-"]::before,[class^=bi-]::before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-123::before{content:"\f67f"}.bi-alarm-fill::before{content:"\f101"}.bi-alarm::before{content:"\f102"}.bi-align-bottom::before{content:"\f103"}.bi-align-center::before{content:"\f104"}.bi-align-end::before{content:"\f105"}.bi-align-middle::before{content:"\f106"}.bi-align-start::before{content:"\f107"}.bi-align-top::before{content:"\f108"}.bi-alt::before{content:"\f109"}.bi-app-indicator::before{content:"\f10a"}.bi-app::before{content:"\f10b"}.bi-archive-fill::before{content:"\f10c"}.bi-archive::before{content:"\f10d"}.bi-arrow-90deg-down::before{content:"\f10e"}.bi-arrow-90deg-left::before{content:"\f10f"}.bi-arrow-90deg-right::before{content:"\f110"}.bi-arrow-90deg-up::before{content:"\f111"}.bi-arrow-bar-down::before{content:"\f112"}.bi-arrow-bar-left::before{content:"\f113"}.bi-arrow-bar-right::before{content:"\f114"}.bi-arrow-bar-up::before{content:"\f115"}.bi-arrow-clockwise::before{content:"\f116"}.bi-arrow-counterclockwise::before{content:"\f117"}.bi-arrow-down-circle-fill::before{content:"\f118"}.bi-arrow-down-circle::before{content:"\f119"}.bi-arrow-down-left-circle-fill::before{content:"\f11a"}.bi-arrow-down-left-circle::before{content:"\f11b"}.bi-arrow-down-left-square-fill::before{content:"\f11c"}.bi-arrow-down-left-square::before{content:"\f11d"}.bi-arrow-down-left::before{content:"\f11e"}.bi-arrow-down-right-circle-fill::before{content:"\f11f"}.bi-arrow-down-right-circle::before{content:"\f120"}.bi-arrow-down-right-square-fill::before{content:"\f121"}.bi-arrow-down-right-square::before{content:"\f122"}.bi-arrow-down-right::before{content:"\f123"}.bi-arrow-down-short::before{content:"\f124"}.bi-arrow-down-square-fill::before{content:"\f125"}.bi-arrow-down-square::before{content:"\f126"}.bi-arrow-down-up::before{content:"\f127"}.bi-arrow-down::before{content:"\f128"}.bi-arrow-left-circle-fill::before{content:"\f129"}.bi-arrow-left-circle::before{content:"\f12a"}.bi-arrow-left-right::before{content:"\f12b"}.bi-arrow-left-short::before{content:"\f12c"}.bi-arrow-left-square-fill::before{content:"\f12d"}.bi-arrow-left-square::before{content:"\f12e"}.bi-arrow-left::before{content:"\f12f"}.bi-arrow-repeat::before{content:"\f130"}.bi-arrow-return-left::before{content:"\f131"}.bi-arrow-return-right::before{content:"\f132"}.bi-arrow-right-circle-fill::before{content:"\f133"}.bi-arrow-right-circle::before{content:"\f134"}.bi-arrow-right-short::before{content:"\f135"}.bi-arrow-right-square-fill::before{content:"\f136"}.bi-arrow-right-square::before{content:"\f137"}.bi-arrow-right::before{content:"\f138"}.bi-arrow-up-circle-fill::before{content:"\f139"}.bi-arrow-up-circle::before{content:"\f13a"}.bi-arrow-up-left-circle-fill::before{content:"\f13b"}.bi-arrow-up-left-circle::before{content:"\f13c"}.bi-arrow-up-left-square-fill::before{content:"\f13d"}.bi-arrow-up-left-square::before{content:"\f13e"}.bi-arrow-up-left::before{content:"\f13f"}.bi-arrow-up-right-circle-fill::before{content:"\f140"}.bi-arrow-up-right-circle::before{content:"\f141"}.bi-arrow-up-right-square-fill::before{content:"\f142"}.bi-arrow-up-right-square::before{content:"\f143"}.bi-arrow-up-right::before{content:"\f144"}.bi-arrow-up-short::before{content:"\f145"}.bi-arrow-up-square-fill::before{content:"\f146"}.bi-arrow-up-square::before{content:"\f147"}.bi-arrow-up::before{content:"\f148"}.bi-arrows-angle-contract::before{content:"\f149"}.bi-arrows-angle-expand::before{content:"\f14a"}.bi-arrows-collapse::before{content:"\f14b"}.bi-arrows-expand::before{content:"\f14c"}.bi-arrows-fullscreen::before{content:"\f14d"}.bi-arrows-move::before{content:"\f14e"}.bi-aspect-ratio-fill::before{content:"\f14f"}.bi-aspect-ratio::before{content:"\f150"}.bi-asterisk::before{content:"\f151"}.bi-at::before{content:"\f152"}.bi-award-fill::before{content:"\f153"}.bi-award::before{content:"\f154"}.bi-back::before{content:"\f155"}.bi-backspace-fill::before{content:"\f156"}.bi-backspace-reverse-fill::before{content:"\f157"}.bi-backspace-reverse::before{content:"\f158"}.bi-backspace::before{content:"\f159"}.bi-badge-3d-fill::before{content:"\f15a"}.bi-badge-3d::before{content:"\f15b"}.bi-badge-4k-fill::before{content:"\f15c"}.bi-badge-4k::before{content:"\f15d"}.bi-badge-8k-fill::before{content:"\f15e"}.bi-badge-8k::before{content:"\f15f"}.bi-badge-ad-fill::before{content:"\f160"}.bi-badge-ad::before{content:"\f161"}.bi-badge-ar-fill::before{content:"\f162"}.bi-badge-ar::before{content:"\f163"}.bi-badge-cc-fill::before{content:"\f164"}.bi-badge-cc::before{content:"\f165"}.bi-badge-hd-fill::before{content:"\f166"}.bi-badge-hd::before{content:"\f167"}.bi-badge-tm-fill::before{content:"\f168"}.bi-badge-tm::before{content:"\f169"}.bi-badge-vo-fill::before{content:"\f16a"}.bi-badge-vo::before{content:"\f16b"}.bi-badge-vr-fill::before{content:"\f16c"}.bi-badge-vr::before{content:"\f16d"}.bi-badge-wc-fill::before{content:"\f16e"}.bi-badge-wc::before{content:"\f16f"}.bi-bag-check-fill::before{content:"\f170"}.bi-bag-check::before{content:"\f171"}.bi-bag-dash-fill::before{content:"\f172"}.bi-bag-dash::before{content:"\f173"}.bi-bag-fill::before{content:"\f174"}.bi-bag-plus-fill::before{content:"\f175"}.bi-bag-plus::before{content:"\f176"}.bi-bag-x-fill::before{content:"\f177"}.bi-bag-x::before{content:"\f178"}.bi-bag::before{content:"\f179"}.bi-bar-chart-fill::before{content:"\f17a"}.bi-bar-chart-line-fill::before{content:"\f17b"}.bi-bar-chart-line::before{content:"\f17c"}.bi-bar-chart-steps::before{content:"\f17d"}.bi-bar-chart::before{content:"\f17e"}.bi-basket-fill::before{content:"\f17f"}.bi-basket::before{content:"\f180"}.bi-basket2-fill::before{content:"\f181"}.bi-basket2::before{content:"\f182"}.bi-basket3-fill::before{content:"\f183"}.bi-basket3::before{content:"\f184"}.bi-battery-charging::before{content:"\f185"}.bi-battery-full::before{content:"\f186"}.bi-battery-half::before{content:"\f187"}.bi-battery::before{content:"\f188"}.bi-bell-fill::before{content:"\f189"}.bi-bell::before{content:"\f18a"}.bi-bezier::before{content:"\f18b"}.bi-bezier2::before{content:"\f18c"}.bi-bicycle::before{content:"\f18d"}.bi-binoculars-fill::before{content:"\f18e"}.bi-binoculars::before{content:"\f18f"}.bi-blockquote-left::before{content:"\f190"}.bi-blockquote-right::before{content:"\f191"}.bi-book-fill::before{content:"\f192"}.bi-book-half::before{content:"\f193"}.bi-book::before{content:"\f194"}.bi-bookmark-check-fill::before{content:"\f195"}.bi-bookmark-check::before{content:"\f196"}.bi-bookmark-dash-fill::before{content:"\f197"}.bi-bookmark-dash::before{content:"\f198"}.bi-bookmark-fill::before{content:"\f199"}.bi-bookmark-heart-fill::before{content:"\f19a"}.bi-bookmark-heart::before{content:"\f19b"}.bi-bookmark-plus-fill::before{content:"\f19c"}.bi-bookmark-plus::before{content:"\f19d"}.bi-bookmark-star-fill::before{content:"\f19e"}.bi-bookmark-star::before{content:"\f19f"}.bi-bookmark-x-fill::before{content:"\f1a0"}.bi-bookmark-x::before{content:"\f1a1"}.bi-bookmark::before{content:"\f1a2"}.bi-bookmarks-fill::before{content:"\f1a3"}.bi-bookmarks::before{content:"\f1a4"}.bi-bookshelf::before{content:"\f1a5"}.bi-bootstrap-fill::before{content:"\f1a6"}.bi-bootstrap-reboot::before{content:"\f1a7"}.bi-bootstrap::before{content:"\f1a8"}.bi-border-all::before{content:"\f1a9"}.bi-border-bottom::before{content:"\f1aa"}.bi-border-center::before{content:"\f1ab"}.bi-border-inner::before{content:"\f1ac"}.bi-border-left::before{content:"\f1ad"}.bi-border-middle::before{content:"\f1ae"}.bi-border-outer::before{content:"\f1af"}.bi-border-right::before{content:"\f1b0"}.bi-border-style::before{content:"\f1b1"}.bi-border-top::before{content:"\f1b2"}.bi-border-width::before{content:"\f1b3"}.bi-border::before{content:"\f1b4"}.bi-bounding-box-circles::before{content:"\f1b5"}.bi-bounding-box::before{content:"\f1b6"}.bi-box-arrow-down-left::before{content:"\f1b7"}.bi-box-arrow-down-right::before{content:"\f1b8"}.bi-box-arrow-down::before{content:"\f1b9"}.bi-box-arrow-in-down-left::before{content:"\f1ba"}.bi-box-arrow-in-down-right::before{content:"\f1bb"}.bi-box-arrow-in-down::before{content:"\f1bc"}.bi-box-arrow-in-left::before{content:"\f1bd"}.bi-box-arrow-in-right::before{content:"\f1be"}.bi-box-arrow-in-up-left::before{content:"\f1bf"}.bi-box-arrow-in-up-right::before{content:"\f1c0"}.bi-box-arrow-in-up::before{content:"\f1c1"}.bi-box-arrow-left::before{content:"\f1c2"}.bi-box-arrow-right::before{content:"\f1c3"}.bi-box-arrow-up-left::before{content:"\f1c4"}.bi-box-arrow-up-right::before{content:"\f1c5"}.bi-box-arrow-up::before{content:"\f1c6"}.bi-box-seam::before{content:"\f1c7"}.bi-box::before{content:"\f1c8"}.bi-braces::before{content:"\f1c9"}.bi-bricks::before{content:"\f1ca"}.bi-briefcase-fill::before{content:"\f1cb"}.bi-briefcase::before{content:"\f1cc"}.bi-brightness-alt-high-fill::before{content:"\f1cd"}.bi-brightness-alt-high::before{content:"\f1ce"}.bi-brightness-alt-low-fill::before{content:"\f1cf"}.bi-brightness-alt-low::before{content:"\f1d0"}.bi-brightness-high-fill::before{content:"\f1d1"}.bi-brightness-high::before{content:"\f1d2"}.bi-brightness-low-fill::before{content:"\f1d3"}.bi-brightness-low::before{content:"\f1d4"}.bi-broadcast-pin::before{content:"\f1d5"}.bi-broadcast::before{content:"\f1d6"}.bi-brush-fill::before{content:"\f1d7"}.bi-brush::before{content:"\f1d8"}.bi-bucket-fill::before{content:"\f1d9"}.bi-bucket::before{content:"\f1da"}.bi-bug-fill::before{content:"\f1db"}.bi-bug::before{content:"\f1dc"}.bi-building::before{content:"\f1dd"}.bi-bullseye::before{content:"\f1de"}.bi-calculator-fill::before{content:"\f1df"}.bi-calculator::before{content:"\f1e0"}.bi-calendar-check-fill::before{content:"\f1e1"}.bi-calendar-check::before{content:"\f1e2"}.bi-calendar-date-fill::before{content:"\f1e3"}.bi-calendar-date::before{content:"\f1e4"}.bi-calendar-day-fill::before{content:"\f1e5"}.bi-calendar-day::before{content:"\f1e6"}.bi-calendar-event-fill::before{content:"\f1e7"}.bi-calendar-event::before{content:"\f1e8"}.bi-calendar-fill::before{content:"\f1e9"}.bi-calendar-minus-fill::before{content:"\f1ea"}.bi-calendar-minus::before{content:"\f1eb"}.bi-calendar-month-fill::before{content:"\f1ec"}.bi-calendar-month::before{content:"\f1ed"}.bi-calendar-plus-fill::before{content:"\f1ee"}.bi-calendar-plus::before{content:"\f1ef"}.bi-calendar-range-fill::before{content:"\f1f0"}.bi-calendar-range::before{content:"\f1f1"}.bi-calendar-week-fill::before{content:"\f1f2"}.bi-calendar-week::before{content:"\f1f3"}.bi-calendar-x-fill::before{content:"\f1f4"}.bi-calendar-x::before{content:"\f1f5"}.bi-calendar::before{content:"\f1f6"}.bi-calendar2-check-fill::before{content:"\f1f7"}.bi-calendar2-check::before{content:"\f1f8"}.bi-calendar2-date-fill::before{content:"\f1f9"}.bi-calendar2-date::before{content:"\f1fa"}.bi-calendar2-day-fill::before{content:"\f1fb"}.bi-calendar2-day::before{content:"\f1fc"}.bi-calendar2-event-fill::before{content:"\f1fd"}.bi-calendar2-event::before{content:"\f1fe"}.bi-calendar2-fill::before{content:"\f1ff"}.bi-calendar2-minus-fill::before{content:"\f200"}.bi-calendar2-minus::before{content:"\f201"}.bi-calendar2-month-fill::before{content:"\f202"}.bi-calendar2-month::before{content:"\f203"}.bi-calendar2-plus-fill::before{content:"\f204"}.bi-calendar2-plus::before{content:"\f205"}.bi-calendar2-range-fill::before{content:"\f206"}.bi-calendar2-range::before{content:"\f207"}.bi-calendar2-week-fill::before{content:"\f208"}.bi-calendar2-week::before{content:"\f209"}.bi-calendar2-x-fill::before{content:"\f20a"}.bi-calendar2-x::before{content:"\f20b"}.bi-calendar2::before{content:"\f20c"}.bi-calendar3-event-fill::before{content:"\f20d"}.bi-calendar3-event::before{content:"\f20e"}.bi-calendar3-fill::before{content:"\f20f"}.bi-calendar3-range-fill::before{content:"\f210"}.bi-calendar3-range::before{content:"\f211"}.bi-calendar3-week-fill::before{content:"\f212"}.bi-calendar3-week::before{content:"\f213"}.bi-calendar3::before{content:"\f214"}.bi-calendar4-event::before{content:"\f215"}.bi-calendar4-range::before{content:"\f216"}.bi-calendar4-week::before{content:"\f217"}.bi-calendar4::before{content:"\f218"}.bi-camera-fill::before{content:"\f219"}.bi-camera-reels-fill::before{content:"\f21a"}.bi-camera-reels::before{content:"\f21b"}.bi-camera-video-fill::before{content:"\f21c"}.bi-camera-video-off-fill::before{content:"\f21d"}.bi-camera-video-off::before{content:"\f21e"}.bi-camera-video::before{content:"\f21f"}.bi-camera::before{content:"\f220"}.bi-camera2::before{content:"\f221"}.bi-capslock-fill::before{content:"\f222"}.bi-capslock::before{content:"\f223"}.bi-card-checklist::before{content:"\f224"}.bi-card-heading::before{content:"\f225"}.bi-card-image::before{content:"\f226"}.bi-card-list::before{content:"\f227"}.bi-card-text::before{content:"\f228"}.bi-caret-down-fill::before{content:"\f229"}.bi-caret-down-square-fill::before{content:"\f22a"}.bi-caret-down-square::before{content:"\f22b"}.bi-caret-down::before{content:"\f22c"}.bi-caret-left-fill::before{content:"\f22d"}.bi-caret-left-square-fill::before{content:"\f22e"}.bi-caret-left-square::before{content:"\f22f"}.bi-caret-left::before{content:"\f230"}.bi-caret-right-fill::before{content:"\f231"}.bi-caret-right-square-fill::before{content:"\f232"}.bi-caret-right-square::before{content:"\f233"}.bi-caret-right::before{content:"\f234"}.bi-caret-up-fill::before{content:"\f235"}.bi-caret-up-square-fill::before{content:"\f236"}.bi-caret-up-square::before{content:"\f237"}.bi-caret-up::before{content:"\f238"}.bi-cart-check-fill::before{content:"\f239"}.bi-cart-check::before{content:"\f23a"}.bi-cart-dash-fill::before{content:"\f23b"}.bi-cart-dash::before{content:"\f23c"}.bi-cart-fill::before{content:"\f23d"}.bi-cart-plus-fill::before{content:"\f23e"}.bi-cart-plus::before{content:"\f23f"}.bi-cart-x-fill::before{content:"\f240"}.bi-cart-x::before{content:"\f241"}.bi-cart::before{content:"\f242"}.bi-cart2::before{content:"\f243"}.bi-cart3::before{content:"\f244"}.bi-cart4::before{content:"\f245"}.bi-cash-stack::before{content:"\f246"}.bi-cash::before{content:"\f247"}.bi-cast::before{content:"\f248"}.bi-chat-dots-fill::before{content:"\f249"}.bi-chat-dots::before{content:"\f24a"}.bi-chat-fill::before{content:"\f24b"}.bi-chat-left-dots-fill::before{content:"\f24c"}.bi-chat-left-dots::before{content:"\f24d"}.bi-chat-left-fill::before{content:"\f24e"}.bi-chat-left-quote-fill::before{content:"\f24f"}.bi-chat-left-quote::before{content:"\f250"}.bi-chat-left-text-fill::before{content:"\f251"}.bi-chat-left-text::before{content:"\f252"}.bi-chat-left::before{content:"\f253"}.bi-chat-quote-fill::before{content:"\f254"}.bi-chat-quote::before{content:"\f255"}.bi-chat-right-dots-fill::before{content:"\f256"}.bi-chat-right-dots::before{content:"\f257"}.bi-chat-right-fill::before{content:"\f258"}.bi-chat-right-quote-fill::before{content:"\f259"}.bi-chat-right-quote::before{content:"\f25a"}.bi-chat-right-text-fill::before{content:"\f25b"}.bi-chat-right-text::before{content:"\f25c"}.bi-chat-right::before{content:"\f25d"}.bi-chat-square-dots-fill::before{content:"\f25e"}.bi-chat-square-dots::before{content:"\f25f"}.bi-chat-square-fill::before{content:"\f260"}.bi-chat-square-quote-fill::before{content:"\f261"}.bi-chat-square-quote::before{content:"\f262"}.bi-chat-square-text-fill::before{content:"\f263"}.bi-chat-square-text::before{content:"\f264"}.bi-chat-square::before{content:"\f265"}.bi-chat-text-fill::before{content:"\f266"}.bi-chat-text::before{content:"\f267"}.bi-chat::before{content:"\f268"}.bi-check-all::before{content:"\f269"}.bi-check-circle-fill::before{content:"\f26a"}.bi-check-circle::before{content:"\f26b"}.bi-check-square-fill::before{content:"\f26c"}.bi-check-square::before{content:"\f26d"}.bi-check::before{content:"\f26e"}.bi-check2-all::before{content:"\f26f"}.bi-check2-circle::before{content:"\f270"}.bi-check2-square::before{content:"\f271"}.bi-check2::before{content:"\f272"}.bi-chevron-bar-contract::before{content:"\f273"}.bi-chevron-bar-down::before{content:"\f274"}.bi-chevron-bar-expand::before{content:"\f275"}.bi-chevron-bar-left::before{content:"\f276"}.bi-chevron-bar-right::before{content:"\f277"}.bi-chevron-bar-up::before{content:"\f278"}.bi-chevron-compact-down::before{content:"\f279"}.bi-chevron-compact-left::before{content:"\f27a"}.bi-chevron-compact-right::before{content:"\f27b"}.bi-chevron-compact-up::before{content:"\f27c"}.bi-chevron-contract::before{content:"\f27d"}.bi-chevron-double-down::before{content:"\f27e"}.bi-chevron-double-left::before{content:"\f27f"}.bi-chevron-double-right::before{content:"\f280"}.bi-chevron-double-up::before{content:"\f281"}.bi-chevron-down::before{content:"\f282"}.bi-chevron-expand::before{content:"\f283"}.bi-chevron-left::before{content:"\f284"}.bi-chevron-right::before{content:"\f285"}.bi-chevron-up::before{content:"\f286"}.bi-circle-fill::before{content:"\f287"}.bi-circle-half::before{content:"\f288"}.bi-circle-square::before{content:"\f289"}.bi-circle::before{content:"\f28a"}.bi-clipboard-check::before{content:"\f28b"}.bi-clipboard-data::before{content:"\f28c"}.bi-clipboard-minus::before{content:"\f28d"}.bi-clipboard-plus::before{content:"\f28e"}.bi-clipboard-x::before{content:"\f28f"}.bi-clipboard::before{content:"\f290"}.bi-clock-fill::before{content:"\f291"}.bi-clock-history::before{content:"\f292"}.bi-clock::before{content:"\f293"}.bi-cloud-arrow-down-fill::before{content:"\f294"}.bi-cloud-arrow-down::before{content:"\f295"}.bi-cloud-arrow-up-fill::before{content:"\f296"}.bi-cloud-arrow-up::before{content:"\f297"}.bi-cloud-check-fill::before{content:"\f298"}.bi-cloud-check::before{content:"\f299"}.bi-cloud-download-fill::before{content:"\f29a"}.bi-cloud-download::before{content:"\f29b"}.bi-cloud-drizzle-fill::before{content:"\f29c"}.bi-cloud-drizzle::before{content:"\f29d"}.bi-cloud-fill::before{content:"\f29e"}.bi-cloud-fog-fill::before{content:"\f29f"}.bi-cloud-fog::before{content:"\f2a0"}.bi-cloud-fog2-fill::before{content:"\f2a1"}.bi-cloud-fog2::before{content:"\f2a2"}.bi-cloud-hail-fill::before{content:"\f2a3"}.bi-cloud-hail::before{content:"\f2a4"}.bi-cloud-haze-fill::before{content:"\f2a6"}.bi-cloud-haze::before{content:"\f2a7"}.bi-cloud-haze2-fill::before{content:"\f2a8"}.bi-cloud-lightning-fill::before{content:"\f2a9"}.bi-cloud-lightning-rain-fill::before{content:"\f2aa"}.bi-cloud-lightning-rain::before{content:"\f2ab"}.bi-cloud-lightning::before{content:"\f2ac"}.bi-cloud-minus-fill::before{content:"\f2ad"}.bi-cloud-minus::before{content:"\f2ae"}.bi-cloud-moon-fill::before{content:"\f2af"}.bi-cloud-moon::before{content:"\f2b0"}.bi-cloud-plus-fill::before{content:"\f2b1"}.bi-cloud-plus::before{content:"\f2b2"}.bi-cloud-rain-fill::before{content:"\f2b3"}.bi-cloud-rain-heavy-fill::before{content:"\f2b4"}.bi-cloud-rain-heavy::before{content:"\f2b5"}.bi-cloud-rain::before{content:"\f2b6"}.bi-cloud-slash-fill::before{content:"\f2b7"}.bi-cloud-slash::before{content:"\f2b8"}.bi-cloud-sleet-fill::before{content:"\f2b9"}.bi-cloud-sleet::before{content:"\f2ba"}.bi-cloud-snow-fill::before{content:"\f2bb"}.bi-cloud-snow::before{content:"\f2bc"}.bi-cloud-sun-fill::before{content:"\f2bd"}.bi-cloud-sun::before{content:"\f2be"}.bi-cloud-upload-fill::before{content:"\f2bf"}.bi-cloud-upload::before{content:"\f2c0"}.bi-cloud::before{content:"\f2c1"}.bi-clouds-fill::before{content:"\f2c2"}.bi-clouds::before{content:"\f2c3"}.bi-cloudy-fill::before{content:"\f2c4"}.bi-cloudy::before{content:"\f2c5"}.bi-code-slash::before{content:"\f2c6"}.bi-code-square::before{content:"\f2c7"}.bi-code::before{content:"\f2c8"}.bi-collection-fill::before{content:"\f2c9"}.bi-collection-play-fill::before{content:"\f2ca"}.bi-collection-play::before{content:"\f2cb"}.bi-collection::before{content:"\f2cc"}.bi-columns-gap::before{content:"\f2cd"}.bi-columns::before{content:"\f2ce"}.bi-command::before{content:"\f2cf"}.bi-compass-fill::before{content:"\f2d0"}.bi-compass::before{content:"\f2d1"}.bi-cone-striped::before{content:"\f2d2"}.bi-cone::before{content:"\f2d3"}.bi-controller::before{content:"\f2d4"}.bi-cpu-fill::before{content:"\f2d5"}.bi-cpu::before{content:"\f2d6"}.bi-credit-card-2-back-fill::before{content:"\f2d7"}.bi-credit-card-2-back::before{content:"\f2d8"}.bi-credit-card-2-front-fill::before{content:"\f2d9"}.bi-credit-card-2-front::before{content:"\f2da"}.bi-credit-card-fill::before{content:"\f2db"}.bi-credit-card::before{content:"\f2dc"}.bi-crop::before{content:"\f2dd"}.bi-cup-fill::before{content:"\f2de"}.bi-cup-straw::before{content:"\f2df"}.bi-cup::before{content:"\f2e0"}.bi-cursor-fill::before{content:"\f2e1"}.bi-cursor-text::before{content:"\f2e2"}.bi-cursor::before{content:"\f2e3"}.bi-dash-circle-dotted::before{content:"\f2e4"}.bi-dash-circle-fill::before{content:"\f2e5"}.bi-dash-circle::before{content:"\f2e6"}.bi-dash-square-dotted::before{content:"\f2e7"}.bi-dash-square-fill::before{content:"\f2e8"}.bi-dash-square::before{content:"\f2e9"}.bi-dash::before{content:"\f2ea"}.bi-diagram-2-fill::before{content:"\f2eb"}.bi-diagram-2::before{content:"\f2ec"}.bi-diagram-3-fill::before{content:"\f2ed"}.bi-diagram-3::before{content:"\f2ee"}.bi-diamond-fill::before{content:"\f2ef"}.bi-diamond-half::before{content:"\f2f0"}.bi-diamond::before{content:"\f2f1"}.bi-dice-1-fill::before{content:"\f2f2"}.bi-dice-1::before{content:"\f2f3"}.bi-dice-2-fill::before{content:"\f2f4"}.bi-dice-2::before{content:"\f2f5"}.bi-dice-3-fill::before{content:"\f2f6"}.bi-dice-3::before{content:"\f2f7"}.bi-dice-4-fill::before{content:"\f2f8"}.bi-dice-4::before{content:"\f2f9"}.bi-dice-5-fill::before{content:"\f2fa"}.bi-dice-5::before{content:"\f2fb"}.bi-dice-6-fill::before{content:"\f2fc"}.bi-dice-6::before{content:"\f2fd"}.bi-disc-fill::before{content:"\f2fe"}.bi-disc::before{content:"\f2ff"}.bi-discord::before{content:"\f300"}.bi-display-fill::before{content:"\f301"}.bi-display::before{content:"\f302"}.bi-distribute-horizontal::before{content:"\f303"}.bi-distribute-vertical::before{content:"\f304"}.bi-door-closed-fill::before{content:"\f305"}.bi-door-closed::before{content:"\f306"}.bi-door-open-fill::before{content:"\f307"}.bi-door-open::before{content:"\f308"}.bi-dot::before{content:"\f309"}.bi-download::before{content:"\f30a"}.bi-droplet-fill::before{content:"\f30b"}.bi-droplet-half::before{content:"\f30c"}.bi-droplet::before{content:"\f30d"}.bi-earbuds::before{content:"\f30e"}.bi-easel-fill::before{content:"\f30f"}.bi-easel::before{content:"\f310"}.bi-egg-fill::before{content:"\f311"}.bi-egg-fried::before{content:"\f312"}.bi-egg::before{content:"\f313"}.bi-eject-fill::before{content:"\f314"}.bi-eject::before{content:"\f315"}.bi-emoji-angry-fill::before{content:"\f316"}.bi-emoji-angry::before{content:"\f317"}.bi-emoji-dizzy-fill::before{content:"\f318"}.bi-emoji-dizzy::before{content:"\f319"}.bi-emoji-expressionless-fill::before{content:"\f31a"}.bi-emoji-expressionless::before{content:"\f31b"}.bi-emoji-frown-fill::before{content:"\f31c"}.bi-emoji-frown::before{content:"\f31d"}.bi-emoji-heart-eyes-fill::before{content:"\f31e"}.bi-emoji-heart-eyes::before{content:"\f31f"}.bi-emoji-laughing-fill::before{content:"\f320"}.bi-emoji-laughing::before{content:"\f321"}.bi-emoji-neutral-fill::before{content:"\f322"}.bi-emoji-neutral::before{content:"\f323"}.bi-emoji-smile-fill::before{content:"\f324"}.bi-emoji-smile-upside-down-fill::before{content:"\f325"}.bi-emoji-smile-upside-down::before{content:"\f326"}.bi-emoji-smile::before{content:"\f327"}.bi-emoji-sunglasses-fill::before{content:"\f328"}.bi-emoji-sunglasses::before{content:"\f329"}.bi-emoji-wink-fill::before{content:"\f32a"}.bi-emoji-wink::before{content:"\f32b"}.bi-envelope-fill::before{content:"\f32c"}.bi-envelope-open-fill::before{content:"\f32d"}.bi-envelope-open::before{content:"\f32e"}.bi-envelope::before{content:"\f32f"}.bi-eraser-fill::before{content:"\f330"}.bi-eraser::before{content:"\f331"}.bi-exclamation-circle-fill::before{content:"\f332"}.bi-exclamation-circle::before{content:"\f333"}.bi-exclamation-diamond-fill::before{content:"\f334"}.bi-exclamation-diamond::before{content:"\f335"}.bi-exclamation-octagon-fill::before{content:"\f336"}.bi-exclamation-octagon::before{content:"\f337"}.bi-exclamation-square-fill::before{content:"\f338"}.bi-exclamation-square::before{content:"\f339"}.bi-exclamation-triangle-fill::before{content:"\f33a"}.bi-exclamation-triangle::before{content:"\f33b"}.bi-exclamation::before{content:"\f33c"}.bi-exclude::before{content:"\f33d"}.bi-eye-fill::before{content:"\f33e"}.bi-eye-slash-fill::before{content:"\f33f"}.bi-eye-slash::before{content:"\f340"}.bi-eye::before{content:"\f341"}.bi-eyedropper::before{content:"\f342"}.bi-eyeglasses::before{content:"\f343"}.bi-facebook::before{content:"\f344"}.bi-file-arrow-down-fill::before{content:"\f345"}.bi-file-arrow-down::before{content:"\f346"}.bi-file-arrow-up-fill::before{content:"\f347"}.bi-file-arrow-up::before{content:"\f348"}.bi-file-bar-graph-fill::before{content:"\f349"}.bi-file-bar-graph::before{content:"\f34a"}.bi-file-binary-fill::before{content:"\f34b"}.bi-file-binary::before{content:"\f34c"}.bi-file-break-fill::before{content:"\f34d"}.bi-file-break::before{content:"\f34e"}.bi-file-check-fill::before{content:"\f34f"}.bi-file-check::before{content:"\f350"}.bi-file-code-fill::before{content:"\f351"}.bi-file-code::before{content:"\f352"}.bi-file-diff-fill::before{content:"\f353"}.bi-file-diff::before{content:"\f354"}.bi-file-earmark-arrow-down-fill::before{content:"\f355"}.bi-file-earmark-arrow-down::before{content:"\f356"}.bi-file-earmark-arrow-up-fill::before{content:"\f357"}.bi-file-earmark-arrow-up::before{content:"\f358"}.bi-file-earmark-bar-graph-fill::before{content:"\f359"}.bi-file-earmark-bar-graph::before{content:"\f35a"}.bi-file-earmark-binary-fill::before{content:"\f35b"}.bi-file-earmark-binary::before{content:"\f35c"}.bi-file-earmark-break-fill::before{content:"\f35d"}.bi-file-earmark-break::before{content:"\f35e"}.bi-file-earmark-check-fill::before{content:"\f35f"}.bi-file-earmark-check::before{content:"\f360"}.bi-file-earmark-code-fill::before{content:"\f361"}.bi-file-earmark-code::before{content:"\f362"}.bi-file-earmark-diff-fill::before{content:"\f363"}.bi-file-earmark-diff::before{content:"\f364"}.bi-file-earmark-easel-fill::before{content:"\f365"}.bi-file-earmark-easel::before{content:"\f366"}.bi-file-earmark-excel-fill::before{content:"\f367"}.bi-file-earmark-excel::before{content:"\f368"}.bi-file-earmark-fill::before{content:"\f369"}.bi-file-earmark-font-fill::before{content:"\f36a"}.bi-file-earmark-font::before{content:"\f36b"}.bi-file-earmark-image-fill::before{content:"\f36c"}.bi-file-earmark-image::before{content:"\f36d"}.bi-file-earmark-lock-fill::before{content:"\f36e"}.bi-file-earmark-lock::before{content:"\f36f"}.bi-file-earmark-lock2-fill::before{content:"\f370"}.bi-file-earmark-lock2::before{content:"\f371"}.bi-file-earmark-medical-fill::before{content:"\f372"}.bi-file-earmark-medical::before{content:"\f373"}.bi-file-earmark-minus-fill::before{content:"\f374"}.bi-file-earmark-minus::before{content:"\f375"}.bi-file-earmark-music-fill::before{content:"\f376"}.bi-file-earmark-music::before{content:"\f377"}.bi-file-earmark-person-fill::before{content:"\f378"}.bi-file-earmark-person::before{content:"\f379"}.bi-file-earmark-play-fill::before{content:"\f37a"}.bi-file-earmark-play::before{content:"\f37b"}.bi-file-earmark-plus-fill::before{content:"\f37c"}.bi-file-earmark-plus::before{content:"\f37d"}.bi-file-earmark-post-fill::before{content:"\f37e"}.bi-file-earmark-post::before{content:"\f37f"}.bi-file-earmark-ppt-fill::before{content:"\f380"}.bi-file-earmark-ppt::before{content:"\f381"}.bi-file-earmark-richtext-fill::before{content:"\f382"}.bi-file-earmark-richtext::before{content:"\f383"}.bi-file-earmark-ruled-fill::before{content:"\f384"}.bi-file-earmark-ruled::before{content:"\f385"}.bi-file-earmark-slides-fill::before{content:"\f386"}.bi-file-earmark-slides::before{content:"\f387"}.bi-file-earmark-spreadsheet-fill::before{content:"\f388"}.bi-file-earmark-spreadsheet::before{content:"\f389"}.bi-file-earmark-text-fill::before{content:"\f38a"}.bi-file-earmark-text::before{content:"\f38b"}.bi-file-earmark-word-fill::before{content:"\f38c"}.bi-file-earmark-word::before{content:"\f38d"}.bi-file-earmark-x-fill::before{content:"\f38e"}.bi-file-earmark-x::before{content:"\f38f"}.bi-file-earmark-zip-fill::before{content:"\f390"}.bi-file-earmark-zip::before{content:"\f391"}.bi-file-earmark::before{content:"\f392"}.bi-file-easel-fill::before{content:"\f393"}.bi-file-easel::before{content:"\f394"}.bi-file-excel-fill::before{content:"\f395"}.bi-file-excel::before{content:"\f396"}.bi-file-fill::before{content:"\f397"}.bi-file-font-fill::before{content:"\f398"}.bi-file-font::before{content:"\f399"}.bi-file-image-fill::before{content:"\f39a"}.bi-file-image::before{content:"\f39b"}.bi-file-lock-fill::before{content:"\f39c"}.bi-file-lock::before{content:"\f39d"}.bi-file-lock2-fill::before{content:"\f39e"}.bi-file-lock2::before{content:"\f39f"}.bi-file-medical-fill::before{content:"\f3a0"}.bi-file-medical::before{content:"\f3a1"}.bi-file-minus-fill::before{content:"\f3a2"}.bi-file-minus::before{content:"\f3a3"}.bi-file-music-fill::before{content:"\f3a4"}.bi-file-music::before{content:"\f3a5"}.bi-file-person-fill::before{content:"\f3a6"}.bi-file-person::before{content:"\f3a7"}.bi-file-play-fill::before{content:"\f3a8"}.bi-file-play::before{content:"\f3a9"}.bi-file-plus-fill::before{content:"\f3aa"}.bi-file-plus::before{content:"\f3ab"}.bi-file-post-fill::before{content:"\f3ac"}.bi-file-post::before{content:"\f3ad"}.bi-file-ppt-fill::before{content:"\f3ae"}.bi-file-ppt::before{content:"\f3af"}.bi-file-richtext-fill::before{content:"\f3b0"}.bi-file-richtext::before{content:"\f3b1"}.bi-file-ruled-fill::before{content:"\f3b2"}.bi-file-ruled::before{content:"\f3b3"}.bi-file-slides-fill::before{content:"\f3b4"}.bi-file-slides::before{content:"\f3b5"}.bi-file-spreadsheet-fill::before{content:"\f3b6"}.bi-file-spreadsheet::before{content:"\f3b7"}.bi-file-text-fill::before{content:"\f3b8"}.bi-file-text::before{content:"\f3b9"}.bi-file-word-fill::before{content:"\f3ba"}.bi-file-word::before{content:"\f3bb"}.bi-file-x-fill::before{content:"\f3bc"}.bi-file-x::before{content:"\f3bd"}.bi-file-zip-fill::before{content:"\f3be"}.bi-file-zip::before{content:"\f3bf"}.bi-file::before{content:"\f3c0"}.bi-files-alt::before{content:"\f3c1"}.bi-files::before{content:"\f3c2"}.bi-film::before{content:"\f3c3"}.bi-filter-circle-fill::before{content:"\f3c4"}.bi-filter-circle::before{content:"\f3c5"}.bi-filter-left::before{content:"\f3c6"}.bi-filter-right::before{content:"\f3c7"}.bi-filter-square-fill::before{content:"\f3c8"}.bi-filter-square::before{content:"\f3c9"}.bi-filter::before{content:"\f3ca"}.bi-flag-fill::before{content:"\f3cb"}.bi-flag::before{content:"\f3cc"}.bi-flower1::before{content:"\f3cd"}.bi-flower2::before{content:"\f3ce"}.bi-flower3::before{content:"\f3cf"}.bi-folder-check::before{content:"\f3d0"}.bi-folder-fill::before{content:"\f3d1"}.bi-folder-minus::before{content:"\f3d2"}.bi-folder-plus::before{content:"\f3d3"}.bi-folder-symlink-fill::before{content:"\f3d4"}.bi-folder-symlink::before{content:"\f3d5"}.bi-folder-x::before{content:"\f3d6"}.bi-folder::before{content:"\f3d7"}.bi-folder2-open::before{content:"\f3d8"}.bi-folder2::before{content:"\f3d9"}.bi-fonts::before{content:"\f3da"}.bi-forward-fill::before{content:"\f3db"}.bi-forward::before{content:"\f3dc"}.bi-front::before{content:"\f3dd"}.bi-fullscreen-exit::before{content:"\f3de"}.bi-fullscreen::before{content:"\f3df"}.bi-funnel-fill::before{content:"\f3e0"}.bi-funnel::before{content:"\f3e1"}.bi-gear-fill::before{content:"\f3e2"}.bi-gear-wide-connected::before{content:"\f3e3"}.bi-gear-wide::before{content:"\f3e4"}.bi-gear::before{content:"\f3e5"}.bi-gem::before{content:"\f3e6"}.bi-geo-alt-fill::before{content:"\f3e7"}.bi-geo-alt::before{content:"\f3e8"}.bi-geo-fill::before{content:"\f3e9"}.bi-geo::before{content:"\f3ea"}.bi-gift-fill::before{content:"\f3eb"}.bi-gift::before{content:"\f3ec"}.bi-github::before{content:"\f3ed"}.bi-globe::before{content:"\f3ee"}.bi-globe2::before{content:"\f3ef"}.bi-google::before{content:"\f3f0"}.bi-graph-down::before{content:"\f3f1"}.bi-graph-up::before{content:"\f3f2"}.bi-grid-1x2-fill::before{content:"\f3f3"}.bi-grid-1x2::before{content:"\f3f4"}.bi-grid-3x2-gap-fill::before{content:"\f3f5"}.bi-grid-3x2-gap::before{content:"\f3f6"}.bi-grid-3x2::before{content:"\f3f7"}.bi-grid-3x3-gap-fill::before{content:"\f3f8"}.bi-grid-3x3-gap::before{content:"\f3f9"}.bi-grid-3x3::before{content:"\f3fa"}.bi-grid-fill::before{content:"\f3fb"}.bi-grid::before{content:"\f3fc"}.bi-grip-horizontal::before{content:"\f3fd"}.bi-grip-vertical::before{content:"\f3fe"}.bi-hammer::before{content:"\f3ff"}.bi-hand-index-fill::before{content:"\f400"}.bi-hand-index-thumb-fill::before{content:"\f401"}.bi-hand-index-thumb::before{content:"\f402"}.bi-hand-index::before{content:"\f403"}.bi-hand-thumbs-down-fill::before{content:"\f404"}.bi-hand-thumbs-down::before{content:"\f405"}.bi-hand-thumbs-up-fill::before{content:"\f406"}.bi-hand-thumbs-up::before{content:"\f407"}.bi-handbag-fill::before{content:"\f408"}.bi-handbag::before{content:"\f409"}.bi-hash::before{content:"\f40a"}.bi-hdd-fill::before{content:"\f40b"}.bi-hdd-network-fill::before{content:"\f40c"}.bi-hdd-network::before{content:"\f40d"}.bi-hdd-rack-fill::before{content:"\f40e"}.bi-hdd-rack::before{content:"\f40f"}.bi-hdd-stack-fill::before{content:"\f410"}.bi-hdd-stack::before{content:"\f411"}.bi-hdd::before{content:"\f412"}.bi-headphones::before{content:"\f413"}.bi-headset::before{content:"\f414"}.bi-heart-fill::before{content:"\f415"}.bi-heart-half::before{content:"\f416"}.bi-heart::before{content:"\f417"}.bi-heptagon-fill::before{content:"\f418"}.bi-heptagon-half::before{content:"\f419"}.bi-heptagon::before{content:"\f41a"}.bi-hexagon-fill::before{content:"\f41b"}.bi-hexagon-half::before{content:"\f41c"}.bi-hexagon::before{content:"\f41d"}.bi-hourglass-bottom::before{content:"\f41e"}.bi-hourglass-split::before{content:"\f41f"}.bi-hourglass-top::before{content:"\f420"}.bi-hourglass::before{content:"\f421"}.bi-house-door-fill::before{content:"\f422"}.bi-house-door::before{content:"\f423"}.bi-house-fill::before{content:"\f424"}.bi-house::before{content:"\f425"}.bi-hr::before{content:"\f426"}.bi-hurricane::before{content:"\f427"}.bi-image-alt::before{content:"\f428"}.bi-image-fill::before{content:"\f429"}.bi-image::before{content:"\f42a"}.bi-images::before{content:"\f42b"}.bi-inbox-fill::before{content:"\f42c"}.bi-inbox::before{content:"\f42d"}.bi-inboxes-fill::before{content:"\f42e"}.bi-inboxes::before{content:"\f42f"}.bi-info-circle-fill::before{content:"\f430"}.bi-info-circle::before{content:"\f431"}.bi-info-square-fill::before{content:"\f432"}.bi-info-square::before{content:"\f433"}.bi-info::before{content:"\f434"}.bi-input-cursor-text::before{content:"\f435"}.bi-input-cursor::before{content:"\f436"}.bi-instagram::before{content:"\f437"}.bi-intersect::before{content:"\f438"}.bi-journal-album::before{content:"\f439"}.bi-journal-arrow-down::before{content:"\f43a"}.bi-journal-arrow-up::before{content:"\f43b"}.bi-journal-bookmark-fill::before{content:"\f43c"}.bi-journal-bookmark::before{content:"\f43d"}.bi-journal-check::before{content:"\f43e"}.bi-journal-code::before{content:"\f43f"}.bi-journal-medical::before{content:"\f440"}.bi-journal-minus::before{content:"\f441"}.bi-journal-plus::before{content:"\f442"}.bi-journal-richtext::before{content:"\f443"}.bi-journal-text::before{content:"\f444"}.bi-journal-x::before{content:"\f445"}.bi-journal::before{content:"\f446"}.bi-journals::before{content:"\f447"}.bi-joystick::before{content:"\f448"}.bi-justify-left::before{content:"\f449"}.bi-justify-right::before{content:"\f44a"}.bi-justify::before{content:"\f44b"}.bi-kanban-fill::before{content:"\f44c"}.bi-kanban::before{content:"\f44d"}.bi-key-fill::before{content:"\f44e"}.bi-key::before{content:"\f44f"}.bi-keyboard-fill::before{content:"\f450"}.bi-keyboard::before{content:"\f451"}.bi-ladder::before{content:"\f452"}.bi-lamp-fill::before{content:"\f453"}.bi-lamp::before{content:"\f454"}.bi-laptop-fill::before{content:"\f455"}.bi-laptop::before{content:"\f456"}.bi-layer-backward::before{content:"\f457"}.bi-layer-forward::before{content:"\f458"}.bi-layers-fill::before{content:"\f459"}.bi-layers-half::before{content:"\f45a"}.bi-layers::before{content:"\f45b"}.bi-layout-sidebar-inset-reverse::before{content:"\f45c"}.bi-layout-sidebar-inset::before{content:"\f45d"}.bi-layout-sidebar-reverse::before{content:"\f45e"}.bi-layout-sidebar::before{content:"\f45f"}.bi-layout-split::before{content:"\f460"}.bi-layout-text-sidebar-reverse::before{content:"\f461"}.bi-layout-text-sidebar::before{content:"\f462"}.bi-layout-text-window-reverse::before{content:"\f463"}.bi-layout-text-window::before{content:"\f464"}.bi-layout-three-columns::before{content:"\f465"}.bi-layout-wtf::before{content:"\f466"}.bi-life-preserver::before{content:"\f467"}.bi-lightbulb-fill::before{content:"\f468"}.bi-lightbulb-off-fill::before{content:"\f469"}.bi-lightbulb-off::before{content:"\f46a"}.bi-lightbulb::before{content:"\f46b"}.bi-lightning-charge-fill::before{content:"\f46c"}.bi-lightning-charge::before{content:"\f46d"}.bi-lightning-fill::before{content:"\f46e"}.bi-lightning::before{content:"\f46f"}.bi-link-45deg::before{content:"\f470"}.bi-link::before{content:"\f471"}.bi-linkedin::before{content:"\f472"}.bi-list-check::before{content:"\f473"}.bi-list-nested::before{content:"\f474"}.bi-list-ol::before{content:"\f475"}.bi-list-stars::before{content:"\f476"}.bi-list-task::before{content:"\f477"}.bi-list-ul::before{content:"\f478"}.bi-list::before{content:"\f479"}.bi-lock-fill::before{content:"\f47a"}.bi-lock::before{content:"\f47b"}.bi-mailbox::before{content:"\f47c"}.bi-mailbox2::before{content:"\f47d"}.bi-map-fill::before{content:"\f47e"}.bi-map::before{content:"\f47f"}.bi-markdown-fill::before{content:"\f480"}.bi-markdown::before{content:"\f481"}.bi-mask::before{content:"\f482"}.bi-megaphone-fill::before{content:"\f483"}.bi-megaphone::before{content:"\f484"}.bi-menu-app-fill::before{content:"\f485"}.bi-menu-app::before{content:"\f486"}.bi-menu-button-fill::before{content:"\f487"}.bi-menu-button-wide-fill::before{content:"\f488"}.bi-menu-button-wide::before{content:"\f489"}.bi-menu-button::before{content:"\f48a"}.bi-menu-down::before{content:"\f48b"}.bi-menu-up::before{content:"\f48c"}.bi-mic-fill::before{content:"\f48d"}.bi-mic-mute-fill::before{content:"\f48e"}.bi-mic-mute::before{content:"\f48f"}.bi-mic::before{content:"\f490"}.bi-minecart-loaded::before{content:"\f491"}.bi-minecart::before{content:"\f492"}.bi-moisture::before{content:"\f493"}.bi-moon-fill::before{content:"\f494"}.bi-moon-stars-fill::before{content:"\f495"}.bi-moon-stars::before{content:"\f496"}.bi-moon::before{content:"\f497"}.bi-mouse-fill::before{content:"\f498"}.bi-mouse::before{content:"\f499"}.bi-mouse2-fill::before{content:"\f49a"}.bi-mouse2::before{content:"\f49b"}.bi-mouse3-fill::before{content:"\f49c"}.bi-mouse3::before{content:"\f49d"}.bi-music-note-beamed::before{content:"\f49e"}.bi-music-note-list::before{content:"\f49f"}.bi-music-note::before{content:"\f4a0"}.bi-music-player-fill::before{content:"\f4a1"}.bi-music-player::before{content:"\f4a2"}.bi-newspaper::before{content:"\f4a3"}.bi-node-minus-fill::before{content:"\f4a4"}.bi-node-minus::before{content:"\f4a5"}.bi-node-plus-fill::before{content:"\f4a6"}.bi-node-plus::before{content:"\f4a7"}.bi-nut-fill::before{content:"\f4a8"}.bi-nut::before{content:"\f4a9"}.bi-octagon-fill::before{content:"\f4aa"}.bi-octagon-half::before{content:"\f4ab"}.bi-octagon::before{content:"\f4ac"}.bi-option::before{content:"\f4ad"}.bi-outlet::before{content:"\f4ae"}.bi-paint-bucket::before{content:"\f4af"}.bi-palette-fill::before{content:"\f4b0"}.bi-palette::before{content:"\f4b1"}.bi-palette2::before{content:"\f4b2"}.bi-paperclip::before{content:"\f4b3"}.bi-paragraph::before{content:"\f4b4"}.bi-patch-check-fill::before{content:"\f4b5"}.bi-patch-check::before{content:"\f4b6"}.bi-patch-exclamation-fill::before{content:"\f4b7"}.bi-patch-exclamation::before{content:"\f4b8"}.bi-patch-minus-fill::before{content:"\f4b9"}.bi-patch-minus::before{content:"\f4ba"}.bi-patch-plus-fill::before{content:"\f4bb"}.bi-patch-plus::before{content:"\f4bc"}.bi-patch-question-fill::before{content:"\f4bd"}.bi-patch-question::before{content:"\f4be"}.bi-pause-btn-fill::before{content:"\f4bf"}.bi-pause-btn::before{content:"\f4c0"}.bi-pause-circle-fill::before{content:"\f4c1"}.bi-pause-circle::before{content:"\f4c2"}.bi-pause-fill::before{content:"\f4c3"}.bi-pause::before{content:"\f4c4"}.bi-peace-fill::before{content:"\f4c5"}.bi-peace::before{content:"\f4c6"}.bi-pen-fill::before{content:"\f4c7"}.bi-pen::before{content:"\f4c8"}.bi-pencil-fill::before{content:"\f4c9"}.bi-pencil-square::before{content:"\f4ca"}.bi-pencil::before{content:"\f4cb"}.bi-pentagon-fill::before{content:"\f4cc"}.bi-pentagon-half::before{content:"\f4cd"}.bi-pentagon::before{content:"\f4ce"}.bi-people-fill::before{content:"\f4cf"}.bi-people::before{content:"\f4d0"}.bi-percent::before{content:"\f4d1"}.bi-person-badge-fill::before{content:"\f4d2"}.bi-person-badge::before{content:"\f4d3"}.bi-person-bounding-box::before{content:"\f4d4"}.bi-person-check-fill::before{content:"\f4d5"}.bi-person-check::before{content:"\f4d6"}.bi-person-circle::before{content:"\f4d7"}.bi-person-dash-fill::before{content:"\f4d8"}.bi-person-dash::before{content:"\f4d9"}.bi-person-fill::before{content:"\f4da"}.bi-person-lines-fill::before{content:"\f4db"}.bi-person-plus-fill::before{content:"\f4dc"}.bi-person-plus::before{content:"\f4dd"}.bi-person-square::before{content:"\f4de"}.bi-person-x-fill::before{content:"\f4df"}.bi-person-x::before{content:"\f4e0"}.bi-person::before{content:"\f4e1"}.bi-phone-fill::before{content:"\f4e2"}.bi-phone-landscape-fill::before{content:"\f4e3"}.bi-phone-landscape::before{content:"\f4e4"}.bi-phone-vibrate-fill::before{content:"\f4e5"}.bi-phone-vibrate::before{content:"\f4e6"}.bi-phone::before{content:"\f4e7"}.bi-pie-chart-fill::before{content:"\f4e8"}.bi-pie-chart::before{content:"\f4e9"}.bi-pin-angle-fill::before{content:"\f4ea"}.bi-pin-angle::before{content:"\f4eb"}.bi-pin-fill::before{content:"\f4ec"}.bi-pin::before{content:"\f4ed"}.bi-pip-fill::before{content:"\f4ee"}.bi-pip::before{content:"\f4ef"}.bi-play-btn-fill::before{content:"\f4f0"}.bi-play-btn::before{content:"\f4f1"}.bi-play-circle-fill::before{content:"\f4f2"}.bi-play-circle::before{content:"\f4f3"}.bi-play-fill::before{content:"\f4f4"}.bi-play::before{content:"\f4f5"}.bi-plug-fill::before{content:"\f4f6"}.bi-plug::before{content:"\f4f7"}.bi-plus-circle-dotted::before{content:"\f4f8"}.bi-plus-circle-fill::before{content:"\f4f9"}.bi-plus-circle::before{content:"\f4fa"}.bi-plus-square-dotted::before{content:"\f4fb"}.bi-plus-square-fill::before{content:"\f4fc"}.bi-plus-square::before{content:"\f4fd"}.bi-plus::before{content:"\f4fe"}.bi-power::before{content:"\f4ff"}.bi-printer-fill::before{content:"\f500"}.bi-printer::before{content:"\f501"}.bi-puzzle-fill::before{content:"\f502"}.bi-puzzle::before{content:"\f503"}.bi-question-circle-fill::before{content:"\f504"}.bi-question-circle::before{content:"\f505"}.bi-question-diamond-fill::before{content:"\f506"}.bi-question-diamond::before{content:"\f507"}.bi-question-octagon-fill::before{content:"\f508"}.bi-question-octagon::before{content:"\f509"}.bi-question-square-fill::before{content:"\f50a"}.bi-question-square::before{content:"\f50b"}.bi-question::before{content:"\f50c"}.bi-rainbow::before{content:"\f50d"}.bi-receipt-cutoff::before{content:"\f50e"}.bi-receipt::before{content:"\f50f"}.bi-reception-0::before{content:"\f510"}.bi-reception-1::before{content:"\f511"}.bi-reception-2::before{content:"\f512"}.bi-reception-3::before{content:"\f513"}.bi-reception-4::before{content:"\f514"}.bi-record-btn-fill::before{content:"\f515"}.bi-record-btn::before{content:"\f516"}.bi-record-circle-fill::before{content:"\f517"}.bi-record-circle::before{content:"\f518"}.bi-record-fill::before{content:"\f519"}.bi-record::before{content:"\f51a"}.bi-record2-fill::before{content:"\f51b"}.bi-record2::before{content:"\f51c"}.bi-reply-all-fill::before{content:"\f51d"}.bi-reply-all::before{content:"\f51e"}.bi-reply-fill::before{content:"\f51f"}.bi-reply::before{content:"\f520"}.bi-rss-fill::before{content:"\f521"}.bi-rss::before{content:"\f522"}.bi-rulers::before{content:"\f523"}.bi-save-fill::before{content:"\f524"}.bi-save::before{content:"\f525"}.bi-save2-fill::before{content:"\f526"}.bi-save2::before{content:"\f527"}.bi-scissors::before{content:"\f528"}.bi-screwdriver::before{content:"\f529"}.bi-search::before{content:"\f52a"}.bi-segmented-nav::before{content:"\f52b"}.bi-server::before{content:"\f52c"}.bi-share-fill::before{content:"\f52d"}.bi-share::before{content:"\f52e"}.bi-shield-check::before{content:"\f52f"}.bi-shield-exclamation::before{content:"\f530"}.bi-shield-fill-check::before{content:"\f531"}.bi-shield-fill-exclamation::before{content:"\f532"}.bi-shield-fill-minus::before{content:"\f533"}.bi-shield-fill-plus::before{content:"\f534"}.bi-shield-fill-x::before{content:"\f535"}.bi-shield-fill::before{content:"\f536"}.bi-shield-lock-fill::before{content:"\f537"}.bi-shield-lock::before{content:"\f538"}.bi-shield-minus::before{content:"\f539"}.bi-shield-plus::before{content:"\f53a"}.bi-shield-shaded::before{content:"\f53b"}.bi-shield-slash-fill::before{content:"\f53c"}.bi-shield-slash::before{content:"\f53d"}.bi-shield-x::before{content:"\f53e"}.bi-shield::before{content:"\f53f"}.bi-shift-fill::before{content:"\f540"}.bi-shift::before{content:"\f541"}.bi-shop-window::before{content:"\f542"}.bi-shop::before{content:"\f543"}.bi-shuffle::before{content:"\f544"}.bi-signpost-2-fill::before{content:"\f545"}.bi-signpost-2::before{content:"\f546"}.bi-signpost-fill::before{content:"\f547"}.bi-signpost-split-fill::before{content:"\f548"}.bi-signpost-split::before{content:"\f549"}.bi-signpost::before{content:"\f54a"}.bi-sim-fill::before{content:"\f54b"}.bi-sim::before{content:"\f54c"}.bi-skip-backward-btn-fill::before{content:"\f54d"}.bi-skip-backward-btn::before{content:"\f54e"}.bi-skip-backward-circle-fill::before{content:"\f54f"}.bi-skip-backward-circle::before{content:"\f550"}.bi-skip-backward-fill::before{content:"\f551"}.bi-skip-backward::before{content:"\f552"}.bi-skip-end-btn-fill::before{content:"\f553"}.bi-skip-end-btn::before{content:"\f554"}.bi-skip-end-circle-fill::before{content:"\f555"}.bi-skip-end-circle::before{content:"\f556"}.bi-skip-end-fill::before{content:"\f557"}.bi-skip-end::before{content:"\f558"}.bi-skip-forward-btn-fill::before{content:"\f559"}.bi-skip-forward-btn::before{content:"\f55a"}.bi-skip-forward-circle-fill::before{content:"\f55b"}.bi-skip-forward-circle::before{content:"\f55c"}.bi-skip-forward-fill::before{content:"\f55d"}.bi-skip-forward::before{content:"\f55e"}.bi-skip-start-btn-fill::before{content:"\f55f"}.bi-skip-start-btn::before{content:"\f560"}.bi-skip-start-circle-fill::before{content:"\f561"}.bi-skip-start-circle::before{content:"\f562"}.bi-skip-start-fill::before{content:"\f563"}.bi-skip-start::before{content:"\f564"}.bi-slack::before{content:"\f565"}.bi-slash-circle-fill::before{content:"\f566"}.bi-slash-circle::before{content:"\f567"}.bi-slash-square-fill::before{content:"\f568"}.bi-slash-square::before{content:"\f569"}.bi-slash::before{content:"\f56a"}.bi-sliders::before{content:"\f56b"}.bi-smartwatch::before{content:"\f56c"}.bi-snow::before{content:"\f56d"}.bi-snow2::before{content:"\f56e"}.bi-snow3::before{content:"\f56f"}.bi-sort-alpha-down-alt::before{content:"\f570"}.bi-sort-alpha-down::before{content:"\f571"}.bi-sort-alpha-up-alt::before{content:"\f572"}.bi-sort-alpha-up::before{content:"\f573"}.bi-sort-down-alt::before{content:"\f574"}.bi-sort-down::before{content:"\f575"}.bi-sort-numeric-down-alt::before{content:"\f576"}.bi-sort-numeric-down::before{content:"\f577"}.bi-sort-numeric-up-alt::before{content:"\f578"}.bi-sort-numeric-up::before{content:"\f579"}.bi-sort-up-alt::before{content:"\f57a"}.bi-sort-up::before{content:"\f57b"}.bi-soundwave::before{content:"\f57c"}.bi-speaker-fill::before{content:"\f57d"}.bi-speaker::before{content:"\f57e"}.bi-speedometer::before{content:"\f57f"}.bi-speedometer2::before{content:"\f580"}.bi-spellcheck::before{content:"\f581"}.bi-square-fill::before{content:"\f582"}.bi-square-half::before{content:"\f583"}.bi-square::before{content:"\f584"}.bi-stack::before{content:"\f585"}.bi-star-fill::before{content:"\f586"}.bi-star-half::before{content:"\f587"}.bi-star::before{content:"\f588"}.bi-stars::before{content:"\f589"}.bi-stickies-fill::before{content:"\f58a"}.bi-stickies::before{content:"\f58b"}.bi-sticky-fill::before{content:"\f58c"}.bi-sticky::before{content:"\f58d"}.bi-stop-btn-fill::before{content:"\f58e"}.bi-stop-btn::before{content:"\f58f"}.bi-stop-circle-fill::before{content:"\f590"}.bi-stop-circle::before{content:"\f591"}.bi-stop-fill::before{content:"\f592"}.bi-stop::before{content:"\f593"}.bi-stoplights-fill::before{content:"\f594"}.bi-stoplights::before{content:"\f595"}.bi-stopwatch-fill::before{content:"\f596"}.bi-stopwatch::before{content:"\f597"}.bi-subtract::before{content:"\f598"}.bi-suit-club-fill::before{content:"\f599"}.bi-suit-club::before{content:"\f59a"}.bi-suit-diamond-fill::before{content:"\f59b"}.bi-suit-diamond::before{content:"\f59c"}.bi-suit-heart-fill::before{content:"\f59d"}.bi-suit-heart::before{content:"\f59e"}.bi-suit-spade-fill::before{content:"\f59f"}.bi-suit-spade::before{content:"\f5a0"}.bi-sun-fill::before{content:"\f5a1"}.bi-sun::before{content:"\f5a2"}.bi-sunglasses::before{content:"\f5a3"}.bi-sunrise-fill::before{content:"\f5a4"}.bi-sunrise::before{content:"\f5a5"}.bi-sunset-fill::before{content:"\f5a6"}.bi-sunset::before{content:"\f5a7"}.bi-symmetry-horizontal::before{content:"\f5a8"}.bi-symmetry-vertical::before{content:"\f5a9"}.bi-table::before{content:"\f5aa"}.bi-tablet-fill::before{content:"\f5ab"}.bi-tablet-landscape-fill::before{content:"\f5ac"}.bi-tablet-landscape::before{content:"\f5ad"}.bi-tablet::before{content:"\f5ae"}.bi-tag-fill::before{content:"\f5af"}.bi-tag::before{content:"\f5b0"}.bi-tags-fill::before{content:"\f5b1"}.bi-tags::before{content:"\f5b2"}.bi-telegram::before{content:"\f5b3"}.bi-telephone-fill::before{content:"\f5b4"}.bi-telephone-forward-fill::before{content:"\f5b5"}.bi-telephone-forward::before{content:"\f5b6"}.bi-telephone-inbound-fill::before{content:"\f5b7"}.bi-telephone-inbound::before{content:"\f5b8"}.bi-telephone-minus-fill::before{content:"\f5b9"}.bi-telephone-minus::before{content:"\f5ba"}.bi-telephone-outbound-fill::before{content:"\f5bb"}.bi-telephone-outbound::before{content:"\f5bc"}.bi-telephone-plus-fill::before{content:"\f5bd"}.bi-telephone-plus::before{content:"\f5be"}.bi-telephone-x-fill::before{content:"\f5bf"}.bi-telephone-x::before{content:"\f5c0"}.bi-telephone::before{content:"\f5c1"}.bi-terminal-fill::before{content:"\f5c2"}.bi-terminal::before{content:"\f5c3"}.bi-text-center::before{content:"\f5c4"}.bi-text-indent-left::before{content:"\f5c5"}.bi-text-indent-right::before{content:"\f5c6"}.bi-text-left::before{content:"\f5c7"}.bi-text-paragraph::before{content:"\f5c8"}.bi-text-right::before{content:"\f5c9"}.bi-textarea-resize::before{content:"\f5ca"}.bi-textarea-t::before{content:"\f5cb"}.bi-textarea::before{content:"\f5cc"}.bi-thermometer-half::before{content:"\f5cd"}.bi-thermometer-high::before{content:"\f5ce"}.bi-thermometer-low::before{content:"\f5cf"}.bi-thermometer-snow::before{content:"\f5d0"}.bi-thermometer-sun::before{content:"\f5d1"}.bi-thermometer::before{content:"\f5d2"}.bi-three-dots-vertical::before{content:"\f5d3"}.bi-three-dots::before{content:"\f5d4"}.bi-toggle-off::before{content:"\f5d5"}.bi-toggle-on::before{content:"\f5d6"}.bi-toggle2-off::before{content:"\f5d7"}.bi-toggle2-on::before{content:"\f5d8"}.bi-toggles::before{content:"\f5d9"}.bi-toggles2::before{content:"\f5da"}.bi-tools::before{content:"\f5db"}.bi-tornado::before{content:"\f5dc"}.bi-trash-fill::before{content:"\f5dd"}.bi-trash::before{content:"\f5de"}.bi-trash2-fill::before{content:"\f5df"}.bi-trash2::before{content:"\f5e0"}.bi-tree-fill::before{content:"\f5e1"}.bi-tree::before{content:"\f5e2"}.bi-triangle-fill::before{content:"\f5e3"}.bi-triangle-half::before{content:"\f5e4"}.bi-triangle::before{content:"\f5e5"}.bi-trophy-fill::before{content:"\f5e6"}.bi-trophy::before{content:"\f5e7"}.bi-tropical-storm::before{content:"\f5e8"}.bi-truck-flatbed::before{content:"\f5e9"}.bi-truck::before{content:"\f5ea"}.bi-tsunami::before{content:"\f5eb"}.bi-tv-fill::before{content:"\f5ec"}.bi-tv::before{content:"\f5ed"}.bi-twitch::before{content:"\f5ee"}.bi-twitter::before{content:"\f5ef"}.bi-type-bold::before{content:"\f5f0"}.bi-type-h1::before{content:"\f5f1"}.bi-type-h2::before{content:"\f5f2"}.bi-type-h3::before{content:"\f5f3"}.bi-type-italic::before{content:"\f5f4"}.bi-type-strikethrough::before{content:"\f5f5"}.bi-type-underline::before{content:"\f5f6"}.bi-type::before{content:"\f5f7"}.bi-ui-checks-grid::before{content:"\f5f8"}.bi-ui-checks::before{content:"\f5f9"}.bi-ui-radios-grid::before{content:"\f5fa"}.bi-ui-radios::before{content:"\f5fb"}.bi-umbrella-fill::before{content:"\f5fc"}.bi-umbrella::before{content:"\f5fd"}.bi-union::before{content:"\f5fe"}.bi-unlock-fill::before{content:"\f5ff"}.bi-unlock::before{content:"\f600"}.bi-upc-scan::before{content:"\f601"}.bi-upc::before{content:"\f602"}.bi-upload::before{content:"\f603"}.bi-vector-pen::before{content:"\f604"}.bi-view-list::before{content:"\f605"}.bi-view-stacked::before{content:"\f606"}.bi-vinyl-fill::before{content:"\f607"}.bi-vinyl::before{content:"\f608"}.bi-voicemail::before{content:"\f609"}.bi-volume-down-fill::before{content:"\f60a"}.bi-volume-down::before{content:"\f60b"}.bi-volume-mute-fill::before{content:"\f60c"}.bi-volume-mute::before{content:"\f60d"}.bi-volume-off-fill::before{content:"\f60e"}.bi-volume-off::before{content:"\f60f"}.bi-volume-up-fill::before{content:"\f610"}.bi-volume-up::before{content:"\f611"}.bi-vr::before{content:"\f612"}.bi-wallet-fill::before{content:"\f613"}.bi-wallet::before{content:"\f614"}.bi-wallet2::before{content:"\f615"}.bi-watch::before{content:"\f616"}.bi-water::before{content:"\f617"}.bi-whatsapp::before{content:"\f618"}.bi-wifi-1::before{content:"\f619"}.bi-wifi-2::before{content:"\f61a"}.bi-wifi-off::before{content:"\f61b"}.bi-wifi::before{content:"\f61c"}.bi-wind::before{content:"\f61d"}.bi-window-dock::before{content:"\f61e"}.bi-window-sidebar::before{content:"\f61f"}.bi-window::before{content:"\f620"}.bi-wrench::before{content:"\f621"}.bi-x-circle-fill::before{content:"\f622"}.bi-x-circle::before{content:"\f623"}.bi-x-diamond-fill::before{content:"\f624"}.bi-x-diamond::before{content:"\f625"}.bi-x-octagon-fill::before{content:"\f626"}.bi-x-octagon::before{content:"\f627"}.bi-x-square-fill::before{content:"\f628"}.bi-x-square::before{content:"\f629"}.bi-x::before{content:"\f62a"}.bi-youtube::before{content:"\f62b"}.bi-zoom-in::before{content:"\f62c"}.bi-zoom-out::before{content:"\f62d"}.bi-bank::before{content:"\f62e"}.bi-bank2::before{content:"\f62f"}.bi-bell-slash-fill::before{content:"\f630"}.bi-bell-slash::before{content:"\f631"}.bi-cash-coin::before{content:"\f632"}.bi-check-lg::before{content:"\f633"}.bi-coin::before{content:"\f634"}.bi-currency-bitcoin::before{content:"\f635"}.bi-currency-dollar::before{content:"\f636"}.bi-currency-euro::before{content:"\f637"}.bi-currency-exchange::before{content:"\f638"}.bi-currency-pound::before{content:"\f639"}.bi-currency-yen::before{content:"\f63a"}.bi-dash-lg::before{content:"\f63b"}.bi-exclamation-lg::before{content:"\f63c"}.bi-file-earmark-pdf-fill::before{content:"\f63d"}.bi-file-earmark-pdf::before{content:"\f63e"}.bi-file-pdf-fill::before{content:"\f63f"}.bi-file-pdf::before{content:"\f640"}.bi-gender-ambiguous::before{content:"\f641"}.bi-gender-female::before{content:"\f642"}.bi-gender-male::before{content:"\f643"}.bi-gender-trans::before{content:"\f644"}.bi-headset-vr::before{content:"\f645"}.bi-info-lg::before{content:"\f646"}.bi-mastodon::before{content:"\f647"}.bi-messenger::before{content:"\f648"}.bi-piggy-bank-fill::before{content:"\f649"}.bi-piggy-bank::before{content:"\f64a"}.bi-pin-map-fill::before{content:"\f64b"}.bi-pin-map::before{content:"\f64c"}.bi-plus-lg::before{content:"\f64d"}.bi-question-lg::before{content:"\f64e"}.bi-recycle::before{content:"\f64f"}.bi-reddit::before{content:"\f650"}.bi-safe-fill::before{content:"\f651"}.bi-safe2-fill::before{content:"\f652"}.bi-safe2::before{content:"\f653"}.bi-sd-card-fill::before{content:"\f654"}.bi-sd-card::before{content:"\f655"}.bi-skype::before{content:"\f656"}.bi-slash-lg::before{content:"\f657"}.bi-translate::before{content:"\f658"}.bi-x-lg::before{content:"\f659"}.bi-safe::before{content:"\f65a"}.bi-apple::before{content:"\f65b"}.bi-microsoft::before{content:"\f65d"}.bi-windows::before{content:"\f65e"}.bi-behance::before{content:"\f65c"}.bi-dribbble::before{content:"\f65f"}.bi-line::before{content:"\f660"}.bi-medium::before{content:"\f661"}.bi-paypal::before{content:"\f662"}.bi-pinterest::before{content:"\f663"}.bi-signal::before{content:"\f664"}.bi-snapchat::before{content:"\f665"}.bi-spotify::before{content:"\f666"}.bi-stack-overflow::before{content:"\f667"}.bi-strava::before{content:"\f668"}.bi-wordpress::before{content:"\f669"}.bi-vimeo::before{content:"\f66a"}.bi-activity::before{content:"\f66b"}.bi-easel2-fill::before{content:"\f66c"}.bi-easel2::before{content:"\f66d"}.bi-easel3-fill::before{content:"\f66e"}.bi-easel3::before{content:"\f66f"}.bi-fan::before{content:"\f670"}.bi-fingerprint::before{content:"\f671"}.bi-graph-down-arrow::before{content:"\f672"}.bi-graph-up-arrow::before{content:"\f673"}.bi-hypnotize::before{content:"\f674"}.bi-magic::before{content:"\f675"}.bi-person-rolodex::before{content:"\f676"}.bi-person-video::before{content:"\f677"}.bi-person-video2::before{content:"\f678"}.bi-person-video3::before{content:"\f679"}.bi-person-workspace::before{content:"\f67a"}.bi-radioactive::before{content:"\f67b"}.bi-webcam-fill::before{content:"\f67c"}.bi-webcam::before{content:"\f67d"}.bi-yin-yang::before{content:"\f67e"}.bi-bandaid-fill::before{content:"\f680"}.bi-bandaid::before{content:"\f681"}.bi-bluetooth::before{content:"\f682"}.bi-body-text::before{content:"\f683"}.bi-boombox::before{content:"\f684"}.bi-boxes::before{content:"\f685"}.bi-dpad-fill::before{content:"\f686"}.bi-dpad::before{content:"\f687"}.bi-ear-fill::before{content:"\f688"}.bi-ear::before{content:"\f689"}.bi-envelope-check-fill::before{content:"\f68b"}.bi-envelope-check::before{content:"\f68c"}.bi-envelope-dash-fill::before{content:"\f68e"}.bi-envelope-dash::before{content:"\f68f"}.bi-envelope-exclamation-fill::before{content:"\f691"}.bi-envelope-exclamation::before{content:"\f692"}.bi-envelope-plus-fill::before{content:"\f693"}.bi-envelope-plus::before{content:"\f694"}.bi-envelope-slash-fill::before{content:"\f696"}.bi-envelope-slash::before{content:"\f697"}.bi-envelope-x-fill::before{content:"\f699"}.bi-envelope-x::before{content:"\f69a"}.bi-explicit-fill::before{content:"\f69b"}.bi-explicit::before{content:"\f69c"}.bi-git::before{content:"\f69d"}.bi-infinity::before{content:"\f69e"}.bi-list-columns-reverse::before{content:"\f69f"}.bi-list-columns::before{content:"\f6a0"}.bi-meta::before{content:"\f6a1"}.bi-nintendo-switch::before{content:"\f6a4"}.bi-pc-display-horizontal::before{content:"\f6a5"}.bi-pc-display::before{content:"\f6a6"}.bi-pc-horizontal::before{content:"\f6a7"}.bi-pc::before{content:"\f6a8"}.bi-playstation::before{content:"\f6a9"}.bi-plus-slash-minus::before{content:"\f6aa"}.bi-projector-fill::before{content:"\f6ab"}.bi-projector::before{content:"\f6ac"}.bi-qr-code-scan::before{content:"\f6ad"}.bi-qr-code::before{content:"\f6ae"}.bi-quora::before{content:"\f6af"}.bi-quote::before{content:"\f6b0"}.bi-robot::before{content:"\f6b1"}.bi-send-check-fill::before{content:"\f6b2"}.bi-send-check::before{content:"\f6b3"}.bi-send-dash-fill::before{content:"\f6b4"}.bi-send-dash::before{content:"\f6b5"}.bi-send-exclamation-fill::before{content:"\f6b7"}.bi-send-exclamation::before{content:"\f6b8"}.bi-send-fill::before{content:"\f6b9"}.bi-send-plus-fill::before{content:"\f6ba"}.bi-send-plus::before{content:"\f6bb"}.bi-send-slash-fill::before{content:"\f6bc"}.bi-send-slash::before{content:"\f6bd"}.bi-send-x-fill::before{content:"\f6be"}.bi-send-x::before{content:"\f6bf"}.bi-send::before{content:"\f6c0"}.bi-steam::before{content:"\f6c1"}.bi-terminal-dash::before{content:"\f6c3"}.bi-terminal-plus::before{content:"\f6c4"}.bi-terminal-split::before{content:"\f6c5"}.bi-ticket-detailed-fill::before{content:"\f6c6"}.bi-ticket-detailed::before{content:"\f6c7"}.bi-ticket-fill::before{content:"\f6c8"}.bi-ticket-perforated-fill::before{content:"\f6c9"}.bi-ticket-perforated::before{content:"\f6ca"}.bi-ticket::before{content:"\f6cb"}.bi-tiktok::before{content:"\f6cc"}.bi-window-dash::before{content:"\f6cd"}.bi-window-desktop::before{content:"\f6ce"}.bi-window-fullscreen::before{content:"\f6cf"}.bi-window-plus::before{content:"\f6d0"}.bi-window-split::before{content:"\f6d1"}.bi-window-stack::before{content:"\f6d2"}.bi-window-x::before{content:"\f6d3"}.bi-xbox::before{content:"\f6d4"}.bi-ethernet::before{content:"\f6d5"}.bi-hdmi-fill::before{content:"\f6d6"}.bi-hdmi::before{content:"\f6d7"}.bi-usb-c-fill::before{content:"\f6d8"}.bi-usb-c::before{content:"\f6d9"}.bi-usb-fill::before{content:"\f6da"}.bi-usb-plug-fill::before{content:"\f6db"}.bi-usb-plug::before{content:"\f6dc"}.bi-usb-symbol::before{content:"\f6dd"}.bi-usb::before{content:"\f6de"}.bi-boombox-fill::before{content:"\f6df"}.bi-displayport::before{content:"\f6e1"}.bi-gpu-card::before{content:"\f6e2"}.bi-memory::before{content:"\f6e3"}.bi-modem-fill::before{content:"\f6e4"}.bi-modem::before{content:"\f6e5"}.bi-motherboard-fill::before{content:"\f6e6"}.bi-motherboard::before{content:"\f6e7"}.bi-optical-audio-fill::before{content:"\f6e8"}.bi-optical-audio::before{content:"\f6e9"}.bi-pci-card::before{content:"\f6ea"}.bi-router-fill::before{content:"\f6eb"}.bi-router::before{content:"\f6ec"}.bi-thunderbolt-fill::before{content:"\f6ef"}.bi-thunderbolt::before{content:"\f6f0"}.bi-usb-drive-fill::before{content:"\f6f1"}.bi-usb-drive::before{content:"\f6f2"}.bi-usb-micro-fill::before{content:"\f6f3"}.bi-usb-micro::before{content:"\f6f4"}.bi-usb-mini-fill::before{content:"\f6f5"}.bi-usb-mini::before{content:"\f6f6"}.bi-cloud-haze2::before{content:"\f6f7"}.bi-device-hdd-fill::before{content:"\f6f8"}.bi-device-hdd::before{content:"\f6f9"}.bi-device-ssd-fill::before{content:"\f6fa"}.bi-device-ssd::before{content:"\f6fb"}.bi-displayport-fill::before{content:"\f6fc"}.bi-mortarboard-fill::before{content:"\f6fd"}.bi-mortarboard::before{content:"\f6fe"}.bi-terminal-x::before{content:"\f6ff"}.bi-arrow-through-heart-fill::before{content:"\f700"}.bi-arrow-through-heart::before{content:"\f701"}.bi-badge-sd-fill::before{content:"\f702"}.bi-badge-sd::before{content:"\f703"}.bi-bag-heart-fill::before{content:"\f704"}.bi-bag-heart::before{content:"\f705"}.bi-balloon-fill::before{content:"\f706"}.bi-balloon-heart-fill::before{content:"\f707"}.bi-balloon-heart::before{content:"\f708"}.bi-balloon::before{content:"\f709"}.bi-box2-fill::before{content:"\f70a"}.bi-box2-heart-fill::before{content:"\f70b"}.bi-box2-heart::before{content:"\f70c"}.bi-box2::before{content:"\f70d"}.bi-braces-asterisk::before{content:"\f70e"}.bi-calendar-heart-fill::before{content:"\f70f"}.bi-calendar-heart::before{content:"\f710"}.bi-calendar2-heart-fill::before{content:"\f711"}.bi-calendar2-heart::before{content:"\f712"}.bi-chat-heart-fill::before{content:"\f713"}.bi-chat-heart::before{content:"\f714"}.bi-chat-left-heart-fill::before{content:"\f715"}.bi-chat-left-heart::before{content:"\f716"}.bi-chat-right-heart-fill::before{content:"\f717"}.bi-chat-right-heart::before{content:"\f718"}.bi-chat-square-heart-fill::before{content:"\f719"}.bi-chat-square-heart::before{content:"\f71a"}.bi-clipboard-check-fill::before{content:"\f71b"}.bi-clipboard-data-fill::before{content:"\f71c"}.bi-clipboard-fill::before{content:"\f71d"}.bi-clipboard-heart-fill::before{content:"\f71e"}.bi-clipboard-heart::before{content:"\f71f"}.bi-clipboard-minus-fill::before{content:"\f720"}.bi-clipboard-plus-fill::before{content:"\f721"}.bi-clipboard-pulse::before{content:"\f722"}.bi-clipboard-x-fill::before{content:"\f723"}.bi-clipboard2-check-fill::before{content:"\f724"}.bi-clipboard2-check::before{content:"\f725"}.bi-clipboard2-data-fill::before{content:"\f726"}.bi-clipboard2-data::before{content:"\f727"}.bi-clipboard2-fill::before{content:"\f728"}.bi-clipboard2-heart-fill::before{content:"\f729"}.bi-clipboard2-heart::before{content:"\f72a"}.bi-clipboard2-minus-fill::before{content:"\f72b"}.bi-clipboard2-minus::before{content:"\f72c"}.bi-clipboard2-plus-fill::before{content:"\f72d"}.bi-clipboard2-plus::before{content:"\f72e"}.bi-clipboard2-pulse-fill::before{content:"\f72f"}.bi-clipboard2-pulse::before{content:"\f730"}.bi-clipboard2-x-fill::before{content:"\f731"}.bi-clipboard2-x::before{content:"\f732"}.bi-clipboard2::before{content:"\f733"}.bi-emoji-kiss-fill::before{content:"\f734"}.bi-emoji-kiss::before{content:"\f735"}.bi-envelope-heart-fill::before{content:"\f736"}.bi-envelope-heart::before{content:"\f737"}.bi-envelope-open-heart-fill::before{content:"\f738"}.bi-envelope-open-heart::before{content:"\f739"}.bi-envelope-paper-fill::before{content:"\f73a"}.bi-envelope-paper-heart-fill::before{content:"\f73b"}.bi-envelope-paper-heart::before{content:"\f73c"}.bi-envelope-paper::before{content:"\f73d"}.bi-filetype-aac::before{content:"\f73e"}.bi-filetype-ai::before{content:"\f73f"}.bi-filetype-bmp::before{content:"\f740"}.bi-filetype-cs::before{content:"\f741"}.bi-filetype-css::before{content:"\f742"}.bi-filetype-csv::before{content:"\f743"}.bi-filetype-doc::before{content:"\f744"}.bi-filetype-docx::before{content:"\f745"}.bi-filetype-exe::before{content:"\f746"}.bi-filetype-gif::before{content:"\f747"}.bi-filetype-heic::before{content:"\f748"}.bi-filetype-html::before{content:"\f749"}.bi-filetype-java::before{content:"\f74a"}.bi-filetype-jpg::before{content:"\f74b"}.bi-filetype-js::before{content:"\f74c"}.bi-filetype-jsx::before{content:"\f74d"}.bi-filetype-key::before{content:"\f74e"}.bi-filetype-m4p::before{content:"\f74f"}.bi-filetype-md::before{content:"\f750"}.bi-filetype-mdx::before{content:"\f751"}.bi-filetype-mov::before{content:"\f752"}.bi-filetype-mp3::before{content:"\f753"}.bi-filetype-mp4::before{content:"\f754"}.bi-filetype-otf::before{content:"\f755"}.bi-filetype-pdf::before{content:"\f756"}.bi-filetype-php::before{content:"\f757"}.bi-filetype-png::before{content:"\f758"}.bi-filetype-ppt::before{content:"\f75a"}.bi-filetype-psd::before{content:"\f75b"}.bi-filetype-py::before{content:"\f75c"}.bi-filetype-raw::before{content:"\f75d"}.bi-filetype-rb::before{content:"\f75e"}.bi-filetype-sass::before{content:"\f75f"}.bi-filetype-scss::before{content:"\f760"}.bi-filetype-sh::before{content:"\f761"}.bi-filetype-svg::before{content:"\f762"}.bi-filetype-tiff::before{content:"\f763"}.bi-filetype-tsx::before{content:"\f764"}.bi-filetype-ttf::before{content:"\f765"}.bi-filetype-txt::before{content:"\f766"}.bi-filetype-wav::before{content:"\f767"}.bi-filetype-woff::before{content:"\f768"}.bi-filetype-xls::before{content:"\f76a"}.bi-filetype-xml::before{content:"\f76b"}.bi-filetype-yml::before{content:"\f76c"}.bi-heart-arrow::before{content:"\f76d"}.bi-heart-pulse-fill::before{content:"\f76e"}.bi-heart-pulse::before{content:"\f76f"}.bi-heartbreak-fill::before{content:"\f770"}.bi-heartbreak::before{content:"\f771"}.bi-hearts::before{content:"\f772"}.bi-hospital-fill::before{content:"\f773"}.bi-hospital::before{content:"\f774"}.bi-house-heart-fill::before{content:"\f775"}.bi-house-heart::before{content:"\f776"}.bi-incognito::before{content:"\f777"}.bi-magnet-fill::before{content:"\f778"}.bi-magnet::before{content:"\f779"}.bi-person-heart::before{content:"\f77a"}.bi-person-hearts::before{content:"\f77b"}.bi-phone-flip::before{content:"\f77c"}.bi-plugin::before{content:"\f77d"}.bi-postage-fill::before{content:"\f77e"}.bi-postage-heart-fill::before{content:"\f77f"}.bi-postage-heart::before{content:"\f780"}.bi-postage::before{content:"\f781"}.bi-postcard-fill::before{content:"\f782"}.bi-postcard-heart-fill::before{content:"\f783"}.bi-postcard-heart::before{content:"\f784"}.bi-postcard::before{content:"\f785"}.bi-search-heart-fill::before{content:"\f786"}.bi-search-heart::before{content:"\f787"}.bi-sliders2-vertical::before{content:"\f788"}.bi-sliders2::before{content:"\f789"}.bi-trash3-fill::before{content:"\f78a"}.bi-trash3::before{content:"\f78b"}.bi-valentine::before{content:"\f78c"}.bi-valentine2::before{content:"\f78d"}.bi-wrench-adjustable-circle-fill::before{content:"\f78e"}.bi-wrench-adjustable-circle::before{content:"\f78f"}.bi-wrench-adjustable::before{content:"\f790"}.bi-filetype-json::before{content:"\f791"}.bi-filetype-pptx::before{content:"\f792"}.bi-filetype-xlsx::before{content:"\f793"}.bi-1-circle-fill::before{content:"\f796"}.bi-1-circle::before{content:"\f797"}.bi-1-square-fill::before{content:"\f798"}.bi-1-square::before{content:"\f799"}.bi-2-circle-fill::before{content:"\f79c"}.bi-2-circle::before{content:"\f79d"}.bi-2-square-fill::before{content:"\f79e"}.bi-2-square::before{content:"\f79f"}.bi-3-circle-fill::before{content:"\f7a2"}.bi-3-circle::before{content:"\f7a3"}.bi-3-square-fill::before{content:"\f7a4"}.bi-3-square::before{content:"\f7a5"}.bi-4-circle-fill::before{content:"\f7a8"}.bi-4-circle::before{content:"\f7a9"}.bi-4-square-fill::before{content:"\f7aa"}.bi-4-square::before{content:"\f7ab"}.bi-5-circle-fill::before{content:"\f7ae"}.bi-5-circle::before{content:"\f7af"}.bi-5-square-fill::before{content:"\f7b0"}.bi-5-square::before{content:"\f7b1"}.bi-6-circle-fill::before{content:"\f7b4"}.bi-6-circle::before{content:"\f7b5"}.bi-6-square-fill::before{content:"\f7b6"}.bi-6-square::before{content:"\f7b7"}.bi-7-circle-fill::before{content:"\f7ba"}.bi-7-circle::before{content:"\f7bb"}.bi-7-square-fill::before{content:"\f7bc"}.bi-7-square::before{content:"\f7bd"}.bi-8-circle-fill::before{content:"\f7c0"}.bi-8-circle::before{content:"\f7c1"}.bi-8-square-fill::before{content:"\f7c2"}.bi-8-square::before{content:"\f7c3"}.bi-9-circle-fill::before{content:"\f7c6"}.bi-9-circle::before{content:"\f7c7"}.bi-9-square-fill::before{content:"\f7c8"}.bi-9-square::before{content:"\f7c9"}.bi-airplane-engines-fill::before{content:"\f7ca"}.bi-airplane-engines::before{content:"\f7cb"}.bi-airplane-fill::before{content:"\f7cc"}.bi-airplane::before{content:"\f7cd"}.bi-alexa::before{content:"\f7ce"}.bi-alipay::before{content:"\f7cf"}.bi-android::before{content:"\f7d0"}.bi-android2::before{content:"\f7d1"}.bi-box-fill::before{content:"\f7d2"}.bi-box-seam-fill::before{content:"\f7d3"}.bi-browser-chrome::before{content:"\f7d4"}.bi-browser-edge::before{content:"\f7d5"}.bi-browser-firefox::before{content:"\f7d6"}.bi-browser-safari::before{content:"\f7d7"}.bi-c-circle-fill::before{content:"\f7da"}.bi-c-circle::before{content:"\f7db"}.bi-c-square-fill::before{content:"\f7dc"}.bi-c-square::before{content:"\f7dd"}.bi-capsule-pill::before{content:"\f7de"}.bi-capsule::before{content:"\f7df"}.bi-car-front-fill::before{content:"\f7e0"}.bi-car-front::before{content:"\f7e1"}.bi-cassette-fill::before{content:"\f7e2"}.bi-cassette::before{content:"\f7e3"}.bi-cc-circle-fill::before{content:"\f7e6"}.bi-cc-circle::before{content:"\f7e7"}.bi-cc-square-fill::before{content:"\f7e8"}.bi-cc-square::before{content:"\f7e9"}.bi-cup-hot-fill::before{content:"\f7ea"}.bi-cup-hot::before{content:"\f7eb"}.bi-currency-rupee::before{content:"\f7ec"}.bi-dropbox::before{content:"\f7ed"}.bi-escape::before{content:"\f7ee"}.bi-fast-forward-btn-fill::before{content:"\f7ef"}.bi-fast-forward-btn::before{content:"\f7f0"}.bi-fast-forward-circle-fill::before{content:"\f7f1"}.bi-fast-forward-circle::before{content:"\f7f2"}.bi-fast-forward-fill::before{content:"\f7f3"}.bi-fast-forward::before{content:"\f7f4"}.bi-filetype-sql::before{content:"\f7f5"}.bi-fire::before{content:"\f7f6"}.bi-google-play::before{content:"\f7f7"}.bi-h-circle-fill::before{content:"\f7fa"}.bi-h-circle::before{content:"\f7fb"}.bi-h-square-fill::before{content:"\f7fc"}.bi-h-square::before{content:"\f7fd"}.bi-indent::before{content:"\f7fe"}.bi-lungs-fill::before{content:"\f7ff"}.bi-lungs::before{content:"\f800"}.bi-microsoft-teams::before{content:"\f801"}.bi-p-circle-fill::before{content:"\f804"}.bi-p-circle::before{content:"\f805"}.bi-p-square-fill::before{content:"\f806"}.bi-p-square::before{content:"\f807"}.bi-pass-fill::before{content:"\f808"}.bi-pass::before{content:"\f809"}.bi-prescription::before{content:"\f80a"}.bi-prescription2::before{content:"\f80b"}.bi-r-circle-fill::before{content:"\f80e"}.bi-r-circle::before{content:"\f80f"}.bi-r-square-fill::before{content:"\f810"}.bi-r-square::before{content:"\f811"}.bi-repeat-1::before{content:"\f812"}.bi-repeat::before{content:"\f813"}.bi-rewind-btn-fill::before{content:"\f814"}.bi-rewind-btn::before{content:"\f815"}.bi-rewind-circle-fill::before{content:"\f816"}.bi-rewind-circle::before{content:"\f817"}.bi-rewind-fill::before{content:"\f818"}.bi-rewind::before{content:"\f819"}.bi-train-freight-front-fill::before{content:"\f81a"}.bi-train-freight-front::before{content:"\f81b"}.bi-train-front-fill::before{content:"\f81c"}.bi-train-front::before{content:"\f81d"}.bi-train-lightrail-front-fill::before{content:"\f81e"}.bi-train-lightrail-front::before{content:"\f81f"}.bi-truck-front-fill::before{content:"\f820"}.bi-truck-front::before{content:"\f821"}.bi-ubuntu::before{content:"\f822"}.bi-unindent::before{content:"\f823"}.bi-unity::before{content:"\f824"}.bi-universal-access-circle::before{content:"\f825"}.bi-universal-access::before{content:"\f826"}.bi-virus::before{content:"\f827"}.bi-virus2::before{content:"\f828"}.bi-wechat::before{content:"\f829"}.bi-yelp::before{content:"\f82a"}.bi-sign-stop-fill::before{content:"\f82b"}.bi-sign-stop-lights-fill::before{content:"\f82c"}.bi-sign-stop-lights::before{content:"\f82d"}.bi-sign-stop::before{content:"\f82e"}.bi-sign-turn-left-fill::before{content:"\f82f"}.bi-sign-turn-left::before{content:"\f830"}.bi-sign-turn-right-fill::before{content:"\f831"}.bi-sign-turn-right::before{content:"\f832"}.bi-sign-turn-slight-left-fill::before{content:"\f833"}.bi-sign-turn-slight-left::before{content:"\f834"}.bi-sign-turn-slight-right-fill::before{content:"\f835"}.bi-sign-turn-slight-right::before{content:"\f836"}.bi-sign-yield-fill::before{content:"\f837"}.bi-sign-yield::before{content:"\f838"}.bi-ev-station-fill::before{content:"\f839"}.bi-ev-station::before{content:"\f83a"}.bi-fuel-pump-diesel-fill::before{content:"\f83b"}.bi-fuel-pump-diesel::before{content:"\f83c"}.bi-fuel-pump-fill::before{content:"\f83d"}.bi-fuel-pump::before{content:"\f83e"}.bi-0-circle-fill::before{content:"\f83f"}.bi-0-circle::before{content:"\f840"}.bi-0-square-fill::before{content:"\f841"}.bi-0-square::before{content:"\f842"}.bi-rocket-fill::before{content:"\f843"}.bi-rocket-takeoff-fill::before{content:"\f844"}.bi-rocket-takeoff::before{content:"\f845"}.bi-rocket::before{content:"\f846"}.bi-stripe::before{content:"\f847"}.bi-subscript::before{content:"\f848"}.bi-superscript::before{content:"\f849"}.bi-trello::before{content:"\f84a"}.bi-envelope-at-fill::before{content:"\f84b"}.bi-envelope-at::before{content:"\f84c"}.bi-regex::before{content:"\f84d"}.bi-text-wrap::before{content:"\f84e"}.bi-sign-dead-end-fill::before{content:"\f84f"}.bi-sign-dead-end::before{content:"\f850"}.bi-sign-do-not-enter-fill::before{content:"\f851"}.bi-sign-do-not-enter::before{content:"\f852"}.bi-sign-intersection-fill::before{content:"\f853"}.bi-sign-intersection-side-fill::before{content:"\f854"}.bi-sign-intersection-side::before{content:"\f855"}.bi-sign-intersection-t-fill::before{content:"\f856"}.bi-sign-intersection-t::before{content:"\f857"}.bi-sign-intersection-y-fill::before{content:"\f858"}.bi-sign-intersection-y::before{content:"\f859"}.bi-sign-intersection::before{content:"\f85a"}.bi-sign-merge-left-fill::before{content:"\f85b"}.bi-sign-merge-left::before{content:"\f85c"}.bi-sign-merge-right-fill::before{content:"\f85d"}.bi-sign-merge-right::before{content:"\f85e"}.bi-sign-no-left-turn-fill::before{content:"\f85f"}.bi-sign-no-left-turn::before{content:"\f860"}.bi-sign-no-parking-fill::before{content:"\f861"}.bi-sign-no-parking::before{content:"\f862"}.bi-sign-no-right-turn-fill::before{content:"\f863"}.bi-sign-no-right-turn::before{content:"\f864"}.bi-sign-railroad-fill::before{content:"\f865"}.bi-sign-railroad::before{content:"\f866"}.bi-building-add::before{content:"\f867"}.bi-building-check::before{content:"\f868"}.bi-building-dash::before{content:"\f869"}.bi-building-down::before{content:"\f86a"}.bi-building-exclamation::before{content:"\f86b"}.bi-building-fill-add::before{content:"\f86c"}.bi-building-fill-check::before{content:"\f86d"}.bi-building-fill-dash::before{content:"\f86e"}.bi-building-fill-down::before{content:"\f86f"}.bi-building-fill-exclamation::before{content:"\f870"}.bi-building-fill-gear::before{content:"\f871"}.bi-building-fill-lock::before{content:"\f872"}.bi-building-fill-slash::before{content:"\f873"}.bi-building-fill-up::before{content:"\f874"}.bi-building-fill-x::before{content:"\f875"}.bi-building-fill::before{content:"\f876"}.bi-building-gear::before{content:"\f877"}.bi-building-lock::before{content:"\f878"}.bi-building-slash::before{content:"\f879"}.bi-building-up::before{content:"\f87a"}.bi-building-x::before{content:"\f87b"}.bi-buildings-fill::before{content:"\f87c"}.bi-buildings::before{content:"\f87d"}.bi-bus-front-fill::before{content:"\f87e"}.bi-bus-front::before{content:"\f87f"}.bi-ev-front-fill::before{content:"\f880"}.bi-ev-front::before{content:"\f881"}.bi-globe-americas::before{content:"\f882"}.bi-globe-asia-australia::before{content:"\f883"}.bi-globe-central-south-asia::before{content:"\f884"}.bi-globe-europe-africa::before{content:"\f885"}.bi-house-add-fill::before{content:"\f886"}.bi-house-add::before{content:"\f887"}.bi-house-check-fill::before{content:"\f888"}.bi-house-check::before{content:"\f889"}.bi-house-dash-fill::before{content:"\f88a"}.bi-house-dash::before{content:"\f88b"}.bi-house-down-fill::before{content:"\f88c"}.bi-house-down::before{content:"\f88d"}.bi-house-exclamation-fill::before{content:"\f88e"}.bi-house-exclamation::before{content:"\f88f"}.bi-house-gear-fill::before{content:"\f890"}.bi-house-gear::before{content:"\f891"}.bi-house-lock-fill::before{content:"\f892"}.bi-house-lock::before{content:"\f893"}.bi-house-slash-fill::before{content:"\f894"}.bi-house-slash::before{content:"\f895"}.bi-house-up-fill::before{content:"\f896"}.bi-house-up::before{content:"\f897"}.bi-house-x-fill::before{content:"\f898"}.bi-house-x::before{content:"\f899"}.bi-person-add::before{content:"\f89a"}.bi-person-down::before{content:"\f89b"}.bi-person-exclamation::before{content:"\f89c"}.bi-person-fill-add::before{content:"\f89d"}.bi-person-fill-check::before{content:"\f89e"}.bi-person-fill-dash::before{content:"\f89f"}.bi-person-fill-down::before{content:"\f8a0"}.bi-person-fill-exclamation::before{content:"\f8a1"}.bi-person-fill-gear::before{content:"\f8a2"}.bi-person-fill-lock::before{content:"\f8a3"}.bi-person-fill-slash::before{content:"\f8a4"}.bi-person-fill-up::before{content:"\f8a5"}.bi-person-fill-x::before{content:"\f8a6"}.bi-person-gear::before{content:"\f8a7"}.bi-person-lock::before{content:"\f8a8"}.bi-person-slash::before{content:"\f8a9"}.bi-person-up::before{content:"\f8aa"}.bi-scooter::before{content:"\f8ab"}.bi-taxi-front-fill::before{content:"\f8ac"}.bi-taxi-front::before{content:"\f8ad"}.bi-amd::before{content:"\f8ae"}.bi-database-add::before{content:"\f8af"}.bi-database-check::before{content:"\f8b0"}.bi-database-dash::before{content:"\f8b1"}.bi-database-down::before{content:"\f8b2"}.bi-database-exclamation::before{content:"\f8b3"}.bi-database-fill-add::before{content:"\f8b4"}.bi-database-fill-check::before{content:"\f8b5"}.bi-database-fill-dash::before{content:"\f8b6"}.bi-database-fill-down::before{content:"\f8b7"}.bi-database-fill-exclamation::before{content:"\f8b8"}.bi-database-fill-gear::before{content:"\f8b9"}.bi-database-fill-lock::before{content:"\f8ba"}.bi-database-fill-slash::before{content:"\f8bb"}.bi-database-fill-up::before{content:"\f8bc"}.bi-database-fill-x::before{content:"\f8bd"}.bi-database-fill::before{content:"\f8be"}.bi-database-gear::before{content:"\f8bf"}.bi-database-lock::before{content:"\f8c0"}.bi-database-slash::before{content:"\f8c1"}.bi-database-up::before{content:"\f8c2"}.bi-database-x::before{content:"\f8c3"}.bi-database::before{content:"\f8c4"}.bi-houses-fill::before{content:"\f8c5"}.bi-houses::before{content:"\f8c6"}.bi-nvidia::before{content:"\f8c7"}.bi-person-vcard-fill::before{content:"\f8c8"}.bi-person-vcard::before{content:"\f8c9"}.bi-sina-weibo::before{content:"\f8ca"}.bi-tencent-qq::before{content:"\f8cb"}.bi-wikipedia::before{content:"\f8cc"}.bi-alphabet-uppercase::before{content:"\f2a5"}.bi-alphabet::before{content:"\f68a"}.bi-amazon::before{content:"\f68d"}.bi-arrows-collapse-vertical::before{content:"\f690"}.bi-arrows-expand-vertical::before{content:"\f695"}.bi-arrows-vertical::before{content:"\f698"}.bi-arrows::before{content:"\f6a2"}.bi-ban-fill::before{content:"\f6a3"}.bi-ban::before{content:"\f6b6"}.bi-bing::before{content:"\f6c2"}.bi-cake::before{content:"\f6e0"}.bi-cake2::before{content:"\f6ed"}.bi-cookie::before{content:"\f6ee"}.bi-copy::before{content:"\f759"}.bi-crosshair::before{content:"\f769"}.bi-crosshair2::before{content:"\f794"}.bi-emoji-astonished-fill::before{content:"\f795"}.bi-emoji-astonished::before{content:"\f79a"}.bi-emoji-grimace-fill::before{content:"\f79b"}.bi-emoji-grimace::before{content:"\f7a0"}.bi-emoji-grin-fill::before{content:"\f7a1"}.bi-emoji-grin::before{content:"\f7a6"}.bi-emoji-surprise-fill::before{content:"\f7a7"}.bi-emoji-surprise::before{content:"\f7ac"}.bi-emoji-tear-fill::before{content:"\f7ad"}.bi-emoji-tear::before{content:"\f7b2"}.bi-envelope-arrow-down-fill::before{content:"\f7b3"}.bi-envelope-arrow-down::before{content:"\f7b8"}.bi-envelope-arrow-up-fill::before{content:"\f7b9"}.bi-envelope-arrow-up::before{content:"\f7be"}.bi-feather::before{content:"\f7bf"}.bi-feather2::before{content:"\f7c4"}.bi-floppy-fill::before{content:"\f7c5"}.bi-floppy::before{content:"\f7d8"}.bi-floppy2-fill::before{content:"\f7d9"}.bi-floppy2::before{content:"\f7e4"}.bi-gitlab::before{content:"\f7e5"}.bi-highlighter::before{content:"\f7f8"}.bi-marker-tip::before{content:"\f802"}.bi-nvme-fill::before{content:"\f803"}.bi-nvme::before{content:"\f80c"}.bi-opencollective::before{content:"\f80d"}.bi-pci-card-network::before{content:"\f8cd"}.bi-pci-card-sound::before{content:"\f8ce"}.bi-radar::before{content:"\f8cf"}.bi-send-arrow-down-fill::before{content:"\f8d0"}.bi-send-arrow-down::before{content:"\f8d1"}.bi-send-arrow-up-fill::before{content:"\f8d2"}.bi-send-arrow-up::before{content:"\f8d3"}.bi-sim-slash-fill::before{content:"\f8d4"}.bi-sim-slash::before{content:"\f8d5"}.bi-sourceforge::before{content:"\f8d6"}.bi-substack::before{content:"\f8d7"}.bi-threads-fill::before{content:"\f8d8"}.bi-threads::before{content:"\f8d9"}.bi-transparency::before{content:"\f8da"}.bi-twitter-x::before{content:"\f8db"}.bi-type-h4::before{content:"\f8dc"}.bi-type-h5::before{content:"\f8dd"}.bi-type-h6::before{content:"\f8de"}.bi-backpack-fill::before{content:"\f8df"}.bi-backpack::before{content:"\f8e0"}.bi-backpack2-fill::before{content:"\f8e1"}.bi-backpack2::before{content:"\f8e2"}.bi-backpack3-fill::before{content:"\f8e3"}.bi-backpack3::before{content:"\f8e4"}.bi-backpack4-fill::before{content:"\f8e5"}.bi-backpack4::before{content:"\f8e6"}.bi-brilliance::before{content:"\f8e7"}.bi-cake-fill::before{content:"\f8e8"}.bi-cake2-fill::before{content:"\f8e9"}.bi-duffle-fill::before{content:"\f8ea"}.bi-duffle::before{content:"\f8eb"}.bi-exposure::before{content:"\f8ec"}.bi-gender-neuter::before{content:"\f8ed"}.bi-highlights::before{content:"\f8ee"}.bi-luggage-fill::before{content:"\f8ef"}.bi-luggage::before{content:"\f8f0"}.bi-mailbox-flag::before{content:"\f8f1"}.bi-mailbox2-flag::before{content:"\f8f2"}.bi-noise-reduction::before{content:"\f8f3"}.bi-passport-fill::before{content:"\f8f4"}.bi-passport::before{content:"\f8f5"}.bi-person-arms-up::before{content:"\f8f6"}.bi-person-raised-hand::before{content:"\f8f7"}.bi-person-standing-dress::before{content:"\f8f8"}.bi-person-standing::before{content:"\f8f9"}.bi-person-walking::before{content:"\f8fa"}.bi-person-wheelchair::before{content:"\f8fb"}.bi-shadows::before{content:"\f8fc"}.bi-suitcase-fill::before{content:"\f8fd"}.bi-suitcase-lg-fill::before{content:"\f8fe"}.bi-suitcase-lg::before{content:"\f8ff"}.bi-suitcase::before{content:"\f900"}.bi-suitcase2-fill::before{content:"\f901"}.bi-suitcase2::before{content:"\f902"}.bi-vignette::before{content:"\f903"}.bi-bluesky::before{content:"\f7f9"}.bi-tux::before{content:"\f904"}.bi-beaker-fill::before{content:"\f905"}.bi-beaker::before{content:"\f906"}.bi-flask-fill::before{content:"\f907"}.bi-flask-florence-fill::before{content:"\f908"}.bi-flask-florence::before{content:"\f909"}.bi-flask::before{content:"\f90a"}.bi-leaf-fill::before{content:"\f90b"}.bi-leaf::before{content:"\f90c"}.bi-measuring-cup-fill::before{content:"\f90d"}.bi-measuring-cup::before{content:"\f90e"}.bi-unlock2-fill::before{content:"\f90f"}.bi-unlock2::before{content:"\f910"}.bi-battery-low::before{content:"\f911"}.bi-anthropic::before{content:"\f912"}.bi-apple-music::before{content:"\f913"}.bi-claude::before{content:"\f914"}.bi-openai::before{content:"\f915"}.bi-perplexity::before{content:"\f916"}.bi-css::before{content:"\f917"}.bi-javascript::before{content:"\f918"}.bi-typescript::before{content:"\f919"}.bi-fork-knife::before{content:"\f91a"}.bi-globe-americas-fill::before{content:"\f91b"}.bi-globe-asia-australia-fill::before{content:"\f91c"}.bi-globe-central-south-asia-fill::before{content:"\f91d"}.bi-globe-europe-africa-fill::before{content:"\f91e"} \ No newline at end of file diff --git a/icons/bootstrap-icons.scss b/icons/bootstrap-icons.scss new file mode 100644 index 0000000..19735c4 --- /dev/null +++ b/icons/bootstrap-icons.scss @@ -0,0 +1,2118 @@ +/*! + * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +$bootstrap-icons-font: "bootstrap-icons" !default; +$bootstrap-icons-font-dir: "./fonts" !default; +$bootstrap-icons-font-file: "#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}" !default; +$bootstrap-icons-font-hash: "24e3eb84d0bcaf83d77f904c78ac1f47" !default; +$bootstrap-icons-font-src: url("#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}") format("woff2"), + url("#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}") format("woff") !default; + +@font-face { + font-display: block; + font-family: $bootstrap-icons-font; + src: $bootstrap-icons-font-src; +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: $bootstrap-icons-font !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +$bootstrap-icons-map: ( + "123": "\f67f", + "alarm-fill": "\f101", + "alarm": "\f102", + "align-bottom": "\f103", + "align-center": "\f104", + "align-end": "\f105", + "align-middle": "\f106", + "align-start": "\f107", + "align-top": "\f108", + "alt": "\f109", + "app-indicator": "\f10a", + "app": "\f10b", + "archive-fill": "\f10c", + "archive": "\f10d", + "arrow-90deg-down": "\f10e", + "arrow-90deg-left": "\f10f", + "arrow-90deg-right": "\f110", + "arrow-90deg-up": "\f111", + "arrow-bar-down": "\f112", + "arrow-bar-left": "\f113", + "arrow-bar-right": "\f114", + "arrow-bar-up": "\f115", + "arrow-clockwise": "\f116", + "arrow-counterclockwise": "\f117", + "arrow-down-circle-fill": "\f118", + "arrow-down-circle": "\f119", + "arrow-down-left-circle-fill": "\f11a", + "arrow-down-left-circle": "\f11b", + "arrow-down-left-square-fill": "\f11c", + "arrow-down-left-square": "\f11d", + "arrow-down-left": "\f11e", + "arrow-down-right-circle-fill": "\f11f", + "arrow-down-right-circle": "\f120", + "arrow-down-right-square-fill": "\f121", + "arrow-down-right-square": "\f122", + "arrow-down-right": "\f123", + "arrow-down-short": "\f124", + "arrow-down-square-fill": "\f125", + "arrow-down-square": "\f126", + "arrow-down-up": "\f127", + "arrow-down": "\f128", + "arrow-left-circle-fill": "\f129", + "arrow-left-circle": "\f12a", + "arrow-left-right": "\f12b", + "arrow-left-short": "\f12c", + "arrow-left-square-fill": "\f12d", + "arrow-left-square": "\f12e", + "arrow-left": "\f12f", + "arrow-repeat": "\f130", + "arrow-return-left": "\f131", + "arrow-return-right": "\f132", + "arrow-right-circle-fill": "\f133", + "arrow-right-circle": "\f134", + "arrow-right-short": "\f135", + "arrow-right-square-fill": "\f136", + "arrow-right-square": "\f137", + "arrow-right": "\f138", + "arrow-up-circle-fill": "\f139", + "arrow-up-circle": "\f13a", + "arrow-up-left-circle-fill": "\f13b", + "arrow-up-left-circle": "\f13c", + "arrow-up-left-square-fill": "\f13d", + "arrow-up-left-square": "\f13e", + "arrow-up-left": "\f13f", + "arrow-up-right-circle-fill": "\f140", + "arrow-up-right-circle": "\f141", + "arrow-up-right-square-fill": "\f142", + "arrow-up-right-square": "\f143", + "arrow-up-right": "\f144", + "arrow-up-short": "\f145", + "arrow-up-square-fill": "\f146", + "arrow-up-square": "\f147", + "arrow-up": "\f148", + "arrows-angle-contract": "\f149", + "arrows-angle-expand": "\f14a", + "arrows-collapse": "\f14b", + "arrows-expand": "\f14c", + "arrows-fullscreen": "\f14d", + "arrows-move": "\f14e", + "aspect-ratio-fill": "\f14f", + "aspect-ratio": "\f150", + "asterisk": "\f151", + "at": "\f152", + "award-fill": "\f153", + "award": "\f154", + "back": "\f155", + "backspace-fill": "\f156", + "backspace-reverse-fill": "\f157", + "backspace-reverse": "\f158", + "backspace": "\f159", + "badge-3d-fill": "\f15a", + "badge-3d": "\f15b", + "badge-4k-fill": "\f15c", + "badge-4k": "\f15d", + "badge-8k-fill": "\f15e", + "badge-8k": "\f15f", + "badge-ad-fill": "\f160", + "badge-ad": "\f161", + "badge-ar-fill": "\f162", + "badge-ar": "\f163", + "badge-cc-fill": "\f164", + "badge-cc": "\f165", + "badge-hd-fill": "\f166", + "badge-hd": "\f167", + "badge-tm-fill": "\f168", + "badge-tm": "\f169", + "badge-vo-fill": "\f16a", + "badge-vo": "\f16b", + "badge-vr-fill": "\f16c", + "badge-vr": "\f16d", + "badge-wc-fill": "\f16e", + "badge-wc": "\f16f", + "bag-check-fill": "\f170", + "bag-check": "\f171", + "bag-dash-fill": "\f172", + "bag-dash": "\f173", + "bag-fill": "\f174", + "bag-plus-fill": "\f175", + "bag-plus": "\f176", + "bag-x-fill": "\f177", + "bag-x": "\f178", + "bag": "\f179", + "bar-chart-fill": "\f17a", + "bar-chart-line-fill": "\f17b", + "bar-chart-line": "\f17c", + "bar-chart-steps": "\f17d", + "bar-chart": "\f17e", + "basket-fill": "\f17f", + "basket": "\f180", + "basket2-fill": "\f181", + "basket2": "\f182", + "basket3-fill": "\f183", + "basket3": "\f184", + "battery-charging": "\f185", + "battery-full": "\f186", + "battery-half": "\f187", + "battery": "\f188", + "bell-fill": "\f189", + "bell": "\f18a", + "bezier": "\f18b", + "bezier2": "\f18c", + "bicycle": "\f18d", + "binoculars-fill": "\f18e", + "binoculars": "\f18f", + "blockquote-left": "\f190", + "blockquote-right": "\f191", + "book-fill": "\f192", + "book-half": "\f193", + "book": "\f194", + "bookmark-check-fill": "\f195", + "bookmark-check": "\f196", + "bookmark-dash-fill": "\f197", + "bookmark-dash": "\f198", + "bookmark-fill": "\f199", + "bookmark-heart-fill": "\f19a", + "bookmark-heart": "\f19b", + "bookmark-plus-fill": "\f19c", + "bookmark-plus": "\f19d", + "bookmark-star-fill": "\f19e", + "bookmark-star": "\f19f", + "bookmark-x-fill": "\f1a0", + "bookmark-x": "\f1a1", + "bookmark": "\f1a2", + "bookmarks-fill": "\f1a3", + "bookmarks": "\f1a4", + "bookshelf": "\f1a5", + "bootstrap-fill": "\f1a6", + "bootstrap-reboot": "\f1a7", + "bootstrap": "\f1a8", + "border-all": "\f1a9", + "border-bottom": "\f1aa", + "border-center": "\f1ab", + "border-inner": "\f1ac", + "border-left": "\f1ad", + "border-middle": "\f1ae", + "border-outer": "\f1af", + "border-right": "\f1b0", + "border-style": "\f1b1", + "border-top": "\f1b2", + "border-width": "\f1b3", + "border": "\f1b4", + "bounding-box-circles": "\f1b5", + "bounding-box": "\f1b6", + "box-arrow-down-left": "\f1b7", + "box-arrow-down-right": "\f1b8", + "box-arrow-down": "\f1b9", + "box-arrow-in-down-left": "\f1ba", + "box-arrow-in-down-right": "\f1bb", + "box-arrow-in-down": "\f1bc", + "box-arrow-in-left": "\f1bd", + "box-arrow-in-right": "\f1be", + "box-arrow-in-up-left": "\f1bf", + "box-arrow-in-up-right": "\f1c0", + "box-arrow-in-up": "\f1c1", + "box-arrow-left": "\f1c2", + "box-arrow-right": "\f1c3", + "box-arrow-up-left": "\f1c4", + "box-arrow-up-right": "\f1c5", + "box-arrow-up": "\f1c6", + "box-seam": "\f1c7", + "box": "\f1c8", + "braces": "\f1c9", + "bricks": "\f1ca", + "briefcase-fill": "\f1cb", + "briefcase": "\f1cc", + "brightness-alt-high-fill": "\f1cd", + "brightness-alt-high": "\f1ce", + "brightness-alt-low-fill": "\f1cf", + "brightness-alt-low": "\f1d0", + "brightness-high-fill": "\f1d1", + "brightness-high": "\f1d2", + "brightness-low-fill": "\f1d3", + "brightness-low": "\f1d4", + "broadcast-pin": "\f1d5", + "broadcast": "\f1d6", + "brush-fill": "\f1d7", + "brush": "\f1d8", + "bucket-fill": "\f1d9", + "bucket": "\f1da", + "bug-fill": "\f1db", + "bug": "\f1dc", + "building": "\f1dd", + "bullseye": "\f1de", + "calculator-fill": "\f1df", + "calculator": "\f1e0", + "calendar-check-fill": "\f1e1", + "calendar-check": "\f1e2", + "calendar-date-fill": "\f1e3", + "calendar-date": "\f1e4", + "calendar-day-fill": "\f1e5", + "calendar-day": "\f1e6", + "calendar-event-fill": "\f1e7", + "calendar-event": "\f1e8", + "calendar-fill": "\f1e9", + "calendar-minus-fill": "\f1ea", + "calendar-minus": "\f1eb", + "calendar-month-fill": "\f1ec", + "calendar-month": "\f1ed", + "calendar-plus-fill": "\f1ee", + "calendar-plus": "\f1ef", + "calendar-range-fill": "\f1f0", + "calendar-range": "\f1f1", + "calendar-week-fill": "\f1f2", + "calendar-week": "\f1f3", + "calendar-x-fill": "\f1f4", + "calendar-x": "\f1f5", + "calendar": "\f1f6", + "calendar2-check-fill": "\f1f7", + "calendar2-check": "\f1f8", + "calendar2-date-fill": "\f1f9", + "calendar2-date": "\f1fa", + "calendar2-day-fill": "\f1fb", + "calendar2-day": "\f1fc", + "calendar2-event-fill": "\f1fd", + "calendar2-event": "\f1fe", + "calendar2-fill": "\f1ff", + "calendar2-minus-fill": "\f200", + "calendar2-minus": "\f201", + "calendar2-month-fill": "\f202", + "calendar2-month": "\f203", + "calendar2-plus-fill": "\f204", + "calendar2-plus": "\f205", + "calendar2-range-fill": "\f206", + "calendar2-range": "\f207", + "calendar2-week-fill": "\f208", + "calendar2-week": "\f209", + "calendar2-x-fill": "\f20a", + "calendar2-x": "\f20b", + "calendar2": "\f20c", + "calendar3-event-fill": "\f20d", + "calendar3-event": "\f20e", + "calendar3-fill": "\f20f", + "calendar3-range-fill": "\f210", + "calendar3-range": "\f211", + "calendar3-week-fill": "\f212", + "calendar3-week": "\f213", + "calendar3": "\f214", + "calendar4-event": "\f215", + "calendar4-range": "\f216", + "calendar4-week": "\f217", + "calendar4": "\f218", + "camera-fill": "\f219", + "camera-reels-fill": "\f21a", + "camera-reels": "\f21b", + "camera-video-fill": "\f21c", + "camera-video-off-fill": "\f21d", + "camera-video-off": "\f21e", + "camera-video": "\f21f", + "camera": "\f220", + "camera2": "\f221", + "capslock-fill": "\f222", + "capslock": "\f223", + "card-checklist": "\f224", + "card-heading": "\f225", + "card-image": "\f226", + "card-list": "\f227", + "card-text": "\f228", + "caret-down-fill": "\f229", + "caret-down-square-fill": "\f22a", + "caret-down-square": "\f22b", + "caret-down": "\f22c", + "caret-left-fill": "\f22d", + "caret-left-square-fill": "\f22e", + "caret-left-square": "\f22f", + "caret-left": "\f230", + "caret-right-fill": "\f231", + "caret-right-square-fill": "\f232", + "caret-right-square": "\f233", + "caret-right": "\f234", + "caret-up-fill": "\f235", + "caret-up-square-fill": "\f236", + "caret-up-square": "\f237", + "caret-up": "\f238", + "cart-check-fill": "\f239", + "cart-check": "\f23a", + "cart-dash-fill": "\f23b", + "cart-dash": "\f23c", + "cart-fill": "\f23d", + "cart-plus-fill": "\f23e", + "cart-plus": "\f23f", + "cart-x-fill": "\f240", + "cart-x": "\f241", + "cart": "\f242", + "cart2": "\f243", + "cart3": "\f244", + "cart4": "\f245", + "cash-stack": "\f246", + "cash": "\f247", + "cast": "\f248", + "chat-dots-fill": "\f249", + "chat-dots": "\f24a", + "chat-fill": "\f24b", + "chat-left-dots-fill": "\f24c", + "chat-left-dots": "\f24d", + "chat-left-fill": "\f24e", + "chat-left-quote-fill": "\f24f", + "chat-left-quote": "\f250", + "chat-left-text-fill": "\f251", + "chat-left-text": "\f252", + "chat-left": "\f253", + "chat-quote-fill": "\f254", + "chat-quote": "\f255", + "chat-right-dots-fill": "\f256", + "chat-right-dots": "\f257", + "chat-right-fill": "\f258", + "chat-right-quote-fill": "\f259", + "chat-right-quote": "\f25a", + "chat-right-text-fill": "\f25b", + "chat-right-text": "\f25c", + "chat-right": "\f25d", + "chat-square-dots-fill": "\f25e", + "chat-square-dots": "\f25f", + "chat-square-fill": "\f260", + "chat-square-quote-fill": "\f261", + "chat-square-quote": "\f262", + "chat-square-text-fill": "\f263", + "chat-square-text": "\f264", + "chat-square": "\f265", + "chat-text-fill": "\f266", + "chat-text": "\f267", + "chat": "\f268", + "check-all": "\f269", + "check-circle-fill": "\f26a", + "check-circle": "\f26b", + "check-square-fill": "\f26c", + "check-square": "\f26d", + "check": "\f26e", + "check2-all": "\f26f", + "check2-circle": "\f270", + "check2-square": "\f271", + "check2": "\f272", + "chevron-bar-contract": "\f273", + "chevron-bar-down": "\f274", + "chevron-bar-expand": "\f275", + "chevron-bar-left": "\f276", + "chevron-bar-right": "\f277", + "chevron-bar-up": "\f278", + "chevron-compact-down": "\f279", + "chevron-compact-left": "\f27a", + "chevron-compact-right": "\f27b", + "chevron-compact-up": "\f27c", + "chevron-contract": "\f27d", + "chevron-double-down": "\f27e", + "chevron-double-left": "\f27f", + "chevron-double-right": "\f280", + "chevron-double-up": "\f281", + "chevron-down": "\f282", + "chevron-expand": "\f283", + "chevron-left": "\f284", + "chevron-right": "\f285", + "chevron-up": "\f286", + "circle-fill": "\f287", + "circle-half": "\f288", + "circle-square": "\f289", + "circle": "\f28a", + "clipboard-check": "\f28b", + "clipboard-data": "\f28c", + "clipboard-minus": "\f28d", + "clipboard-plus": "\f28e", + "clipboard-x": "\f28f", + "clipboard": "\f290", + "clock-fill": "\f291", + "clock-history": "\f292", + "clock": "\f293", + "cloud-arrow-down-fill": "\f294", + "cloud-arrow-down": "\f295", + "cloud-arrow-up-fill": "\f296", + "cloud-arrow-up": "\f297", + "cloud-check-fill": "\f298", + "cloud-check": "\f299", + "cloud-download-fill": "\f29a", + "cloud-download": "\f29b", + "cloud-drizzle-fill": "\f29c", + "cloud-drizzle": "\f29d", + "cloud-fill": "\f29e", + "cloud-fog-fill": "\f29f", + "cloud-fog": "\f2a0", + "cloud-fog2-fill": "\f2a1", + "cloud-fog2": "\f2a2", + "cloud-hail-fill": "\f2a3", + "cloud-hail": "\f2a4", + "cloud-haze-fill": "\f2a6", + "cloud-haze": "\f2a7", + "cloud-haze2-fill": "\f2a8", + "cloud-lightning-fill": "\f2a9", + "cloud-lightning-rain-fill": "\f2aa", + "cloud-lightning-rain": "\f2ab", + "cloud-lightning": "\f2ac", + "cloud-minus-fill": "\f2ad", + "cloud-minus": "\f2ae", + "cloud-moon-fill": "\f2af", + "cloud-moon": "\f2b0", + "cloud-plus-fill": "\f2b1", + "cloud-plus": "\f2b2", + "cloud-rain-fill": "\f2b3", + "cloud-rain-heavy-fill": "\f2b4", + "cloud-rain-heavy": "\f2b5", + "cloud-rain": "\f2b6", + "cloud-slash-fill": "\f2b7", + "cloud-slash": "\f2b8", + "cloud-sleet-fill": "\f2b9", + "cloud-sleet": "\f2ba", + "cloud-snow-fill": "\f2bb", + "cloud-snow": "\f2bc", + "cloud-sun-fill": "\f2bd", + "cloud-sun": "\f2be", + "cloud-upload-fill": "\f2bf", + "cloud-upload": "\f2c0", + "cloud": "\f2c1", + "clouds-fill": "\f2c2", + "clouds": "\f2c3", + "cloudy-fill": "\f2c4", + "cloudy": "\f2c5", + "code-slash": "\f2c6", + "code-square": "\f2c7", + "code": "\f2c8", + "collection-fill": "\f2c9", + "collection-play-fill": "\f2ca", + "collection-play": "\f2cb", + "collection": "\f2cc", + "columns-gap": "\f2cd", + "columns": "\f2ce", + "command": "\f2cf", + "compass-fill": "\f2d0", + "compass": "\f2d1", + "cone-striped": "\f2d2", + "cone": "\f2d3", + "controller": "\f2d4", + "cpu-fill": "\f2d5", + "cpu": "\f2d6", + "credit-card-2-back-fill": "\f2d7", + "credit-card-2-back": "\f2d8", + "credit-card-2-front-fill": "\f2d9", + "credit-card-2-front": "\f2da", + "credit-card-fill": "\f2db", + "credit-card": "\f2dc", + "crop": "\f2dd", + "cup-fill": "\f2de", + "cup-straw": "\f2df", + "cup": "\f2e0", + "cursor-fill": "\f2e1", + "cursor-text": "\f2e2", + "cursor": "\f2e3", + "dash-circle-dotted": "\f2e4", + "dash-circle-fill": "\f2e5", + "dash-circle": "\f2e6", + "dash-square-dotted": "\f2e7", + "dash-square-fill": "\f2e8", + "dash-square": "\f2e9", + "dash": "\f2ea", + "diagram-2-fill": "\f2eb", + "diagram-2": "\f2ec", + "diagram-3-fill": "\f2ed", + "diagram-3": "\f2ee", + "diamond-fill": "\f2ef", + "diamond-half": "\f2f0", + "diamond": "\f2f1", + "dice-1-fill": "\f2f2", + "dice-1": "\f2f3", + "dice-2-fill": "\f2f4", + "dice-2": "\f2f5", + "dice-3-fill": "\f2f6", + "dice-3": "\f2f7", + "dice-4-fill": "\f2f8", + "dice-4": "\f2f9", + "dice-5-fill": "\f2fa", + "dice-5": "\f2fb", + "dice-6-fill": "\f2fc", + "dice-6": "\f2fd", + "disc-fill": "\f2fe", + "disc": "\f2ff", + "discord": "\f300", + "display-fill": "\f301", + "display": "\f302", + "distribute-horizontal": "\f303", + "distribute-vertical": "\f304", + "door-closed-fill": "\f305", + "door-closed": "\f306", + "door-open-fill": "\f307", + "door-open": "\f308", + "dot": "\f309", + "download": "\f30a", + "droplet-fill": "\f30b", + "droplet-half": "\f30c", + "droplet": "\f30d", + "earbuds": "\f30e", + "easel-fill": "\f30f", + "easel": "\f310", + "egg-fill": "\f311", + "egg-fried": "\f312", + "egg": "\f313", + "eject-fill": "\f314", + "eject": "\f315", + "emoji-angry-fill": "\f316", + "emoji-angry": "\f317", + "emoji-dizzy-fill": "\f318", + "emoji-dizzy": "\f319", + "emoji-expressionless-fill": "\f31a", + "emoji-expressionless": "\f31b", + "emoji-frown-fill": "\f31c", + "emoji-frown": "\f31d", + "emoji-heart-eyes-fill": "\f31e", + "emoji-heart-eyes": "\f31f", + "emoji-laughing-fill": "\f320", + "emoji-laughing": "\f321", + "emoji-neutral-fill": "\f322", + "emoji-neutral": "\f323", + "emoji-smile-fill": "\f324", + "emoji-smile-upside-down-fill": "\f325", + "emoji-smile-upside-down": "\f326", + "emoji-smile": "\f327", + "emoji-sunglasses-fill": "\f328", + "emoji-sunglasses": "\f329", + "emoji-wink-fill": "\f32a", + "emoji-wink": "\f32b", + "envelope-fill": "\f32c", + "envelope-open-fill": "\f32d", + "envelope-open": "\f32e", + "envelope": "\f32f", + "eraser-fill": "\f330", + "eraser": "\f331", + "exclamation-circle-fill": "\f332", + "exclamation-circle": "\f333", + "exclamation-diamond-fill": "\f334", + "exclamation-diamond": "\f335", + "exclamation-octagon-fill": "\f336", + "exclamation-octagon": "\f337", + "exclamation-square-fill": "\f338", + "exclamation-square": "\f339", + "exclamation-triangle-fill": "\f33a", + "exclamation-triangle": "\f33b", + "exclamation": "\f33c", + "exclude": "\f33d", + "eye-fill": "\f33e", + "eye-slash-fill": "\f33f", + "eye-slash": "\f340", + "eye": "\f341", + "eyedropper": "\f342", + "eyeglasses": "\f343", + "facebook": "\f344", + "file-arrow-down-fill": "\f345", + "file-arrow-down": "\f346", + "file-arrow-up-fill": "\f347", + "file-arrow-up": "\f348", + "file-bar-graph-fill": "\f349", + "file-bar-graph": "\f34a", + "file-binary-fill": "\f34b", + "file-binary": "\f34c", + "file-break-fill": "\f34d", + "file-break": "\f34e", + "file-check-fill": "\f34f", + "file-check": "\f350", + "file-code-fill": "\f351", + "file-code": "\f352", + "file-diff-fill": "\f353", + "file-diff": "\f354", + "file-earmark-arrow-down-fill": "\f355", + "file-earmark-arrow-down": "\f356", + "file-earmark-arrow-up-fill": "\f357", + "file-earmark-arrow-up": "\f358", + "file-earmark-bar-graph-fill": "\f359", + "file-earmark-bar-graph": "\f35a", + "file-earmark-binary-fill": "\f35b", + "file-earmark-binary": "\f35c", + "file-earmark-break-fill": "\f35d", + "file-earmark-break": "\f35e", + "file-earmark-check-fill": "\f35f", + "file-earmark-check": "\f360", + "file-earmark-code-fill": "\f361", + "file-earmark-code": "\f362", + "file-earmark-diff-fill": "\f363", + "file-earmark-diff": "\f364", + "file-earmark-easel-fill": "\f365", + "file-earmark-easel": "\f366", + "file-earmark-excel-fill": "\f367", + "file-earmark-excel": "\f368", + "file-earmark-fill": "\f369", + "file-earmark-font-fill": "\f36a", + "file-earmark-font": "\f36b", + "file-earmark-image-fill": "\f36c", + "file-earmark-image": "\f36d", + "file-earmark-lock-fill": "\f36e", + "file-earmark-lock": "\f36f", + "file-earmark-lock2-fill": "\f370", + "file-earmark-lock2": "\f371", + "file-earmark-medical-fill": "\f372", + "file-earmark-medical": "\f373", + "file-earmark-minus-fill": "\f374", + "file-earmark-minus": "\f375", + "file-earmark-music-fill": "\f376", + "file-earmark-music": "\f377", + "file-earmark-person-fill": "\f378", + "file-earmark-person": "\f379", + "file-earmark-play-fill": "\f37a", + "file-earmark-play": "\f37b", + "file-earmark-plus-fill": "\f37c", + "file-earmark-plus": "\f37d", + "file-earmark-post-fill": "\f37e", + "file-earmark-post": "\f37f", + "file-earmark-ppt-fill": "\f380", + "file-earmark-ppt": "\f381", + "file-earmark-richtext-fill": "\f382", + "file-earmark-richtext": "\f383", + "file-earmark-ruled-fill": "\f384", + "file-earmark-ruled": "\f385", + "file-earmark-slides-fill": "\f386", + "file-earmark-slides": "\f387", + "file-earmark-spreadsheet-fill": "\f388", + "file-earmark-spreadsheet": "\f389", + "file-earmark-text-fill": "\f38a", + "file-earmark-text": "\f38b", + "file-earmark-word-fill": "\f38c", + "file-earmark-word": "\f38d", + "file-earmark-x-fill": "\f38e", + "file-earmark-x": "\f38f", + "file-earmark-zip-fill": "\f390", + "file-earmark-zip": "\f391", + "file-earmark": "\f392", + "file-easel-fill": "\f393", + "file-easel": "\f394", + "file-excel-fill": "\f395", + "file-excel": "\f396", + "file-fill": "\f397", + "file-font-fill": "\f398", + "file-font": "\f399", + "file-image-fill": "\f39a", + "file-image": "\f39b", + "file-lock-fill": "\f39c", + "file-lock": "\f39d", + "file-lock2-fill": "\f39e", + "file-lock2": "\f39f", + "file-medical-fill": "\f3a0", + "file-medical": "\f3a1", + "file-minus-fill": "\f3a2", + "file-minus": "\f3a3", + "file-music-fill": "\f3a4", + "file-music": "\f3a5", + "file-person-fill": "\f3a6", + "file-person": "\f3a7", + "file-play-fill": "\f3a8", + "file-play": "\f3a9", + "file-plus-fill": "\f3aa", + "file-plus": "\f3ab", + "file-post-fill": "\f3ac", + "file-post": "\f3ad", + "file-ppt-fill": "\f3ae", + "file-ppt": "\f3af", + "file-richtext-fill": "\f3b0", + "file-richtext": "\f3b1", + "file-ruled-fill": "\f3b2", + "file-ruled": "\f3b3", + "file-slides-fill": "\f3b4", + "file-slides": "\f3b5", + "file-spreadsheet-fill": "\f3b6", + "file-spreadsheet": "\f3b7", + "file-text-fill": "\f3b8", + "file-text": "\f3b9", + "file-word-fill": "\f3ba", + "file-word": "\f3bb", + "file-x-fill": "\f3bc", + "file-x": "\f3bd", + "file-zip-fill": "\f3be", + "file-zip": "\f3bf", + "file": "\f3c0", + "files-alt": "\f3c1", + "files": "\f3c2", + "film": "\f3c3", + "filter-circle-fill": "\f3c4", + "filter-circle": "\f3c5", + "filter-left": "\f3c6", + "filter-right": "\f3c7", + "filter-square-fill": "\f3c8", + "filter-square": "\f3c9", + "filter": "\f3ca", + "flag-fill": "\f3cb", + "flag": "\f3cc", + "flower1": "\f3cd", + "flower2": "\f3ce", + "flower3": "\f3cf", + "folder-check": "\f3d0", + "folder-fill": "\f3d1", + "folder-minus": "\f3d2", + "folder-plus": "\f3d3", + "folder-symlink-fill": "\f3d4", + "folder-symlink": "\f3d5", + "folder-x": "\f3d6", + "folder": "\f3d7", + "folder2-open": "\f3d8", + "folder2": "\f3d9", + "fonts": "\f3da", + "forward-fill": "\f3db", + "forward": "\f3dc", + "front": "\f3dd", + "fullscreen-exit": "\f3de", + "fullscreen": "\f3df", + "funnel-fill": "\f3e0", + "funnel": "\f3e1", + "gear-fill": "\f3e2", + "gear-wide-connected": "\f3e3", + "gear-wide": "\f3e4", + "gear": "\f3e5", + "gem": "\f3e6", + "geo-alt-fill": "\f3e7", + "geo-alt": "\f3e8", + "geo-fill": "\f3e9", + "geo": "\f3ea", + "gift-fill": "\f3eb", + "gift": "\f3ec", + "github": "\f3ed", + "globe": "\f3ee", + "globe2": "\f3ef", + "google": "\f3f0", + "graph-down": "\f3f1", + "graph-up": "\f3f2", + "grid-1x2-fill": "\f3f3", + "grid-1x2": "\f3f4", + "grid-3x2-gap-fill": "\f3f5", + "grid-3x2-gap": "\f3f6", + "grid-3x2": "\f3f7", + "grid-3x3-gap-fill": "\f3f8", + "grid-3x3-gap": "\f3f9", + "grid-3x3": "\f3fa", + "grid-fill": "\f3fb", + "grid": "\f3fc", + "grip-horizontal": "\f3fd", + "grip-vertical": "\f3fe", + "hammer": "\f3ff", + "hand-index-fill": "\f400", + "hand-index-thumb-fill": "\f401", + "hand-index-thumb": "\f402", + "hand-index": "\f403", + "hand-thumbs-down-fill": "\f404", + "hand-thumbs-down": "\f405", + "hand-thumbs-up-fill": "\f406", + "hand-thumbs-up": "\f407", + "handbag-fill": "\f408", + "handbag": "\f409", + "hash": "\f40a", + "hdd-fill": "\f40b", + "hdd-network-fill": "\f40c", + "hdd-network": "\f40d", + "hdd-rack-fill": "\f40e", + "hdd-rack": "\f40f", + "hdd-stack-fill": "\f410", + "hdd-stack": "\f411", + "hdd": "\f412", + "headphones": "\f413", + "headset": "\f414", + "heart-fill": "\f415", + "heart-half": "\f416", + "heart": "\f417", + "heptagon-fill": "\f418", + "heptagon-half": "\f419", + "heptagon": "\f41a", + "hexagon-fill": "\f41b", + "hexagon-half": "\f41c", + "hexagon": "\f41d", + "hourglass-bottom": "\f41e", + "hourglass-split": "\f41f", + "hourglass-top": "\f420", + "hourglass": "\f421", + "house-door-fill": "\f422", + "house-door": "\f423", + "house-fill": "\f424", + "house": "\f425", + "hr": "\f426", + "hurricane": "\f427", + "image-alt": "\f428", + "image-fill": "\f429", + "image": "\f42a", + "images": "\f42b", + "inbox-fill": "\f42c", + "inbox": "\f42d", + "inboxes-fill": "\f42e", + "inboxes": "\f42f", + "info-circle-fill": "\f430", + "info-circle": "\f431", + "info-square-fill": "\f432", + "info-square": "\f433", + "info": "\f434", + "input-cursor-text": "\f435", + "input-cursor": "\f436", + "instagram": "\f437", + "intersect": "\f438", + "journal-album": "\f439", + "journal-arrow-down": "\f43a", + "journal-arrow-up": "\f43b", + "journal-bookmark-fill": "\f43c", + "journal-bookmark": "\f43d", + "journal-check": "\f43e", + "journal-code": "\f43f", + "journal-medical": "\f440", + "journal-minus": "\f441", + "journal-plus": "\f442", + "journal-richtext": "\f443", + "journal-text": "\f444", + "journal-x": "\f445", + "journal": "\f446", + "journals": "\f447", + "joystick": "\f448", + "justify-left": "\f449", + "justify-right": "\f44a", + "justify": "\f44b", + "kanban-fill": "\f44c", + "kanban": "\f44d", + "key-fill": "\f44e", + "key": "\f44f", + "keyboard-fill": "\f450", + "keyboard": "\f451", + "ladder": "\f452", + "lamp-fill": "\f453", + "lamp": "\f454", + "laptop-fill": "\f455", + "laptop": "\f456", + "layer-backward": "\f457", + "layer-forward": "\f458", + "layers-fill": "\f459", + "layers-half": "\f45a", + "layers": "\f45b", + "layout-sidebar-inset-reverse": "\f45c", + "layout-sidebar-inset": "\f45d", + "layout-sidebar-reverse": "\f45e", + "layout-sidebar": "\f45f", + "layout-split": "\f460", + "layout-text-sidebar-reverse": "\f461", + "layout-text-sidebar": "\f462", + "layout-text-window-reverse": "\f463", + "layout-text-window": "\f464", + "layout-three-columns": "\f465", + "layout-wtf": "\f466", + "life-preserver": "\f467", + "lightbulb-fill": "\f468", + "lightbulb-off-fill": "\f469", + "lightbulb-off": "\f46a", + "lightbulb": "\f46b", + "lightning-charge-fill": "\f46c", + "lightning-charge": "\f46d", + "lightning-fill": "\f46e", + "lightning": "\f46f", + "link-45deg": "\f470", + "link": "\f471", + "linkedin": "\f472", + "list-check": "\f473", + "list-nested": "\f474", + "list-ol": "\f475", + "list-stars": "\f476", + "list-task": "\f477", + "list-ul": "\f478", + "list": "\f479", + "lock-fill": "\f47a", + "lock": "\f47b", + "mailbox": "\f47c", + "mailbox2": "\f47d", + "map-fill": "\f47e", + "map": "\f47f", + "markdown-fill": "\f480", + "markdown": "\f481", + "mask": "\f482", + "megaphone-fill": "\f483", + "megaphone": "\f484", + "menu-app-fill": "\f485", + "menu-app": "\f486", + "menu-button-fill": "\f487", + "menu-button-wide-fill": "\f488", + "menu-button-wide": "\f489", + "menu-button": "\f48a", + "menu-down": "\f48b", + "menu-up": "\f48c", + "mic-fill": "\f48d", + "mic-mute-fill": "\f48e", + "mic-mute": "\f48f", + "mic": "\f490", + "minecart-loaded": "\f491", + "minecart": "\f492", + "moisture": "\f493", + "moon-fill": "\f494", + "moon-stars-fill": "\f495", + "moon-stars": "\f496", + "moon": "\f497", + "mouse-fill": "\f498", + "mouse": "\f499", + "mouse2-fill": "\f49a", + "mouse2": "\f49b", + "mouse3-fill": "\f49c", + "mouse3": "\f49d", + "music-note-beamed": "\f49e", + "music-note-list": "\f49f", + "music-note": "\f4a0", + "music-player-fill": "\f4a1", + "music-player": "\f4a2", + "newspaper": "\f4a3", + "node-minus-fill": "\f4a4", + "node-minus": "\f4a5", + "node-plus-fill": "\f4a6", + "node-plus": "\f4a7", + "nut-fill": "\f4a8", + "nut": "\f4a9", + "octagon-fill": "\f4aa", + "octagon-half": "\f4ab", + "octagon": "\f4ac", + "option": "\f4ad", + "outlet": "\f4ae", + "paint-bucket": "\f4af", + "palette-fill": "\f4b0", + "palette": "\f4b1", + "palette2": "\f4b2", + "paperclip": "\f4b3", + "paragraph": "\f4b4", + "patch-check-fill": "\f4b5", + "patch-check": "\f4b6", + "patch-exclamation-fill": "\f4b7", + "patch-exclamation": "\f4b8", + "patch-minus-fill": "\f4b9", + "patch-minus": "\f4ba", + "patch-plus-fill": "\f4bb", + "patch-plus": "\f4bc", + "patch-question-fill": "\f4bd", + "patch-question": "\f4be", + "pause-btn-fill": "\f4bf", + "pause-btn": "\f4c0", + "pause-circle-fill": "\f4c1", + "pause-circle": "\f4c2", + "pause-fill": "\f4c3", + "pause": "\f4c4", + "peace-fill": "\f4c5", + "peace": "\f4c6", + "pen-fill": "\f4c7", + "pen": "\f4c8", + "pencil-fill": "\f4c9", + "pencil-square": "\f4ca", + "pencil": "\f4cb", + "pentagon-fill": "\f4cc", + "pentagon-half": "\f4cd", + "pentagon": "\f4ce", + "people-fill": "\f4cf", + "people": "\f4d0", + "percent": "\f4d1", + "person-badge-fill": "\f4d2", + "person-badge": "\f4d3", + "person-bounding-box": "\f4d4", + "person-check-fill": "\f4d5", + "person-check": "\f4d6", + "person-circle": "\f4d7", + "person-dash-fill": "\f4d8", + "person-dash": "\f4d9", + "person-fill": "\f4da", + "person-lines-fill": "\f4db", + "person-plus-fill": "\f4dc", + "person-plus": "\f4dd", + "person-square": "\f4de", + "person-x-fill": "\f4df", + "person-x": "\f4e0", + "person": "\f4e1", + "phone-fill": "\f4e2", + "phone-landscape-fill": "\f4e3", + "phone-landscape": "\f4e4", + "phone-vibrate-fill": "\f4e5", + "phone-vibrate": "\f4e6", + "phone": "\f4e7", + "pie-chart-fill": "\f4e8", + "pie-chart": "\f4e9", + "pin-angle-fill": "\f4ea", + "pin-angle": "\f4eb", + "pin-fill": "\f4ec", + "pin": "\f4ed", + "pip-fill": "\f4ee", + "pip": "\f4ef", + "play-btn-fill": "\f4f0", + "play-btn": "\f4f1", + "play-circle-fill": "\f4f2", + "play-circle": "\f4f3", + "play-fill": "\f4f4", + "play": "\f4f5", + "plug-fill": "\f4f6", + "plug": "\f4f7", + "plus-circle-dotted": "\f4f8", + "plus-circle-fill": "\f4f9", + "plus-circle": "\f4fa", + "plus-square-dotted": "\f4fb", + "plus-square-fill": "\f4fc", + "plus-square": "\f4fd", + "plus": "\f4fe", + "power": "\f4ff", + "printer-fill": "\f500", + "printer": "\f501", + "puzzle-fill": "\f502", + "puzzle": "\f503", + "question-circle-fill": "\f504", + "question-circle": "\f505", + "question-diamond-fill": "\f506", + "question-diamond": "\f507", + "question-octagon-fill": "\f508", + "question-octagon": "\f509", + "question-square-fill": "\f50a", + "question-square": "\f50b", + "question": "\f50c", + "rainbow": "\f50d", + "receipt-cutoff": "\f50e", + "receipt": "\f50f", + "reception-0": "\f510", + "reception-1": "\f511", + "reception-2": "\f512", + "reception-3": "\f513", + "reception-4": "\f514", + "record-btn-fill": "\f515", + "record-btn": "\f516", + "record-circle-fill": "\f517", + "record-circle": "\f518", + "record-fill": "\f519", + "record": "\f51a", + "record2-fill": "\f51b", + "record2": "\f51c", + "reply-all-fill": "\f51d", + "reply-all": "\f51e", + "reply-fill": "\f51f", + "reply": "\f520", + "rss-fill": "\f521", + "rss": "\f522", + "rulers": "\f523", + "save-fill": "\f524", + "save": "\f525", + "save2-fill": "\f526", + "save2": "\f527", + "scissors": "\f528", + "screwdriver": "\f529", + "search": "\f52a", + "segmented-nav": "\f52b", + "server": "\f52c", + "share-fill": "\f52d", + "share": "\f52e", + "shield-check": "\f52f", + "shield-exclamation": "\f530", + "shield-fill-check": "\f531", + "shield-fill-exclamation": "\f532", + "shield-fill-minus": "\f533", + "shield-fill-plus": "\f534", + "shield-fill-x": "\f535", + "shield-fill": "\f536", + "shield-lock-fill": "\f537", + "shield-lock": "\f538", + "shield-minus": "\f539", + "shield-plus": "\f53a", + "shield-shaded": "\f53b", + "shield-slash-fill": "\f53c", + "shield-slash": "\f53d", + "shield-x": "\f53e", + "shield": "\f53f", + "shift-fill": "\f540", + "shift": "\f541", + "shop-window": "\f542", + "shop": "\f543", + "shuffle": "\f544", + "signpost-2-fill": "\f545", + "signpost-2": "\f546", + "signpost-fill": "\f547", + "signpost-split-fill": "\f548", + "signpost-split": "\f549", + "signpost": "\f54a", + "sim-fill": "\f54b", + "sim": "\f54c", + "skip-backward-btn-fill": "\f54d", + "skip-backward-btn": "\f54e", + "skip-backward-circle-fill": "\f54f", + "skip-backward-circle": "\f550", + "skip-backward-fill": "\f551", + "skip-backward": "\f552", + "skip-end-btn-fill": "\f553", + "skip-end-btn": "\f554", + "skip-end-circle-fill": "\f555", + "skip-end-circle": "\f556", + "skip-end-fill": "\f557", + "skip-end": "\f558", + "skip-forward-btn-fill": "\f559", + "skip-forward-btn": "\f55a", + "skip-forward-circle-fill": "\f55b", + "skip-forward-circle": "\f55c", + "skip-forward-fill": "\f55d", + "skip-forward": "\f55e", + "skip-start-btn-fill": "\f55f", + "skip-start-btn": "\f560", + "skip-start-circle-fill": "\f561", + "skip-start-circle": "\f562", + "skip-start-fill": "\f563", + "skip-start": "\f564", + "slack": "\f565", + "slash-circle-fill": "\f566", + "slash-circle": "\f567", + "slash-square-fill": "\f568", + "slash-square": "\f569", + "slash": "\f56a", + "sliders": "\f56b", + "smartwatch": "\f56c", + "snow": "\f56d", + "snow2": "\f56e", + "snow3": "\f56f", + "sort-alpha-down-alt": "\f570", + "sort-alpha-down": "\f571", + "sort-alpha-up-alt": "\f572", + "sort-alpha-up": "\f573", + "sort-down-alt": "\f574", + "sort-down": "\f575", + "sort-numeric-down-alt": "\f576", + "sort-numeric-down": "\f577", + "sort-numeric-up-alt": "\f578", + "sort-numeric-up": "\f579", + "sort-up-alt": "\f57a", + "sort-up": "\f57b", + "soundwave": "\f57c", + "speaker-fill": "\f57d", + "speaker": "\f57e", + "speedometer": "\f57f", + "speedometer2": "\f580", + "spellcheck": "\f581", + "square-fill": "\f582", + "square-half": "\f583", + "square": "\f584", + "stack": "\f585", + "star-fill": "\f586", + "star-half": "\f587", + "star": "\f588", + "stars": "\f589", + "stickies-fill": "\f58a", + "stickies": "\f58b", + "sticky-fill": "\f58c", + "sticky": "\f58d", + "stop-btn-fill": "\f58e", + "stop-btn": "\f58f", + "stop-circle-fill": "\f590", + "stop-circle": "\f591", + "stop-fill": "\f592", + "stop": "\f593", + "stoplights-fill": "\f594", + "stoplights": "\f595", + "stopwatch-fill": "\f596", + "stopwatch": "\f597", + "subtract": "\f598", + "suit-club-fill": "\f599", + "suit-club": "\f59a", + "suit-diamond-fill": "\f59b", + "suit-diamond": "\f59c", + "suit-heart-fill": "\f59d", + "suit-heart": "\f59e", + "suit-spade-fill": "\f59f", + "suit-spade": "\f5a0", + "sun-fill": "\f5a1", + "sun": "\f5a2", + "sunglasses": "\f5a3", + "sunrise-fill": "\f5a4", + "sunrise": "\f5a5", + "sunset-fill": "\f5a6", + "sunset": "\f5a7", + "symmetry-horizontal": "\f5a8", + "symmetry-vertical": "\f5a9", + "table": "\f5aa", + "tablet-fill": "\f5ab", + "tablet-landscape-fill": "\f5ac", + "tablet-landscape": "\f5ad", + "tablet": "\f5ae", + "tag-fill": "\f5af", + "tag": "\f5b0", + "tags-fill": "\f5b1", + "tags": "\f5b2", + "telegram": "\f5b3", + "telephone-fill": "\f5b4", + "telephone-forward-fill": "\f5b5", + "telephone-forward": "\f5b6", + "telephone-inbound-fill": "\f5b7", + "telephone-inbound": "\f5b8", + "telephone-minus-fill": "\f5b9", + "telephone-minus": "\f5ba", + "telephone-outbound-fill": "\f5bb", + "telephone-outbound": "\f5bc", + "telephone-plus-fill": "\f5bd", + "telephone-plus": "\f5be", + "telephone-x-fill": "\f5bf", + "telephone-x": "\f5c0", + "telephone": "\f5c1", + "terminal-fill": "\f5c2", + "terminal": "\f5c3", + "text-center": "\f5c4", + "text-indent-left": "\f5c5", + "text-indent-right": "\f5c6", + "text-left": "\f5c7", + "text-paragraph": "\f5c8", + "text-right": "\f5c9", + "textarea-resize": "\f5ca", + "textarea-t": "\f5cb", + "textarea": "\f5cc", + "thermometer-half": "\f5cd", + "thermometer-high": "\f5ce", + "thermometer-low": "\f5cf", + "thermometer-snow": "\f5d0", + "thermometer-sun": "\f5d1", + "thermometer": "\f5d2", + "three-dots-vertical": "\f5d3", + "three-dots": "\f5d4", + "toggle-off": "\f5d5", + "toggle-on": "\f5d6", + "toggle2-off": "\f5d7", + "toggle2-on": "\f5d8", + "toggles": "\f5d9", + "toggles2": "\f5da", + "tools": "\f5db", + "tornado": "\f5dc", + "trash-fill": "\f5dd", + "trash": "\f5de", + "trash2-fill": "\f5df", + "trash2": "\f5e0", + "tree-fill": "\f5e1", + "tree": "\f5e2", + "triangle-fill": "\f5e3", + "triangle-half": "\f5e4", + "triangle": "\f5e5", + "trophy-fill": "\f5e6", + "trophy": "\f5e7", + "tropical-storm": "\f5e8", + "truck-flatbed": "\f5e9", + "truck": "\f5ea", + "tsunami": "\f5eb", + "tv-fill": "\f5ec", + "tv": "\f5ed", + "twitch": "\f5ee", + "twitter": "\f5ef", + "type-bold": "\f5f0", + "type-h1": "\f5f1", + "type-h2": "\f5f2", + "type-h3": "\f5f3", + "type-italic": "\f5f4", + "type-strikethrough": "\f5f5", + "type-underline": "\f5f6", + "type": "\f5f7", + "ui-checks-grid": "\f5f8", + "ui-checks": "\f5f9", + "ui-radios-grid": "\f5fa", + "ui-radios": "\f5fb", + "umbrella-fill": "\f5fc", + "umbrella": "\f5fd", + "union": "\f5fe", + "unlock-fill": "\f5ff", + "unlock": "\f600", + "upc-scan": "\f601", + "upc": "\f602", + "upload": "\f603", + "vector-pen": "\f604", + "view-list": "\f605", + "view-stacked": "\f606", + "vinyl-fill": "\f607", + "vinyl": "\f608", + "voicemail": "\f609", + "volume-down-fill": "\f60a", + "volume-down": "\f60b", + "volume-mute-fill": "\f60c", + "volume-mute": "\f60d", + "volume-off-fill": "\f60e", + "volume-off": "\f60f", + "volume-up-fill": "\f610", + "volume-up": "\f611", + "vr": "\f612", + "wallet-fill": "\f613", + "wallet": "\f614", + "wallet2": "\f615", + "watch": "\f616", + "water": "\f617", + "whatsapp": "\f618", + "wifi-1": "\f619", + "wifi-2": "\f61a", + "wifi-off": "\f61b", + "wifi": "\f61c", + "wind": "\f61d", + "window-dock": "\f61e", + "window-sidebar": "\f61f", + "window": "\f620", + "wrench": "\f621", + "x-circle-fill": "\f622", + "x-circle": "\f623", + "x-diamond-fill": "\f624", + "x-diamond": "\f625", + "x-octagon-fill": "\f626", + "x-octagon": "\f627", + "x-square-fill": "\f628", + "x-square": "\f629", + "x": "\f62a", + "youtube": "\f62b", + "zoom-in": "\f62c", + "zoom-out": "\f62d", + "bank": "\f62e", + "bank2": "\f62f", + "bell-slash-fill": "\f630", + "bell-slash": "\f631", + "cash-coin": "\f632", + "check-lg": "\f633", + "coin": "\f634", + "currency-bitcoin": "\f635", + "currency-dollar": "\f636", + "currency-euro": "\f637", + "currency-exchange": "\f638", + "currency-pound": "\f639", + "currency-yen": "\f63a", + "dash-lg": "\f63b", + "exclamation-lg": "\f63c", + "file-earmark-pdf-fill": "\f63d", + "file-earmark-pdf": "\f63e", + "file-pdf-fill": "\f63f", + "file-pdf": "\f640", + "gender-ambiguous": "\f641", + "gender-female": "\f642", + "gender-male": "\f643", + "gender-trans": "\f644", + "headset-vr": "\f645", + "info-lg": "\f646", + "mastodon": "\f647", + "messenger": "\f648", + "piggy-bank-fill": "\f649", + "piggy-bank": "\f64a", + "pin-map-fill": "\f64b", + "pin-map": "\f64c", + "plus-lg": "\f64d", + "question-lg": "\f64e", + "recycle": "\f64f", + "reddit": "\f650", + "safe-fill": "\f651", + "safe2-fill": "\f652", + "safe2": "\f653", + "sd-card-fill": "\f654", + "sd-card": "\f655", + "skype": "\f656", + "slash-lg": "\f657", + "translate": "\f658", + "x-lg": "\f659", + "safe": "\f65a", + "apple": "\f65b", + "microsoft": "\f65d", + "windows": "\f65e", + "behance": "\f65c", + "dribbble": "\f65f", + "line": "\f660", + "medium": "\f661", + "paypal": "\f662", + "pinterest": "\f663", + "signal": "\f664", + "snapchat": "\f665", + "spotify": "\f666", + "stack-overflow": "\f667", + "strava": "\f668", + "wordpress": "\f669", + "vimeo": "\f66a", + "activity": "\f66b", + "easel2-fill": "\f66c", + "easel2": "\f66d", + "easel3-fill": "\f66e", + "easel3": "\f66f", + "fan": "\f670", + "fingerprint": "\f671", + "graph-down-arrow": "\f672", + "graph-up-arrow": "\f673", + "hypnotize": "\f674", + "magic": "\f675", + "person-rolodex": "\f676", + "person-video": "\f677", + "person-video2": "\f678", + "person-video3": "\f679", + "person-workspace": "\f67a", + "radioactive": "\f67b", + "webcam-fill": "\f67c", + "webcam": "\f67d", + "yin-yang": "\f67e", + "bandaid-fill": "\f680", + "bandaid": "\f681", + "bluetooth": "\f682", + "body-text": "\f683", + "boombox": "\f684", + "boxes": "\f685", + "dpad-fill": "\f686", + "dpad": "\f687", + "ear-fill": "\f688", + "ear": "\f689", + "envelope-check-fill": "\f68b", + "envelope-check": "\f68c", + "envelope-dash-fill": "\f68e", + "envelope-dash": "\f68f", + "envelope-exclamation-fill": "\f691", + "envelope-exclamation": "\f692", + "envelope-plus-fill": "\f693", + "envelope-plus": "\f694", + "envelope-slash-fill": "\f696", + "envelope-slash": "\f697", + "envelope-x-fill": "\f699", + "envelope-x": "\f69a", + "explicit-fill": "\f69b", + "explicit": "\f69c", + "git": "\f69d", + "infinity": "\f69e", + "list-columns-reverse": "\f69f", + "list-columns": "\f6a0", + "meta": "\f6a1", + "nintendo-switch": "\f6a4", + "pc-display-horizontal": "\f6a5", + "pc-display": "\f6a6", + "pc-horizontal": "\f6a7", + "pc": "\f6a8", + "playstation": "\f6a9", + "plus-slash-minus": "\f6aa", + "projector-fill": "\f6ab", + "projector": "\f6ac", + "qr-code-scan": "\f6ad", + "qr-code": "\f6ae", + "quora": "\f6af", + "quote": "\f6b0", + "robot": "\f6b1", + "send-check-fill": "\f6b2", + "send-check": "\f6b3", + "send-dash-fill": "\f6b4", + "send-dash": "\f6b5", + "send-exclamation-fill": "\f6b7", + "send-exclamation": "\f6b8", + "send-fill": "\f6b9", + "send-plus-fill": "\f6ba", + "send-plus": "\f6bb", + "send-slash-fill": "\f6bc", + "send-slash": "\f6bd", + "send-x-fill": "\f6be", + "send-x": "\f6bf", + "send": "\f6c0", + "steam": "\f6c1", + "terminal-dash": "\f6c3", + "terminal-plus": "\f6c4", + "terminal-split": "\f6c5", + "ticket-detailed-fill": "\f6c6", + "ticket-detailed": "\f6c7", + "ticket-fill": "\f6c8", + "ticket-perforated-fill": "\f6c9", + "ticket-perforated": "\f6ca", + "ticket": "\f6cb", + "tiktok": "\f6cc", + "window-dash": "\f6cd", + "window-desktop": "\f6ce", + "window-fullscreen": "\f6cf", + "window-plus": "\f6d0", + "window-split": "\f6d1", + "window-stack": "\f6d2", + "window-x": "\f6d3", + "xbox": "\f6d4", + "ethernet": "\f6d5", + "hdmi-fill": "\f6d6", + "hdmi": "\f6d7", + "usb-c-fill": "\f6d8", + "usb-c": "\f6d9", + "usb-fill": "\f6da", + "usb-plug-fill": "\f6db", + "usb-plug": "\f6dc", + "usb-symbol": "\f6dd", + "usb": "\f6de", + "boombox-fill": "\f6df", + "displayport": "\f6e1", + "gpu-card": "\f6e2", + "memory": "\f6e3", + "modem-fill": "\f6e4", + "modem": "\f6e5", + "motherboard-fill": "\f6e6", + "motherboard": "\f6e7", + "optical-audio-fill": "\f6e8", + "optical-audio": "\f6e9", + "pci-card": "\f6ea", + "router-fill": "\f6eb", + "router": "\f6ec", + "thunderbolt-fill": "\f6ef", + "thunderbolt": "\f6f0", + "usb-drive-fill": "\f6f1", + "usb-drive": "\f6f2", + "usb-micro-fill": "\f6f3", + "usb-micro": "\f6f4", + "usb-mini-fill": "\f6f5", + "usb-mini": "\f6f6", + "cloud-haze2": "\f6f7", + "device-hdd-fill": "\f6f8", + "device-hdd": "\f6f9", + "device-ssd-fill": "\f6fa", + "device-ssd": "\f6fb", + "displayport-fill": "\f6fc", + "mortarboard-fill": "\f6fd", + "mortarboard": "\f6fe", + "terminal-x": "\f6ff", + "arrow-through-heart-fill": "\f700", + "arrow-through-heart": "\f701", + "badge-sd-fill": "\f702", + "badge-sd": "\f703", + "bag-heart-fill": "\f704", + "bag-heart": "\f705", + "balloon-fill": "\f706", + "balloon-heart-fill": "\f707", + "balloon-heart": "\f708", + "balloon": "\f709", + "box2-fill": "\f70a", + "box2-heart-fill": "\f70b", + "box2-heart": "\f70c", + "box2": "\f70d", + "braces-asterisk": "\f70e", + "calendar-heart-fill": "\f70f", + "calendar-heart": "\f710", + "calendar2-heart-fill": "\f711", + "calendar2-heart": "\f712", + "chat-heart-fill": "\f713", + "chat-heart": "\f714", + "chat-left-heart-fill": "\f715", + "chat-left-heart": "\f716", + "chat-right-heart-fill": "\f717", + "chat-right-heart": "\f718", + "chat-square-heart-fill": "\f719", + "chat-square-heart": "\f71a", + "clipboard-check-fill": "\f71b", + "clipboard-data-fill": "\f71c", + "clipboard-fill": "\f71d", + "clipboard-heart-fill": "\f71e", + "clipboard-heart": "\f71f", + "clipboard-minus-fill": "\f720", + "clipboard-plus-fill": "\f721", + "clipboard-pulse": "\f722", + "clipboard-x-fill": "\f723", + "clipboard2-check-fill": "\f724", + "clipboard2-check": "\f725", + "clipboard2-data-fill": "\f726", + "clipboard2-data": "\f727", + "clipboard2-fill": "\f728", + "clipboard2-heart-fill": "\f729", + "clipboard2-heart": "\f72a", + "clipboard2-minus-fill": "\f72b", + "clipboard2-minus": "\f72c", + "clipboard2-plus-fill": "\f72d", + "clipboard2-plus": "\f72e", + "clipboard2-pulse-fill": "\f72f", + "clipboard2-pulse": "\f730", + "clipboard2-x-fill": "\f731", + "clipboard2-x": "\f732", + "clipboard2": "\f733", + "emoji-kiss-fill": "\f734", + "emoji-kiss": "\f735", + "envelope-heart-fill": "\f736", + "envelope-heart": "\f737", + "envelope-open-heart-fill": "\f738", + "envelope-open-heart": "\f739", + "envelope-paper-fill": "\f73a", + "envelope-paper-heart-fill": "\f73b", + "envelope-paper-heart": "\f73c", + "envelope-paper": "\f73d", + "filetype-aac": "\f73e", + "filetype-ai": "\f73f", + "filetype-bmp": "\f740", + "filetype-cs": "\f741", + "filetype-css": "\f742", + "filetype-csv": "\f743", + "filetype-doc": "\f744", + "filetype-docx": "\f745", + "filetype-exe": "\f746", + "filetype-gif": "\f747", + "filetype-heic": "\f748", + "filetype-html": "\f749", + "filetype-java": "\f74a", + "filetype-jpg": "\f74b", + "filetype-js": "\f74c", + "filetype-jsx": "\f74d", + "filetype-key": "\f74e", + "filetype-m4p": "\f74f", + "filetype-md": "\f750", + "filetype-mdx": "\f751", + "filetype-mov": "\f752", + "filetype-mp3": "\f753", + "filetype-mp4": "\f754", + "filetype-otf": "\f755", + "filetype-pdf": "\f756", + "filetype-php": "\f757", + "filetype-png": "\f758", + "filetype-ppt": "\f75a", + "filetype-psd": "\f75b", + "filetype-py": "\f75c", + "filetype-raw": "\f75d", + "filetype-rb": "\f75e", + "filetype-sass": "\f75f", + "filetype-scss": "\f760", + "filetype-sh": "\f761", + "filetype-svg": "\f762", + "filetype-tiff": "\f763", + "filetype-tsx": "\f764", + "filetype-ttf": "\f765", + "filetype-txt": "\f766", + "filetype-wav": "\f767", + "filetype-woff": "\f768", + "filetype-xls": "\f76a", + "filetype-xml": "\f76b", + "filetype-yml": "\f76c", + "heart-arrow": "\f76d", + "heart-pulse-fill": "\f76e", + "heart-pulse": "\f76f", + "heartbreak-fill": "\f770", + "heartbreak": "\f771", + "hearts": "\f772", + "hospital-fill": "\f773", + "hospital": "\f774", + "house-heart-fill": "\f775", + "house-heart": "\f776", + "incognito": "\f777", + "magnet-fill": "\f778", + "magnet": "\f779", + "person-heart": "\f77a", + "person-hearts": "\f77b", + "phone-flip": "\f77c", + "plugin": "\f77d", + "postage-fill": "\f77e", + "postage-heart-fill": "\f77f", + "postage-heart": "\f780", + "postage": "\f781", + "postcard-fill": "\f782", + "postcard-heart-fill": "\f783", + "postcard-heart": "\f784", + "postcard": "\f785", + "search-heart-fill": "\f786", + "search-heart": "\f787", + "sliders2-vertical": "\f788", + "sliders2": "\f789", + "trash3-fill": "\f78a", + "trash3": "\f78b", + "valentine": "\f78c", + "valentine2": "\f78d", + "wrench-adjustable-circle-fill": "\f78e", + "wrench-adjustable-circle": "\f78f", + "wrench-adjustable": "\f790", + "filetype-json": "\f791", + "filetype-pptx": "\f792", + "filetype-xlsx": "\f793", + "1-circle-fill": "\f796", + "1-circle": "\f797", + "1-square-fill": "\f798", + "1-square": "\f799", + "2-circle-fill": "\f79c", + "2-circle": "\f79d", + "2-square-fill": "\f79e", + "2-square": "\f79f", + "3-circle-fill": "\f7a2", + "3-circle": "\f7a3", + "3-square-fill": "\f7a4", + "3-square": "\f7a5", + "4-circle-fill": "\f7a8", + "4-circle": "\f7a9", + "4-square-fill": "\f7aa", + "4-square": "\f7ab", + "5-circle-fill": "\f7ae", + "5-circle": "\f7af", + "5-square-fill": "\f7b0", + "5-square": "\f7b1", + "6-circle-fill": "\f7b4", + "6-circle": "\f7b5", + "6-square-fill": "\f7b6", + "6-square": "\f7b7", + "7-circle-fill": "\f7ba", + "7-circle": "\f7bb", + "7-square-fill": "\f7bc", + "7-square": "\f7bd", + "8-circle-fill": "\f7c0", + "8-circle": "\f7c1", + "8-square-fill": "\f7c2", + "8-square": "\f7c3", + "9-circle-fill": "\f7c6", + "9-circle": "\f7c7", + "9-square-fill": "\f7c8", + "9-square": "\f7c9", + "airplane-engines-fill": "\f7ca", + "airplane-engines": "\f7cb", + "airplane-fill": "\f7cc", + "airplane": "\f7cd", + "alexa": "\f7ce", + "alipay": "\f7cf", + "android": "\f7d0", + "android2": "\f7d1", + "box-fill": "\f7d2", + "box-seam-fill": "\f7d3", + "browser-chrome": "\f7d4", + "browser-edge": "\f7d5", + "browser-firefox": "\f7d6", + "browser-safari": "\f7d7", + "c-circle-fill": "\f7da", + "c-circle": "\f7db", + "c-square-fill": "\f7dc", + "c-square": "\f7dd", + "capsule-pill": "\f7de", + "capsule": "\f7df", + "car-front-fill": "\f7e0", + "car-front": "\f7e1", + "cassette-fill": "\f7e2", + "cassette": "\f7e3", + "cc-circle-fill": "\f7e6", + "cc-circle": "\f7e7", + "cc-square-fill": "\f7e8", + "cc-square": "\f7e9", + "cup-hot-fill": "\f7ea", + "cup-hot": "\f7eb", + "currency-rupee": "\f7ec", + "dropbox": "\f7ed", + "escape": "\f7ee", + "fast-forward-btn-fill": "\f7ef", + "fast-forward-btn": "\f7f0", + "fast-forward-circle-fill": "\f7f1", + "fast-forward-circle": "\f7f2", + "fast-forward-fill": "\f7f3", + "fast-forward": "\f7f4", + "filetype-sql": "\f7f5", + "fire": "\f7f6", + "google-play": "\f7f7", + "h-circle-fill": "\f7fa", + "h-circle": "\f7fb", + "h-square-fill": "\f7fc", + "h-square": "\f7fd", + "indent": "\f7fe", + "lungs-fill": "\f7ff", + "lungs": "\f800", + "microsoft-teams": "\f801", + "p-circle-fill": "\f804", + "p-circle": "\f805", + "p-square-fill": "\f806", + "p-square": "\f807", + "pass-fill": "\f808", + "pass": "\f809", + "prescription": "\f80a", + "prescription2": "\f80b", + "r-circle-fill": "\f80e", + "r-circle": "\f80f", + "r-square-fill": "\f810", + "r-square": "\f811", + "repeat-1": "\f812", + "repeat": "\f813", + "rewind-btn-fill": "\f814", + "rewind-btn": "\f815", + "rewind-circle-fill": "\f816", + "rewind-circle": "\f817", + "rewind-fill": "\f818", + "rewind": "\f819", + "train-freight-front-fill": "\f81a", + "train-freight-front": "\f81b", + "train-front-fill": "\f81c", + "train-front": "\f81d", + "train-lightrail-front-fill": "\f81e", + "train-lightrail-front": "\f81f", + "truck-front-fill": "\f820", + "truck-front": "\f821", + "ubuntu": "\f822", + "unindent": "\f823", + "unity": "\f824", + "universal-access-circle": "\f825", + "universal-access": "\f826", + "virus": "\f827", + "virus2": "\f828", + "wechat": "\f829", + "yelp": "\f82a", + "sign-stop-fill": "\f82b", + "sign-stop-lights-fill": "\f82c", + "sign-stop-lights": "\f82d", + "sign-stop": "\f82e", + "sign-turn-left-fill": "\f82f", + "sign-turn-left": "\f830", + "sign-turn-right-fill": "\f831", + "sign-turn-right": "\f832", + "sign-turn-slight-left-fill": "\f833", + "sign-turn-slight-left": "\f834", + "sign-turn-slight-right-fill": "\f835", + "sign-turn-slight-right": "\f836", + "sign-yield-fill": "\f837", + "sign-yield": "\f838", + "ev-station-fill": "\f839", + "ev-station": "\f83a", + "fuel-pump-diesel-fill": "\f83b", + "fuel-pump-diesel": "\f83c", + "fuel-pump-fill": "\f83d", + "fuel-pump": "\f83e", + "0-circle-fill": "\f83f", + "0-circle": "\f840", + "0-square-fill": "\f841", + "0-square": "\f842", + "rocket-fill": "\f843", + "rocket-takeoff-fill": "\f844", + "rocket-takeoff": "\f845", + "rocket": "\f846", + "stripe": "\f847", + "subscript": "\f848", + "superscript": "\f849", + "trello": "\f84a", + "envelope-at-fill": "\f84b", + "envelope-at": "\f84c", + "regex": "\f84d", + "text-wrap": "\f84e", + "sign-dead-end-fill": "\f84f", + "sign-dead-end": "\f850", + "sign-do-not-enter-fill": "\f851", + "sign-do-not-enter": "\f852", + "sign-intersection-fill": "\f853", + "sign-intersection-side-fill": "\f854", + "sign-intersection-side": "\f855", + "sign-intersection-t-fill": "\f856", + "sign-intersection-t": "\f857", + "sign-intersection-y-fill": "\f858", + "sign-intersection-y": "\f859", + "sign-intersection": "\f85a", + "sign-merge-left-fill": "\f85b", + "sign-merge-left": "\f85c", + "sign-merge-right-fill": "\f85d", + "sign-merge-right": "\f85e", + "sign-no-left-turn-fill": "\f85f", + "sign-no-left-turn": "\f860", + "sign-no-parking-fill": "\f861", + "sign-no-parking": "\f862", + "sign-no-right-turn-fill": "\f863", + "sign-no-right-turn": "\f864", + "sign-railroad-fill": "\f865", + "sign-railroad": "\f866", + "building-add": "\f867", + "building-check": "\f868", + "building-dash": "\f869", + "building-down": "\f86a", + "building-exclamation": "\f86b", + "building-fill-add": "\f86c", + "building-fill-check": "\f86d", + "building-fill-dash": "\f86e", + "building-fill-down": "\f86f", + "building-fill-exclamation": "\f870", + "building-fill-gear": "\f871", + "building-fill-lock": "\f872", + "building-fill-slash": "\f873", + "building-fill-up": "\f874", + "building-fill-x": "\f875", + "building-fill": "\f876", + "building-gear": "\f877", + "building-lock": "\f878", + "building-slash": "\f879", + "building-up": "\f87a", + "building-x": "\f87b", + "buildings-fill": "\f87c", + "buildings": "\f87d", + "bus-front-fill": "\f87e", + "bus-front": "\f87f", + "ev-front-fill": "\f880", + "ev-front": "\f881", + "globe-americas": "\f882", + "globe-asia-australia": "\f883", + "globe-central-south-asia": "\f884", + "globe-europe-africa": "\f885", + "house-add-fill": "\f886", + "house-add": "\f887", + "house-check-fill": "\f888", + "house-check": "\f889", + "house-dash-fill": "\f88a", + "house-dash": "\f88b", + "house-down-fill": "\f88c", + "house-down": "\f88d", + "house-exclamation-fill": "\f88e", + "house-exclamation": "\f88f", + "house-gear-fill": "\f890", + "house-gear": "\f891", + "house-lock-fill": "\f892", + "house-lock": "\f893", + "house-slash-fill": "\f894", + "house-slash": "\f895", + "house-up-fill": "\f896", + "house-up": "\f897", + "house-x-fill": "\f898", + "house-x": "\f899", + "person-add": "\f89a", + "person-down": "\f89b", + "person-exclamation": "\f89c", + "person-fill-add": "\f89d", + "person-fill-check": "\f89e", + "person-fill-dash": "\f89f", + "person-fill-down": "\f8a0", + "person-fill-exclamation": "\f8a1", + "person-fill-gear": "\f8a2", + "person-fill-lock": "\f8a3", + "person-fill-slash": "\f8a4", + "person-fill-up": "\f8a5", + "person-fill-x": "\f8a6", + "person-gear": "\f8a7", + "person-lock": "\f8a8", + "person-slash": "\f8a9", + "person-up": "\f8aa", + "scooter": "\f8ab", + "taxi-front-fill": "\f8ac", + "taxi-front": "\f8ad", + "amd": "\f8ae", + "database-add": "\f8af", + "database-check": "\f8b0", + "database-dash": "\f8b1", + "database-down": "\f8b2", + "database-exclamation": "\f8b3", + "database-fill-add": "\f8b4", + "database-fill-check": "\f8b5", + "database-fill-dash": "\f8b6", + "database-fill-down": "\f8b7", + "database-fill-exclamation": "\f8b8", + "database-fill-gear": "\f8b9", + "database-fill-lock": "\f8ba", + "database-fill-slash": "\f8bb", + "database-fill-up": "\f8bc", + "database-fill-x": "\f8bd", + "database-fill": "\f8be", + "database-gear": "\f8bf", + "database-lock": "\f8c0", + "database-slash": "\f8c1", + "database-up": "\f8c2", + "database-x": "\f8c3", + "database": "\f8c4", + "houses-fill": "\f8c5", + "houses": "\f8c6", + "nvidia": "\f8c7", + "person-vcard-fill": "\f8c8", + "person-vcard": "\f8c9", + "sina-weibo": "\f8ca", + "tencent-qq": "\f8cb", + "wikipedia": "\f8cc", + "alphabet-uppercase": "\f2a5", + "alphabet": "\f68a", + "amazon": "\f68d", + "arrows-collapse-vertical": "\f690", + "arrows-expand-vertical": "\f695", + "arrows-vertical": "\f698", + "arrows": "\f6a2", + "ban-fill": "\f6a3", + "ban": "\f6b6", + "bing": "\f6c2", + "cake": "\f6e0", + "cake2": "\f6ed", + "cookie": "\f6ee", + "copy": "\f759", + "crosshair": "\f769", + "crosshair2": "\f794", + "emoji-astonished-fill": "\f795", + "emoji-astonished": "\f79a", + "emoji-grimace-fill": "\f79b", + "emoji-grimace": "\f7a0", + "emoji-grin-fill": "\f7a1", + "emoji-grin": "\f7a6", + "emoji-surprise-fill": "\f7a7", + "emoji-surprise": "\f7ac", + "emoji-tear-fill": "\f7ad", + "emoji-tear": "\f7b2", + "envelope-arrow-down-fill": "\f7b3", + "envelope-arrow-down": "\f7b8", + "envelope-arrow-up-fill": "\f7b9", + "envelope-arrow-up": "\f7be", + "feather": "\f7bf", + "feather2": "\f7c4", + "floppy-fill": "\f7c5", + "floppy": "\f7d8", + "floppy2-fill": "\f7d9", + "floppy2": "\f7e4", + "gitlab": "\f7e5", + "highlighter": "\f7f8", + "marker-tip": "\f802", + "nvme-fill": "\f803", + "nvme": "\f80c", + "opencollective": "\f80d", + "pci-card-network": "\f8cd", + "pci-card-sound": "\f8ce", + "radar": "\f8cf", + "send-arrow-down-fill": "\f8d0", + "send-arrow-down": "\f8d1", + "send-arrow-up-fill": "\f8d2", + "send-arrow-up": "\f8d3", + "sim-slash-fill": "\f8d4", + "sim-slash": "\f8d5", + "sourceforge": "\f8d6", + "substack": "\f8d7", + "threads-fill": "\f8d8", + "threads": "\f8d9", + "transparency": "\f8da", + "twitter-x": "\f8db", + "type-h4": "\f8dc", + "type-h5": "\f8dd", + "type-h6": "\f8de", + "backpack-fill": "\f8df", + "backpack": "\f8e0", + "backpack2-fill": "\f8e1", + "backpack2": "\f8e2", + "backpack3-fill": "\f8e3", + "backpack3": "\f8e4", + "backpack4-fill": "\f8e5", + "backpack4": "\f8e6", + "brilliance": "\f8e7", + "cake-fill": "\f8e8", + "cake2-fill": "\f8e9", + "duffle-fill": "\f8ea", + "duffle": "\f8eb", + "exposure": "\f8ec", + "gender-neuter": "\f8ed", + "highlights": "\f8ee", + "luggage-fill": "\f8ef", + "luggage": "\f8f0", + "mailbox-flag": "\f8f1", + "mailbox2-flag": "\f8f2", + "noise-reduction": "\f8f3", + "passport-fill": "\f8f4", + "passport": "\f8f5", + "person-arms-up": "\f8f6", + "person-raised-hand": "\f8f7", + "person-standing-dress": "\f8f8", + "person-standing": "\f8f9", + "person-walking": "\f8fa", + "person-wheelchair": "\f8fb", + "shadows": "\f8fc", + "suitcase-fill": "\f8fd", + "suitcase-lg-fill": "\f8fe", + "suitcase-lg": "\f8ff", + "suitcase": "\f900", + "suitcase2-fill": "\f901", + "suitcase2": "\f902", + "vignette": "\f903", + "bluesky": "\f7f9", + "tux": "\f904", + "beaker-fill": "\f905", + "beaker": "\f906", + "flask-fill": "\f907", + "flask-florence-fill": "\f908", + "flask-florence": "\f909", + "flask": "\f90a", + "leaf-fill": "\f90b", + "leaf": "\f90c", + "measuring-cup-fill": "\f90d", + "measuring-cup": "\f90e", + "unlock2-fill": "\f90f", + "unlock2": "\f910", + "battery-low": "\f911", + "anthropic": "\f912", + "apple-music": "\f913", + "claude": "\f914", + "openai": "\f915", + "perplexity": "\f916", + "css": "\f917", + "javascript": "\f918", + "typescript": "\f919", + "fork-knife": "\f91a", + "globe-americas-fill": "\f91b", + "globe-asia-australia-fill": "\f91c", + "globe-central-south-asia-fill": "\f91d", + "globe-europe-africa-fill": "\f91e", +); + +@each $icon, $codepoint in $bootstrap-icons-map { + .bi-#{$icon}::before { content: $codepoint; } +} diff --git a/icons/bootstrap-icons.svg b/icons/bootstrap-icons.svg new file mode 100644 index 0000000..fa7e620 --- /dev/null +++ b/icons/bootstrap-icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/bootstrap-reboot.svg b/icons/bootstrap-reboot.svg new file mode 100644 index 0000000..14e0803 --- /dev/null +++ b/icons/bootstrap-reboot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bootstrap.svg b/icons/bootstrap.svg new file mode 100644 index 0000000..1fa9b57 --- /dev/null +++ b/icons/bootstrap.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/border-all.svg b/icons/border-all.svg new file mode 100644 index 0000000..b54e1d9 --- /dev/null +++ b/icons/border-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-bottom.svg b/icons/border-bottom.svg new file mode 100644 index 0000000..5d8ddc2 --- /dev/null +++ b/icons/border-bottom.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-center.svg b/icons/border-center.svg new file mode 100644 index 0000000..15eb06e --- /dev/null +++ b/icons/border-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-inner.svg b/icons/border-inner.svg new file mode 100644 index 0000000..047ad0d --- /dev/null +++ b/icons/border-inner.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/border-left.svg b/icons/border-left.svg new file mode 100644 index 0000000..5e1f5ce --- /dev/null +++ b/icons/border-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-middle.svg b/icons/border-middle.svg new file mode 100644 index 0000000..808cb6f --- /dev/null +++ b/icons/border-middle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-outer.svg b/icons/border-outer.svg new file mode 100644 index 0000000..a2df853 --- /dev/null +++ b/icons/border-outer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/border-right.svg b/icons/border-right.svg new file mode 100644 index 0000000..151f004 --- /dev/null +++ b/icons/border-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-style.svg b/icons/border-style.svg new file mode 100644 index 0000000..5dd22e8 --- /dev/null +++ b/icons/border-style.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-top.svg b/icons/border-top.svg new file mode 100644 index 0000000..fcbbdc3 --- /dev/null +++ b/icons/border-top.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border-width.svg b/icons/border-width.svg new file mode 100644 index 0000000..24a320d --- /dev/null +++ b/icons/border-width.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/border.svg b/icons/border.svg new file mode 100644 index 0000000..60b861a --- /dev/null +++ b/icons/border.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bounding-box-circles.svg b/icons/bounding-box-circles.svg new file mode 100644 index 0000000..8e75142 --- /dev/null +++ b/icons/bounding-box-circles.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bounding-box.svg b/icons/bounding-box.svg new file mode 100644 index 0000000..e83c49d --- /dev/null +++ b/icons/bounding-box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box-arrow-down-left.svg b/icons/box-arrow-down-left.svg new file mode 100644 index 0000000..4892efc --- /dev/null +++ b/icons/box-arrow-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-down-right.svg b/icons/box-arrow-down-right.svg new file mode 100644 index 0000000..97e982d --- /dev/null +++ b/icons/box-arrow-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-down.svg b/icons/box-arrow-down.svg new file mode 100644 index 0000000..2a22ebb --- /dev/null +++ b/icons/box-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-down-left.svg b/icons/box-arrow-in-down-left.svg new file mode 100644 index 0000000..b403ec9 --- /dev/null +++ b/icons/box-arrow-in-down-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-down-right.svg b/icons/box-arrow-in-down-right.svg new file mode 100644 index 0000000..c838b07 --- /dev/null +++ b/icons/box-arrow-in-down-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-down.svg b/icons/box-arrow-in-down.svg new file mode 100644 index 0000000..dc69a50 --- /dev/null +++ b/icons/box-arrow-in-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-left.svg b/icons/box-arrow-in-left.svg new file mode 100644 index 0000000..04bdf09 --- /dev/null +++ b/icons/box-arrow-in-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-up-left.svg b/icons/box-arrow-in-up-left.svg new file mode 100644 index 0000000..06ac0e2 --- /dev/null +++ b/icons/box-arrow-in-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-up-right.svg b/icons/box-arrow-in-up-right.svg new file mode 100644 index 0000000..e9a770e --- /dev/null +++ b/icons/box-arrow-in-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-in-up.svg b/icons/box-arrow-in-up.svg new file mode 100644 index 0000000..88664cd --- /dev/null +++ b/icons/box-arrow-in-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-left.svg b/icons/box-arrow-left.svg new file mode 100644 index 0000000..e4375f2 --- /dev/null +++ b/icons/box-arrow-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-up-left.svg b/icons/box-arrow-up-left.svg new file mode 100644 index 0000000..9359bcf --- /dev/null +++ b/icons/box-arrow-up-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-up-right.svg b/icons/box-arrow-up-right.svg new file mode 100644 index 0000000..25149c5 --- /dev/null +++ b/icons/box-arrow-up-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-arrow-up.svg b/icons/box-arrow-up.svg new file mode 100644 index 0000000..9a05ea8 --- /dev/null +++ b/icons/box-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box-fill.svg b/icons/box-fill.svg new file mode 100644 index 0000000..c3e46ae --- /dev/null +++ b/icons/box-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box-seam-fill.svg b/icons/box-seam-fill.svg new file mode 100644 index 0000000..5ca92bc --- /dev/null +++ b/icons/box-seam-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box-seam.svg b/icons/box-seam.svg new file mode 100644 index 0000000..e150940 --- /dev/null +++ b/icons/box-seam.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box.svg b/icons/box.svg new file mode 100644 index 0000000..5ca8d16 --- /dev/null +++ b/icons/box.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box2-fill.svg b/icons/box2-fill.svg new file mode 100644 index 0000000..1b9f226 --- /dev/null +++ b/icons/box2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box2-heart-fill.svg b/icons/box2-heart-fill.svg new file mode 100644 index 0000000..d3ee481 --- /dev/null +++ b/icons/box2-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/box2-heart.svg b/icons/box2-heart.svg new file mode 100644 index 0000000..fefb98d --- /dev/null +++ b/icons/box2-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/box2.svg b/icons/box2.svg new file mode 100644 index 0000000..fe2d9f5 --- /dev/null +++ b/icons/box2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/boxes.svg b/icons/boxes.svg new file mode 100644 index 0000000..fbc84a6 --- /dev/null +++ b/icons/boxes.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/braces-asterisk.svg b/icons/braces-asterisk.svg new file mode 100644 index 0000000..45f8716 --- /dev/null +++ b/icons/braces-asterisk.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/braces.svg b/icons/braces.svg new file mode 100644 index 0000000..5614720 --- /dev/null +++ b/icons/braces.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bricks.svg b/icons/bricks.svg new file mode 100644 index 0000000..78a4c8c --- /dev/null +++ b/icons/bricks.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/briefcase-fill.svg b/icons/briefcase-fill.svg new file mode 100644 index 0000000..4d7fadb --- /dev/null +++ b/icons/briefcase-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/briefcase.svg b/icons/briefcase.svg new file mode 100644 index 0000000..c5bcde0 --- /dev/null +++ b/icons/briefcase.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-alt-high-fill.svg b/icons/brightness-alt-high-fill.svg new file mode 100644 index 0000000..1fa2231 --- /dev/null +++ b/icons/brightness-alt-high-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-alt-high.svg b/icons/brightness-alt-high.svg new file mode 100644 index 0000000..33e19d0 --- /dev/null +++ b/icons/brightness-alt-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-alt-low-fill.svg b/icons/brightness-alt-low-fill.svg new file mode 100644 index 0000000..0d427a8 --- /dev/null +++ b/icons/brightness-alt-low-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-alt-low.svg b/icons/brightness-alt-low.svg new file mode 100644 index 0000000..153199b --- /dev/null +++ b/icons/brightness-alt-low.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-high-fill.svg b/icons/brightness-high-fill.svg new file mode 100644 index 0000000..6130b6c --- /dev/null +++ b/icons/brightness-high-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-high.svg b/icons/brightness-high.svg new file mode 100644 index 0000000..3def0dd --- /dev/null +++ b/icons/brightness-high.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-low-fill.svg b/icons/brightness-low-fill.svg new file mode 100644 index 0000000..c473ca7 --- /dev/null +++ b/icons/brightness-low-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brightness-low.svg b/icons/brightness-low.svg new file mode 100644 index 0000000..18a87bf --- /dev/null +++ b/icons/brightness-low.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brilliance.svg b/icons/brilliance.svg new file mode 100644 index 0000000..b2dd8e5 --- /dev/null +++ b/icons/brilliance.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/broadcast-pin.svg b/icons/broadcast-pin.svg new file mode 100644 index 0000000..37e571b --- /dev/null +++ b/icons/broadcast-pin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/broadcast.svg b/icons/broadcast.svg new file mode 100644 index 0000000..f554b40 --- /dev/null +++ b/icons/broadcast.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/browser-chrome.svg b/icons/browser-chrome.svg new file mode 100644 index 0000000..68596d0 --- /dev/null +++ b/icons/browser-chrome.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/browser-edge.svg b/icons/browser-edge.svg new file mode 100644 index 0000000..fb6e943 --- /dev/null +++ b/icons/browser-edge.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/browser-firefox.svg b/icons/browser-firefox.svg new file mode 100644 index 0000000..7a100e3 --- /dev/null +++ b/icons/browser-firefox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/browser-safari.svg b/icons/browser-safari.svg new file mode 100644 index 0000000..e8454e3 --- /dev/null +++ b/icons/browser-safari.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brush-fill.svg b/icons/brush-fill.svg new file mode 100644 index 0000000..33a4500 --- /dev/null +++ b/icons/brush-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/brush.svg b/icons/brush.svg new file mode 100644 index 0000000..a848596 --- /dev/null +++ b/icons/brush.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bucket-fill.svg b/icons/bucket-fill.svg new file mode 100644 index 0000000..d90878f --- /dev/null +++ b/icons/bucket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bucket.svg b/icons/bucket.svg new file mode 100644 index 0000000..70b3d13 --- /dev/null +++ b/icons/bucket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bug-fill.svg b/icons/bug-fill.svg new file mode 100644 index 0000000..ec3f605 --- /dev/null +++ b/icons/bug-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bug.svg b/icons/bug.svg new file mode 100644 index 0000000..2d9d1e8 --- /dev/null +++ b/icons/bug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/building-add.svg b/icons/building-add.svg new file mode 100644 index 0000000..2208c9e --- /dev/null +++ b/icons/building-add.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-check.svg b/icons/building-check.svg new file mode 100644 index 0000000..fb682fc --- /dev/null +++ b/icons/building-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-dash.svg b/icons/building-dash.svg new file mode 100644 index 0000000..77ce4c6 --- /dev/null +++ b/icons/building-dash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-down.svg b/icons/building-down.svg new file mode 100644 index 0000000..4db08e9 --- /dev/null +++ b/icons/building-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-exclamation.svg b/icons/building-exclamation.svg new file mode 100644 index 0000000..6165c6a --- /dev/null +++ b/icons/building-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-add.svg b/icons/building-fill-add.svg new file mode 100644 index 0000000..c7bd588 --- /dev/null +++ b/icons/building-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-check.svg b/icons/building-fill-check.svg new file mode 100644 index 0000000..19cfc59 --- /dev/null +++ b/icons/building-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-dash.svg b/icons/building-fill-dash.svg new file mode 100644 index 0000000..2c4aad0 --- /dev/null +++ b/icons/building-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-down.svg b/icons/building-fill-down.svg new file mode 100644 index 0000000..d1dea02 --- /dev/null +++ b/icons/building-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-exclamation.svg b/icons/building-fill-exclamation.svg new file mode 100644 index 0000000..7990ecb --- /dev/null +++ b/icons/building-fill-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-gear.svg b/icons/building-fill-gear.svg new file mode 100644 index 0000000..ff16c9d --- /dev/null +++ b/icons/building-fill-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-lock.svg b/icons/building-fill-lock.svg new file mode 100644 index 0000000..b9fde69 --- /dev/null +++ b/icons/building-fill-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-slash.svg b/icons/building-fill-slash.svg new file mode 100644 index 0000000..8d8be4d --- /dev/null +++ b/icons/building-fill-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-up.svg b/icons/building-fill-up.svg new file mode 100644 index 0000000..5f7f537 --- /dev/null +++ b/icons/building-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill-x.svg b/icons/building-fill-x.svg new file mode 100644 index 0000000..ee28c3a --- /dev/null +++ b/icons/building-fill-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-fill.svg b/icons/building-fill.svg new file mode 100644 index 0000000..357c61b --- /dev/null +++ b/icons/building-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/building-gear.svg b/icons/building-gear.svg new file mode 100644 index 0000000..423bde0 --- /dev/null +++ b/icons/building-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-lock.svg b/icons/building-lock.svg new file mode 100644 index 0000000..2f949c7 --- /dev/null +++ b/icons/building-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building-slash.svg b/icons/building-slash.svg new file mode 100644 index 0000000..b495936 --- /dev/null +++ b/icons/building-slash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-up.svg b/icons/building-up.svg new file mode 100644 index 0000000..8c7ad9f --- /dev/null +++ b/icons/building-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/building-x.svg b/icons/building-x.svg new file mode 100644 index 0000000..8d761aa --- /dev/null +++ b/icons/building-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/building.svg b/icons/building.svg new file mode 100644 index 0000000..55ded2d --- /dev/null +++ b/icons/building.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/buildings-fill.svg b/icons/buildings-fill.svg new file mode 100644 index 0000000..76b070c --- /dev/null +++ b/icons/buildings-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/buildings.svg b/icons/buildings.svg new file mode 100644 index 0000000..c763475 --- /dev/null +++ b/icons/buildings.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/bullseye.svg b/icons/bullseye.svg new file mode 100644 index 0000000..748b6e2 --- /dev/null +++ b/icons/bullseye.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/bus-front-fill.svg b/icons/bus-front-fill.svg new file mode 100644 index 0000000..f2caa1b --- /dev/null +++ b/icons/bus-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/bus-front.svg b/icons/bus-front.svg new file mode 100644 index 0000000..19aaa23 --- /dev/null +++ b/icons/bus-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/c-circle-fill.svg b/icons/c-circle-fill.svg new file mode 100644 index 0000000..3cbadbe --- /dev/null +++ b/icons/c-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/c-circle.svg b/icons/c-circle.svg new file mode 100644 index 0000000..4632807 --- /dev/null +++ b/icons/c-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/c-square-fill.svg b/icons/c-square-fill.svg new file mode 100644 index 0000000..7dad079 --- /dev/null +++ b/icons/c-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/c-square.svg b/icons/c-square.svg new file mode 100644 index 0000000..4c85740 --- /dev/null +++ b/icons/c-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cake-fill.svg b/icons/cake-fill.svg new file mode 100644 index 0000000..dc2899a --- /dev/null +++ b/icons/cake-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cake.svg b/icons/cake.svg new file mode 100644 index 0000000..f6c3899 --- /dev/null +++ b/icons/cake.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cake2-fill.svg b/icons/cake2-fill.svg new file mode 100644 index 0000000..c5f3663 --- /dev/null +++ b/icons/cake2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cake2.svg b/icons/cake2.svg new file mode 100644 index 0000000..8bc96d4 --- /dev/null +++ b/icons/cake2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calculator-fill.svg b/icons/calculator-fill.svg new file mode 100644 index 0000000..bdd0b9f --- /dev/null +++ b/icons/calculator-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calculator.svg b/icons/calculator.svg new file mode 100644 index 0000000..d2143f1 --- /dev/null +++ b/icons/calculator.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-check-fill.svg b/icons/calendar-check-fill.svg new file mode 100644 index 0000000..decfb3f --- /dev/null +++ b/icons/calendar-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-check.svg b/icons/calendar-check.svg new file mode 100644 index 0000000..9aeffbe --- /dev/null +++ b/icons/calendar-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-date-fill.svg b/icons/calendar-date-fill.svg new file mode 100644 index 0000000..f796e57 --- /dev/null +++ b/icons/calendar-date-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-date.svg b/icons/calendar-date.svg new file mode 100644 index 0000000..2f65928 --- /dev/null +++ b/icons/calendar-date.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-day-fill.svg b/icons/calendar-day-fill.svg new file mode 100644 index 0000000..94a699c --- /dev/null +++ b/icons/calendar-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-day.svg b/icons/calendar-day.svg new file mode 100644 index 0000000..ce4eb28 --- /dev/null +++ b/icons/calendar-day.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-event-fill.svg b/icons/calendar-event-fill.svg new file mode 100644 index 0000000..659278b --- /dev/null +++ b/icons/calendar-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-event.svg b/icons/calendar-event.svg new file mode 100644 index 0000000..451e768 --- /dev/null +++ b/icons/calendar-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-fill.svg b/icons/calendar-fill.svg new file mode 100644 index 0000000..76c7536 --- /dev/null +++ b/icons/calendar-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-heart-fill.svg b/icons/calendar-heart-fill.svg new file mode 100644 index 0000000..a4a254f --- /dev/null +++ b/icons/calendar-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-heart.svg b/icons/calendar-heart.svg new file mode 100644 index 0000000..07d0f94 --- /dev/null +++ b/icons/calendar-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-minus-fill.svg b/icons/calendar-minus-fill.svg new file mode 100644 index 0000000..a43d531 --- /dev/null +++ b/icons/calendar-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-minus.svg b/icons/calendar-minus.svg new file mode 100644 index 0000000..04299e2 --- /dev/null +++ b/icons/calendar-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-month-fill.svg b/icons/calendar-month-fill.svg new file mode 100644 index 0000000..feda712 --- /dev/null +++ b/icons/calendar-month-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-month.svg b/icons/calendar-month.svg new file mode 100644 index 0000000..d452105 --- /dev/null +++ b/icons/calendar-month.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-plus-fill.svg b/icons/calendar-plus-fill.svg new file mode 100644 index 0000000..a250d8e --- /dev/null +++ b/icons/calendar-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-plus.svg b/icons/calendar-plus.svg new file mode 100644 index 0000000..d9e8fdd --- /dev/null +++ b/icons/calendar-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-range-fill.svg b/icons/calendar-range-fill.svg new file mode 100644 index 0000000..2b2dfcc --- /dev/null +++ b/icons/calendar-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-range.svg b/icons/calendar-range.svg new file mode 100644 index 0000000..40c85b4 --- /dev/null +++ b/icons/calendar-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-week-fill.svg b/icons/calendar-week-fill.svg new file mode 100644 index 0000000..ba06206 --- /dev/null +++ b/icons/calendar-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-week.svg b/icons/calendar-week.svg new file mode 100644 index 0000000..bba866c --- /dev/null +++ b/icons/calendar-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar-x-fill.svg b/icons/calendar-x-fill.svg new file mode 100644 index 0000000..bc1c519 --- /dev/null +++ b/icons/calendar-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar-x.svg b/icons/calendar-x.svg new file mode 100644 index 0000000..89de321 --- /dev/null +++ b/icons/calendar-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar.svg b/icons/calendar.svg new file mode 100644 index 0000000..f19331c --- /dev/null +++ b/icons/calendar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-check-fill.svg b/icons/calendar2-check-fill.svg new file mode 100644 index 0000000..83592ee --- /dev/null +++ b/icons/calendar2-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-check.svg b/icons/calendar2-check.svg new file mode 100644 index 0000000..c96c421 --- /dev/null +++ b/icons/calendar2-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-date-fill.svg b/icons/calendar2-date-fill.svg new file mode 100644 index 0000000..7d149e9 --- /dev/null +++ b/icons/calendar2-date-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar2-date.svg b/icons/calendar2-date.svg new file mode 100644 index 0000000..3997f23 --- /dev/null +++ b/icons/calendar2-date.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-day-fill.svg b/icons/calendar2-day-fill.svg new file mode 100644 index 0000000..aefdc5f --- /dev/null +++ b/icons/calendar2-day-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-day.svg b/icons/calendar2-day.svg new file mode 100644 index 0000000..b5d6815 --- /dev/null +++ b/icons/calendar2-day.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-event-fill.svg b/icons/calendar2-event-fill.svg new file mode 100644 index 0000000..1219bf1 --- /dev/null +++ b/icons/calendar2-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-event.svg b/icons/calendar2-event.svg new file mode 100644 index 0000000..bc0c4a2 --- /dev/null +++ b/icons/calendar2-event.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-fill.svg b/icons/calendar2-fill.svg new file mode 100644 index 0000000..2a66d98 --- /dev/null +++ b/icons/calendar2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-heart-fill.svg b/icons/calendar2-heart-fill.svg new file mode 100644 index 0000000..ca803da --- /dev/null +++ b/icons/calendar2-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-heart.svg b/icons/calendar2-heart.svg new file mode 100644 index 0000000..11195ab --- /dev/null +++ b/icons/calendar2-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-minus-fill.svg b/icons/calendar2-minus-fill.svg new file mode 100644 index 0000000..b5db63d --- /dev/null +++ b/icons/calendar2-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-minus.svg b/icons/calendar2-minus.svg new file mode 100644 index 0000000..6cb395d --- /dev/null +++ b/icons/calendar2-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-month-fill.svg b/icons/calendar2-month-fill.svg new file mode 100644 index 0000000..ab5f022 --- /dev/null +++ b/icons/calendar2-month-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar2-month.svg b/icons/calendar2-month.svg new file mode 100644 index 0000000..270494c --- /dev/null +++ b/icons/calendar2-month.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2-plus-fill.svg b/icons/calendar2-plus-fill.svg new file mode 100644 index 0000000..68d6b81 --- /dev/null +++ b/icons/calendar2-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-plus.svg b/icons/calendar2-plus.svg new file mode 100644 index 0000000..6da40eb --- /dev/null +++ b/icons/calendar2-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar2-range-fill.svg b/icons/calendar2-range-fill.svg new file mode 100644 index 0000000..e06ce8d --- /dev/null +++ b/icons/calendar2-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-range.svg b/icons/calendar2-range.svg new file mode 100644 index 0000000..f480d84 --- /dev/null +++ b/icons/calendar2-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar2-week-fill.svg b/icons/calendar2-week-fill.svg new file mode 100644 index 0000000..7d736b9 --- /dev/null +++ b/icons/calendar2-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-week.svg b/icons/calendar2-week.svg new file mode 100644 index 0000000..90720a0 --- /dev/null +++ b/icons/calendar2-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar2-x-fill.svg b/icons/calendar2-x-fill.svg new file mode 100644 index 0000000..ce7e325 --- /dev/null +++ b/icons/calendar2-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar2-x.svg b/icons/calendar2-x.svg new file mode 100644 index 0000000..a4e46ae --- /dev/null +++ b/icons/calendar2-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/calendar2.svg b/icons/calendar2.svg new file mode 100644 index 0000000..46d5922 --- /dev/null +++ b/icons/calendar2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar3-event-fill.svg b/icons/calendar3-event-fill.svg new file mode 100644 index 0000000..5052d10 --- /dev/null +++ b/icons/calendar3-event-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar3-event.svg b/icons/calendar3-event.svg new file mode 100644 index 0000000..b164ddf --- /dev/null +++ b/icons/calendar3-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar3-fill.svg b/icons/calendar3-fill.svg new file mode 100644 index 0000000..1857b04 --- /dev/null +++ b/icons/calendar3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar3-range-fill.svg b/icons/calendar3-range-fill.svg new file mode 100644 index 0000000..415d24e --- /dev/null +++ b/icons/calendar3-range-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar3-range.svg b/icons/calendar3-range.svg new file mode 100644 index 0000000..631ba4d --- /dev/null +++ b/icons/calendar3-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar3-week-fill.svg b/icons/calendar3-week-fill.svg new file mode 100644 index 0000000..d214220 --- /dev/null +++ b/icons/calendar3-week-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/calendar3-week.svg b/icons/calendar3-week.svg new file mode 100644 index 0000000..0836df4 --- /dev/null +++ b/icons/calendar3-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar3.svg b/icons/calendar3.svg new file mode 100644 index 0000000..d9a6091 --- /dev/null +++ b/icons/calendar3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar4-event.svg b/icons/calendar4-event.svg new file mode 100644 index 0000000..cb83cf3 --- /dev/null +++ b/icons/calendar4-event.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar4-range.svg b/icons/calendar4-range.svg new file mode 100644 index 0000000..2d85a81 --- /dev/null +++ b/icons/calendar4-range.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar4-week.svg b/icons/calendar4-week.svg new file mode 100644 index 0000000..4adf34d --- /dev/null +++ b/icons/calendar4-week.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/calendar4.svg b/icons/calendar4.svg new file mode 100644 index 0000000..c545638 --- /dev/null +++ b/icons/calendar4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/camera-fill.svg b/icons/camera-fill.svg new file mode 100644 index 0000000..ddf669a --- /dev/null +++ b/icons/camera-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/camera-reels-fill.svg b/icons/camera-reels-fill.svg new file mode 100644 index 0000000..fd5cc66 --- /dev/null +++ b/icons/camera-reels-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/camera-reels.svg b/icons/camera-reels.svg new file mode 100644 index 0000000..ef886e6 --- /dev/null +++ b/icons/camera-reels.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/camera-video-fill.svg b/icons/camera-video-fill.svg new file mode 100644 index 0000000..60228c2 --- /dev/null +++ b/icons/camera-video-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/camera-video-off-fill.svg b/icons/camera-video-off-fill.svg new file mode 100644 index 0000000..60454c6 --- /dev/null +++ b/icons/camera-video-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/camera-video-off.svg b/icons/camera-video-off.svg new file mode 100644 index 0000000..15ec07c --- /dev/null +++ b/icons/camera-video-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/camera-video.svg b/icons/camera-video.svg new file mode 100644 index 0000000..215c047 --- /dev/null +++ b/icons/camera-video.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/camera.svg b/icons/camera.svg new file mode 100644 index 0000000..d78e612 --- /dev/null +++ b/icons/camera.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/camera2.svg b/icons/camera2.svg new file mode 100644 index 0000000..0cc1ade --- /dev/null +++ b/icons/camera2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/capslock-fill.svg b/icons/capslock-fill.svg new file mode 100644 index 0000000..5f6671b --- /dev/null +++ b/icons/capslock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/capslock.svg b/icons/capslock.svg new file mode 100644 index 0000000..067b96d --- /dev/null +++ b/icons/capslock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/capsule-pill.svg b/icons/capsule-pill.svg new file mode 100644 index 0000000..9753f44 --- /dev/null +++ b/icons/capsule-pill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/capsule.svg b/icons/capsule.svg new file mode 100644 index 0000000..f4529cf --- /dev/null +++ b/icons/capsule.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/car-front-fill.svg b/icons/car-front-fill.svg new file mode 100644 index 0000000..005c9c9 --- /dev/null +++ b/icons/car-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/car-front.svg b/icons/car-front.svg new file mode 100644 index 0000000..1ca898a --- /dev/null +++ b/icons/car-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/card-checklist.svg b/icons/card-checklist.svg new file mode 100644 index 0000000..353d355 --- /dev/null +++ b/icons/card-checklist.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/card-heading.svg b/icons/card-heading.svg new file mode 100644 index 0000000..71b5b5e --- /dev/null +++ b/icons/card-heading.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/card-image.svg b/icons/card-image.svg new file mode 100644 index 0000000..21a994f --- /dev/null +++ b/icons/card-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/card-list.svg b/icons/card-list.svg new file mode 100644 index 0000000..c4ce1bf --- /dev/null +++ b/icons/card-list.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/card-text.svg b/icons/card-text.svg new file mode 100644 index 0000000..4308a84 --- /dev/null +++ b/icons/card-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/caret-down-fill.svg b/icons/caret-down-fill.svg new file mode 100644 index 0000000..858c977 --- /dev/null +++ b/icons/caret-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-down-square-fill.svg b/icons/caret-down-square-fill.svg new file mode 100644 index 0000000..bfbf2ad --- /dev/null +++ b/icons/caret-down-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-down-square.svg b/icons/caret-down-square.svg new file mode 100644 index 0000000..829d359 --- /dev/null +++ b/icons/caret-down-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/caret-down.svg b/icons/caret-down.svg new file mode 100644 index 0000000..3941331 --- /dev/null +++ b/icons/caret-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-left-fill.svg b/icons/caret-left-fill.svg new file mode 100644 index 0000000..6a0516e --- /dev/null +++ b/icons/caret-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-left-square-fill.svg b/icons/caret-left-square-fill.svg new file mode 100644 index 0000000..eb236ff --- /dev/null +++ b/icons/caret-left-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-left-square.svg b/icons/caret-left-square.svg new file mode 100644 index 0000000..4684818 --- /dev/null +++ b/icons/caret-left-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/caret-left.svg b/icons/caret-left.svg new file mode 100644 index 0000000..72a876b --- /dev/null +++ b/icons/caret-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-right-fill.svg b/icons/caret-right-fill.svg new file mode 100644 index 0000000..ab4126a --- /dev/null +++ b/icons/caret-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-right-square-fill.svg b/icons/caret-right-square-fill.svg new file mode 100644 index 0000000..c89c984 --- /dev/null +++ b/icons/caret-right-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-right-square.svg b/icons/caret-right-square.svg new file mode 100644 index 0000000..36674e3 --- /dev/null +++ b/icons/caret-right-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/caret-right.svg b/icons/caret-right.svg new file mode 100644 index 0000000..a67b120 --- /dev/null +++ b/icons/caret-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-up-fill.svg b/icons/caret-up-fill.svg new file mode 100644 index 0000000..590dcad --- /dev/null +++ b/icons/caret-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-up-square-fill.svg b/icons/caret-up-square-fill.svg new file mode 100644 index 0000000..e2a2c32 --- /dev/null +++ b/icons/caret-up-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/caret-up-square.svg b/icons/caret-up-square.svg new file mode 100644 index 0000000..01e225d --- /dev/null +++ b/icons/caret-up-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/caret-up.svg b/icons/caret-up.svg new file mode 100644 index 0000000..7717f92 --- /dev/null +++ b/icons/caret-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-check-fill.svg b/icons/cart-check-fill.svg new file mode 100644 index 0000000..945f4a7 --- /dev/null +++ b/icons/cart-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-check.svg b/icons/cart-check.svg new file mode 100644 index 0000000..201db0c --- /dev/null +++ b/icons/cart-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cart-dash-fill.svg b/icons/cart-dash-fill.svg new file mode 100644 index 0000000..95bbff6 --- /dev/null +++ b/icons/cart-dash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-dash.svg b/icons/cart-dash.svg new file mode 100644 index 0000000..49f4d87 --- /dev/null +++ b/icons/cart-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cart-fill.svg b/icons/cart-fill.svg new file mode 100644 index 0000000..be4b70c --- /dev/null +++ b/icons/cart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-plus-fill.svg b/icons/cart-plus-fill.svg new file mode 100644 index 0000000..fa03ccb --- /dev/null +++ b/icons/cart-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-plus.svg b/icons/cart-plus.svg new file mode 100644 index 0000000..cd59dea --- /dev/null +++ b/icons/cart-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cart-x-fill.svg b/icons/cart-x-fill.svg new file mode 100644 index 0000000..a30bb6f --- /dev/null +++ b/icons/cart-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart-x.svg b/icons/cart-x.svg new file mode 100644 index 0000000..26ed84b --- /dev/null +++ b/icons/cart-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cart.svg b/icons/cart.svg new file mode 100644 index 0000000..20286d9 --- /dev/null +++ b/icons/cart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart2.svg b/icons/cart2.svg new file mode 100644 index 0000000..d83596b --- /dev/null +++ b/icons/cart2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart3.svg b/icons/cart3.svg new file mode 100644 index 0000000..ad2f750 --- /dev/null +++ b/icons/cart3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cart4.svg b/icons/cart4.svg new file mode 100644 index 0000000..7225d15 --- /dev/null +++ b/icons/cart4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cash-coin.svg b/icons/cash-coin.svg new file mode 100644 index 0000000..4e6e96e --- /dev/null +++ b/icons/cash-coin.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/cash-stack.svg b/icons/cash-stack.svg new file mode 100644 index 0000000..f469075 --- /dev/null +++ b/icons/cash-stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cash.svg b/icons/cash.svg new file mode 100644 index 0000000..11dc3ec --- /dev/null +++ b/icons/cash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cassette-fill.svg b/icons/cassette-fill.svg new file mode 100644 index 0000000..5c52445 --- /dev/null +++ b/icons/cassette-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cassette.svg b/icons/cassette.svg new file mode 100644 index 0000000..c6d2043 --- /dev/null +++ b/icons/cassette.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cast.svg b/icons/cast.svg new file mode 100644 index 0000000..166fc67 --- /dev/null +++ b/icons/cast.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cc-circle-fill.svg b/icons/cc-circle-fill.svg new file mode 100644 index 0000000..5371b8d --- /dev/null +++ b/icons/cc-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cc-circle.svg b/icons/cc-circle.svg new file mode 100644 index 0000000..2f0a724 --- /dev/null +++ b/icons/cc-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cc-square-fill.svg b/icons/cc-square-fill.svg new file mode 100644 index 0000000..c66eda2 --- /dev/null +++ b/icons/cc-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cc-square.svg b/icons/cc-square.svg new file mode 100644 index 0000000..949ff51 --- /dev/null +++ b/icons/cc-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-dots-fill.svg b/icons/chat-dots-fill.svg new file mode 100644 index 0000000..c77ca6e --- /dev/null +++ b/icons/chat-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-dots.svg b/icons/chat-dots.svg new file mode 100644 index 0000000..41f9f4f --- /dev/null +++ b/icons/chat-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-fill.svg b/icons/chat-fill.svg new file mode 100644 index 0000000..33de8b2 --- /dev/null +++ b/icons/chat-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-heart-fill.svg b/icons/chat-heart-fill.svg new file mode 100644 index 0000000..3278c02 --- /dev/null +++ b/icons/chat-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-heart.svg b/icons/chat-heart.svg new file mode 100644 index 0000000..d6f6fd7 --- /dev/null +++ b/icons/chat-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-dots-fill.svg b/icons/chat-left-dots-fill.svg new file mode 100644 index 0000000..1d9c47d --- /dev/null +++ b/icons/chat-left-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-dots.svg b/icons/chat-left-dots.svg new file mode 100644 index 0000000..0c6fe2c --- /dev/null +++ b/icons/chat-left-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-left-fill.svg b/icons/chat-left-fill.svg new file mode 100644 index 0000000..db32f54 --- /dev/null +++ b/icons/chat-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-heart-fill.svg b/icons/chat-left-heart-fill.svg new file mode 100644 index 0000000..ea3a81c --- /dev/null +++ b/icons/chat-left-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-heart.svg b/icons/chat-left-heart.svg new file mode 100644 index 0000000..9937534 --- /dev/null +++ b/icons/chat-left-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-left-quote-fill.svg b/icons/chat-left-quote-fill.svg new file mode 100644 index 0000000..89e5a0d --- /dev/null +++ b/icons/chat-left-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-quote.svg b/icons/chat-left-quote.svg new file mode 100644 index 0000000..8be4a33 --- /dev/null +++ b/icons/chat-left-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-left-text-fill.svg b/icons/chat-left-text-fill.svg new file mode 100644 index 0000000..86d17cb --- /dev/null +++ b/icons/chat-left-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-left-text.svg b/icons/chat-left-text.svg new file mode 100644 index 0000000..5055e39 --- /dev/null +++ b/icons/chat-left-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-left.svg b/icons/chat-left.svg new file mode 100644 index 0000000..c1bf82b --- /dev/null +++ b/icons/chat-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-quote-fill.svg b/icons/chat-quote-fill.svg new file mode 100644 index 0000000..448c5b0 --- /dev/null +++ b/icons/chat-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-quote.svg b/icons/chat-quote.svg new file mode 100644 index 0000000..635dbec --- /dev/null +++ b/icons/chat-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-right-dots-fill.svg b/icons/chat-right-dots-fill.svg new file mode 100644 index 0000000..320e176 --- /dev/null +++ b/icons/chat-right-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-right-dots.svg b/icons/chat-right-dots.svg new file mode 100644 index 0000000..7be9b5b --- /dev/null +++ b/icons/chat-right-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-right-fill.svg b/icons/chat-right-fill.svg new file mode 100644 index 0000000..3c8c3cd --- /dev/null +++ b/icons/chat-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-right-heart-fill.svg b/icons/chat-right-heart-fill.svg new file mode 100644 index 0000000..4384503 --- /dev/null +++ b/icons/chat-right-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-right-heart.svg b/icons/chat-right-heart.svg new file mode 100644 index 0000000..81c6db1 --- /dev/null +++ b/icons/chat-right-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-right-quote-fill.svg b/icons/chat-right-quote-fill.svg new file mode 100644 index 0000000..f537056 --- /dev/null +++ b/icons/chat-right-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-right-quote.svg b/icons/chat-right-quote.svg new file mode 100644 index 0000000..3065100 --- /dev/null +++ b/icons/chat-right-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-right-text-fill.svg b/icons/chat-right-text-fill.svg new file mode 100644 index 0000000..bcf97b0 --- /dev/null +++ b/icons/chat-right-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-right-text.svg b/icons/chat-right-text.svg new file mode 100644 index 0000000..ff7ce2a --- /dev/null +++ b/icons/chat-right-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-right.svg b/icons/chat-right.svg new file mode 100644 index 0000000..b8a2357 --- /dev/null +++ b/icons/chat-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-dots-fill.svg b/icons/chat-square-dots-fill.svg new file mode 100644 index 0000000..2f6c1f4 --- /dev/null +++ b/icons/chat-square-dots-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-dots.svg b/icons/chat-square-dots.svg new file mode 100644 index 0000000..1495b93 --- /dev/null +++ b/icons/chat-square-dots.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-square-fill.svg b/icons/chat-square-fill.svg new file mode 100644 index 0000000..0013fa4 --- /dev/null +++ b/icons/chat-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-heart-fill.svg b/icons/chat-square-heart-fill.svg new file mode 100644 index 0000000..02bf7b7 --- /dev/null +++ b/icons/chat-square-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-heart.svg b/icons/chat-square-heart.svg new file mode 100644 index 0000000..315b837 --- /dev/null +++ b/icons/chat-square-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-square-quote-fill.svg b/icons/chat-square-quote-fill.svg new file mode 100644 index 0000000..8e80e23 --- /dev/null +++ b/icons/chat-square-quote-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-quote.svg b/icons/chat-square-quote.svg new file mode 100644 index 0000000..14b51c5 --- /dev/null +++ b/icons/chat-square-quote.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-square-text-fill.svg b/icons/chat-square-text-fill.svg new file mode 100644 index 0000000..87cecdb --- /dev/null +++ b/icons/chat-square-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-square-text.svg b/icons/chat-square-text.svg new file mode 100644 index 0000000..1d9a359 --- /dev/null +++ b/icons/chat-square-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat-square.svg b/icons/chat-square.svg new file mode 100644 index 0000000..f77c2be --- /dev/null +++ b/icons/chat-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-text-fill.svg b/icons/chat-text-fill.svg new file mode 100644 index 0000000..f6add9f --- /dev/null +++ b/icons/chat-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chat-text.svg b/icons/chat-text.svg new file mode 100644 index 0000000..89786ca --- /dev/null +++ b/icons/chat-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chat.svg b/icons/chat.svg new file mode 100644 index 0000000..7154a0e --- /dev/null +++ b/icons/chat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/check-all.svg b/icons/check-all.svg new file mode 100644 index 0000000..8abe30e --- /dev/null +++ b/icons/check-all.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/check-circle-fill.svg b/icons/check-circle-fill.svg new file mode 100644 index 0000000..f24df1b --- /dev/null +++ b/icons/check-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/check-circle.svg b/icons/check-circle.svg index 2e7e000..4a6916c 100644 --- a/icons/check-circle.svg +++ b/icons/check-circle.svg @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/icons/check-lg.svg b/icons/check-lg.svg new file mode 100644 index 0000000..1682c5e --- /dev/null +++ b/icons/check-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/check-square-fill.svg b/icons/check-square-fill.svg new file mode 100644 index 0000000..160726b --- /dev/null +++ b/icons/check-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/check-square.svg b/icons/check-square.svg new file mode 100644 index 0000000..5fdae93 --- /dev/null +++ b/icons/check-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/check2-all.svg b/icons/check2-all.svg new file mode 100644 index 0000000..49f8b10 --- /dev/null +++ b/icons/check2-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/check2-circle.svg b/icons/check2-circle.svg new file mode 100644 index 0000000..c3943eb --- /dev/null +++ b/icons/check2-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/check2-square.svg b/icons/check2-square.svg new file mode 100644 index 0000000..03ea451 --- /dev/null +++ b/icons/check2-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/check2.svg b/icons/check2.svg new file mode 100644 index 0000000..07ea445 --- /dev/null +++ b/icons/check2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-contract.svg b/icons/chevron-bar-contract.svg new file mode 100644 index 0000000..a7113d7 --- /dev/null +++ b/icons/chevron-bar-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-down.svg b/icons/chevron-bar-down.svg new file mode 100644 index 0000000..59bfeec --- /dev/null +++ b/icons/chevron-bar-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-expand.svg b/icons/chevron-bar-expand.svg new file mode 100644 index 0000000..c717c96 --- /dev/null +++ b/icons/chevron-bar-expand.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-left.svg b/icons/chevron-bar-left.svg new file mode 100644 index 0000000..9719adb --- /dev/null +++ b/icons/chevron-bar-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-right.svg b/icons/chevron-bar-right.svg new file mode 100644 index 0000000..d894417 --- /dev/null +++ b/icons/chevron-bar-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-bar-up.svg b/icons/chevron-bar-up.svg new file mode 100644 index 0000000..32cf196 --- /dev/null +++ b/icons/chevron-bar-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-compact-down.svg b/icons/chevron-compact-down.svg new file mode 100644 index 0000000..0ddee55 --- /dev/null +++ b/icons/chevron-compact-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-compact-left.svg b/icons/chevron-compact-left.svg new file mode 100644 index 0000000..523d5da --- /dev/null +++ b/icons/chevron-compact-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-compact-right.svg b/icons/chevron-compact-right.svg new file mode 100644 index 0000000..7240fd3 --- /dev/null +++ b/icons/chevron-compact-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-compact-up.svg b/icons/chevron-compact-up.svg new file mode 100644 index 0000000..ffa680b --- /dev/null +++ b/icons/chevron-compact-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-contract.svg b/icons/chevron-contract.svg new file mode 100644 index 0000000..041bcf9 --- /dev/null +++ b/icons/chevron-contract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-double-down.svg b/icons/chevron-double-down.svg new file mode 100644 index 0000000..043e080 --- /dev/null +++ b/icons/chevron-double-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chevron-double-left.svg b/icons/chevron-double-left.svg new file mode 100644 index 0000000..0e0a876 --- /dev/null +++ b/icons/chevron-double-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chevron-double-right.svg b/icons/chevron-double-right.svg new file mode 100644 index 0000000..d6601df --- /dev/null +++ b/icons/chevron-double-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chevron-double-up.svg b/icons/chevron-double-up.svg new file mode 100644 index 0000000..93014ae --- /dev/null +++ b/icons/chevron-double-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/chevron-left.svg b/icons/chevron-left.svg new file mode 100644 index 0000000..9a631cf --- /dev/null +++ b/icons/chevron-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/chevron-right.svg b/icons/chevron-right.svg new file mode 100644 index 0000000..1fbcea4 --- /dev/null +++ b/icons/chevron-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/circle-fill.svg b/icons/circle-fill.svg new file mode 100644 index 0000000..3b35841 --- /dev/null +++ b/icons/circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/circle-half.svg b/icons/circle-half.svg new file mode 100644 index 0000000..f7df10f --- /dev/null +++ b/icons/circle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/circle-square.svg b/icons/circle-square.svg new file mode 100644 index 0000000..e2c04c4 --- /dev/null +++ b/icons/circle-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/circle.svg b/icons/circle.svg index ec9fe6c..0c591f6 100644 --- a/icons/circle.svg +++ b/icons/circle.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/icons/claude.svg b/icons/claude.svg new file mode 100644 index 0000000..99f86d4 --- /dev/null +++ b/icons/claude.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/clipboard-check-fill.svg b/icons/clipboard-check-fill.svg new file mode 100644 index 0000000..ed66524 --- /dev/null +++ b/icons/clipboard-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-check.svg b/icons/clipboard-check.svg new file mode 100644 index 0000000..1efdad8 --- /dev/null +++ b/icons/clipboard-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard-data-fill.svg b/icons/clipboard-data-fill.svg new file mode 100644 index 0000000..c8bc02f --- /dev/null +++ b/icons/clipboard-data-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-data.svg b/icons/clipboard-data.svg new file mode 100644 index 0000000..708c21b --- /dev/null +++ b/icons/clipboard-data.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard-fill.svg b/icons/clipboard-fill.svg new file mode 100644 index 0000000..e8c8e78 --- /dev/null +++ b/icons/clipboard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/clipboard-heart-fill.svg b/icons/clipboard-heart-fill.svg new file mode 100644 index 0000000..c8815e0 --- /dev/null +++ b/icons/clipboard-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-heart.svg b/icons/clipboard-heart.svg new file mode 100644 index 0000000..897be92 --- /dev/null +++ b/icons/clipboard-heart.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard-minus-fill.svg b/icons/clipboard-minus-fill.svg new file mode 100644 index 0000000..c56c092 --- /dev/null +++ b/icons/clipboard-minus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-minus.svg b/icons/clipboard-minus.svg new file mode 100644 index 0000000..1b36d3d --- /dev/null +++ b/icons/clipboard-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard-plus-fill.svg b/icons/clipboard-plus-fill.svg new file mode 100644 index 0000000..e4ad26a --- /dev/null +++ b/icons/clipboard-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-plus.svg b/icons/clipboard-plus.svg new file mode 100644 index 0000000..de9bae1 --- /dev/null +++ b/icons/clipboard-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard-pulse.svg b/icons/clipboard-pulse.svg new file mode 100644 index 0000000..7891093 --- /dev/null +++ b/icons/clipboard-pulse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/clipboard-x-fill.svg b/icons/clipboard-x-fill.svg new file mode 100644 index 0000000..7a0011a --- /dev/null +++ b/icons/clipboard-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard-x.svg b/icons/clipboard-x.svg new file mode 100644 index 0000000..75adb26 --- /dev/null +++ b/icons/clipboard-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard.svg b/icons/clipboard.svg new file mode 100644 index 0000000..cca45eb --- /dev/null +++ b/icons/clipboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-check-fill.svg b/icons/clipboard2-check-fill.svg new file mode 100644 index 0000000..0f7657d --- /dev/null +++ b/icons/clipboard2-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-check.svg b/icons/clipboard2-check.svg new file mode 100644 index 0000000..b026b80 --- /dev/null +++ b/icons/clipboard2-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-data-fill.svg b/icons/clipboard2-data-fill.svg new file mode 100644 index 0000000..dce3785 --- /dev/null +++ b/icons/clipboard2-data-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-data.svg b/icons/clipboard2-data.svg new file mode 100644 index 0000000..933d6d8 --- /dev/null +++ b/icons/clipboard2-data.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-fill.svg b/icons/clipboard2-fill.svg new file mode 100644 index 0000000..b9124dd --- /dev/null +++ b/icons/clipboard2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-heart-fill.svg b/icons/clipboard2-heart-fill.svg new file mode 100644 index 0000000..9694cd2 --- /dev/null +++ b/icons/clipboard2-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-heart.svg b/icons/clipboard2-heart.svg new file mode 100644 index 0000000..c2381cd --- /dev/null +++ b/icons/clipboard2-heart.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-minus-fill.svg b/icons/clipboard2-minus-fill.svg new file mode 100644 index 0000000..6a5ba9e --- /dev/null +++ b/icons/clipboard2-minus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-minus.svg b/icons/clipboard2-minus.svg new file mode 100644 index 0000000..78a4756 --- /dev/null +++ b/icons/clipboard2-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-plus-fill.svg b/icons/clipboard2-plus-fill.svg new file mode 100644 index 0000000..9221823 --- /dev/null +++ b/icons/clipboard2-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-plus.svg b/icons/clipboard2-plus.svg new file mode 100644 index 0000000..d8b3070 --- /dev/null +++ b/icons/clipboard2-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-pulse-fill.svg b/icons/clipboard2-pulse-fill.svg new file mode 100644 index 0000000..4087f19 --- /dev/null +++ b/icons/clipboard2-pulse-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-pulse.svg b/icons/clipboard2-pulse.svg new file mode 100644 index 0000000..3662bc2 --- /dev/null +++ b/icons/clipboard2-pulse.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2-x-fill.svg b/icons/clipboard2-x-fill.svg new file mode 100644 index 0000000..ac443d2 --- /dev/null +++ b/icons/clipboard2-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clipboard2-x.svg b/icons/clipboard2-x.svg new file mode 100644 index 0000000..750f4cb --- /dev/null +++ b/icons/clipboard2-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clipboard2.svg b/icons/clipboard2.svg new file mode 100644 index 0000000..3f54968 --- /dev/null +++ b/icons/clipboard2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clock-fill.svg b/icons/clock-fill.svg new file mode 100644 index 0000000..109be16 --- /dev/null +++ b/icons/clock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/clock-history.svg b/icons/clock-history.svg new file mode 100644 index 0000000..7342b0a --- /dev/null +++ b/icons/clock-history.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/clock.svg b/icons/clock.svg new file mode 100644 index 0000000..e210180 --- /dev/null +++ b/icons/clock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-arrow-down-fill.svg b/icons/cloud-arrow-down-fill.svg new file mode 100644 index 0000000..20b546a --- /dev/null +++ b/icons/cloud-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-arrow-down.svg b/icons/cloud-arrow-down.svg new file mode 100644 index 0000000..8b0033a --- /dev/null +++ b/icons/cloud-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-arrow-up-fill.svg b/icons/cloud-arrow-up-fill.svg new file mode 100644 index 0000000..8bb7abc --- /dev/null +++ b/icons/cloud-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-arrow-up.svg b/icons/cloud-arrow-up.svg new file mode 100644 index 0000000..d48d6a4 --- /dev/null +++ b/icons/cloud-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-check-fill.svg b/icons/cloud-check-fill.svg new file mode 100644 index 0000000..58f5ee5 --- /dev/null +++ b/icons/cloud-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-check.svg b/icons/cloud-check.svg new file mode 100644 index 0000000..bf751c2 --- /dev/null +++ b/icons/cloud-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-download-fill.svg b/icons/cloud-download-fill.svg new file mode 100644 index 0000000..e75765f --- /dev/null +++ b/icons/cloud-download-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-download.svg b/icons/cloud-download.svg new file mode 100644 index 0000000..23d7027 --- /dev/null +++ b/icons/cloud-download.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-drizzle-fill.svg b/icons/cloud-drizzle-fill.svg new file mode 100644 index 0000000..0b1c6dc --- /dev/null +++ b/icons/cloud-drizzle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-drizzle.svg b/icons/cloud-drizzle.svg new file mode 100644 index 0000000..edf9dea --- /dev/null +++ b/icons/cloud-drizzle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-fill.svg b/icons/cloud-fill.svg new file mode 100644 index 0000000..cef7cac --- /dev/null +++ b/icons/cloud-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-fog-fill.svg b/icons/cloud-fog-fill.svg new file mode 100644 index 0000000..e8f6b50 --- /dev/null +++ b/icons/cloud-fog-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-fog.svg b/icons/cloud-fog.svg new file mode 100644 index 0000000..7d4abc2 --- /dev/null +++ b/icons/cloud-fog.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-fog2-fill.svg b/icons/cloud-fog2-fill.svg new file mode 100644 index 0000000..08daeef --- /dev/null +++ b/icons/cloud-fog2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-fog2.svg b/icons/cloud-fog2.svg new file mode 100644 index 0000000..0597aea --- /dev/null +++ b/icons/cloud-fog2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-hail-fill.svg b/icons/cloud-hail-fill.svg new file mode 100644 index 0000000..71020cf --- /dev/null +++ b/icons/cloud-hail-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-hail.svg b/icons/cloud-hail.svg new file mode 100644 index 0000000..3353980 --- /dev/null +++ b/icons/cloud-hail.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-haze-fill.svg b/icons/cloud-haze-fill.svg new file mode 100644 index 0000000..bca757b --- /dev/null +++ b/icons/cloud-haze-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-haze.svg b/icons/cloud-haze.svg new file mode 100644 index 0000000..40754fb --- /dev/null +++ b/icons/cloud-haze.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-haze2-fill.svg b/icons/cloud-haze2-fill.svg new file mode 100644 index 0000000..0c7c8c6 --- /dev/null +++ b/icons/cloud-haze2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-haze2.svg b/icons/cloud-haze2.svg new file mode 100644 index 0000000..8e28430 --- /dev/null +++ b/icons/cloud-haze2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-lightning-fill.svg b/icons/cloud-lightning-fill.svg new file mode 100644 index 0000000..40a047f --- /dev/null +++ b/icons/cloud-lightning-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-lightning-rain-fill.svg b/icons/cloud-lightning-rain-fill.svg new file mode 100644 index 0000000..f958646 --- /dev/null +++ b/icons/cloud-lightning-rain-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-lightning-rain.svg b/icons/cloud-lightning-rain.svg new file mode 100644 index 0000000..c2e3138 --- /dev/null +++ b/icons/cloud-lightning-rain.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-lightning.svg b/icons/cloud-lightning.svg new file mode 100644 index 0000000..247fb42 --- /dev/null +++ b/icons/cloud-lightning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-minus-fill.svg b/icons/cloud-minus-fill.svg new file mode 100644 index 0000000..bc39196 --- /dev/null +++ b/icons/cloud-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-minus.svg b/icons/cloud-minus.svg new file mode 100644 index 0000000..0834442 --- /dev/null +++ b/icons/cloud-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-moon-fill.svg b/icons/cloud-moon-fill.svg new file mode 100644 index 0000000..356e410 --- /dev/null +++ b/icons/cloud-moon-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-moon.svg b/icons/cloud-moon.svg new file mode 100644 index 0000000..5ea2e2e --- /dev/null +++ b/icons/cloud-moon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-plus-fill.svg b/icons/cloud-plus-fill.svg new file mode 100644 index 0000000..21dae38 --- /dev/null +++ b/icons/cloud-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-plus.svg b/icons/cloud-plus.svg new file mode 100644 index 0000000..ded12a4 --- /dev/null +++ b/icons/cloud-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-rain-fill.svg b/icons/cloud-rain-fill.svg new file mode 100644 index 0000000..67d5901 --- /dev/null +++ b/icons/cloud-rain-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-rain-heavy-fill.svg b/icons/cloud-rain-heavy-fill.svg new file mode 100644 index 0000000..fa039cd --- /dev/null +++ b/icons/cloud-rain-heavy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-rain-heavy.svg b/icons/cloud-rain-heavy.svg new file mode 100644 index 0000000..76b27ce --- /dev/null +++ b/icons/cloud-rain-heavy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-rain.svg b/icons/cloud-rain.svg new file mode 100644 index 0000000..7d3d6db --- /dev/null +++ b/icons/cloud-rain.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-slash-fill.svg b/icons/cloud-slash-fill.svg new file mode 100644 index 0000000..5ef39d1 --- /dev/null +++ b/icons/cloud-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-slash.svg b/icons/cloud-slash.svg new file mode 100644 index 0000000..e6072e4 --- /dev/null +++ b/icons/cloud-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-sleet-fill.svg b/icons/cloud-sleet-fill.svg new file mode 100644 index 0000000..44ecfcb --- /dev/null +++ b/icons/cloud-sleet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-sleet.svg b/icons/cloud-sleet.svg new file mode 100644 index 0000000..b04c9e8 --- /dev/null +++ b/icons/cloud-sleet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-snow-fill.svg b/icons/cloud-snow-fill.svg new file mode 100644 index 0000000..c12f3e1 --- /dev/null +++ b/icons/cloud-snow-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-snow.svg b/icons/cloud-snow.svg new file mode 100644 index 0000000..6273ad9 --- /dev/null +++ b/icons/cloud-snow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-sun-fill.svg b/icons/cloud-sun-fill.svg new file mode 100644 index 0000000..a6f81cf --- /dev/null +++ b/icons/cloud-sun-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-sun.svg b/icons/cloud-sun.svg new file mode 100644 index 0000000..29aee9b --- /dev/null +++ b/icons/cloud-sun.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud-upload-fill.svg b/icons/cloud-upload-fill.svg new file mode 100644 index 0000000..9434e35 --- /dev/null +++ b/icons/cloud-upload-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloud-upload.svg b/icons/cloud-upload.svg new file mode 100644 index 0000000..0c41b56 --- /dev/null +++ b/icons/cloud-upload.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloud.svg b/icons/cloud.svg new file mode 100644 index 0000000..c5b14eb --- /dev/null +++ b/icons/cloud.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/clouds-fill.svg b/icons/clouds-fill.svg new file mode 100644 index 0000000..b5fecee --- /dev/null +++ b/icons/clouds-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/clouds.svg b/icons/clouds.svg new file mode 100644 index 0000000..37b040a --- /dev/null +++ b/icons/clouds.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cloudy-fill.svg b/icons/cloudy-fill.svg new file mode 100644 index 0000000..41c0213 --- /dev/null +++ b/icons/cloudy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cloudy.svg b/icons/cloudy.svg new file mode 100644 index 0000000..828ff5b --- /dev/null +++ b/icons/cloudy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/code-slash.svg b/icons/code-slash.svg new file mode 100644 index 0000000..4f54e1e --- /dev/null +++ b/icons/code-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/code-square.svg b/icons/code-square.svg new file mode 100644 index 0000000..6e8b717 --- /dev/null +++ b/icons/code-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/code.svg b/icons/code.svg new file mode 100644 index 0000000..f797d6a --- /dev/null +++ b/icons/code.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/coin.svg b/icons/coin.svg new file mode 100644 index 0000000..1cf4e31 --- /dev/null +++ b/icons/coin.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/collection-fill.svg b/icons/collection-fill.svg new file mode 100644 index 0000000..e3e3b9e --- /dev/null +++ b/icons/collection-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/collection-play-fill.svg b/icons/collection-play-fill.svg new file mode 100644 index 0000000..399cd08 --- /dev/null +++ b/icons/collection-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/collection-play.svg b/icons/collection-play.svg new file mode 100644 index 0000000..23e29d3 --- /dev/null +++ b/icons/collection-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/collection.svg b/icons/collection.svg new file mode 100644 index 0000000..dee267d --- /dev/null +++ b/icons/collection.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/columns-gap.svg b/icons/columns-gap.svg new file mode 100644 index 0000000..a105429 --- /dev/null +++ b/icons/columns-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/columns.svg b/icons/columns.svg new file mode 100644 index 0000000..cfeebbd --- /dev/null +++ b/icons/columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/command.svg b/icons/command.svg new file mode 100644 index 0000000..12dc1ff --- /dev/null +++ b/icons/command.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/compass-fill.svg b/icons/compass-fill.svg new file mode 100644 index 0000000..99c5db0 --- /dev/null +++ b/icons/compass-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/compass.svg b/icons/compass.svg new file mode 100644 index 0000000..5767197 --- /dev/null +++ b/icons/compass.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cone-striped.svg b/icons/cone-striped.svg new file mode 100644 index 0000000..476de8b --- /dev/null +++ b/icons/cone-striped.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cone.svg b/icons/cone.svg new file mode 100644 index 0000000..5286d34 --- /dev/null +++ b/icons/cone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/controller.svg b/icons/controller.svg new file mode 100644 index 0000000..ee9426c --- /dev/null +++ b/icons/controller.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cookie.svg b/icons/cookie.svg new file mode 100644 index 0000000..685ed5e --- /dev/null +++ b/icons/cookie.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/copy.svg b/icons/copy.svg new file mode 100644 index 0000000..5246858 --- /dev/null +++ b/icons/copy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cpu-fill.svg b/icons/cpu-fill.svg new file mode 100644 index 0000000..eb817c6 --- /dev/null +++ b/icons/cpu-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cpu.svg b/icons/cpu.svg new file mode 100644 index 0000000..02a5a50 --- /dev/null +++ b/icons/cpu.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/credit-card-2-back-fill.svg b/icons/credit-card-2-back-fill.svg new file mode 100644 index 0000000..062c236 --- /dev/null +++ b/icons/credit-card-2-back-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/credit-card-2-back.svg b/icons/credit-card-2-back.svg new file mode 100644 index 0000000..886baab --- /dev/null +++ b/icons/credit-card-2-back.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/credit-card-2-front-fill.svg b/icons/credit-card-2-front-fill.svg new file mode 100644 index 0000000..deb6206 --- /dev/null +++ b/icons/credit-card-2-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/credit-card-2-front.svg b/icons/credit-card-2-front.svg new file mode 100644 index 0000000..554298f --- /dev/null +++ b/icons/credit-card-2-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/credit-card-fill.svg b/icons/credit-card-fill.svg new file mode 100644 index 0000000..4621b90 --- /dev/null +++ b/icons/credit-card-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/credit-card.svg b/icons/credit-card.svg new file mode 100644 index 0000000..d0179fb --- /dev/null +++ b/icons/credit-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/crop.svg b/icons/crop.svg new file mode 100644 index 0000000..72d6043 --- /dev/null +++ b/icons/crop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/crosshair.svg b/icons/crosshair.svg new file mode 100644 index 0000000..e063751 --- /dev/null +++ b/icons/crosshair.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/crosshair2.svg b/icons/crosshair2.svg new file mode 100644 index 0000000..e014f0b --- /dev/null +++ b/icons/crosshair2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/css.svg b/icons/css.svg new file mode 100644 index 0000000..7ab7bc2 --- /dev/null +++ b/icons/css.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cup-fill.svg b/icons/cup-fill.svg new file mode 100644 index 0000000..dcaf39a --- /dev/null +++ b/icons/cup-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cup-hot-fill.svg b/icons/cup-hot-fill.svg new file mode 100644 index 0000000..afc1f2b --- /dev/null +++ b/icons/cup-hot-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cup-hot.svg b/icons/cup-hot.svg new file mode 100644 index 0000000..fb8988e --- /dev/null +++ b/icons/cup-hot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/cup-straw.svg b/icons/cup-straw.svg new file mode 100644 index 0000000..80c4cab --- /dev/null +++ b/icons/cup-straw.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cup.svg b/icons/cup.svg new file mode 100644 index 0000000..33d1662 --- /dev/null +++ b/icons/cup.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-bitcoin.svg b/icons/currency-bitcoin.svg new file mode 100644 index 0000000..7957db9 --- /dev/null +++ b/icons/currency-bitcoin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-dollar.svg b/icons/currency-dollar.svg new file mode 100644 index 0000000..e0bfb5e --- /dev/null +++ b/icons/currency-dollar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-euro.svg b/icons/currency-euro.svg new file mode 100644 index 0000000..5183beb --- /dev/null +++ b/icons/currency-euro.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-exchange.svg b/icons/currency-exchange.svg new file mode 100644 index 0000000..0f0f31d --- /dev/null +++ b/icons/currency-exchange.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-pound.svg b/icons/currency-pound.svg new file mode 100644 index 0000000..0495178 --- /dev/null +++ b/icons/currency-pound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-rupee.svg b/icons/currency-rupee.svg new file mode 100644 index 0000000..3905479 --- /dev/null +++ b/icons/currency-rupee.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/currency-yen.svg b/icons/currency-yen.svg new file mode 100644 index 0000000..f17f1d5 --- /dev/null +++ b/icons/currency-yen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cursor-fill.svg b/icons/cursor-fill.svg new file mode 100644 index 0000000..b841693 --- /dev/null +++ b/icons/cursor-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cursor-text.svg b/icons/cursor-text.svg new file mode 100644 index 0000000..a10c49a --- /dev/null +++ b/icons/cursor-text.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/cursor.svg b/icons/cursor.svg new file mode 100644 index 0000000..8cede99 --- /dev/null +++ b/icons/cursor.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-circle-dotted.svg b/icons/dash-circle-dotted.svg new file mode 100644 index 0000000..78dd897 --- /dev/null +++ b/icons/dash-circle-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-circle-fill.svg b/icons/dash-circle-fill.svg new file mode 100644 index 0000000..8bf35b0 --- /dev/null +++ b/icons/dash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-circle.svg b/icons/dash-circle.svg new file mode 100644 index 0000000..f73d012 --- /dev/null +++ b/icons/dash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dash-lg.svg b/icons/dash-lg.svg new file mode 100644 index 0000000..7a315e2 --- /dev/null +++ b/icons/dash-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-square-dotted.svg b/icons/dash-square-dotted.svg new file mode 100644 index 0000000..892355b --- /dev/null +++ b/icons/dash-square-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-square-fill.svg b/icons/dash-square-fill.svg new file mode 100644 index 0000000..d59b749 --- /dev/null +++ b/icons/dash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dash-square.svg b/icons/dash-square.svg new file mode 100644 index 0000000..eb0de72 --- /dev/null +++ b/icons/dash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dash.svg b/icons/dash.svg new file mode 100644 index 0000000..3f38f65 --- /dev/null +++ b/icons/dash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/database-add.svg b/icons/database-add.svg new file mode 100644 index 0000000..3b4af52 --- /dev/null +++ b/icons/database-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-check.svg b/icons/database-check.svg new file mode 100644 index 0000000..06b14b6 --- /dev/null +++ b/icons/database-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-dash.svg b/icons/database-dash.svg new file mode 100644 index 0000000..58a6e3c --- /dev/null +++ b/icons/database-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-down.svg b/icons/database-down.svg new file mode 100644 index 0000000..8671e71 --- /dev/null +++ b/icons/database-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-exclamation.svg b/icons/database-exclamation.svg new file mode 100644 index 0000000..70a766e --- /dev/null +++ b/icons/database-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-add.svg b/icons/database-fill-add.svg new file mode 100644 index 0000000..889aed9 --- /dev/null +++ b/icons/database-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-check.svg b/icons/database-fill-check.svg new file mode 100644 index 0000000..34c6f82 --- /dev/null +++ b/icons/database-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-dash.svg b/icons/database-fill-dash.svg new file mode 100644 index 0000000..2f84510 --- /dev/null +++ b/icons/database-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-down.svg b/icons/database-fill-down.svg new file mode 100644 index 0000000..fd45dac --- /dev/null +++ b/icons/database-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-exclamation.svg b/icons/database-fill-exclamation.svg new file mode 100644 index 0000000..daf40d6 --- /dev/null +++ b/icons/database-fill-exclamation.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/database-fill-gear.svg b/icons/database-fill-gear.svg new file mode 100644 index 0000000..33bf3f6 --- /dev/null +++ b/icons/database-fill-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-lock.svg b/icons/database-fill-lock.svg new file mode 100644 index 0000000..9fb764f --- /dev/null +++ b/icons/database-fill-lock.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/database-fill-slash.svg b/icons/database-fill-slash.svg new file mode 100644 index 0000000..00b2208 --- /dev/null +++ b/icons/database-fill-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-up.svg b/icons/database-fill-up.svg new file mode 100644 index 0000000..9918312 --- /dev/null +++ b/icons/database-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-fill-x.svg b/icons/database-fill-x.svg new file mode 100644 index 0000000..3e89ef8 --- /dev/null +++ b/icons/database-fill-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/database-fill.svg b/icons/database-fill.svg new file mode 100644 index 0000000..834e912 --- /dev/null +++ b/icons/database-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/database-gear.svg b/icons/database-gear.svg new file mode 100644 index 0000000..408c687 --- /dev/null +++ b/icons/database-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-lock.svg b/icons/database-lock.svg new file mode 100644 index 0000000..10e1189 --- /dev/null +++ b/icons/database-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-slash.svg b/icons/database-slash.svg new file mode 100644 index 0000000..35fccf5 --- /dev/null +++ b/icons/database-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-up.svg b/icons/database-up.svg new file mode 100644 index 0000000..d497048 --- /dev/null +++ b/icons/database-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database-x.svg b/icons/database-x.svg new file mode 100644 index 0000000..0ac750b --- /dev/null +++ b/icons/database-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/database.svg b/icons/database.svg new file mode 100644 index 0000000..6586741 --- /dev/null +++ b/icons/database.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/device-hdd-fill.svg b/icons/device-hdd-fill.svg new file mode 100644 index 0000000..25295e4 --- /dev/null +++ b/icons/device-hdd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/device-hdd.svg b/icons/device-hdd.svg new file mode 100644 index 0000000..ecc9e50 --- /dev/null +++ b/icons/device-hdd.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/device-ssd-fill.svg b/icons/device-ssd-fill.svg new file mode 100644 index 0000000..ed23318 --- /dev/null +++ b/icons/device-ssd-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/device-ssd.svg b/icons/device-ssd.svg new file mode 100644 index 0000000..6bedbd5 --- /dev/null +++ b/icons/device-ssd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/diagram-2-fill.svg b/icons/diagram-2-fill.svg new file mode 100644 index 0000000..7879ef6 --- /dev/null +++ b/icons/diagram-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diagram-2.svg b/icons/diagram-2.svg new file mode 100644 index 0000000..31f990e --- /dev/null +++ b/icons/diagram-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diagram-3-fill.svg b/icons/diagram-3-fill.svg new file mode 100644 index 0000000..3326357 --- /dev/null +++ b/icons/diagram-3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diagram-3.svg b/icons/diagram-3.svg new file mode 100644 index 0000000..5ed4479 --- /dev/null +++ b/icons/diagram-3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diamond-fill.svg b/icons/diamond-fill.svg new file mode 100644 index 0000000..bc4bf2f --- /dev/null +++ b/icons/diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diamond-half.svg b/icons/diamond-half.svg new file mode 100644 index 0000000..7c2ac0f --- /dev/null +++ b/icons/diamond-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/diamond.svg b/icons/diamond.svg new file mode 100644 index 0000000..8217aac --- /dev/null +++ b/icons/diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-1-fill.svg b/icons/dice-1-fill.svg new file mode 100644 index 0000000..b0c7d22 --- /dev/null +++ b/icons/dice-1-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-1.svg b/icons/dice-1.svg new file mode 100644 index 0000000..ab490ea --- /dev/null +++ b/icons/dice-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dice-2-fill.svg b/icons/dice-2-fill.svg new file mode 100644 index 0000000..119f3db --- /dev/null +++ b/icons/dice-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-2.svg b/icons/dice-2.svg new file mode 100644 index 0000000..16235ff --- /dev/null +++ b/icons/dice-2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dice-3-fill.svg b/icons/dice-3-fill.svg new file mode 100644 index 0000000..bfcb505 --- /dev/null +++ b/icons/dice-3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-3.svg b/icons/dice-3.svg new file mode 100644 index 0000000..b300de4 --- /dev/null +++ b/icons/dice-3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dice-4-fill.svg b/icons/dice-4-fill.svg new file mode 100644 index 0000000..df35bb8 --- /dev/null +++ b/icons/dice-4-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-4.svg b/icons/dice-4.svg new file mode 100644 index 0000000..8f029c0 --- /dev/null +++ b/icons/dice-4.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dice-5-fill.svg b/icons/dice-5-fill.svg new file mode 100644 index 0000000..5aee8ab --- /dev/null +++ b/icons/dice-5-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-5.svg b/icons/dice-5.svg new file mode 100644 index 0000000..b6537d0 --- /dev/null +++ b/icons/dice-5.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dice-6-fill.svg b/icons/dice-6-fill.svg new file mode 100644 index 0000000..893ba98 --- /dev/null +++ b/icons/dice-6-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dice-6.svg b/icons/dice-6.svg new file mode 100644 index 0000000..7951fd8 --- /dev/null +++ b/icons/dice-6.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/disc-fill.svg b/icons/disc-fill.svg new file mode 100644 index 0000000..894afd7 --- /dev/null +++ b/icons/disc-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/disc.svg b/icons/disc.svg new file mode 100644 index 0000000..6f34164 --- /dev/null +++ b/icons/disc.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/discord.svg b/icons/discord.svg new file mode 100644 index 0000000..336f074 --- /dev/null +++ b/icons/discord.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/display-fill.svg b/icons/display-fill.svg new file mode 100644 index 0000000..74bb345 --- /dev/null +++ b/icons/display-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/display.svg b/icons/display.svg new file mode 100644 index 0000000..02fada9 --- /dev/null +++ b/icons/display.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/displayport-fill.svg b/icons/displayport-fill.svg new file mode 100644 index 0000000..20d62b6 --- /dev/null +++ b/icons/displayport-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/displayport.svg b/icons/displayport.svg new file mode 100644 index 0000000..23d4024 --- /dev/null +++ b/icons/displayport.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/distribute-horizontal.svg b/icons/distribute-horizontal.svg new file mode 100644 index 0000000..f9b2a76 --- /dev/null +++ b/icons/distribute-horizontal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/distribute-vertical.svg b/icons/distribute-vertical.svg new file mode 100644 index 0000000..3581aac --- /dev/null +++ b/icons/distribute-vertical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/door-closed-fill.svg b/icons/door-closed-fill.svg new file mode 100644 index 0000000..dbe79f9 --- /dev/null +++ b/icons/door-closed-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/door-open-fill.svg b/icons/door-open-fill.svg new file mode 100644 index 0000000..80b5aa8 --- /dev/null +++ b/icons/door-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/door-open.svg b/icons/door-open.svg new file mode 100644 index 0000000..9d91c61 --- /dev/null +++ b/icons/door-open.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dot.svg b/icons/dot.svg new file mode 100644 index 0000000..7fd6d74 --- /dev/null +++ b/icons/dot.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/download.svg b/icons/download.svg new file mode 100644 index 0000000..4852196 --- /dev/null +++ b/icons/download.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dpad-fill.svg b/icons/dpad-fill.svg new file mode 100644 index 0000000..ad2c72e --- /dev/null +++ b/icons/dpad-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dpad.svg b/icons/dpad.svg new file mode 100644 index 0000000..92b1d81 --- /dev/null +++ b/icons/dpad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/dribbble.svg b/icons/dribbble.svg new file mode 100644 index 0000000..13a3fd9 --- /dev/null +++ b/icons/dribbble.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/dropbox.svg b/icons/dropbox.svg new file mode 100644 index 0000000..a3fe91c --- /dev/null +++ b/icons/dropbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/droplet-fill.svg b/icons/droplet-fill.svg new file mode 100644 index 0000000..a9c4340 --- /dev/null +++ b/icons/droplet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/droplet-half.svg b/icons/droplet-half.svg new file mode 100644 index 0000000..315c84c --- /dev/null +++ b/icons/droplet-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/droplet.svg b/icons/droplet.svg new file mode 100644 index 0000000..0d2cc20 --- /dev/null +++ b/icons/droplet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/duffle-fill.svg b/icons/duffle-fill.svg new file mode 100644 index 0000000..d1cc586 --- /dev/null +++ b/icons/duffle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/duffle.svg b/icons/duffle.svg new file mode 100644 index 0000000..ba4bb9c --- /dev/null +++ b/icons/duffle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ear-fill.svg b/icons/ear-fill.svg new file mode 100644 index 0000000..b0bd553 --- /dev/null +++ b/icons/ear-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ear.svg b/icons/ear.svg new file mode 100644 index 0000000..0313233 --- /dev/null +++ b/icons/ear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/earbuds.svg b/icons/earbuds.svg new file mode 100644 index 0000000..a7cb730 --- /dev/null +++ b/icons/earbuds.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/easel-fill.svg b/icons/easel-fill.svg new file mode 100644 index 0000000..7dcff1d --- /dev/null +++ b/icons/easel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/easel.svg b/icons/easel.svg new file mode 100644 index 0000000..efe2aa0 --- /dev/null +++ b/icons/easel.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/easel2-fill.svg b/icons/easel2-fill.svg new file mode 100644 index 0000000..dcc33f3 --- /dev/null +++ b/icons/easel2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/easel2.svg b/icons/easel2.svg new file mode 100644 index 0000000..23a73db --- /dev/null +++ b/icons/easel2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/easel3-fill.svg b/icons/easel3-fill.svg new file mode 100644 index 0000000..d4ae735 --- /dev/null +++ b/icons/easel3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/easel3.svg b/icons/easel3.svg new file mode 100644 index 0000000..27a43d6 --- /dev/null +++ b/icons/easel3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/egg-fill.svg b/icons/egg-fill.svg new file mode 100644 index 0000000..4e95188 --- /dev/null +++ b/icons/egg-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/egg-fried.svg b/icons/egg-fried.svg new file mode 100644 index 0000000..0375318 --- /dev/null +++ b/icons/egg-fried.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/egg.svg b/icons/egg.svg new file mode 100644 index 0000000..664535d --- /dev/null +++ b/icons/egg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/eject-fill.svg b/icons/eject-fill.svg new file mode 100644 index 0000000..87378f9 --- /dev/null +++ b/icons/eject-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/eject.svg b/icons/eject.svg new file mode 100644 index 0000000..c2d6dde --- /dev/null +++ b/icons/eject.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-angry-fill.svg b/icons/emoji-angry-fill.svg new file mode 100644 index 0000000..535e7c6 --- /dev/null +++ b/icons/emoji-angry-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-angry.svg b/icons/emoji-angry.svg new file mode 100644 index 0000000..88768fd --- /dev/null +++ b/icons/emoji-angry.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-astonished-fill.svg b/icons/emoji-astonished-fill.svg new file mode 100644 index 0000000..67974cb --- /dev/null +++ b/icons/emoji-astonished-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-astonished.svg b/icons/emoji-astonished.svg new file mode 100644 index 0000000..f30aaaf --- /dev/null +++ b/icons/emoji-astonished.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-dizzy-fill.svg b/icons/emoji-dizzy-fill.svg new file mode 100644 index 0000000..271e031 --- /dev/null +++ b/icons/emoji-dizzy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-dizzy.svg b/icons/emoji-dizzy.svg new file mode 100644 index 0000000..15cd8e7 --- /dev/null +++ b/icons/emoji-dizzy.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-expressionless-fill.svg b/icons/emoji-expressionless-fill.svg new file mode 100644 index 0000000..cd311cf --- /dev/null +++ b/icons/emoji-expressionless-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-expressionless.svg b/icons/emoji-expressionless.svg new file mode 100644 index 0000000..6dbd1eb --- /dev/null +++ b/icons/emoji-expressionless.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-frown-fill.svg b/icons/emoji-frown-fill.svg new file mode 100644 index 0000000..7e420e2 --- /dev/null +++ b/icons/emoji-frown-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-frown.svg b/icons/emoji-frown.svg new file mode 100644 index 0000000..98a3bff --- /dev/null +++ b/icons/emoji-frown.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-grimace-fill.svg b/icons/emoji-grimace-fill.svg new file mode 100644 index 0000000..2a1d738 --- /dev/null +++ b/icons/emoji-grimace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-grimace.svg b/icons/emoji-grimace.svg new file mode 100644 index 0000000..f1118af --- /dev/null +++ b/icons/emoji-grimace.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-grin-fill.svg b/icons/emoji-grin-fill.svg new file mode 100644 index 0000000..5f11390 --- /dev/null +++ b/icons/emoji-grin-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-grin.svg b/icons/emoji-grin.svg new file mode 100644 index 0000000..31354ad --- /dev/null +++ b/icons/emoji-grin.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-heart-eyes-fill.svg b/icons/emoji-heart-eyes-fill.svg new file mode 100644 index 0000000..1436d76 --- /dev/null +++ b/icons/emoji-heart-eyes-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-heart-eyes.svg b/icons/emoji-heart-eyes.svg new file mode 100644 index 0000000..8eadfc6 --- /dev/null +++ b/icons/emoji-heart-eyes.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-kiss-fill.svg b/icons/emoji-kiss-fill.svg new file mode 100644 index 0000000..31d5056 --- /dev/null +++ b/icons/emoji-kiss-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-kiss.svg b/icons/emoji-kiss.svg new file mode 100644 index 0000000..dd3fd4b --- /dev/null +++ b/icons/emoji-kiss.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-laughing-fill.svg b/icons/emoji-laughing-fill.svg new file mode 100644 index 0000000..2c81386 --- /dev/null +++ b/icons/emoji-laughing-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-laughing.svg b/icons/emoji-laughing.svg new file mode 100644 index 0000000..eed9f84 --- /dev/null +++ b/icons/emoji-laughing.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-neutral-fill.svg b/icons/emoji-neutral-fill.svg new file mode 100644 index 0000000..6e1f05d --- /dev/null +++ b/icons/emoji-neutral-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-neutral.svg b/icons/emoji-neutral.svg new file mode 100644 index 0000000..509e9d1 --- /dev/null +++ b/icons/emoji-neutral.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-smile-fill.svg b/icons/emoji-smile-fill.svg new file mode 100644 index 0000000..f267edf --- /dev/null +++ b/icons/emoji-smile-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-smile-upside-down-fill.svg b/icons/emoji-smile-upside-down-fill.svg new file mode 100644 index 0000000..e88567a --- /dev/null +++ b/icons/emoji-smile-upside-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-smile-upside-down.svg b/icons/emoji-smile-upside-down.svg new file mode 100644 index 0000000..f0eedc2 --- /dev/null +++ b/icons/emoji-smile-upside-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-smile.svg b/icons/emoji-smile.svg new file mode 100644 index 0000000..c35f1a1 --- /dev/null +++ b/icons/emoji-smile.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-sunglasses-fill.svg b/icons/emoji-sunglasses-fill.svg new file mode 100644 index 0000000..44e9cb8 --- /dev/null +++ b/icons/emoji-sunglasses-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-sunglasses.svg b/icons/emoji-sunglasses.svg new file mode 100644 index 0000000..ee910dc --- /dev/null +++ b/icons/emoji-sunglasses.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-surprise-fill.svg b/icons/emoji-surprise-fill.svg new file mode 100644 index 0000000..d5e7652 --- /dev/null +++ b/icons/emoji-surprise-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-surprise.svg b/icons/emoji-surprise.svg new file mode 100644 index 0000000..cbb0a94 --- /dev/null +++ b/icons/emoji-surprise.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-tear-fill.svg b/icons/emoji-tear-fill.svg new file mode 100644 index 0000000..6fdf98e --- /dev/null +++ b/icons/emoji-tear-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-tear.svg b/icons/emoji-tear.svg new file mode 100644 index 0000000..fc72455 --- /dev/null +++ b/icons/emoji-tear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/emoji-wink-fill.svg b/icons/emoji-wink-fill.svg new file mode 100644 index 0000000..bba3800 --- /dev/null +++ b/icons/emoji-wink-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/emoji-wink.svg b/icons/emoji-wink.svg new file mode 100644 index 0000000..8d8f764 --- /dev/null +++ b/icons/emoji-wink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-arrow-down-fill.svg b/icons/envelope-arrow-down-fill.svg new file mode 100644 index 0000000..abc8e0d --- /dev/null +++ b/icons/envelope-arrow-down-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-arrow-down.svg b/icons/envelope-arrow-down.svg new file mode 100644 index 0000000..65dd4c6 --- /dev/null +++ b/icons/envelope-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-arrow-up-fill.svg b/icons/envelope-arrow-up-fill.svg new file mode 100644 index 0000000..9d276c2 --- /dev/null +++ b/icons/envelope-arrow-up-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-arrow-up.svg b/icons/envelope-arrow-up.svg new file mode 100644 index 0000000..2ebe82c --- /dev/null +++ b/icons/envelope-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-at-fill.svg b/icons/envelope-at-fill.svg new file mode 100644 index 0000000..2a1d492 --- /dev/null +++ b/icons/envelope-at-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-at.svg b/icons/envelope-at.svg new file mode 100644 index 0000000..7a31442 --- /dev/null +++ b/icons/envelope-at.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-check-fill.svg b/icons/envelope-check-fill.svg new file mode 100644 index 0000000..261f7b3 --- /dev/null +++ b/icons/envelope-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-check.svg b/icons/envelope-check.svg new file mode 100644 index 0000000..aa4bf8b --- /dev/null +++ b/icons/envelope-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-dash-fill.svg b/icons/envelope-dash-fill.svg new file mode 100644 index 0000000..dd1cc6a --- /dev/null +++ b/icons/envelope-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-dash.svg b/icons/envelope-dash.svg new file mode 100644 index 0000000..6e1c3fc --- /dev/null +++ b/icons/envelope-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-exclamation-fill.svg b/icons/envelope-exclamation-fill.svg new file mode 100644 index 0000000..89ab352 --- /dev/null +++ b/icons/envelope-exclamation-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-exclamation.svg b/icons/envelope-exclamation.svg new file mode 100644 index 0000000..86423d8 --- /dev/null +++ b/icons/envelope-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-fill.svg b/icons/envelope-fill.svg new file mode 100644 index 0000000..bda5ad1 --- /dev/null +++ b/icons/envelope-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-heart-fill.svg b/icons/envelope-heart-fill.svg new file mode 100644 index 0000000..4a30e40 --- /dev/null +++ b/icons/envelope-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-heart.svg b/icons/envelope-heart.svg new file mode 100644 index 0000000..bec4858 --- /dev/null +++ b/icons/envelope-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-open-fill.svg b/icons/envelope-open-fill.svg new file mode 100644 index 0000000..f15f28e --- /dev/null +++ b/icons/envelope-open-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-open-heart-fill.svg b/icons/envelope-open-heart-fill.svg new file mode 100644 index 0000000..fee0dc8 --- /dev/null +++ b/icons/envelope-open-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-open-heart.svg b/icons/envelope-open-heart.svg new file mode 100644 index 0000000..0a038da --- /dev/null +++ b/icons/envelope-open-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-open.svg b/icons/envelope-open.svg new file mode 100644 index 0000000..1882d9f --- /dev/null +++ b/icons/envelope-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-paper-fill.svg b/icons/envelope-paper-fill.svg new file mode 100644 index 0000000..6d47d0c --- /dev/null +++ b/icons/envelope-paper-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-paper-heart-fill.svg b/icons/envelope-paper-heart-fill.svg new file mode 100644 index 0000000..15e5a25 --- /dev/null +++ b/icons/envelope-paper-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-paper-heart.svg b/icons/envelope-paper-heart.svg new file mode 100644 index 0000000..363a32e --- /dev/null +++ b/icons/envelope-paper-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-paper.svg b/icons/envelope-paper.svg new file mode 100644 index 0000000..6f2609f --- /dev/null +++ b/icons/envelope-paper.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/envelope-plus-fill.svg b/icons/envelope-plus-fill.svg new file mode 100644 index 0000000..f71b6c1 --- /dev/null +++ b/icons/envelope-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-plus.svg b/icons/envelope-plus.svg new file mode 100644 index 0000000..5390528 --- /dev/null +++ b/icons/envelope-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-slash-fill.svg b/icons/envelope-slash-fill.svg new file mode 100644 index 0000000..9535d6b --- /dev/null +++ b/icons/envelope-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-slash.svg b/icons/envelope-slash.svg new file mode 100644 index 0000000..f389092 --- /dev/null +++ b/icons/envelope-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-x-fill.svg b/icons/envelope-x-fill.svg new file mode 100644 index 0000000..4342bdc --- /dev/null +++ b/icons/envelope-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope-x.svg b/icons/envelope-x.svg new file mode 100644 index 0000000..3da0e72 --- /dev/null +++ b/icons/envelope-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/envelope.svg b/icons/envelope.svg new file mode 100644 index 0000000..a007ad2 --- /dev/null +++ b/icons/envelope.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/eraser-fill.svg b/icons/eraser-fill.svg new file mode 100644 index 0000000..7cf55dd --- /dev/null +++ b/icons/eraser-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/eraser.svg b/icons/eraser.svg new file mode 100644 index 0000000..266b769 --- /dev/null +++ b/icons/eraser.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/escape.svg b/icons/escape.svg new file mode 100644 index 0000000..34093a1 --- /dev/null +++ b/icons/escape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ethernet.svg b/icons/ethernet.svg new file mode 100644 index 0000000..66b2e74 --- /dev/null +++ b/icons/ethernet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ev-front-fill.svg b/icons/ev-front-fill.svg new file mode 100644 index 0000000..d55d1cb --- /dev/null +++ b/icons/ev-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ev-front.svg b/icons/ev-front.svg new file mode 100644 index 0000000..c50c0ab --- /dev/null +++ b/icons/ev-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ev-station-fill.svg b/icons/ev-station-fill.svg new file mode 100644 index 0000000..9187f78 --- /dev/null +++ b/icons/ev-station-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ev-station.svg b/icons/ev-station.svg new file mode 100644 index 0000000..56a0ba0 --- /dev/null +++ b/icons/ev-station.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exclamation-circle-fill.svg b/icons/exclamation-circle-fill.svg new file mode 100644 index 0000000..4b06ee7 --- /dev/null +++ b/icons/exclamation-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation-circle.svg b/icons/exclamation-circle.svg new file mode 100644 index 0000000..052a224 --- /dev/null +++ b/icons/exclamation-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exclamation-diamond-fill.svg b/icons/exclamation-diamond-fill.svg new file mode 100644 index 0000000..ceea641 --- /dev/null +++ b/icons/exclamation-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation-diamond.svg b/icons/exclamation-diamond.svg new file mode 100644 index 0000000..affc722 --- /dev/null +++ b/icons/exclamation-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exclamation-lg.svg b/icons/exclamation-lg.svg new file mode 100644 index 0000000..8d60bd4 --- /dev/null +++ b/icons/exclamation-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation-octagon-fill.svg b/icons/exclamation-octagon-fill.svg new file mode 100644 index 0000000..e712c7b --- /dev/null +++ b/icons/exclamation-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation-octagon.svg b/icons/exclamation-octagon.svg new file mode 100644 index 0000000..e378440 --- /dev/null +++ b/icons/exclamation-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exclamation-square-fill.svg b/icons/exclamation-square-fill.svg new file mode 100644 index 0000000..7850fdb --- /dev/null +++ b/icons/exclamation-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation-square.svg b/icons/exclamation-square.svg new file mode 100644 index 0000000..ede05a2 --- /dev/null +++ b/icons/exclamation-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exclamation-triangle-fill.svg b/icons/exclamation-triangle-fill.svg new file mode 100644 index 0000000..b577967 --- /dev/null +++ b/icons/exclamation-triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclamation.svg b/icons/exclamation.svg new file mode 100644 index 0000000..44b6c6e --- /dev/null +++ b/icons/exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/exclude.svg b/icons/exclude.svg new file mode 100644 index 0000000..488e25b --- /dev/null +++ b/icons/exclude.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/explicit-fill.svg b/icons/explicit-fill.svg new file mode 100644 index 0000000..da66b73 --- /dev/null +++ b/icons/explicit-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/explicit.svg b/icons/explicit.svg new file mode 100644 index 0000000..dc77a97 --- /dev/null +++ b/icons/explicit.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/exposure.svg b/icons/exposure.svg new file mode 100644 index 0000000..44211f9 --- /dev/null +++ b/icons/exposure.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/eye-fill.svg b/icons/eye-fill.svg new file mode 100644 index 0000000..41a537f --- /dev/null +++ b/icons/eye-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/eye-slash-fill.svg b/icons/eye-slash-fill.svg new file mode 100644 index 0000000..7a1b069 --- /dev/null +++ b/icons/eye-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/eyedropper.svg b/icons/eyedropper.svg new file mode 100644 index 0000000..e151808 --- /dev/null +++ b/icons/eyedropper.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/eyeglasses.svg b/icons/eyeglasses.svg new file mode 100644 index 0000000..cfd2e86 --- /dev/null +++ b/icons/eyeglasses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/facebook.svg b/icons/facebook.svg new file mode 100644 index 0000000..0c62bfe --- /dev/null +++ b/icons/facebook.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fan.svg b/icons/fan.svg new file mode 100644 index 0000000..eebf25c --- /dev/null +++ b/icons/fan.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fast-forward-btn-fill.svg b/icons/fast-forward-btn-fill.svg new file mode 100644 index 0000000..29e272f --- /dev/null +++ b/icons/fast-forward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fast-forward-btn.svg b/icons/fast-forward-btn.svg new file mode 100644 index 0000000..0f5c88a --- /dev/null +++ b/icons/fast-forward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fast-forward-circle-fill.svg b/icons/fast-forward-circle-fill.svg new file mode 100644 index 0000000..ed127c2 --- /dev/null +++ b/icons/fast-forward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fast-forward-circle.svg b/icons/fast-forward-circle.svg new file mode 100644 index 0000000..1144ae2 --- /dev/null +++ b/icons/fast-forward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fast-forward-fill.svg b/icons/fast-forward-fill.svg new file mode 100644 index 0000000..79db4a7 --- /dev/null +++ b/icons/fast-forward-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fast-forward.svg b/icons/fast-forward.svg new file mode 100644 index 0000000..bacaf15 --- /dev/null +++ b/icons/fast-forward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/feather.svg b/icons/feather.svg new file mode 100644 index 0000000..606e750 --- /dev/null +++ b/icons/feather.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/feather2.svg b/icons/feather2.svg new file mode 100644 index 0000000..3df4a82 --- /dev/null +++ b/icons/feather2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-arrow-down-fill.svg b/icons/file-arrow-down-fill.svg new file mode 100644 index 0000000..634b3b7 --- /dev/null +++ b/icons/file-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-arrow-down.svg b/icons/file-arrow-down.svg new file mode 100644 index 0000000..fca01f6 --- /dev/null +++ b/icons/file-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-arrow-up-fill.svg b/icons/file-arrow-up-fill.svg new file mode 100644 index 0000000..3ccae5a --- /dev/null +++ b/icons/file-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-arrow-up.svg b/icons/file-arrow-up.svg new file mode 100644 index 0000000..3426ae1 --- /dev/null +++ b/icons/file-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-bar-graph-fill.svg b/icons/file-bar-graph-fill.svg new file mode 100644 index 0000000..61ea530 --- /dev/null +++ b/icons/file-bar-graph-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-bar-graph.svg b/icons/file-bar-graph.svg new file mode 100644 index 0000000..073d112 --- /dev/null +++ b/icons/file-bar-graph.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-binary-fill.svg b/icons/file-binary-fill.svg new file mode 100644 index 0000000..7b95ff4 --- /dev/null +++ b/icons/file-binary-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-binary.svg b/icons/file-binary.svg new file mode 100644 index 0000000..a5d4825 --- /dev/null +++ b/icons/file-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-break-fill.svg b/icons/file-break-fill.svg new file mode 100644 index 0000000..6a40d8a --- /dev/null +++ b/icons/file-break-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-break.svg b/icons/file-break.svg new file mode 100644 index 0000000..f65b897 --- /dev/null +++ b/icons/file-break.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-check-fill.svg b/icons/file-check-fill.svg new file mode 100644 index 0000000..c972d82 --- /dev/null +++ b/icons/file-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-check.svg b/icons/file-check.svg new file mode 100644 index 0000000..57a2e39 --- /dev/null +++ b/icons/file-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-code-fill.svg b/icons/file-code-fill.svg new file mode 100644 index 0000000..c90f6f3 --- /dev/null +++ b/icons/file-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-code.svg b/icons/file-code.svg new file mode 100644 index 0000000..e49ca8c --- /dev/null +++ b/icons/file-code.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-diff-fill.svg b/icons/file-diff-fill.svg new file mode 100644 index 0000000..54ea881 --- /dev/null +++ b/icons/file-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-diff.svg b/icons/file-diff.svg new file mode 100644 index 0000000..2cb7fe4 --- /dev/null +++ b/icons/file-diff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-arrow-down-fill.svg b/icons/file-earmark-arrow-down-fill.svg new file mode 100644 index 0000000..dd15273 --- /dev/null +++ b/icons/file-earmark-arrow-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-arrow-down.svg b/icons/file-earmark-arrow-down.svg new file mode 100644 index 0000000..906884e --- /dev/null +++ b/icons/file-earmark-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-arrow-up-fill.svg b/icons/file-earmark-arrow-up-fill.svg new file mode 100644 index 0000000..3d3119e --- /dev/null +++ b/icons/file-earmark-arrow-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-arrow-up.svg b/icons/file-earmark-arrow-up.svg new file mode 100644 index 0000000..73e6de2 --- /dev/null +++ b/icons/file-earmark-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-bar-graph-fill.svg b/icons/file-earmark-bar-graph-fill.svg new file mode 100644 index 0000000..9cba979 --- /dev/null +++ b/icons/file-earmark-bar-graph-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-bar-graph.svg b/icons/file-earmark-bar-graph.svg new file mode 100644 index 0000000..5bd274d --- /dev/null +++ b/icons/file-earmark-bar-graph.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-binary-fill.svg b/icons/file-earmark-binary-fill.svg new file mode 100644 index 0000000..813be71 --- /dev/null +++ b/icons/file-earmark-binary-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-binary.svg b/icons/file-earmark-binary.svg new file mode 100644 index 0000000..68c4fcc --- /dev/null +++ b/icons/file-earmark-binary.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-break-fill.svg b/icons/file-earmark-break-fill.svg new file mode 100644 index 0000000..e045834 --- /dev/null +++ b/icons/file-earmark-break-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-break.svg b/icons/file-earmark-break.svg new file mode 100644 index 0000000..45a38e9 --- /dev/null +++ b/icons/file-earmark-break.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-check-fill.svg b/icons/file-earmark-check-fill.svg new file mode 100644 index 0000000..daf36eb --- /dev/null +++ b/icons/file-earmark-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-check.svg b/icons/file-earmark-check.svg new file mode 100644 index 0000000..514caf3 --- /dev/null +++ b/icons/file-earmark-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-code-fill.svg b/icons/file-earmark-code-fill.svg new file mode 100644 index 0000000..689ad4e --- /dev/null +++ b/icons/file-earmark-code-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-code.svg b/icons/file-earmark-code.svg new file mode 100644 index 0000000..8751019 --- /dev/null +++ b/icons/file-earmark-code.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-diff-fill.svg b/icons/file-earmark-diff-fill.svg new file mode 100644 index 0000000..9aeb211 --- /dev/null +++ b/icons/file-earmark-diff-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-diff.svg b/icons/file-earmark-diff.svg new file mode 100644 index 0000000..14d6b7c --- /dev/null +++ b/icons/file-earmark-diff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-easel-fill.svg b/icons/file-earmark-easel-fill.svg new file mode 100644 index 0000000..82b21ac --- /dev/null +++ b/icons/file-earmark-easel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-easel.svg b/icons/file-earmark-easel.svg new file mode 100644 index 0000000..a76b14f --- /dev/null +++ b/icons/file-earmark-easel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-excel-fill.svg b/icons/file-earmark-excel-fill.svg new file mode 100644 index 0000000..5793725 --- /dev/null +++ b/icons/file-earmark-excel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-excel.svg b/icons/file-earmark-excel.svg new file mode 100644 index 0000000..81237c5 --- /dev/null +++ b/icons/file-earmark-excel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-fill.svg b/icons/file-earmark-fill.svg new file mode 100644 index 0000000..caf3737 --- /dev/null +++ b/icons/file-earmark-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-font-fill.svg b/icons/file-earmark-font-fill.svg new file mode 100644 index 0000000..1c29751 --- /dev/null +++ b/icons/file-earmark-font-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-font.svg b/icons/file-earmark-font.svg new file mode 100644 index 0000000..2ba19e1 --- /dev/null +++ b/icons/file-earmark-font.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-image-fill.svg b/icons/file-earmark-image-fill.svg new file mode 100644 index 0000000..02a8318 --- /dev/null +++ b/icons/file-earmark-image-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-image.svg b/icons/file-earmark-image.svg new file mode 100644 index 0000000..40a6b4a --- /dev/null +++ b/icons/file-earmark-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-lock-fill.svg b/icons/file-earmark-lock-fill.svg new file mode 100644 index 0000000..8836a82 --- /dev/null +++ b/icons/file-earmark-lock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-lock.svg b/icons/file-earmark-lock.svg new file mode 100644 index 0000000..fa1455b --- /dev/null +++ b/icons/file-earmark-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-lock2-fill.svg b/icons/file-earmark-lock2-fill.svg new file mode 100644 index 0000000..2be3fd6 --- /dev/null +++ b/icons/file-earmark-lock2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-lock2.svg b/icons/file-earmark-lock2.svg new file mode 100644 index 0000000..ce87e8e --- /dev/null +++ b/icons/file-earmark-lock2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-medical-fill.svg b/icons/file-earmark-medical-fill.svg new file mode 100644 index 0000000..b93cb85 --- /dev/null +++ b/icons/file-earmark-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-medical.svg b/icons/file-earmark-medical.svg new file mode 100644 index 0000000..56ca005 --- /dev/null +++ b/icons/file-earmark-medical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-minus-fill.svg b/icons/file-earmark-minus-fill.svg new file mode 100644 index 0000000..bee9808 --- /dev/null +++ b/icons/file-earmark-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-minus.svg b/icons/file-earmark-minus.svg new file mode 100644 index 0000000..d56a682 --- /dev/null +++ b/icons/file-earmark-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-music-fill.svg b/icons/file-earmark-music-fill.svg new file mode 100644 index 0000000..9658532 --- /dev/null +++ b/icons/file-earmark-music-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-music.svg b/icons/file-earmark-music.svg new file mode 100644 index 0000000..ab7e02e --- /dev/null +++ b/icons/file-earmark-music.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-pdf-fill.svg b/icons/file-earmark-pdf-fill.svg new file mode 100644 index 0000000..9f796cb --- /dev/null +++ b/icons/file-earmark-pdf-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-pdf.svg b/icons/file-earmark-pdf.svg new file mode 100644 index 0000000..839d6bc --- /dev/null +++ b/icons/file-earmark-pdf.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-person-fill.svg b/icons/file-earmark-person-fill.svg new file mode 100644 index 0000000..7504d21 --- /dev/null +++ b/icons/file-earmark-person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-person.svg b/icons/file-earmark-person.svg new file mode 100644 index 0000000..7397ceb --- /dev/null +++ b/icons/file-earmark-person.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-play-fill.svg b/icons/file-earmark-play-fill.svg new file mode 100644 index 0000000..3a6ad9b --- /dev/null +++ b/icons/file-earmark-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-play.svg b/icons/file-earmark-play.svg new file mode 100644 index 0000000..ac5df5c --- /dev/null +++ b/icons/file-earmark-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-plus-fill.svg b/icons/file-earmark-plus-fill.svg new file mode 100644 index 0000000..3139b31 --- /dev/null +++ b/icons/file-earmark-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-plus.svg b/icons/file-earmark-plus.svg new file mode 100644 index 0000000..d9f4c9b --- /dev/null +++ b/icons/file-earmark-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-post-fill.svg b/icons/file-earmark-post-fill.svg new file mode 100644 index 0000000..7934a44 --- /dev/null +++ b/icons/file-earmark-post-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-post.svg b/icons/file-earmark-post.svg new file mode 100644 index 0000000..cb1507c --- /dev/null +++ b/icons/file-earmark-post.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-ppt-fill.svg b/icons/file-earmark-ppt-fill.svg new file mode 100644 index 0000000..3b8efa9 --- /dev/null +++ b/icons/file-earmark-ppt-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-ppt.svg b/icons/file-earmark-ppt.svg new file mode 100644 index 0000000..9cefb5e --- /dev/null +++ b/icons/file-earmark-ppt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-richtext-fill.svg b/icons/file-earmark-richtext-fill.svg new file mode 100644 index 0000000..71f8e0b --- /dev/null +++ b/icons/file-earmark-richtext-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-richtext.svg b/icons/file-earmark-richtext.svg new file mode 100644 index 0000000..7a2081a --- /dev/null +++ b/icons/file-earmark-richtext.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-ruled-fill.svg b/icons/file-earmark-ruled-fill.svg new file mode 100644 index 0000000..e5e52aa --- /dev/null +++ b/icons/file-earmark-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-ruled.svg b/icons/file-earmark-ruled.svg new file mode 100644 index 0000000..3777fdd --- /dev/null +++ b/icons/file-earmark-ruled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-slides-fill.svg b/icons/file-earmark-slides-fill.svg new file mode 100644 index 0000000..92a0715 --- /dev/null +++ b/icons/file-earmark-slides-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-slides.svg b/icons/file-earmark-slides.svg new file mode 100644 index 0000000..dca4246 --- /dev/null +++ b/icons/file-earmark-slides.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-spreadsheet-fill.svg b/icons/file-earmark-spreadsheet-fill.svg new file mode 100644 index 0000000..57b9a9b --- /dev/null +++ b/icons/file-earmark-spreadsheet-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-spreadsheet.svg b/icons/file-earmark-spreadsheet.svg new file mode 100644 index 0000000..530400f --- /dev/null +++ b/icons/file-earmark-spreadsheet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-text-fill.svg b/icons/file-earmark-text-fill.svg new file mode 100644 index 0000000..f3e19fc --- /dev/null +++ b/icons/file-earmark-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-text.svg b/icons/file-earmark-text.svg new file mode 100644 index 0000000..e8c822a --- /dev/null +++ b/icons/file-earmark-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-word-fill.svg b/icons/file-earmark-word-fill.svg new file mode 100644 index 0000000..ce8feb5 --- /dev/null +++ b/icons/file-earmark-word-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-word.svg b/icons/file-earmark-word.svg new file mode 100644 index 0000000..084460d --- /dev/null +++ b/icons/file-earmark-word.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-x-fill.svg b/icons/file-earmark-x-fill.svg new file mode 100644 index 0000000..87440cd --- /dev/null +++ b/icons/file-earmark-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-earmark-x.svg b/icons/file-earmark-x.svg new file mode 100644 index 0000000..cd3e03a --- /dev/null +++ b/icons/file-earmark-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-zip-fill.svg b/icons/file-earmark-zip-fill.svg new file mode 100644 index 0000000..7260f7c --- /dev/null +++ b/icons/file-earmark-zip-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark-zip.svg b/icons/file-earmark-zip.svg new file mode 100644 index 0000000..0bd3bef --- /dev/null +++ b/icons/file-earmark-zip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-earmark.svg b/icons/file-earmark.svg new file mode 100644 index 0000000..6b3016f --- /dev/null +++ b/icons/file-earmark.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-easel-fill.svg b/icons/file-easel-fill.svg new file mode 100644 index 0000000..89bef30 --- /dev/null +++ b/icons/file-easel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-easel.svg b/icons/file-easel.svg new file mode 100644 index 0000000..b9484af --- /dev/null +++ b/icons/file-easel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-excel-fill.svg b/icons/file-excel-fill.svg new file mode 100644 index 0000000..cb64546 --- /dev/null +++ b/icons/file-excel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-excel.svg b/icons/file-excel.svg new file mode 100644 index 0000000..d88a5a5 --- /dev/null +++ b/icons/file-excel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-fill.svg b/icons/file-fill.svg new file mode 100644 index 0000000..edeeebe --- /dev/null +++ b/icons/file-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-font-fill.svg b/icons/file-font-fill.svg new file mode 100644 index 0000000..4405d2b --- /dev/null +++ b/icons/file-font-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-font.svg b/icons/file-font.svg new file mode 100644 index 0000000..e45a906 --- /dev/null +++ b/icons/file-font.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-image-fill.svg b/icons/file-image-fill.svg new file mode 100644 index 0000000..66a6b14 --- /dev/null +++ b/icons/file-image-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-image.svg b/icons/file-image.svg new file mode 100644 index 0000000..54af5f1 --- /dev/null +++ b/icons/file-image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-lock-fill.svg b/icons/file-lock-fill.svg new file mode 100644 index 0000000..e549c40 --- /dev/null +++ b/icons/file-lock-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-lock.svg b/icons/file-lock.svg new file mode 100644 index 0000000..a9d45c8 --- /dev/null +++ b/icons/file-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-lock2-fill.svg b/icons/file-lock2-fill.svg new file mode 100644 index 0000000..f02b999 --- /dev/null +++ b/icons/file-lock2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-lock2.svg b/icons/file-lock2.svg new file mode 100644 index 0000000..500453a --- /dev/null +++ b/icons/file-lock2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-medical-fill.svg b/icons/file-medical-fill.svg new file mode 100644 index 0000000..3e6b208 --- /dev/null +++ b/icons/file-medical-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-medical.svg b/icons/file-medical.svg new file mode 100644 index 0000000..d1a1147 --- /dev/null +++ b/icons/file-medical.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-minus-fill.svg b/icons/file-minus-fill.svg new file mode 100644 index 0000000..43a5558 --- /dev/null +++ b/icons/file-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-minus.svg b/icons/file-minus.svg new file mode 100644 index 0000000..97a81b8 --- /dev/null +++ b/icons/file-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-music-fill.svg b/icons/file-music-fill.svg new file mode 100644 index 0000000..55eb841 --- /dev/null +++ b/icons/file-music-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-music.svg b/icons/file-music.svg new file mode 100644 index 0000000..d9cebb8 --- /dev/null +++ b/icons/file-music.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-pdf-fill.svg b/icons/file-pdf-fill.svg new file mode 100644 index 0000000..8113eb8 --- /dev/null +++ b/icons/file-pdf-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-pdf.svg b/icons/file-pdf.svg new file mode 100644 index 0000000..5265112 --- /dev/null +++ b/icons/file-pdf.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-person-fill.svg b/icons/file-person-fill.svg new file mode 100644 index 0000000..b48e7b2 --- /dev/null +++ b/icons/file-person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-person.svg b/icons/file-person.svg new file mode 100644 index 0000000..c0a90bb --- /dev/null +++ b/icons/file-person.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-play-fill.svg b/icons/file-play-fill.svg new file mode 100644 index 0000000..58f570d --- /dev/null +++ b/icons/file-play-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-play.svg b/icons/file-play.svg new file mode 100644 index 0000000..60629ee --- /dev/null +++ b/icons/file-play.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-plus-fill.svg b/icons/file-plus-fill.svg new file mode 100644 index 0000000..bdc4878 --- /dev/null +++ b/icons/file-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-plus.svg b/icons/file-plus.svg new file mode 100644 index 0000000..b500d7a --- /dev/null +++ b/icons/file-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-post-fill.svg b/icons/file-post-fill.svg new file mode 100644 index 0000000..4ebb954 --- /dev/null +++ b/icons/file-post-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-post.svg b/icons/file-post.svg new file mode 100644 index 0000000..4b0dc1a --- /dev/null +++ b/icons/file-post.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-ppt-fill.svg b/icons/file-ppt-fill.svg new file mode 100644 index 0000000..9b84c05 --- /dev/null +++ b/icons/file-ppt-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-ppt.svg b/icons/file-ppt.svg new file mode 100644 index 0000000..9f6302e --- /dev/null +++ b/icons/file-ppt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-richtext-fill.svg b/icons/file-richtext-fill.svg new file mode 100644 index 0000000..8f4f90d --- /dev/null +++ b/icons/file-richtext-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-richtext.svg b/icons/file-richtext.svg new file mode 100644 index 0000000..277b00d --- /dev/null +++ b/icons/file-richtext.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-ruled-fill.svg b/icons/file-ruled-fill.svg new file mode 100644 index 0000000..c90b264 --- /dev/null +++ b/icons/file-ruled-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-ruled.svg b/icons/file-ruled.svg new file mode 100644 index 0000000..ebf2df2 --- /dev/null +++ b/icons/file-ruled.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-slides-fill.svg b/icons/file-slides-fill.svg new file mode 100644 index 0000000..fcba963 --- /dev/null +++ b/icons/file-slides-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-slides.svg b/icons/file-slides.svg new file mode 100644 index 0000000..0b5a871 --- /dev/null +++ b/icons/file-slides.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-spreadsheet-fill.svg b/icons/file-spreadsheet-fill.svg new file mode 100644 index 0000000..2ce6873 --- /dev/null +++ b/icons/file-spreadsheet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-spreadsheet.svg b/icons/file-spreadsheet.svg new file mode 100644 index 0000000..36ee79f --- /dev/null +++ b/icons/file-spreadsheet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-text-fill.svg b/icons/file-text-fill.svg new file mode 100644 index 0000000..5e25373 --- /dev/null +++ b/icons/file-text-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-text.svg b/icons/file-text.svg new file mode 100644 index 0000000..1027720 --- /dev/null +++ b/icons/file-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-word-fill.svg b/icons/file-word-fill.svg new file mode 100644 index 0000000..41a5ad4 --- /dev/null +++ b/icons/file-word-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-word.svg b/icons/file-word.svg new file mode 100644 index 0000000..1cb7ab8 --- /dev/null +++ b/icons/file-word.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-x-fill.svg b/icons/file-x-fill.svg new file mode 100644 index 0000000..4c5b5b3 --- /dev/null +++ b/icons/file-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/file-x.svg b/icons/file-x.svg new file mode 100644 index 0000000..fc27740 --- /dev/null +++ b/icons/file-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-zip-fill.svg b/icons/file-zip-fill.svg new file mode 100644 index 0000000..33f6c82 --- /dev/null +++ b/icons/file-zip-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file-zip.svg b/icons/file-zip.svg new file mode 100644 index 0000000..7860a4e --- /dev/null +++ b/icons/file-zip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/file.svg b/icons/file.svg new file mode 100644 index 0000000..6504fd4 --- /dev/null +++ b/icons/file.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/files-alt.svg b/icons/files-alt.svg new file mode 100644 index 0000000..a019ec0 --- /dev/null +++ b/icons/files-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/files.svg b/icons/files.svg new file mode 100644 index 0000000..e08eb2f --- /dev/null +++ b/icons/files.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-aac.svg b/icons/filetype-aac.svg new file mode 100644 index 0000000..a5e58d5 --- /dev/null +++ b/icons/filetype-aac.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-ai.svg b/icons/filetype-ai.svg new file mode 100644 index 0000000..5116a7d --- /dev/null +++ b/icons/filetype-ai.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-bmp.svg b/icons/filetype-bmp.svg new file mode 100644 index 0000000..41f8dde --- /dev/null +++ b/icons/filetype-bmp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-cs.svg b/icons/filetype-cs.svg new file mode 100644 index 0000000..2f9d98d --- /dev/null +++ b/icons/filetype-cs.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-css.svg b/icons/filetype-css.svg new file mode 100644 index 0000000..69e00c3 --- /dev/null +++ b/icons/filetype-css.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-csv.svg b/icons/filetype-csv.svg new file mode 100644 index 0000000..a800f15 --- /dev/null +++ b/icons/filetype-csv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-doc.svg b/icons/filetype-doc.svg new file mode 100644 index 0000000..035795f --- /dev/null +++ b/icons/filetype-doc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-docx.svg b/icons/filetype-docx.svg new file mode 100644 index 0000000..6186a5c --- /dev/null +++ b/icons/filetype-docx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-exe.svg b/icons/filetype-exe.svg new file mode 100644 index 0000000..eb53980 --- /dev/null +++ b/icons/filetype-exe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-gif.svg b/icons/filetype-gif.svg new file mode 100644 index 0000000..a9db28f --- /dev/null +++ b/icons/filetype-gif.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-heic.svg b/icons/filetype-heic.svg new file mode 100644 index 0000000..2927852 --- /dev/null +++ b/icons/filetype-heic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-html.svg b/icons/filetype-html.svg new file mode 100644 index 0000000..4f6a332 --- /dev/null +++ b/icons/filetype-html.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-java.svg b/icons/filetype-java.svg new file mode 100644 index 0000000..907504c --- /dev/null +++ b/icons/filetype-java.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-jpg.svg b/icons/filetype-jpg.svg new file mode 100644 index 0000000..17c9c51 --- /dev/null +++ b/icons/filetype-jpg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-js.svg b/icons/filetype-js.svg new file mode 100644 index 0000000..2b56f00 --- /dev/null +++ b/icons/filetype-js.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-json.svg b/icons/filetype-json.svg new file mode 100644 index 0000000..47582ba --- /dev/null +++ b/icons/filetype-json.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-jsx.svg b/icons/filetype-jsx.svg new file mode 100644 index 0000000..34e2401 --- /dev/null +++ b/icons/filetype-jsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-key.svg b/icons/filetype-key.svg new file mode 100644 index 0000000..53c9873 --- /dev/null +++ b/icons/filetype-key.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-m4p.svg b/icons/filetype-m4p.svg new file mode 100644 index 0000000..61856a2 --- /dev/null +++ b/icons/filetype-m4p.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-md.svg b/icons/filetype-md.svg new file mode 100644 index 0000000..cacd0ae --- /dev/null +++ b/icons/filetype-md.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-mdx.svg b/icons/filetype-mdx.svg new file mode 100644 index 0000000..154017e --- /dev/null +++ b/icons/filetype-mdx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-mov.svg b/icons/filetype-mov.svg new file mode 100644 index 0000000..ccaea6d --- /dev/null +++ b/icons/filetype-mov.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-mp3.svg b/icons/filetype-mp3.svg new file mode 100644 index 0000000..611cda8 --- /dev/null +++ b/icons/filetype-mp3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-mp4.svg b/icons/filetype-mp4.svg new file mode 100644 index 0000000..ea2d951 --- /dev/null +++ b/icons/filetype-mp4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-otf.svg b/icons/filetype-otf.svg new file mode 100644 index 0000000..ef991ff --- /dev/null +++ b/icons/filetype-otf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-pdf.svg b/icons/filetype-pdf.svg new file mode 100644 index 0000000..093affe --- /dev/null +++ b/icons/filetype-pdf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-php.svg b/icons/filetype-php.svg new file mode 100644 index 0000000..22da3d4 --- /dev/null +++ b/icons/filetype-php.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-png.svg b/icons/filetype-png.svg new file mode 100644 index 0000000..f123230 --- /dev/null +++ b/icons/filetype-png.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-ppt.svg b/icons/filetype-ppt.svg new file mode 100644 index 0000000..9c85271 --- /dev/null +++ b/icons/filetype-ppt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-pptx.svg b/icons/filetype-pptx.svg new file mode 100644 index 0000000..7ae9ade --- /dev/null +++ b/icons/filetype-pptx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-psd.svg b/icons/filetype-psd.svg new file mode 100644 index 0000000..3b66c80 --- /dev/null +++ b/icons/filetype-psd.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-py.svg b/icons/filetype-py.svg new file mode 100644 index 0000000..bf490ff --- /dev/null +++ b/icons/filetype-py.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-raw.svg b/icons/filetype-raw.svg new file mode 100644 index 0000000..6e3abdc --- /dev/null +++ b/icons/filetype-raw.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-rb.svg b/icons/filetype-rb.svg new file mode 100644 index 0000000..5b4b09f --- /dev/null +++ b/icons/filetype-rb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-sass.svg b/icons/filetype-sass.svg new file mode 100644 index 0000000..f377204 --- /dev/null +++ b/icons/filetype-sass.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-scss.svg b/icons/filetype-scss.svg new file mode 100644 index 0000000..b9ddfb8 --- /dev/null +++ b/icons/filetype-scss.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-sh.svg b/icons/filetype-sh.svg new file mode 100644 index 0000000..a99f829 --- /dev/null +++ b/icons/filetype-sh.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-sql.svg b/icons/filetype-sql.svg new file mode 100644 index 0000000..37ecdf7 --- /dev/null +++ b/icons/filetype-sql.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-svg.svg b/icons/filetype-svg.svg new file mode 100644 index 0000000..31eef0b --- /dev/null +++ b/icons/filetype-svg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-tiff.svg b/icons/filetype-tiff.svg new file mode 100644 index 0000000..df5f897 --- /dev/null +++ b/icons/filetype-tiff.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-tsx.svg b/icons/filetype-tsx.svg new file mode 100644 index 0000000..fd60cff --- /dev/null +++ b/icons/filetype-tsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-ttf.svg b/icons/filetype-ttf.svg new file mode 100644 index 0000000..4f66f1d --- /dev/null +++ b/icons/filetype-ttf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-txt.svg b/icons/filetype-txt.svg new file mode 100644 index 0000000..24a98ba --- /dev/null +++ b/icons/filetype-txt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-wav.svg b/icons/filetype-wav.svg new file mode 100644 index 0000000..539e73c --- /dev/null +++ b/icons/filetype-wav.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-woff.svg b/icons/filetype-woff.svg new file mode 100644 index 0000000..2db38ac --- /dev/null +++ b/icons/filetype-woff.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-xls.svg b/icons/filetype-xls.svg new file mode 100644 index 0000000..7c3669c --- /dev/null +++ b/icons/filetype-xls.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-xlsx.svg b/icons/filetype-xlsx.svg new file mode 100644 index 0000000..7392554 --- /dev/null +++ b/icons/filetype-xlsx.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-xml.svg b/icons/filetype-xml.svg new file mode 100644 index 0000000..80edbfd --- /dev/null +++ b/icons/filetype-xml.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filetype-yml.svg b/icons/filetype-yml.svg new file mode 100644 index 0000000..c0c6e79 --- /dev/null +++ b/icons/filetype-yml.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/film.svg b/icons/film.svg new file mode 100644 index 0000000..fa8ba5f --- /dev/null +++ b/icons/film.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filter-circle-fill.svg b/icons/filter-circle-fill.svg new file mode 100644 index 0000000..338c54f --- /dev/null +++ b/icons/filter-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filter-circle.svg b/icons/filter-circle.svg new file mode 100644 index 0000000..096eeaa --- /dev/null +++ b/icons/filter-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/filter-left.svg b/icons/filter-left.svg new file mode 100644 index 0000000..6ca2224 --- /dev/null +++ b/icons/filter-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filter-right.svg b/icons/filter-right.svg new file mode 100644 index 0000000..724f248 --- /dev/null +++ b/icons/filter-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filter-square-fill.svg b/icons/filter-square-fill.svg new file mode 100644 index 0000000..bcab13e --- /dev/null +++ b/icons/filter-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/filter-square.svg b/icons/filter-square.svg new file mode 100644 index 0000000..5fa1698 --- /dev/null +++ b/icons/filter-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/filter.svg b/icons/filter.svg new file mode 100644 index 0000000..fc1ae38 --- /dev/null +++ b/icons/filter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fingerprint.svg b/icons/fingerprint.svg new file mode 100644 index 0000000..5b9375f --- /dev/null +++ b/icons/fingerprint.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/icons/fire.svg b/icons/fire.svg new file mode 100644 index 0000000..889eaf1 --- /dev/null +++ b/icons/fire.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flag-fill.svg b/icons/flag-fill.svg new file mode 100644 index 0000000..1387cb2 --- /dev/null +++ b/icons/flag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flag.svg b/icons/flag.svg new file mode 100644 index 0000000..980008f --- /dev/null +++ b/icons/flag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flask-fill.svg b/icons/flask-fill.svg new file mode 100644 index 0000000..a907fb9 --- /dev/null +++ b/icons/flask-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flask-florence-fill.svg b/icons/flask-florence-fill.svg new file mode 100644 index 0000000..6d163c9 --- /dev/null +++ b/icons/flask-florence-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flask-florence.svg b/icons/flask-florence.svg new file mode 100644 index 0000000..f68452d --- /dev/null +++ b/icons/flask-florence.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flask.svg b/icons/flask.svg new file mode 100644 index 0000000..d310ba7 --- /dev/null +++ b/icons/flask.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/floppy-fill.svg b/icons/floppy-fill.svg new file mode 100644 index 0000000..273238f --- /dev/null +++ b/icons/floppy-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/floppy.svg b/icons/floppy.svg new file mode 100644 index 0000000..a43865f --- /dev/null +++ b/icons/floppy.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/floppy2-fill.svg b/icons/floppy2-fill.svg new file mode 100644 index 0000000..fa2800f --- /dev/null +++ b/icons/floppy2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/floppy2.svg b/icons/floppy2.svg new file mode 100644 index 0000000..08c2978 --- /dev/null +++ b/icons/floppy2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flower1.svg b/icons/flower1.svg new file mode 100644 index 0000000..4328ee3 --- /dev/null +++ b/icons/flower1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flower2.svg b/icons/flower2.svg new file mode 100644 index 0000000..c53a3cc --- /dev/null +++ b/icons/flower2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/flower3.svg b/icons/flower3.svg new file mode 100644 index 0000000..c7dbe5a --- /dev/null +++ b/icons/flower3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/folder-check.svg b/icons/folder-check.svg new file mode 100644 index 0000000..a0e0e6d --- /dev/null +++ b/icons/folder-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/folder-fill.svg b/icons/folder-fill.svg new file mode 100644 index 0000000..1fcf91e --- /dev/null +++ b/icons/folder-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/folder-minus.svg b/icons/folder-minus.svg new file mode 100644 index 0000000..54d3de7 --- /dev/null +++ b/icons/folder-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/folder-plus.svg b/icons/folder-plus.svg new file mode 100644 index 0000000..2cb0d18 --- /dev/null +++ b/icons/folder-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/folder-symlink-fill.svg b/icons/folder-symlink-fill.svg new file mode 100644 index 0000000..b82da98 --- /dev/null +++ b/icons/folder-symlink-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/folder-symlink.svg b/icons/folder-symlink.svg new file mode 100644 index 0000000..583fa1a --- /dev/null +++ b/icons/folder-symlink.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/folder-x.svg b/icons/folder-x.svg new file mode 100644 index 0000000..e0009bd --- /dev/null +++ b/icons/folder-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/folder.svg b/icons/folder.svg new file mode 100644 index 0000000..667f5a6 --- /dev/null +++ b/icons/folder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/folder2-open.svg b/icons/folder2-open.svg new file mode 100644 index 0000000..bc9e1a7 --- /dev/null +++ b/icons/folder2-open.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/folder2.svg b/icons/folder2.svg new file mode 100644 index 0000000..39f8911 --- /dev/null +++ b/icons/folder2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fonts.svg b/icons/fonts.svg new file mode 100644 index 0000000..7f7b4fa --- /dev/null +++ b/icons/fonts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fonts/bootstrap-icons.woff b/icons/fonts/bootstrap-icons.woff new file mode 100644 index 0000000..a4fa4f0 Binary files /dev/null and b/icons/fonts/bootstrap-icons.woff differ diff --git a/icons/fonts/bootstrap-icons.woff2 b/icons/fonts/bootstrap-icons.woff2 new file mode 100644 index 0000000..4d8c490 Binary files /dev/null and b/icons/fonts/bootstrap-icons.woff2 differ diff --git a/icons/fork-knife.svg b/icons/fork-knife.svg new file mode 100644 index 0000000..8ec2a06 --- /dev/null +++ b/icons/fork-knife.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/forward-fill.svg b/icons/forward-fill.svg new file mode 100644 index 0000000..6413d7d --- /dev/null +++ b/icons/forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/forward.svg b/icons/forward.svg new file mode 100644 index 0000000..20cc05d --- /dev/null +++ b/icons/forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/front.svg b/icons/front.svg new file mode 100644 index 0000000..c64f3aa --- /dev/null +++ b/icons/front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fuel-pump-diesel-fill.svg b/icons/fuel-pump-diesel-fill.svg new file mode 100644 index 0000000..c3038ed --- /dev/null +++ b/icons/fuel-pump-diesel-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fuel-pump-diesel.svg b/icons/fuel-pump-diesel.svg new file mode 100644 index 0000000..3ea136e --- /dev/null +++ b/icons/fuel-pump-diesel.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fuel-pump-fill.svg b/icons/fuel-pump-fill.svg new file mode 100644 index 0000000..3dcb7a2 --- /dev/null +++ b/icons/fuel-pump-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fuel-pump.svg b/icons/fuel-pump.svg new file mode 100644 index 0000000..eb98a97 --- /dev/null +++ b/icons/fuel-pump.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/fullscreen-exit.svg b/icons/fullscreen-exit.svg new file mode 100644 index 0000000..3fb6655 --- /dev/null +++ b/icons/fullscreen-exit.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/fullscreen.svg b/icons/fullscreen.svg new file mode 100644 index 0000000..f1701ee --- /dev/null +++ b/icons/fullscreen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/funnel-fill.svg b/icons/funnel-fill.svg new file mode 100644 index 0000000..440cd28 --- /dev/null +++ b/icons/funnel-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/funnel.svg b/icons/funnel.svg new file mode 100644 index 0000000..f8906a5 --- /dev/null +++ b/icons/funnel.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gear-fill.svg b/icons/gear-fill.svg index ff130c6..a0e88a0 100644 --- a/icons/gear-fill.svg +++ b/icons/gear-fill.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/icons/gear-wide-connected.svg b/icons/gear-wide-connected.svg new file mode 100644 index 0000000..88e6ff7 --- /dev/null +++ b/icons/gear-wide-connected.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gear-wide.svg b/icons/gear-wide.svg new file mode 100644 index 0000000..f962f34 --- /dev/null +++ b/icons/gear-wide.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gear.svg b/icons/gear.svg new file mode 100644 index 0000000..6cd0bc8 --- /dev/null +++ b/icons/gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/gem.svg b/icons/gem.svg new file mode 100644 index 0000000..30e1599 --- /dev/null +++ b/icons/gem.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gender-ambiguous.svg b/icons/gender-ambiguous.svg new file mode 100644 index 0000000..f6737d6 --- /dev/null +++ b/icons/gender-ambiguous.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gender-female.svg b/icons/gender-female.svg new file mode 100644 index 0000000..d152bdd --- /dev/null +++ b/icons/gender-female.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gender-male.svg b/icons/gender-male.svg new file mode 100644 index 0000000..838ad00 --- /dev/null +++ b/icons/gender-male.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gender-neuter.svg b/icons/gender-neuter.svg new file mode 100644 index 0000000..5d175ac --- /dev/null +++ b/icons/gender-neuter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gender-trans.svg b/icons/gender-trans.svg new file mode 100644 index 0000000..6d2369b --- /dev/null +++ b/icons/gender-trans.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/geo-alt-fill.svg b/icons/geo-alt-fill.svg new file mode 100644 index 0000000..ba95e33 --- /dev/null +++ b/icons/geo-alt-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/geo-alt.svg b/icons/geo-alt.svg new file mode 100644 index 0000000..046251c --- /dev/null +++ b/icons/geo-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/geo-fill.svg b/icons/geo-fill.svg new file mode 100644 index 0000000..64faefe --- /dev/null +++ b/icons/geo-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/geo.svg b/icons/geo.svg new file mode 100644 index 0000000..178caae --- /dev/null +++ b/icons/geo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gift-fill.svg b/icons/gift-fill.svg new file mode 100644 index 0000000..3d83112 --- /dev/null +++ b/icons/gift-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gift.svg b/icons/gift.svg new file mode 100644 index 0000000..ceec17c --- /dev/null +++ b/icons/gift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/git.svg b/icons/git.svg new file mode 100644 index 0000000..abf5db3 --- /dev/null +++ b/icons/git.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/github.svg b/icons/github.svg new file mode 100644 index 0000000..b3e91c8 --- /dev/null +++ b/icons/github.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gitlab.svg b/icons/gitlab.svg new file mode 100644 index 0000000..51d36d5 --- /dev/null +++ b/icons/gitlab.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-americas-fill.svg b/icons/globe-americas-fill.svg new file mode 100644 index 0000000..df4740f --- /dev/null +++ b/icons/globe-americas-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-americas.svg b/icons/globe-americas.svg new file mode 100644 index 0000000..4acda64 --- /dev/null +++ b/icons/globe-americas.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-asia-australia-fill.svg b/icons/globe-asia-australia-fill.svg new file mode 100644 index 0000000..6341199 --- /dev/null +++ b/icons/globe-asia-australia-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-asia-australia.svg b/icons/globe-asia-australia.svg new file mode 100644 index 0000000..e9cd1e4 --- /dev/null +++ b/icons/globe-asia-australia.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/globe-central-south-asia-fill.svg b/icons/globe-central-south-asia-fill.svg new file mode 100644 index 0000000..7956ccd --- /dev/null +++ b/icons/globe-central-south-asia-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-central-south-asia.svg b/icons/globe-central-south-asia.svg new file mode 100644 index 0000000..1f70d7f --- /dev/null +++ b/icons/globe-central-south-asia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-europe-africa-fill.svg b/icons/globe-europe-africa-fill.svg new file mode 100644 index 0000000..621bc56 --- /dev/null +++ b/icons/globe-europe-africa-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe-europe-africa.svg b/icons/globe-europe-africa.svg new file mode 100644 index 0000000..4e5a5e1 --- /dev/null +++ b/icons/globe-europe-africa.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe.svg b/icons/globe.svg new file mode 100644 index 0000000..4fdbb1f --- /dev/null +++ b/icons/globe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/globe2.svg b/icons/globe2.svg new file mode 100644 index 0000000..e2b0788 --- /dev/null +++ b/icons/globe2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/google-play.svg b/icons/google-play.svg new file mode 100644 index 0000000..10c6649 --- /dev/null +++ b/icons/google-play.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/google.svg b/icons/google.svg new file mode 100644 index 0000000..be86f6e --- /dev/null +++ b/icons/google.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/gpu-card.svg b/icons/gpu-card.svg new file mode 100644 index 0000000..4166305 --- /dev/null +++ b/icons/gpu-card.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/graph-down-arrow.svg b/icons/graph-down-arrow.svg new file mode 100644 index 0000000..3fee399 --- /dev/null +++ b/icons/graph-down-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/graph-down.svg b/icons/graph-down.svg new file mode 100644 index 0000000..a78d2f1 --- /dev/null +++ b/icons/graph-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/graph-up-arrow.svg b/icons/graph-up-arrow.svg new file mode 100644 index 0000000..90980fd --- /dev/null +++ b/icons/graph-up-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/graph-up.svg b/icons/graph-up.svg new file mode 100644 index 0000000..6c6203d --- /dev/null +++ b/icons/graph-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-1x2-fill.svg b/icons/grid-1x2-fill.svg new file mode 100644 index 0000000..5424db9 --- /dev/null +++ b/icons/grid-1x2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-1x2.svg b/icons/grid-1x2.svg new file mode 100644 index 0000000..14b3381 --- /dev/null +++ b/icons/grid-1x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x2-gap-fill.svg b/icons/grid-3x2-gap-fill.svg new file mode 100644 index 0000000..6b4ccab --- /dev/null +++ b/icons/grid-3x2-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x2-gap.svg b/icons/grid-3x2-gap.svg new file mode 100644 index 0000000..705ea84 --- /dev/null +++ b/icons/grid-3x2-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x2.svg b/icons/grid-3x2.svg new file mode 100644 index 0000000..7191c9f --- /dev/null +++ b/icons/grid-3x2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x3-gap-fill.svg b/icons/grid-3x3-gap-fill.svg new file mode 100644 index 0000000..1af175d --- /dev/null +++ b/icons/grid-3x3-gap-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x3-gap.svg b/icons/grid-3x3-gap.svg new file mode 100644 index 0000000..4c010dd --- /dev/null +++ b/icons/grid-3x3-gap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-3x3.svg b/icons/grid-3x3.svg new file mode 100644 index 0000000..67d1ed5 --- /dev/null +++ b/icons/grid-3x3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid-fill.svg b/icons/grid-fill.svg new file mode 100644 index 0000000..2ae61ef --- /dev/null +++ b/icons/grid-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grid.svg b/icons/grid.svg new file mode 100644 index 0000000..0174fbf --- /dev/null +++ b/icons/grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grip-horizontal.svg b/icons/grip-horizontal.svg new file mode 100644 index 0000000..faca851 --- /dev/null +++ b/icons/grip-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/grip-vertical.svg b/icons/grip-vertical.svg new file mode 100644 index 0000000..b84346f --- /dev/null +++ b/icons/grip-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/h-circle-fill.svg b/icons/h-circle-fill.svg new file mode 100644 index 0000000..6b6760a --- /dev/null +++ b/icons/h-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/h-circle.svg b/icons/h-circle.svg new file mode 100644 index 0000000..93803be --- /dev/null +++ b/icons/h-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/h-square-fill.svg b/icons/h-square-fill.svg new file mode 100644 index 0000000..071904a --- /dev/null +++ b/icons/h-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/h-square.svg b/icons/h-square.svg new file mode 100644 index 0000000..19933fd --- /dev/null +++ b/icons/h-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/hammer.svg b/icons/hammer.svg new file mode 100644 index 0000000..d1f5ecf --- /dev/null +++ b/icons/hammer.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-index-fill.svg b/icons/hand-index-fill.svg new file mode 100644 index 0000000..234e3cf --- /dev/null +++ b/icons/hand-index-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-index-thumb-fill.svg b/icons/hand-index-thumb-fill.svg new file mode 100644 index 0000000..cd37f39 --- /dev/null +++ b/icons/hand-index-thumb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-index-thumb.svg b/icons/hand-index-thumb.svg new file mode 100644 index 0000000..b96dea5 --- /dev/null +++ b/icons/hand-index-thumb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-index.svg b/icons/hand-index.svg new file mode 100644 index 0000000..3532e65 --- /dev/null +++ b/icons/hand-index.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-thumbs-down-fill.svg b/icons/hand-thumbs-down-fill.svg new file mode 100644 index 0000000..156f8f1 --- /dev/null +++ b/icons/hand-thumbs-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-thumbs-down.svg b/icons/hand-thumbs-down.svg new file mode 100644 index 0000000..50bb0af --- /dev/null +++ b/icons/hand-thumbs-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-thumbs-up-fill.svg b/icons/hand-thumbs-up-fill.svg new file mode 100644 index 0000000..da08e56 --- /dev/null +++ b/icons/hand-thumbs-up-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hand-thumbs-up.svg b/icons/hand-thumbs-up.svg new file mode 100644 index 0000000..2f1e3bf --- /dev/null +++ b/icons/hand-thumbs-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/handbag-fill.svg b/icons/handbag-fill.svg new file mode 100644 index 0000000..caf651f --- /dev/null +++ b/icons/handbag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/handbag.svg b/icons/handbag.svg new file mode 100644 index 0000000..be7699a --- /dev/null +++ b/icons/handbag.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hash.svg b/icons/hash.svg new file mode 100644 index 0000000..0388f21 --- /dev/null +++ b/icons/hash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdd-fill.svg b/icons/hdd-fill.svg new file mode 100644 index 0000000..682f2bc --- /dev/null +++ b/icons/hdd-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdd-network-fill.svg b/icons/hdd-network-fill.svg new file mode 100644 index 0000000..8adf648 --- /dev/null +++ b/icons/hdd-network-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdd-network.svg b/icons/hdd-network.svg new file mode 100644 index 0000000..690bc0f --- /dev/null +++ b/icons/hdd-network.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/hdd-rack-fill.svg b/icons/hdd-rack-fill.svg new file mode 100644 index 0000000..0696694 --- /dev/null +++ b/icons/hdd-rack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdd-rack.svg b/icons/hdd-rack.svg new file mode 100644 index 0000000..c98d8e2 --- /dev/null +++ b/icons/hdd-rack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/hdd-stack-fill.svg b/icons/hdd-stack-fill.svg new file mode 100644 index 0000000..4d67e5e --- /dev/null +++ b/icons/hdd-stack-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdd-stack.svg b/icons/hdd-stack.svg new file mode 100644 index 0000000..3b4fbab --- /dev/null +++ b/icons/hdd-stack.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/hdd.svg b/icons/hdd.svg new file mode 100644 index 0000000..596dc38 --- /dev/null +++ b/icons/hdd.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/hdmi-fill.svg b/icons/hdmi-fill.svg new file mode 100644 index 0000000..1929b1b --- /dev/null +++ b/icons/hdmi-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hdmi.svg b/icons/hdmi.svg new file mode 100644 index 0000000..2427a9c --- /dev/null +++ b/icons/hdmi.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/headphones.svg b/icons/headphones.svg new file mode 100644 index 0000000..1696ead --- /dev/null +++ b/icons/headphones.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/headset-vr.svg b/icons/headset-vr.svg new file mode 100644 index 0000000..ca8e730 --- /dev/null +++ b/icons/headset-vr.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/headset.svg b/icons/headset.svg new file mode 100644 index 0000000..82e2634 --- /dev/null +++ b/icons/headset.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heart-arrow.svg b/icons/heart-arrow.svg new file mode 100644 index 0000000..1bc2b95 --- /dev/null +++ b/icons/heart-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heart-fill.svg b/icons/heart-fill.svg new file mode 100644 index 0000000..e2eb980 --- /dev/null +++ b/icons/heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heart-half.svg b/icons/heart-half.svg new file mode 100644 index 0000000..09517d4 --- /dev/null +++ b/icons/heart-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heart-pulse-fill.svg b/icons/heart-pulse-fill.svg new file mode 100644 index 0000000..75a00f3 --- /dev/null +++ b/icons/heart-pulse-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/heart-pulse.svg b/icons/heart-pulse.svg new file mode 100644 index 0000000..77e966a --- /dev/null +++ b/icons/heart-pulse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/heart.svg b/icons/heart.svg new file mode 100644 index 0000000..f0fdd80 --- /dev/null +++ b/icons/heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heartbreak-fill.svg b/icons/heartbreak-fill.svg new file mode 100644 index 0000000..1422809 --- /dev/null +++ b/icons/heartbreak-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heartbreak.svg b/icons/heartbreak.svg new file mode 100644 index 0000000..7b654ca --- /dev/null +++ b/icons/heartbreak.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hearts.svg b/icons/hearts.svg new file mode 100644 index 0000000..2bb9b77 --- /dev/null +++ b/icons/hearts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heptagon-fill.svg b/icons/heptagon-fill.svg new file mode 100644 index 0000000..863928d --- /dev/null +++ b/icons/heptagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heptagon-half.svg b/icons/heptagon-half.svg new file mode 100644 index 0000000..59f0816 --- /dev/null +++ b/icons/heptagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/heptagon.svg b/icons/heptagon.svg new file mode 100644 index 0000000..bd97be8 --- /dev/null +++ b/icons/heptagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hexagon-fill.svg b/icons/hexagon-fill.svg new file mode 100644 index 0000000..0b217f8 --- /dev/null +++ b/icons/hexagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hexagon-half.svg b/icons/hexagon-half.svg new file mode 100644 index 0000000..c61e536 --- /dev/null +++ b/icons/hexagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hexagon.svg b/icons/hexagon.svg new file mode 100644 index 0000000..febd092 --- /dev/null +++ b/icons/hexagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/highlighter.svg b/icons/highlighter.svg new file mode 100644 index 0000000..f73c070 --- /dev/null +++ b/icons/highlighter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/highlights.svg b/icons/highlights.svg new file mode 100644 index 0000000..ae39ba9 --- /dev/null +++ b/icons/highlights.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hospital-fill.svg b/icons/hospital-fill.svg new file mode 100644 index 0000000..dc5a398 --- /dev/null +++ b/icons/hospital-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hospital.svg b/icons/hospital.svg new file mode 100644 index 0000000..c03e7bd --- /dev/null +++ b/icons/hospital.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/hourglass-bottom.svg b/icons/hourglass-bottom.svg new file mode 100644 index 0000000..43bcc94 --- /dev/null +++ b/icons/hourglass-bottom.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hourglass-split.svg b/icons/hourglass-split.svg new file mode 100644 index 0000000..3f2bf1a --- /dev/null +++ b/icons/hourglass-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hourglass-top.svg b/icons/hourglass-top.svg new file mode 100644 index 0000000..744689e --- /dev/null +++ b/icons/hourglass-top.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hourglass.svg b/icons/hourglass.svg new file mode 100644 index 0000000..391344a --- /dev/null +++ b/icons/hourglass.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/house-add-fill.svg b/icons/house-add-fill.svg new file mode 100644 index 0000000..791e1c5 --- /dev/null +++ b/icons/house-add-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-add.svg b/icons/house-add.svg new file mode 100644 index 0000000..32e9933 --- /dev/null +++ b/icons/house-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-check-fill.svg b/icons/house-check-fill.svg new file mode 100644 index 0000000..b55c22c --- /dev/null +++ b/icons/house-check-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-check.svg b/icons/house-check.svg new file mode 100644 index 0000000..89cb7b1 --- /dev/null +++ b/icons/house-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-dash-fill.svg b/icons/house-dash-fill.svg new file mode 100644 index 0000000..23e6239 --- /dev/null +++ b/icons/house-dash-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-dash.svg b/icons/house-dash.svg new file mode 100644 index 0000000..a9f43a5 --- /dev/null +++ b/icons/house-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-door-fill.svg b/icons/house-door-fill.svg new file mode 100644 index 0000000..6bf50ca --- /dev/null +++ b/icons/house-door-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/house-door.svg b/icons/house-door.svg new file mode 100644 index 0000000..1805cb1 --- /dev/null +++ b/icons/house-door.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/house-down-fill.svg b/icons/house-down-fill.svg new file mode 100644 index 0000000..c442663 --- /dev/null +++ b/icons/house-down-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-down.svg b/icons/house-down.svg new file mode 100644 index 0000000..1434079 --- /dev/null +++ b/icons/house-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-exclamation-fill.svg b/icons/house-exclamation-fill.svg new file mode 100644 index 0000000..fabbef4 --- /dev/null +++ b/icons/house-exclamation-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-exclamation.svg b/icons/house-exclamation.svg new file mode 100644 index 0000000..fe62463 --- /dev/null +++ b/icons/house-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-fill.svg b/icons/house-fill.svg new file mode 100644 index 0000000..7860074 --- /dev/null +++ b/icons/house-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-gear-fill.svg b/icons/house-gear-fill.svg new file mode 100644 index 0000000..6d713d2 --- /dev/null +++ b/icons/house-gear-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-gear.svg b/icons/house-gear.svg new file mode 100644 index 0000000..4816aba --- /dev/null +++ b/icons/house-gear.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-heart-fill.svg b/icons/house-heart-fill.svg new file mode 100644 index 0000000..a9a5952 --- /dev/null +++ b/icons/house-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-heart.svg b/icons/house-heart.svg new file mode 100644 index 0000000..b71f191 --- /dev/null +++ b/icons/house-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-lock-fill.svg b/icons/house-lock-fill.svg new file mode 100644 index 0000000..9a52b5b --- /dev/null +++ b/icons/house-lock-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-lock.svg b/icons/house-lock.svg new file mode 100644 index 0000000..b85f053 --- /dev/null +++ b/icons/house-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-slash-fill.svg b/icons/house-slash-fill.svg new file mode 100644 index 0000000..1978aee --- /dev/null +++ b/icons/house-slash-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-slash.svg b/icons/house-slash.svg new file mode 100644 index 0000000..81f51b4 --- /dev/null +++ b/icons/house-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-up-fill.svg b/icons/house-up-fill.svg new file mode 100644 index 0000000..4583df2 --- /dev/null +++ b/icons/house-up-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-up.svg b/icons/house-up.svg new file mode 100644 index 0000000..a6dc1f0 --- /dev/null +++ b/icons/house-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house-x-fill.svg b/icons/house-x-fill.svg new file mode 100644 index 0000000..843fe3c --- /dev/null +++ b/icons/house-x-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/house-x.svg b/icons/house-x.svg new file mode 100644 index 0000000..b131fd7 --- /dev/null +++ b/icons/house-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/house.svg b/icons/house.svg new file mode 100644 index 0000000..0441f47 --- /dev/null +++ b/icons/house.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/houses-fill.svg b/icons/houses-fill.svg new file mode 100644 index 0000000..180daab --- /dev/null +++ b/icons/houses-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/houses.svg b/icons/houses.svg new file mode 100644 index 0000000..55072a6 --- /dev/null +++ b/icons/houses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hr.svg b/icons/hr.svg new file mode 100644 index 0000000..449a959 --- /dev/null +++ b/icons/hr.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hurricane.svg b/icons/hurricane.svg new file mode 100644 index 0000000..3fb068e --- /dev/null +++ b/icons/hurricane.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/hypnotize.svg b/icons/hypnotize.svg new file mode 100644 index 0000000..ac4857a --- /dev/null +++ b/icons/hypnotize.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/image-alt.svg b/icons/image-alt.svg new file mode 100644 index 0000000..d0d3360 --- /dev/null +++ b/icons/image-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/image-fill.svg b/icons/image-fill.svg new file mode 100644 index 0000000..c7f206d --- /dev/null +++ b/icons/image-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/image.svg b/icons/image.svg new file mode 100644 index 0000000..b72aa82 --- /dev/null +++ b/icons/image.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/images.svg b/icons/images.svg new file mode 100644 index 0000000..096a178 --- /dev/null +++ b/icons/images.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/inbox-fill.svg b/icons/inbox-fill.svg new file mode 100644 index 0000000..e26d5e0 --- /dev/null +++ b/icons/inbox-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/inbox.svg b/icons/inbox.svg new file mode 100644 index 0000000..ac018f2 --- /dev/null +++ b/icons/inbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/inboxes-fill.svg b/icons/inboxes-fill.svg new file mode 100644 index 0000000..621e6fa --- /dev/null +++ b/icons/inboxes-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/inboxes.svg b/icons/inboxes.svg new file mode 100644 index 0000000..2a5ed7b --- /dev/null +++ b/icons/inboxes.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/incognito.svg b/icons/incognito.svg new file mode 100644 index 0000000..b2ebb92 --- /dev/null +++ b/icons/incognito.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/indent.svg b/icons/indent.svg new file mode 100644 index 0000000..735978a --- /dev/null +++ b/icons/indent.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/infinity.svg b/icons/infinity.svg new file mode 100644 index 0000000..897c5c4 --- /dev/null +++ b/icons/infinity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/info-circle-fill.svg b/icons/info-circle-fill.svg new file mode 100644 index 0000000..f567941 --- /dev/null +++ b/icons/info-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/info-lg.svg b/icons/info-lg.svg new file mode 100644 index 0000000..c42d7cd --- /dev/null +++ b/icons/info-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/info-square-fill.svg b/icons/info-square-fill.svg new file mode 100644 index 0000000..fe74563 --- /dev/null +++ b/icons/info-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/info-square.svg b/icons/info-square.svg new file mode 100644 index 0000000..50650fb --- /dev/null +++ b/icons/info-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/info.svg b/icons/info.svg index b79acec..40bc6de 100644 --- a/icons/info.svg +++ b/icons/info.svg @@ -1,4 +1,3 @@ - - + - + \ No newline at end of file diff --git a/icons/input-cursor-text.svg b/icons/input-cursor-text.svg new file mode 100644 index 0000000..408da03 --- /dev/null +++ b/icons/input-cursor-text.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/input-cursor.svg b/icons/input-cursor.svg new file mode 100644 index 0000000..2aae276 --- /dev/null +++ b/icons/input-cursor.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/instagram.svg b/icons/instagram.svg new file mode 100644 index 0000000..3e85286 --- /dev/null +++ b/icons/instagram.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/intersect.svg b/icons/intersect.svg new file mode 100644 index 0000000..3a5568c --- /dev/null +++ b/icons/intersect.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/javascript.svg b/icons/javascript.svg new file mode 100644 index 0000000..ea1a3e5 --- /dev/null +++ b/icons/javascript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/journal-album.svg b/icons/journal-album.svg new file mode 100644 index 0000000..34fd21c --- /dev/null +++ b/icons/journal-album.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-arrow-down.svg b/icons/journal-arrow-down.svg new file mode 100644 index 0000000..aed79bd --- /dev/null +++ b/icons/journal-arrow-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-arrow-up.svg b/icons/journal-arrow-up.svg new file mode 100644 index 0000000..5276fe5 --- /dev/null +++ b/icons/journal-arrow-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-bookmark-fill.svg b/icons/journal-bookmark-fill.svg new file mode 100644 index 0000000..d4eae57 --- /dev/null +++ b/icons/journal-bookmark-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-bookmark.svg b/icons/journal-bookmark.svg new file mode 100644 index 0000000..db4129f --- /dev/null +++ b/icons/journal-bookmark.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-check.svg b/icons/journal-check.svg new file mode 100644 index 0000000..f766334 --- /dev/null +++ b/icons/journal-check.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-code.svg b/icons/journal-code.svg new file mode 100644 index 0000000..97704cb --- /dev/null +++ b/icons/journal-code.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-medical.svg b/icons/journal-medical.svg new file mode 100644 index 0000000..90579a7 --- /dev/null +++ b/icons/journal-medical.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-minus.svg b/icons/journal-minus.svg new file mode 100644 index 0000000..ea541e1 --- /dev/null +++ b/icons/journal-minus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-plus.svg b/icons/journal-plus.svg new file mode 100644 index 0000000..0710e3f --- /dev/null +++ b/icons/journal-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-richtext.svg b/icons/journal-richtext.svg new file mode 100644 index 0000000..d344913 --- /dev/null +++ b/icons/journal-richtext.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-text.svg b/icons/journal-text.svg new file mode 100644 index 0000000..44e8bc0 --- /dev/null +++ b/icons/journal-text.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal-x.svg b/icons/journal-x.svg new file mode 100644 index 0000000..9ede12c --- /dev/null +++ b/icons/journal-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/journal.svg b/icons/journal.svg new file mode 100644 index 0000000..3516aa0 --- /dev/null +++ b/icons/journal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/journals.svg b/icons/journals.svg new file mode 100644 index 0000000..a3d2b42 --- /dev/null +++ b/icons/journals.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/joystick.svg b/icons/joystick.svg new file mode 100644 index 0000000..bea3887 --- /dev/null +++ b/icons/joystick.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/justify-left.svg b/icons/justify-left.svg new file mode 100644 index 0000000..58572b0 --- /dev/null +++ b/icons/justify-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/justify-right.svg b/icons/justify-right.svg new file mode 100644 index 0000000..3183a64 --- /dev/null +++ b/icons/justify-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/justify.svg b/icons/justify.svg new file mode 100644 index 0000000..7513201 --- /dev/null +++ b/icons/justify.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/kanban-fill.svg b/icons/kanban-fill.svg new file mode 100644 index 0000000..d474678 --- /dev/null +++ b/icons/kanban-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/kanban.svg b/icons/kanban.svg new file mode 100644 index 0000000..2b36288 --- /dev/null +++ b/icons/kanban.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/key-fill.svg b/icons/key-fill.svg new file mode 100644 index 0000000..c75ff76 --- /dev/null +++ b/icons/key-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/key.svg b/icons/key.svg new file mode 100644 index 0000000..1f8f002 --- /dev/null +++ b/icons/key.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/keyboard-fill.svg b/icons/keyboard-fill.svg new file mode 100644 index 0000000..c144970 --- /dev/null +++ b/icons/keyboard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/keyboard.svg b/icons/keyboard.svg new file mode 100644 index 0000000..970b5c2 --- /dev/null +++ b/icons/keyboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ladder.svg b/icons/ladder.svg new file mode 100644 index 0000000..d2d6d24 --- /dev/null +++ b/icons/ladder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lamp-fill.svg b/icons/lamp-fill.svg new file mode 100644 index 0000000..1703462 --- /dev/null +++ b/icons/lamp-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/lamp.svg b/icons/lamp.svg new file mode 100644 index 0000000..01e4a11 --- /dev/null +++ b/icons/lamp.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/laptop-fill.svg b/icons/laptop-fill.svg new file mode 100644 index 0000000..b2cbcd2 --- /dev/null +++ b/icons/laptop-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/laptop.svg b/icons/laptop.svg new file mode 100644 index 0000000..81f02d4 --- /dev/null +++ b/icons/laptop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layer-backward.svg b/icons/layer-backward.svg new file mode 100644 index 0000000..15604af --- /dev/null +++ b/icons/layer-backward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layer-forward.svg b/icons/layer-forward.svg new file mode 100644 index 0000000..9721632 --- /dev/null +++ b/icons/layer-forward.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layers-fill.svg b/icons/layers-fill.svg new file mode 100644 index 0000000..ad6bdbc --- /dev/null +++ b/icons/layers-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layers-half.svg b/icons/layers-half.svg new file mode 100644 index 0000000..6e6a5d9 --- /dev/null +++ b/icons/layers-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layers.svg b/icons/layers.svg new file mode 100644 index 0000000..aaeb5d2 --- /dev/null +++ b/icons/layers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layout-sidebar-inset-reverse.svg b/icons/layout-sidebar-inset-reverse.svg new file mode 100644 index 0000000..7d936c8 --- /dev/null +++ b/icons/layout-sidebar-inset-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-sidebar-inset.svg b/icons/layout-sidebar-inset.svg new file mode 100644 index 0000000..029169c --- /dev/null +++ b/icons/layout-sidebar-inset.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-sidebar-reverse.svg b/icons/layout-sidebar-reverse.svg new file mode 100644 index 0000000..0f891d4 --- /dev/null +++ b/icons/layout-sidebar-reverse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layout-sidebar.svg b/icons/layout-sidebar.svg new file mode 100644 index 0000000..09dcd0e --- /dev/null +++ b/icons/layout-sidebar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layout-split.svg b/icons/layout-split.svg new file mode 100644 index 0000000..4e4a118 --- /dev/null +++ b/icons/layout-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layout-text-sidebar-reverse.svg b/icons/layout-text-sidebar-reverse.svg new file mode 100644 index 0000000..4cfa0b5 --- /dev/null +++ b/icons/layout-text-sidebar-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-text-sidebar.svg b/icons/layout-text-sidebar.svg new file mode 100644 index 0000000..a8452e6 --- /dev/null +++ b/icons/layout-text-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-text-window-reverse.svg b/icons/layout-text-window-reverse.svg new file mode 100644 index 0000000..bc6d53a --- /dev/null +++ b/icons/layout-text-window-reverse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-text-window.svg b/icons/layout-text-window.svg new file mode 100644 index 0000000..3197a45 --- /dev/null +++ b/icons/layout-text-window.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/layout-three-columns.svg b/icons/layout-three-columns.svg new file mode 100644 index 0000000..0015852 --- /dev/null +++ b/icons/layout-three-columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/layout-wtf.svg b/icons/layout-wtf.svg new file mode 100644 index 0000000..349396d --- /dev/null +++ b/icons/layout-wtf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/leaf-fill.svg b/icons/leaf-fill.svg new file mode 100644 index 0000000..9aec52f --- /dev/null +++ b/icons/leaf-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/leaf.svg b/icons/leaf.svg new file mode 100644 index 0000000..4499411 --- /dev/null +++ b/icons/leaf.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/life-preserver.svg b/icons/life-preserver.svg new file mode 100644 index 0000000..d27e1f4 --- /dev/null +++ b/icons/life-preserver.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightbulb-fill.svg b/icons/lightbulb-fill.svg new file mode 100644 index 0000000..74c071c --- /dev/null +++ b/icons/lightbulb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightbulb-off-fill.svg b/icons/lightbulb-off-fill.svg new file mode 100644 index 0000000..757ca59 --- /dev/null +++ b/icons/lightbulb-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightbulb-off.svg b/icons/lightbulb-off.svg new file mode 100644 index 0000000..2d2d14a --- /dev/null +++ b/icons/lightbulb-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightbulb.svg b/icons/lightbulb.svg new file mode 100644 index 0000000..bea8b86 --- /dev/null +++ b/icons/lightbulb.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightning-charge-fill.svg b/icons/lightning-charge-fill.svg new file mode 100644 index 0000000..7021f2d --- /dev/null +++ b/icons/lightning-charge-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightning-charge.svg b/icons/lightning-charge.svg new file mode 100644 index 0000000..45a8397 --- /dev/null +++ b/icons/lightning-charge.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightning-fill.svg b/icons/lightning-fill.svg new file mode 100644 index 0000000..2e4d685 --- /dev/null +++ b/icons/lightning-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lightning.svg b/icons/lightning.svg new file mode 100644 index 0000000..003e8be --- /dev/null +++ b/icons/lightning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/line.svg b/icons/line.svg new file mode 100644 index 0000000..c477de7 --- /dev/null +++ b/icons/line.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/link-45deg.svg b/icons/link-45deg.svg new file mode 100644 index 0000000..1ce3741 --- /dev/null +++ b/icons/link-45deg.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/link.svg b/icons/link.svg new file mode 100644 index 0000000..fdc879d --- /dev/null +++ b/icons/link.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/linkedin.svg b/icons/linkedin.svg new file mode 100644 index 0000000..d740ffa --- /dev/null +++ b/icons/linkedin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list-check.svg b/icons/list-check.svg new file mode 100644 index 0000000..27d500f --- /dev/null +++ b/icons/list-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list-columns-reverse.svg b/icons/list-columns-reverse.svg new file mode 100644 index 0000000..3d53091 --- /dev/null +++ b/icons/list-columns-reverse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list-columns.svg b/icons/list-columns.svg new file mode 100644 index 0000000..7f290d2 --- /dev/null +++ b/icons/list-columns.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list-nested.svg b/icons/list-nested.svg new file mode 100644 index 0000000..99b526b --- /dev/null +++ b/icons/list-nested.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list-ol.svg b/icons/list-ol.svg new file mode 100644 index 0000000..15b2944 --- /dev/null +++ b/icons/list-ol.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/list-stars.svg b/icons/list-stars.svg new file mode 100644 index 0000000..9bfc5f0 --- /dev/null +++ b/icons/list-stars.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/list-task.svg b/icons/list-task.svg new file mode 100644 index 0000000..c13e1d7 --- /dev/null +++ b/icons/list-task.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/list-ul.svg b/icons/list-ul.svg new file mode 100644 index 0000000..7e7b28b --- /dev/null +++ b/icons/list-ul.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/list.svg b/icons/list.svg new file mode 100644 index 0000000..ce9e86b --- /dev/null +++ b/icons/list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lock-fill.svg b/icons/lock-fill.svg new file mode 100644 index 0000000..deef2ba --- /dev/null +++ b/icons/lock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lock.svg b/icons/lock.svg new file mode 100644 index 0000000..602a5af --- /dev/null +++ b/icons/lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/luggage-fill.svg b/icons/luggage-fill.svg new file mode 100644 index 0000000..833aa31 --- /dev/null +++ b/icons/luggage-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/luggage.svg b/icons/luggage.svg new file mode 100644 index 0000000..e2b86ef --- /dev/null +++ b/icons/luggage.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/lungs-fill.svg b/icons/lungs-fill.svg new file mode 100644 index 0000000..af4edf1 --- /dev/null +++ b/icons/lungs-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/lungs.svg b/icons/lungs.svg new file mode 100644 index 0000000..b53a3c4 --- /dev/null +++ b/icons/lungs.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/magic.svg b/icons/magic.svg new file mode 100644 index 0000000..c67996c --- /dev/null +++ b/icons/magic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/magnet-fill.svg b/icons/magnet-fill.svg new file mode 100644 index 0000000..31ca4e5 --- /dev/null +++ b/icons/magnet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/magnet.svg b/icons/magnet.svg new file mode 100644 index 0000000..fef8fd0 --- /dev/null +++ b/icons/magnet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mailbox-flag.svg b/icons/mailbox-flag.svg new file mode 100644 index 0000000..1211ab9 --- /dev/null +++ b/icons/mailbox-flag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mailbox.svg b/icons/mailbox.svg new file mode 100644 index 0000000..5dce6a3 --- /dev/null +++ b/icons/mailbox.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mailbox2-flag.svg b/icons/mailbox2-flag.svg new file mode 100644 index 0000000..560dc03 --- /dev/null +++ b/icons/mailbox2-flag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mailbox2.svg b/icons/mailbox2.svg new file mode 100644 index 0000000..44c090d --- /dev/null +++ b/icons/mailbox2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/map-fill.svg b/icons/map-fill.svg new file mode 100644 index 0000000..73031ff --- /dev/null +++ b/icons/map-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/map.svg b/icons/map.svg new file mode 100644 index 0000000..351042e --- /dev/null +++ b/icons/map.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/markdown-fill.svg b/icons/markdown-fill.svg new file mode 100644 index 0000000..4a22f84 --- /dev/null +++ b/icons/markdown-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/markdown.svg b/icons/markdown.svg new file mode 100644 index 0000000..bac4ecb --- /dev/null +++ b/icons/markdown.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/marker-tip.svg b/icons/marker-tip.svg new file mode 100644 index 0000000..8770cc8 --- /dev/null +++ b/icons/marker-tip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mask.svg b/icons/mask.svg new file mode 100644 index 0000000..99e0618 --- /dev/null +++ b/icons/mask.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mastodon.svg b/icons/mastodon.svg new file mode 100644 index 0000000..437b214 --- /dev/null +++ b/icons/mastodon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/measuring-cup-fill.svg b/icons/measuring-cup-fill.svg new file mode 100644 index 0000000..d4f4b86 --- /dev/null +++ b/icons/measuring-cup-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/measuring-cup.svg b/icons/measuring-cup.svg new file mode 100644 index 0000000..8d9e56a --- /dev/null +++ b/icons/measuring-cup.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/medium.svg b/icons/medium.svg new file mode 100644 index 0000000..55c79b2 --- /dev/null +++ b/icons/medium.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/megaphone-fill.svg b/icons/megaphone-fill.svg new file mode 100644 index 0000000..1ce5228 --- /dev/null +++ b/icons/megaphone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/megaphone.svg b/icons/megaphone.svg new file mode 100644 index 0000000..8ae2587 --- /dev/null +++ b/icons/megaphone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/memory.svg b/icons/memory.svg new file mode 100644 index 0000000..fb0cba8 --- /dev/null +++ b/icons/memory.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-app-fill.svg b/icons/menu-app-fill.svg new file mode 100644 index 0000000..826e440 --- /dev/null +++ b/icons/menu-app-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-app.svg b/icons/menu-app.svg new file mode 100644 index 0000000..c1ebe2b --- /dev/null +++ b/icons/menu-app.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-button-fill.svg b/icons/menu-button-fill.svg new file mode 100644 index 0000000..b9ffcfd --- /dev/null +++ b/icons/menu-button-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-button-wide-fill.svg b/icons/menu-button-wide-fill.svg new file mode 100644 index 0000000..7733cef --- /dev/null +++ b/icons/menu-button-wide-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-button-wide.svg b/icons/menu-button-wide.svg new file mode 100644 index 0000000..118dad3 --- /dev/null +++ b/icons/menu-button-wide.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/menu-button.svg b/icons/menu-button.svg new file mode 100644 index 0000000..17de991 --- /dev/null +++ b/icons/menu-button.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/menu-down.svg b/icons/menu-down.svg new file mode 100644 index 0000000..bf709e6 --- /dev/null +++ b/icons/menu-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/menu-up.svg b/icons/menu-up.svg new file mode 100644 index 0000000..23c4a82 --- /dev/null +++ b/icons/menu-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/messenger.svg b/icons/messenger.svg new file mode 100644 index 0000000..ceee32f --- /dev/null +++ b/icons/messenger.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/meta.svg b/icons/meta.svg new file mode 100644 index 0000000..cb082c1 --- /dev/null +++ b/icons/meta.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mic-fill.svg b/icons/mic-fill.svg new file mode 100644 index 0000000..e18f419 --- /dev/null +++ b/icons/mic-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mic-mute-fill.svg b/icons/mic-mute-fill.svg new file mode 100644 index 0000000..3ff8630 --- /dev/null +++ b/icons/mic-mute-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mic-mute.svg b/icons/mic-mute.svg new file mode 100644 index 0000000..23ddb03 --- /dev/null +++ b/icons/mic-mute.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mic.svg b/icons/mic.svg new file mode 100644 index 0000000..5792f8e --- /dev/null +++ b/icons/mic.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/microsoft-teams.svg b/icons/microsoft-teams.svg new file mode 100644 index 0000000..c7f99ac --- /dev/null +++ b/icons/microsoft-teams.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/microsoft.svg b/icons/microsoft.svg new file mode 100644 index 0000000..ca7379b --- /dev/null +++ b/icons/microsoft.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/minecart-loaded.svg b/icons/minecart-loaded.svg new file mode 100644 index 0000000..07fe80c --- /dev/null +++ b/icons/minecart-loaded.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/minecart.svg b/icons/minecart.svg new file mode 100644 index 0000000..8de1f1c --- /dev/null +++ b/icons/minecart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/modem-fill.svg b/icons/modem-fill.svg new file mode 100644 index 0000000..7d512c2 --- /dev/null +++ b/icons/modem-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/modem.svg b/icons/modem.svg new file mode 100644 index 0000000..b9266bf --- /dev/null +++ b/icons/modem.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/moisture.svg b/icons/moisture.svg new file mode 100644 index 0000000..8867b3c --- /dev/null +++ b/icons/moisture.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/moon-fill.svg b/icons/moon-fill.svg new file mode 100644 index 0000000..a9d2e15 --- /dev/null +++ b/icons/moon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/moon-stars-fill.svg b/icons/moon-stars-fill.svg new file mode 100644 index 0000000..89ea0db --- /dev/null +++ b/icons/moon-stars-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/moon-stars.svg b/icons/moon-stars.svg new file mode 100644 index 0000000..2e25448 --- /dev/null +++ b/icons/moon-stars.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/moon.svg b/icons/moon.svg new file mode 100644 index 0000000..dbbe637 --- /dev/null +++ b/icons/moon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mortarboard-fill.svg b/icons/mortarboard-fill.svg new file mode 100644 index 0000000..3f9a8fe --- /dev/null +++ b/icons/mortarboard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mortarboard.svg b/icons/mortarboard.svg new file mode 100644 index 0000000..f9e4124 --- /dev/null +++ b/icons/mortarboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/motherboard-fill.svg b/icons/motherboard-fill.svg new file mode 100644 index 0000000..89c68ba --- /dev/null +++ b/icons/motherboard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/motherboard.svg b/icons/motherboard.svg new file mode 100644 index 0000000..d904e52 --- /dev/null +++ b/icons/motherboard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/mouse-fill.svg b/icons/mouse-fill.svg new file mode 100644 index 0000000..716f73d --- /dev/null +++ b/icons/mouse-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mouse.svg b/icons/mouse.svg new file mode 100644 index 0000000..becf38b --- /dev/null +++ b/icons/mouse.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mouse2-fill.svg b/icons/mouse2-fill.svg new file mode 100644 index 0000000..d8c5b9e --- /dev/null +++ b/icons/mouse2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mouse2.svg b/icons/mouse2.svg new file mode 100644 index 0000000..7848c2b --- /dev/null +++ b/icons/mouse2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mouse3-fill.svg b/icons/mouse3-fill.svg new file mode 100644 index 0000000..a726d0d --- /dev/null +++ b/icons/mouse3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/mouse3.svg b/icons/mouse3.svg new file mode 100644 index 0000000..52f6912 --- /dev/null +++ b/icons/mouse3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/music-note-beamed.svg b/icons/music-note-beamed.svg new file mode 100644 index 0000000..718e507 --- /dev/null +++ b/icons/music-note-beamed.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/music-note-list.svg b/icons/music-note-list.svg new file mode 100644 index 0000000..f65e230 --- /dev/null +++ b/icons/music-note-list.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/music-note.svg b/icons/music-note.svg new file mode 100644 index 0000000..b2aedb5 --- /dev/null +++ b/icons/music-note.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/music-player-fill.svg b/icons/music-player-fill.svg new file mode 100644 index 0000000..6f703d0 --- /dev/null +++ b/icons/music-player-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/music-player.svg b/icons/music-player.svg new file mode 100644 index 0000000..fdca604 --- /dev/null +++ b/icons/music-player.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/newspaper.svg b/icons/newspaper.svg new file mode 100644 index 0000000..ab7fc7b --- /dev/null +++ b/icons/newspaper.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/nintendo-switch.svg b/icons/nintendo-switch.svg new file mode 100644 index 0000000..54311d7 --- /dev/null +++ b/icons/nintendo-switch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/node-minus-fill.svg b/icons/node-minus-fill.svg new file mode 100644 index 0000000..690b7ac --- /dev/null +++ b/icons/node-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/node-minus.svg b/icons/node-minus.svg new file mode 100644 index 0000000..b021918 --- /dev/null +++ b/icons/node-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/node-plus-fill.svg b/icons/node-plus-fill.svg new file mode 100644 index 0000000..6f98a60 --- /dev/null +++ b/icons/node-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/node-plus.svg b/icons/node-plus.svg new file mode 100644 index 0000000..4eb1ef1 --- /dev/null +++ b/icons/node-plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/noise-reduction.svg b/icons/noise-reduction.svg new file mode 100644 index 0000000..21462a8 --- /dev/null +++ b/icons/noise-reduction.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/nut-fill.svg b/icons/nut-fill.svg new file mode 100644 index 0000000..ae49fc8 --- /dev/null +++ b/icons/nut-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/nut.svg b/icons/nut.svg new file mode 100644 index 0000000..1266e5e --- /dev/null +++ b/icons/nut.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/nvidia.svg b/icons/nvidia.svg new file mode 100644 index 0000000..d13952a --- /dev/null +++ b/icons/nvidia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/nvme-fill.svg b/icons/nvme-fill.svg new file mode 100644 index 0000000..71b360c --- /dev/null +++ b/icons/nvme-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/nvme.svg b/icons/nvme.svg new file mode 100644 index 0000000..1f614c3 --- /dev/null +++ b/icons/nvme.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/octagon-fill.svg b/icons/octagon-fill.svg new file mode 100644 index 0000000..722a5a5 --- /dev/null +++ b/icons/octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/octagon-half.svg b/icons/octagon-half.svg new file mode 100644 index 0000000..0782248 --- /dev/null +++ b/icons/octagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/octagon.svg b/icons/octagon.svg new file mode 100644 index 0000000..98a86af --- /dev/null +++ b/icons/octagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/openai.svg b/icons/openai.svg new file mode 100644 index 0000000..fe7c602 --- /dev/null +++ b/icons/openai.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/opencollective.svg b/icons/opencollective.svg new file mode 100644 index 0000000..0113a92 --- /dev/null +++ b/icons/opencollective.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/optical-audio-fill.svg b/icons/optical-audio-fill.svg new file mode 100644 index 0000000..055c5fe --- /dev/null +++ b/icons/optical-audio-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/optical-audio.svg b/icons/optical-audio.svg new file mode 100644 index 0000000..aa431b3 --- /dev/null +++ b/icons/optical-audio.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/option.svg b/icons/option.svg new file mode 100644 index 0000000..ba10d25 --- /dev/null +++ b/icons/option.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/outlet.svg b/icons/outlet.svg new file mode 100644 index 0000000..473dc1e --- /dev/null +++ b/icons/outlet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/p-circle-fill.svg b/icons/p-circle-fill.svg new file mode 100644 index 0000000..cfc4347 --- /dev/null +++ b/icons/p-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/p-circle.svg b/icons/p-circle.svg new file mode 100644 index 0000000..8904886 --- /dev/null +++ b/icons/p-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/p-square-fill.svg b/icons/p-square-fill.svg new file mode 100644 index 0000000..09db5b8 --- /dev/null +++ b/icons/p-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/p-square.svg b/icons/p-square.svg new file mode 100644 index 0000000..12274fb --- /dev/null +++ b/icons/p-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/paint-bucket.svg b/icons/paint-bucket.svg new file mode 100644 index 0000000..f1f6c97 --- /dev/null +++ b/icons/paint-bucket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/palette-fill.svg b/icons/palette-fill.svg new file mode 100644 index 0000000..7f47cf6 --- /dev/null +++ b/icons/palette-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/palette.svg b/icons/palette.svg new file mode 100644 index 0000000..941a7e4 --- /dev/null +++ b/icons/palette.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/palette2.svg b/icons/palette2.svg new file mode 100644 index 0000000..29436e3 --- /dev/null +++ b/icons/palette2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/paperclip.svg b/icons/paperclip.svg new file mode 100644 index 0000000..087fb32 --- /dev/null +++ b/icons/paperclip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/paragraph.svg b/icons/paragraph.svg new file mode 100644 index 0000000..6f694d0 --- /dev/null +++ b/icons/paragraph.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pass-fill.svg b/icons/pass-fill.svg new file mode 100644 index 0000000..41d11ee --- /dev/null +++ b/icons/pass-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pass.svg b/icons/pass.svg new file mode 100644 index 0000000..283198e --- /dev/null +++ b/icons/pass.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/passport-fill.svg b/icons/passport-fill.svg new file mode 100644 index 0000000..a7a38e3 --- /dev/null +++ b/icons/passport-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/passport.svg b/icons/passport.svg new file mode 100644 index 0000000..0b541bf --- /dev/null +++ b/icons/passport.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/patch-check-fill.svg b/icons/patch-check-fill.svg new file mode 100644 index 0000000..0c09072 --- /dev/null +++ b/icons/patch-check-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/patch-check.svg b/icons/patch-check.svg new file mode 100644 index 0000000..c2909f5 --- /dev/null +++ b/icons/patch-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/patch-exclamation-fill.svg b/icons/patch-exclamation-fill.svg new file mode 100644 index 0000000..e054552 --- /dev/null +++ b/icons/patch-exclamation-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/patch-exclamation.svg b/icons/patch-exclamation.svg new file mode 100644 index 0000000..7cd27af --- /dev/null +++ b/icons/patch-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/patch-minus-fill.svg b/icons/patch-minus-fill.svg new file mode 100644 index 0000000..d230be0 --- /dev/null +++ b/icons/patch-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/patch-minus.svg b/icons/patch-minus.svg new file mode 100644 index 0000000..5e871d7 --- /dev/null +++ b/icons/patch-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/patch-plus-fill.svg b/icons/patch-plus-fill.svg new file mode 100644 index 0000000..0022e97 --- /dev/null +++ b/icons/patch-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/patch-plus.svg b/icons/patch-plus.svg new file mode 100644 index 0000000..2b35e9c --- /dev/null +++ b/icons/patch-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/patch-question-fill.svg b/icons/patch-question-fill.svg new file mode 100644 index 0000000..108157a --- /dev/null +++ b/icons/patch-question-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/patch-question.svg b/icons/patch-question.svg new file mode 100644 index 0000000..8ccf880 --- /dev/null +++ b/icons/patch-question.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/pause-btn-fill.svg b/icons/pause-btn-fill.svg new file mode 100644 index 0000000..b6c90b8 --- /dev/null +++ b/icons/pause-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pause-btn.svg b/icons/pause-btn.svg new file mode 100644 index 0000000..6daf1cd --- /dev/null +++ b/icons/pause-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pause-circle-fill.svg b/icons/pause-circle-fill.svg new file mode 100644 index 0000000..970ce48 --- /dev/null +++ b/icons/pause-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pause-circle.svg b/icons/pause-circle.svg new file mode 100644 index 0000000..7387a25 --- /dev/null +++ b/icons/pause-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pause-fill.svg b/icons/pause-fill.svg new file mode 100644 index 0000000..e817993 --- /dev/null +++ b/icons/pause-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pause.svg b/icons/pause.svg new file mode 100644 index 0000000..90f59b9 --- /dev/null +++ b/icons/pause.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/paypal.svg b/icons/paypal.svg new file mode 100644 index 0000000..a8b189b --- /dev/null +++ b/icons/paypal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pc-display-horizontal.svg b/icons/pc-display-horizontal.svg new file mode 100644 index 0000000..99c04b4 --- /dev/null +++ b/icons/pc-display-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pc-display.svg b/icons/pc-display.svg new file mode 100644 index 0000000..edb76c1 --- /dev/null +++ b/icons/pc-display.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pc-horizontal.svg b/icons/pc-horizontal.svg new file mode 100644 index 0000000..e4769f6 --- /dev/null +++ b/icons/pc-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pc.svg b/icons/pc.svg new file mode 100644 index 0000000..eb4ae79 --- /dev/null +++ b/icons/pc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pci-card-network.svg b/icons/pci-card-network.svg new file mode 100644 index 0000000..ed42fd5 --- /dev/null +++ b/icons/pci-card-network.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/pci-card-sound.svg b/icons/pci-card-sound.svg new file mode 100644 index 0000000..93fc524 --- /dev/null +++ b/icons/pci-card-sound.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/pci-card.svg b/icons/pci-card.svg new file mode 100644 index 0000000..2d66ad0 --- /dev/null +++ b/icons/pci-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/peace-fill.svg b/icons/peace-fill.svg new file mode 100644 index 0000000..731c78b --- /dev/null +++ b/icons/peace-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/peace.svg b/icons/peace.svg new file mode 100644 index 0000000..7f6343f --- /dev/null +++ b/icons/peace.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pen-fill.svg b/icons/pen-fill.svg new file mode 100644 index 0000000..b890916 --- /dev/null +++ b/icons/pen-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pen.svg b/icons/pen.svg new file mode 100644 index 0000000..6efa5a5 --- /dev/null +++ b/icons/pen.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pencil-fill.svg b/icons/pencil-fill.svg new file mode 100644 index 0000000..a39b0cd --- /dev/null +++ b/icons/pencil-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pencil-square.svg b/icons/pencil-square.svg new file mode 100644 index 0000000..a0da03e --- /dev/null +++ b/icons/pencil-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pencil.svg b/icons/pencil.svg new file mode 100644 index 0000000..b863138 --- /dev/null +++ b/icons/pencil.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pentagon-fill.svg b/icons/pentagon-fill.svg new file mode 100644 index 0000000..bf27f66 --- /dev/null +++ b/icons/pentagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pentagon-half.svg b/icons/pentagon-half.svg new file mode 100644 index 0000000..42018d1 --- /dev/null +++ b/icons/pentagon-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pentagon.svg b/icons/pentagon.svg new file mode 100644 index 0000000..52e85a5 --- /dev/null +++ b/icons/pentagon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/people-fill.svg b/icons/people-fill.svg new file mode 100644 index 0000000..57e3b54 --- /dev/null +++ b/icons/people-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/people.svg b/icons/people.svg new file mode 100644 index 0000000..9308209 --- /dev/null +++ b/icons/people.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/percent.svg b/icons/percent.svg new file mode 100644 index 0000000..aed6ab4 --- /dev/null +++ b/icons/percent.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/perplexity.svg b/icons/perplexity.svg new file mode 100644 index 0000000..9b9002c --- /dev/null +++ b/icons/perplexity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-add.svg b/icons/person-add.svg new file mode 100644 index 0000000..252a9ed --- /dev/null +++ b/icons/person-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-arms-up.svg b/icons/person-arms-up.svg new file mode 100644 index 0000000..5f6d842 --- /dev/null +++ b/icons/person-arms-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-badge-fill.svg b/icons/person-badge-fill.svg new file mode 100644 index 0000000..1d3cc0e --- /dev/null +++ b/icons/person-badge-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-badge.svg b/icons/person-badge.svg new file mode 100644 index 0000000..5187170 --- /dev/null +++ b/icons/person-badge.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-bounding-box.svg b/icons/person-bounding-box.svg new file mode 100644 index 0000000..123d450 --- /dev/null +++ b/icons/person-bounding-box.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-check-fill.svg b/icons/person-check-fill.svg new file mode 100644 index 0000000..a223b5c --- /dev/null +++ b/icons/person-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-check.svg b/icons/person-check.svg new file mode 100644 index 0000000..9cbfcb2 --- /dev/null +++ b/icons/person-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-circle.svg b/icons/person-circle.svg new file mode 100644 index 0000000..087050a --- /dev/null +++ b/icons/person-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-dash-fill.svg b/icons/person-dash-fill.svg new file mode 100644 index 0000000..08042e1 --- /dev/null +++ b/icons/person-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-dash.svg b/icons/person-dash.svg new file mode 100644 index 0000000..402c58e --- /dev/null +++ b/icons/person-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-down.svg b/icons/person-down.svg new file mode 100644 index 0000000..1197757 --- /dev/null +++ b/icons/person-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-exclamation.svg b/icons/person-exclamation.svg new file mode 100644 index 0000000..7ccba54 --- /dev/null +++ b/icons/person-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-add.svg b/icons/person-fill-add.svg new file mode 100644 index 0000000..08b843c --- /dev/null +++ b/icons/person-fill-add.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-check.svg b/icons/person-fill-check.svg new file mode 100644 index 0000000..f60bcbf --- /dev/null +++ b/icons/person-fill-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-dash.svg b/icons/person-fill-dash.svg new file mode 100644 index 0000000..8704b9e --- /dev/null +++ b/icons/person-fill-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-down.svg b/icons/person-fill-down.svg new file mode 100644 index 0000000..cf950a7 --- /dev/null +++ b/icons/person-fill-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-exclamation.svg b/icons/person-fill-exclamation.svg new file mode 100644 index 0000000..5007532 --- /dev/null +++ b/icons/person-fill-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-gear.svg b/icons/person-fill-gear.svg new file mode 100644 index 0000000..e9be1d1 --- /dev/null +++ b/icons/person-fill-gear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-fill-lock.svg b/icons/person-fill-lock.svg new file mode 100644 index 0000000..7f9cfd9 --- /dev/null +++ b/icons/person-fill-lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-fill-slash.svg b/icons/person-fill-slash.svg new file mode 100644 index 0000000..980edde --- /dev/null +++ b/icons/person-fill-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-fill-up.svg b/icons/person-fill-up.svg new file mode 100644 index 0000000..a9b8d50 --- /dev/null +++ b/icons/person-fill-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill-x.svg b/icons/person-fill-x.svg new file mode 100644 index 0000000..7d48cf2 --- /dev/null +++ b/icons/person-fill-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-fill.svg b/icons/person-fill.svg new file mode 100644 index 0000000..45a3793 --- /dev/null +++ b/icons/person-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-gear.svg b/icons/person-gear.svg new file mode 100644 index 0000000..b0acb1c --- /dev/null +++ b/icons/person-gear.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-heart.svg b/icons/person-heart.svg new file mode 100644 index 0000000..3d73468 --- /dev/null +++ b/icons/person-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-hearts.svg b/icons/person-hearts.svg new file mode 100644 index 0000000..cf9d17d --- /dev/null +++ b/icons/person-hearts.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-lines-fill.svg b/icons/person-lines-fill.svg new file mode 100644 index 0000000..403e503 --- /dev/null +++ b/icons/person-lines-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-lock.svg b/icons/person-lock.svg new file mode 100644 index 0000000..69cfea5 --- /dev/null +++ b/icons/person-lock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-plus-fill.svg b/icons/person-plus-fill.svg new file mode 100644 index 0000000..c35194b --- /dev/null +++ b/icons/person-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-plus.svg b/icons/person-plus.svg new file mode 100644 index 0000000..3be8a9f --- /dev/null +++ b/icons/person-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-raised-hand.svg b/icons/person-raised-hand.svg new file mode 100644 index 0000000..41ba271 --- /dev/null +++ b/icons/person-raised-hand.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-rolodex.svg b/icons/person-rolodex.svg new file mode 100644 index 0000000..c380e91 --- /dev/null +++ b/icons/person-rolodex.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-slash.svg b/icons/person-slash.svg new file mode 100644 index 0000000..4be5416 --- /dev/null +++ b/icons/person-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-square.svg b/icons/person-square.svg new file mode 100644 index 0000000..b4404eb --- /dev/null +++ b/icons/person-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-standing-dress.svg b/icons/person-standing-dress.svg new file mode 100644 index 0000000..4801868 --- /dev/null +++ b/icons/person-standing-dress.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-standing.svg b/icons/person-standing.svg new file mode 100644 index 0000000..67f2c7c --- /dev/null +++ b/icons/person-standing.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-up.svg b/icons/person-up.svg new file mode 100644 index 0000000..c431fce --- /dev/null +++ b/icons/person-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-vcard-fill.svg b/icons/person-vcard-fill.svg new file mode 100644 index 0000000..cfed269 --- /dev/null +++ b/icons/person-vcard-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-vcard.svg b/icons/person-vcard.svg new file mode 100644 index 0000000..88a7e98 --- /dev/null +++ b/icons/person-vcard.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-video.svg b/icons/person-video.svg new file mode 100644 index 0000000..fe2f39e --- /dev/null +++ b/icons/person-video.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-video2.svg b/icons/person-video2.svg new file mode 100644 index 0000000..f1d6d34 --- /dev/null +++ b/icons/person-video2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-video3.svg b/icons/person-video3.svg new file mode 100644 index 0000000..7468a92 --- /dev/null +++ b/icons/person-video3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-walking.svg b/icons/person-walking.svg new file mode 100644 index 0000000..d9c110c --- /dev/null +++ b/icons/person-walking.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-wheelchair.svg b/icons/person-wheelchair.svg new file mode 100644 index 0000000..016118c --- /dev/null +++ b/icons/person-wheelchair.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-workspace.svg b/icons/person-workspace.svg new file mode 100644 index 0000000..829574c --- /dev/null +++ b/icons/person-workspace.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person-x-fill.svg b/icons/person-x-fill.svg new file mode 100644 index 0000000..c2982ca --- /dev/null +++ b/icons/person-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/person-x.svg b/icons/person-x.svg new file mode 100644 index 0000000..a986985 --- /dev/null +++ b/icons/person-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/person.svg b/icons/person.svg new file mode 100644 index 0000000..fe02581 --- /dev/null +++ b/icons/person.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/phone-fill.svg b/icons/phone-fill.svg new file mode 100644 index 0000000..5d3c159 --- /dev/null +++ b/icons/phone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/phone-flip.svg b/icons/phone-flip.svg new file mode 100644 index 0000000..b1b6457 --- /dev/null +++ b/icons/phone-flip.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/phone-landscape-fill.svg b/icons/phone-landscape-fill.svg new file mode 100644 index 0000000..52a0e72 --- /dev/null +++ b/icons/phone-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/phone-landscape.svg b/icons/phone-landscape.svg new file mode 100644 index 0000000..23e00a0 --- /dev/null +++ b/icons/phone-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/phone-vibrate-fill.svg b/icons/phone-vibrate-fill.svg new file mode 100644 index 0000000..2a3cbc5 --- /dev/null +++ b/icons/phone-vibrate-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/phone-vibrate.svg b/icons/phone-vibrate.svg new file mode 100644 index 0000000..91878d1 --- /dev/null +++ b/icons/phone-vibrate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/phone.svg b/icons/phone.svg new file mode 100644 index 0000000..ae87d93 --- /dev/null +++ b/icons/phone.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pie-chart-fill.svg b/icons/pie-chart-fill.svg new file mode 100644 index 0000000..a60814a --- /dev/null +++ b/icons/pie-chart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pie-chart.svg b/icons/pie-chart.svg new file mode 100644 index 0000000..5863ac1 --- /dev/null +++ b/icons/pie-chart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/piggy-bank-fill.svg b/icons/piggy-bank-fill.svg new file mode 100644 index 0000000..13812f0 --- /dev/null +++ b/icons/piggy-bank-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/piggy-bank.svg b/icons/piggy-bank.svg new file mode 100644 index 0000000..5526df2 --- /dev/null +++ b/icons/piggy-bank.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pin-angle-fill.svg b/icons/pin-angle-fill.svg new file mode 100644 index 0000000..3463f0a --- /dev/null +++ b/icons/pin-angle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pin-angle.svg b/icons/pin-angle.svg new file mode 100644 index 0000000..4c22733 --- /dev/null +++ b/icons/pin-angle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pin-fill.svg b/icons/pin-fill.svg new file mode 100644 index 0000000..8b2d6e3 --- /dev/null +++ b/icons/pin-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pin-map-fill.svg b/icons/pin-map-fill.svg new file mode 100644 index 0000000..e081d46 --- /dev/null +++ b/icons/pin-map-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pin-map.svg b/icons/pin-map.svg new file mode 100644 index 0000000..2a5ae62 --- /dev/null +++ b/icons/pin-map.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/pin.svg b/icons/pin.svg new file mode 100644 index 0000000..9946219 --- /dev/null +++ b/icons/pin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pinterest.svg b/icons/pinterest.svg new file mode 100644 index 0000000..109f30b --- /dev/null +++ b/icons/pinterest.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pip-fill.svg b/icons/pip-fill.svg new file mode 100644 index 0000000..ff0dae7 --- /dev/null +++ b/icons/pip-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/pip.svg b/icons/pip.svg new file mode 100644 index 0000000..a085008 --- /dev/null +++ b/icons/pip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/play-btn-fill.svg b/icons/play-btn-fill.svg new file mode 100644 index 0000000..473884a --- /dev/null +++ b/icons/play-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/play-btn.svg b/icons/play-btn.svg new file mode 100644 index 0000000..0aa0db6 --- /dev/null +++ b/icons/play-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/play-circle-fill.svg b/icons/play-circle-fill.svg new file mode 100644 index 0000000..fd2fd72 --- /dev/null +++ b/icons/play-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/play-circle.svg b/icons/play-circle.svg new file mode 100644 index 0000000..dba4b62 --- /dev/null +++ b/icons/play-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/play-fill.svg b/icons/play-fill.svg index 4a11e1c..b8d41ba 100644 --- a/icons/play-fill.svg +++ b/icons/play-fill.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/icons/play.svg b/icons/play.svg new file mode 100644 index 0000000..668ea66 --- /dev/null +++ b/icons/play.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/playstation.svg b/icons/playstation.svg new file mode 100644 index 0000000..a62a2b8 --- /dev/null +++ b/icons/playstation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plug-fill.svg b/icons/plug-fill.svg new file mode 100644 index 0000000..c268eab --- /dev/null +++ b/icons/plug-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plug.svg b/icons/plug.svg new file mode 100644 index 0000000..24b6508 --- /dev/null +++ b/icons/plug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plugin.svg b/icons/plugin.svg new file mode 100644 index 0000000..414547c --- /dev/null +++ b/icons/plugin.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-circle-dotted.svg b/icons/plus-circle-dotted.svg new file mode 100644 index 0000000..b4a689b --- /dev/null +++ b/icons/plus-circle-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-circle-fill.svg b/icons/plus-circle-fill.svg new file mode 100644 index 0000000..c32e677 --- /dev/null +++ b/icons/plus-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-circle.svg b/icons/plus-circle.svg new file mode 100644 index 0000000..fe99ebb --- /dev/null +++ b/icons/plus-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/plus-lg.svg b/icons/plus-lg.svg new file mode 100644 index 0000000..5ebf3d9 --- /dev/null +++ b/icons/plus-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-slash-minus.svg b/icons/plus-slash-minus.svg new file mode 100644 index 0000000..565fb89 --- /dev/null +++ b/icons/plus-slash-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-square-dotted.svg b/icons/plus-square-dotted.svg new file mode 100644 index 0000000..fd0fe3d --- /dev/null +++ b/icons/plus-square-dotted.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-square-fill.svg b/icons/plus-square-fill.svg new file mode 100644 index 0000000..8147bac --- /dev/null +++ b/icons/plus-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/plus-square.svg b/icons/plus-square.svg new file mode 100644 index 0000000..8a34b8b --- /dev/null +++ b/icons/plus-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/plus.svg b/icons/plus.svg new file mode 100644 index 0000000..15d2b32 --- /dev/null +++ b/icons/plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/postage-fill.svg b/icons/postage-fill.svg new file mode 100644 index 0000000..2e16e12 --- /dev/null +++ b/icons/postage-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postage-heart-fill.svg b/icons/postage-heart-fill.svg new file mode 100644 index 0000000..5df10ff --- /dev/null +++ b/icons/postage-heart-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postage-heart.svg b/icons/postage-heart.svg new file mode 100644 index 0000000..2398a22 --- /dev/null +++ b/icons/postage-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postage.svg b/icons/postage.svg new file mode 100644 index 0000000..43bb310 --- /dev/null +++ b/icons/postage.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postcard-fill.svg b/icons/postcard-fill.svg new file mode 100644 index 0000000..12eb76e --- /dev/null +++ b/icons/postcard-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postcard-heart-fill.svg b/icons/postcard-heart-fill.svg new file mode 100644 index 0000000..155dddf --- /dev/null +++ b/icons/postcard-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/postcard-heart.svg b/icons/postcard-heart.svg new file mode 100644 index 0000000..d96b49e --- /dev/null +++ b/icons/postcard-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/postcard.svg b/icons/postcard.svg new file mode 100644 index 0000000..afdc2e4 --- /dev/null +++ b/icons/postcard.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/prescription.svg b/icons/prescription.svg new file mode 100644 index 0000000..75b8227 --- /dev/null +++ b/icons/prescription.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/prescription2.svg b/icons/prescription2.svg new file mode 100644 index 0000000..512f755 --- /dev/null +++ b/icons/prescription2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/printer-fill.svg b/icons/printer-fill.svg new file mode 100644 index 0000000..0fe977b --- /dev/null +++ b/icons/printer-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/printer.svg b/icons/printer.svg new file mode 100644 index 0000000..6ef0f8b --- /dev/null +++ b/icons/printer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/projector-fill.svg b/icons/projector-fill.svg new file mode 100644 index 0000000..ee6bee8 --- /dev/null +++ b/icons/projector-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/projector.svg b/icons/projector.svg new file mode 100644 index 0000000..c5f0f98 --- /dev/null +++ b/icons/projector.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/puzzle-fill.svg b/icons/puzzle-fill.svg new file mode 100644 index 0000000..e629e93 --- /dev/null +++ b/icons/puzzle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/puzzle.svg b/icons/puzzle.svg new file mode 100644 index 0000000..afa67b9 --- /dev/null +++ b/icons/puzzle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/qr-code-scan.svg b/icons/qr-code-scan.svg new file mode 100644 index 0000000..f887bce --- /dev/null +++ b/icons/qr-code-scan.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/icons/qr-code.svg b/icons/qr-code.svg new file mode 100644 index 0000000..961bab1 --- /dev/null +++ b/icons/qr-code.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/icons/question-circle-fill.svg b/icons/question-circle-fill.svg new file mode 100644 index 0000000..0ad62bc --- /dev/null +++ b/icons/question-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/question-diamond-fill.svg b/icons/question-diamond-fill.svg new file mode 100644 index 0000000..1ec85dc --- /dev/null +++ b/icons/question-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/question-diamond.svg b/icons/question-diamond.svg new file mode 100644 index 0000000..202bacb --- /dev/null +++ b/icons/question-diamond.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/question-lg.svg b/icons/question-lg.svg new file mode 100644 index 0000000..ed408cc --- /dev/null +++ b/icons/question-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/question-octagon-fill.svg b/icons/question-octagon-fill.svg new file mode 100644 index 0000000..d0fa3c8 --- /dev/null +++ b/icons/question-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/question-octagon.svg b/icons/question-octagon.svg new file mode 100644 index 0000000..15ec4e7 --- /dev/null +++ b/icons/question-octagon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/question-square-fill.svg b/icons/question-square-fill.svg new file mode 100644 index 0000000..519bfba --- /dev/null +++ b/icons/question-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/question-square.svg b/icons/question-square.svg new file mode 100644 index 0000000..6d63468 --- /dev/null +++ b/icons/question-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/question.svg b/icons/question.svg index 29f93a1..e63ac32 100644 --- a/icons/question.svg +++ b/icons/question.svg @@ -1,4 +1,3 @@ - - + - + \ No newline at end of file diff --git a/icons/quora.svg b/icons/quora.svg new file mode 100644 index 0000000..f1778a6 --- /dev/null +++ b/icons/quora.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/quote.svg b/icons/quote.svg new file mode 100644 index 0000000..e82e43d --- /dev/null +++ b/icons/quote.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/r-circle-fill.svg b/icons/r-circle-fill.svg new file mode 100644 index 0000000..c6aaf9d --- /dev/null +++ b/icons/r-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/r-circle.svg b/icons/r-circle.svg new file mode 100644 index 0000000..9413404 --- /dev/null +++ b/icons/r-circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/r-square-fill.svg b/icons/r-square-fill.svg new file mode 100644 index 0000000..5f41773 --- /dev/null +++ b/icons/r-square-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/r-square.svg b/icons/r-square.svg new file mode 100644 index 0000000..5bf5622 --- /dev/null +++ b/icons/r-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/radar.svg b/icons/radar.svg new file mode 100644 index 0000000..0dfcc7f --- /dev/null +++ b/icons/radar.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/radioactive.svg b/icons/radioactive.svg new file mode 100644 index 0000000..df9af27 --- /dev/null +++ b/icons/radioactive.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rainbow.svg b/icons/rainbow.svg new file mode 100644 index 0000000..7c57b2b --- /dev/null +++ b/icons/rainbow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/receipt-cutoff.svg b/icons/receipt-cutoff.svg new file mode 100644 index 0000000..3ebe01f --- /dev/null +++ b/icons/receipt-cutoff.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/receipt.svg b/icons/receipt.svg new file mode 100644 index 0000000..8c8da0d --- /dev/null +++ b/icons/receipt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/record-btn-fill.svg b/icons/record-btn-fill.svg new file mode 100644 index 0000000..42fcdbe --- /dev/null +++ b/icons/record-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/record-btn.svg b/icons/record-btn.svg new file mode 100644 index 0000000..154e928 --- /dev/null +++ b/icons/record-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/record-circle-fill.svg b/icons/record-circle-fill.svg new file mode 100644 index 0000000..f7b0956 --- /dev/null +++ b/icons/record-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/record-circle.svg b/icons/record-circle.svg new file mode 100644 index 0000000..04b3c91 --- /dev/null +++ b/icons/record-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/record-fill.svg b/icons/record-fill.svg new file mode 100644 index 0000000..f2d619f --- /dev/null +++ b/icons/record-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/record.svg b/icons/record.svg new file mode 100644 index 0000000..bbb8c61 --- /dev/null +++ b/icons/record.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/record2-fill.svg b/icons/record2-fill.svg new file mode 100644 index 0000000..2a70401 --- /dev/null +++ b/icons/record2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/record2.svg b/icons/record2.svg new file mode 100644 index 0000000..61da17b --- /dev/null +++ b/icons/record2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/recycle.svg b/icons/recycle.svg new file mode 100644 index 0000000..8cc7a4b --- /dev/null +++ b/icons/recycle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/reddit.svg b/icons/reddit.svg new file mode 100644 index 0000000..62e7255 --- /dev/null +++ b/icons/reddit.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/regex.svg b/icons/regex.svg new file mode 100644 index 0000000..4ddcea8 --- /dev/null +++ b/icons/regex.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/repeat-1.svg b/icons/repeat-1.svg new file mode 100644 index 0000000..8f4f6a6 --- /dev/null +++ b/icons/repeat-1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/repeat.svg b/icons/repeat.svg new file mode 100644 index 0000000..9729e28 --- /dev/null +++ b/icons/repeat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/reply-all-fill.svg b/icons/reply-all-fill.svg new file mode 100644 index 0000000..b3d4768 --- /dev/null +++ b/icons/reply-all-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/reply-all.svg b/icons/reply-all.svg new file mode 100644 index 0000000..2ca3f9d --- /dev/null +++ b/icons/reply-all.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/reply-fill.svg b/icons/reply-fill.svg new file mode 100644 index 0000000..bd0e72d --- /dev/null +++ b/icons/reply-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/reply.svg b/icons/reply.svg new file mode 100644 index 0000000..10583c8 --- /dev/null +++ b/icons/reply.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/rewind-btn-fill.svg b/icons/rewind-btn-fill.svg new file mode 100644 index 0000000..b2ba366 --- /dev/null +++ b/icons/rewind-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/rewind-btn.svg b/icons/rewind-btn.svg new file mode 100644 index 0000000..f2d5ad4 --- /dev/null +++ b/icons/rewind-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rewind-circle-fill.svg b/icons/rewind-circle-fill.svg new file mode 100644 index 0000000..9af9e6a --- /dev/null +++ b/icons/rewind-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/rewind-circle.svg b/icons/rewind-circle.svg new file mode 100644 index 0000000..cbaa5d1 --- /dev/null +++ b/icons/rewind-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rewind-fill.svg b/icons/rewind-fill.svg new file mode 100644 index 0000000..8f73ae2 --- /dev/null +++ b/icons/rewind-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rewind.svg b/icons/rewind.svg new file mode 100644 index 0000000..f377365 --- /dev/null +++ b/icons/rewind.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/robot.svg b/icons/robot.svg new file mode 100644 index 0000000..58d0f61 --- /dev/null +++ b/icons/robot.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rocket-fill.svg b/icons/rocket-fill.svg new file mode 100644 index 0000000..a89bef0 --- /dev/null +++ b/icons/rocket-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rocket-takeoff-fill.svg b/icons/rocket-takeoff-fill.svg new file mode 100644 index 0000000..adbd315 --- /dev/null +++ b/icons/rocket-takeoff-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rocket-takeoff.svg b/icons/rocket-takeoff.svg new file mode 100644 index 0000000..a6622b4 --- /dev/null +++ b/icons/rocket-takeoff.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/rocket.svg b/icons/rocket.svg new file mode 100644 index 0000000..8dd9bd0 --- /dev/null +++ b/icons/rocket.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/router-fill.svg b/icons/router-fill.svg new file mode 100644 index 0000000..3325098 --- /dev/null +++ b/icons/router-fill.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/router.svg b/icons/router.svg new file mode 100644 index 0000000..436946d --- /dev/null +++ b/icons/router.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/icons/rss-fill.svg b/icons/rss-fill.svg new file mode 100644 index 0000000..ecd7f6d --- /dev/null +++ b/icons/rss-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/rss.svg b/icons/rss.svg new file mode 100644 index 0000000..8986a90 --- /dev/null +++ b/icons/rss.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/rulers.svg b/icons/rulers.svg new file mode 100644 index 0000000..2a2012f --- /dev/null +++ b/icons/rulers.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/safe-fill.svg b/icons/safe-fill.svg new file mode 100644 index 0000000..e3f4cd8 --- /dev/null +++ b/icons/safe-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/safe.svg b/icons/safe.svg new file mode 100644 index 0000000..579d4fb --- /dev/null +++ b/icons/safe.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/safe2-fill.svg b/icons/safe2-fill.svg new file mode 100644 index 0000000..bf98ee7 --- /dev/null +++ b/icons/safe2-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/safe2.svg b/icons/safe2.svg new file mode 100644 index 0000000..57f4598 --- /dev/null +++ b/icons/safe2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/save-fill.svg b/icons/save-fill.svg new file mode 100644 index 0000000..a4ccc66 --- /dev/null +++ b/icons/save-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/save.svg b/icons/save.svg new file mode 100644 index 0000000..401e099 --- /dev/null +++ b/icons/save.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/save2-fill.svg b/icons/save2-fill.svg new file mode 100644 index 0000000..f8bcfcb --- /dev/null +++ b/icons/save2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/save2.svg b/icons/save2.svg new file mode 100644 index 0000000..1777794 --- /dev/null +++ b/icons/save2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/scissors.svg b/icons/scissors.svg new file mode 100644 index 0000000..abab05a --- /dev/null +++ b/icons/scissors.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/scooter.svg b/icons/scooter.svg new file mode 100644 index 0000000..94434af --- /dev/null +++ b/icons/scooter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/screwdriver.svg b/icons/screwdriver.svg new file mode 100644 index 0000000..f06d630 --- /dev/null +++ b/icons/screwdriver.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sd-card-fill.svg b/icons/sd-card-fill.svg new file mode 100644 index 0000000..f17886d --- /dev/null +++ b/icons/sd-card-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sd-card.svg b/icons/sd-card.svg new file mode 100644 index 0000000..a123f40 --- /dev/null +++ b/icons/sd-card.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/search-heart-fill.svg b/icons/search-heart-fill.svg new file mode 100644 index 0000000..71a099e --- /dev/null +++ b/icons/search-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/search-heart.svg b/icons/search-heart.svg new file mode 100644 index 0000000..630a7a0 --- /dev/null +++ b/icons/search-heart.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/search.svg b/icons/search.svg new file mode 100644 index 0000000..9798fc4 --- /dev/null +++ b/icons/search.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/segmented-nav.svg b/icons/segmented-nav.svg new file mode 100644 index 0000000..dbe519e --- /dev/null +++ b/icons/segmented-nav.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/send-arrow-down-fill.svg b/icons/send-arrow-down-fill.svg new file mode 100644 index 0000000..cfa6f75 --- /dev/null +++ b/icons/send-arrow-down-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-arrow-down.svg b/icons/send-arrow-down.svg new file mode 100644 index 0000000..65401a4 --- /dev/null +++ b/icons/send-arrow-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-arrow-up-fill.svg b/icons/send-arrow-up-fill.svg new file mode 100644 index 0000000..5d67d2b --- /dev/null +++ b/icons/send-arrow-up-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-arrow-up.svg b/icons/send-arrow-up.svg new file mode 100644 index 0000000..d51f969 --- /dev/null +++ b/icons/send-arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-check-fill.svg b/icons/send-check-fill.svg new file mode 100644 index 0000000..7c7dccf --- /dev/null +++ b/icons/send-check-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-check.svg b/icons/send-check.svg new file mode 100644 index 0000000..b212bcd --- /dev/null +++ b/icons/send-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-dash-fill.svg b/icons/send-dash-fill.svg new file mode 100644 index 0000000..72a61b4 --- /dev/null +++ b/icons/send-dash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-dash.svg b/icons/send-dash.svg new file mode 100644 index 0000000..1b1a86e --- /dev/null +++ b/icons/send-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-exclamation-fill.svg b/icons/send-exclamation-fill.svg new file mode 100644 index 0000000..19717e1 --- /dev/null +++ b/icons/send-exclamation-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-exclamation.svg b/icons/send-exclamation.svg new file mode 100644 index 0000000..7932e74 --- /dev/null +++ b/icons/send-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-fill.svg b/icons/send-fill.svg new file mode 100644 index 0000000..dfe4c2b --- /dev/null +++ b/icons/send-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/send-plus-fill.svg b/icons/send-plus-fill.svg new file mode 100644 index 0000000..fbaa48e --- /dev/null +++ b/icons/send-plus-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-plus.svg b/icons/send-plus.svg new file mode 100644 index 0000000..ab92d6e --- /dev/null +++ b/icons/send-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-slash-fill.svg b/icons/send-slash-fill.svg new file mode 100644 index 0000000..b70ff7b --- /dev/null +++ b/icons/send-slash-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-slash.svg b/icons/send-slash.svg new file mode 100644 index 0000000..871975b --- /dev/null +++ b/icons/send-slash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-x-fill.svg b/icons/send-x-fill.svg new file mode 100644 index 0000000..fd92bec --- /dev/null +++ b/icons/send-x-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send-x.svg b/icons/send-x.svg new file mode 100644 index 0000000..6b12a32 --- /dev/null +++ b/icons/send-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/send.svg b/icons/send.svg new file mode 100644 index 0000000..6bc7761 --- /dev/null +++ b/icons/send.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/server.svg b/icons/server.svg new file mode 100644 index 0000000..4f07ad7 --- /dev/null +++ b/icons/server.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/shadows.svg b/icons/shadows.svg new file mode 100644 index 0000000..d78db1e --- /dev/null +++ b/icons/shadows.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/share-fill.svg b/icons/share-fill.svg new file mode 100644 index 0000000..ee432ec --- /dev/null +++ b/icons/share-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/share.svg b/icons/share.svg new file mode 100644 index 0000000..9d9718e --- /dev/null +++ b/icons/share.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-check.svg b/icons/shield-check.svg new file mode 100644 index 0000000..efac2af --- /dev/null +++ b/icons/shield-check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield-exclamation.svg b/icons/shield-exclamation.svg new file mode 100644 index 0000000..60aaafd --- /dev/null +++ b/icons/shield-exclamation.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield-fill-check.svg b/icons/shield-fill-check.svg new file mode 100644 index 0000000..4ad8322 --- /dev/null +++ b/icons/shield-fill-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-fill-exclamation.svg b/icons/shield-fill-exclamation.svg new file mode 100644 index 0000000..f8312c1 --- /dev/null +++ b/icons/shield-fill-exclamation.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-fill-minus.svg b/icons/shield-fill-minus.svg new file mode 100644 index 0000000..6c5abc5 --- /dev/null +++ b/icons/shield-fill-minus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-fill-plus.svg b/icons/shield-fill-plus.svg new file mode 100644 index 0000000..0e4dc32 --- /dev/null +++ b/icons/shield-fill-plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-fill-x.svg b/icons/shield-fill-x.svg new file mode 100644 index 0000000..75815db --- /dev/null +++ b/icons/shield-fill-x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-fill.svg b/icons/shield-fill.svg new file mode 100644 index 0000000..2b7dc11 --- /dev/null +++ b/icons/shield-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-lock-fill.svg b/icons/shield-lock-fill.svg new file mode 100644 index 0000000..9d2b94f --- /dev/null +++ b/icons/shield-lock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-lock.svg b/icons/shield-lock.svg new file mode 100644 index 0000000..b1eb415 --- /dev/null +++ b/icons/shield-lock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield-minus.svg b/icons/shield-minus.svg new file mode 100644 index 0000000..61a513a --- /dev/null +++ b/icons/shield-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield-plus.svg b/icons/shield-plus.svg new file mode 100644 index 0000000..9c7a962 --- /dev/null +++ b/icons/shield-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield-shaded.svg b/icons/shield-shaded.svg new file mode 100644 index 0000000..2acba87 --- /dev/null +++ b/icons/shield-shaded.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-slash-fill.svg b/icons/shield-slash-fill.svg new file mode 100644 index 0000000..a11b0c2 --- /dev/null +++ b/icons/shield-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-slash.svg b/icons/shield-slash.svg new file mode 100644 index 0000000..abfbbd6 --- /dev/null +++ b/icons/shield-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shield-x.svg b/icons/shield-x.svg new file mode 100644 index 0000000..038263e --- /dev/null +++ b/icons/shield-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/shield.svg b/icons/shield.svg new file mode 100644 index 0000000..97d95c0 --- /dev/null +++ b/icons/shield.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shift-fill.svg b/icons/shift-fill.svg new file mode 100644 index 0000000..2146340 --- /dev/null +++ b/icons/shift-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shift.svg b/icons/shift.svg new file mode 100644 index 0000000..dfef17a --- /dev/null +++ b/icons/shift.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shop-window.svg b/icons/shop-window.svg new file mode 100644 index 0000000..d135934 --- /dev/null +++ b/icons/shop-window.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shop.svg b/icons/shop.svg new file mode 100644 index 0000000..73fb3d0 --- /dev/null +++ b/icons/shop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/shuffle.svg b/icons/shuffle.svg new file mode 100644 index 0000000..3a0716f --- /dev/null +++ b/icons/shuffle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-dead-end-fill.svg b/icons/sign-dead-end-fill.svg new file mode 100644 index 0000000..665a938 --- /dev/null +++ b/icons/sign-dead-end-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-dead-end.svg b/icons/sign-dead-end.svg new file mode 100644 index 0000000..9de2e96 --- /dev/null +++ b/icons/sign-dead-end.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-do-not-enter-fill.svg b/icons/sign-do-not-enter-fill.svg new file mode 100644 index 0000000..8d9d39f --- /dev/null +++ b/icons/sign-do-not-enter-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-do-not-enter.svg b/icons/sign-do-not-enter.svg new file mode 100644 index 0000000..78c9b89 --- /dev/null +++ b/icons/sign-do-not-enter.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-intersection-fill.svg b/icons/sign-intersection-fill.svg new file mode 100644 index 0000000..4e990dc --- /dev/null +++ b/icons/sign-intersection-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-intersection-side-fill.svg b/icons/sign-intersection-side-fill.svg new file mode 100644 index 0000000..4b75b78 --- /dev/null +++ b/icons/sign-intersection-side-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-intersection-side.svg b/icons/sign-intersection-side.svg new file mode 100644 index 0000000..d5a9bd9 --- /dev/null +++ b/icons/sign-intersection-side.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-intersection-t-fill.svg b/icons/sign-intersection-t-fill.svg new file mode 100644 index 0000000..6fb9f61 --- /dev/null +++ b/icons/sign-intersection-t-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-intersection-t.svg b/icons/sign-intersection-t.svg new file mode 100644 index 0000000..130866f --- /dev/null +++ b/icons/sign-intersection-t.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-intersection-y-fill.svg b/icons/sign-intersection-y-fill.svg new file mode 100644 index 0000000..316d16e --- /dev/null +++ b/icons/sign-intersection-y-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-intersection-y.svg b/icons/sign-intersection-y.svg new file mode 100644 index 0000000..ca1d26a --- /dev/null +++ b/icons/sign-intersection-y.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-intersection.svg b/icons/sign-intersection.svg new file mode 100644 index 0000000..5403c90 --- /dev/null +++ b/icons/sign-intersection.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-merge-left-fill.svg b/icons/sign-merge-left-fill.svg new file mode 100644 index 0000000..6f1a2d3 --- /dev/null +++ b/icons/sign-merge-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-merge-left.svg b/icons/sign-merge-left.svg new file mode 100644 index 0000000..e137821 --- /dev/null +++ b/icons/sign-merge-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-merge-right-fill.svg b/icons/sign-merge-right-fill.svg new file mode 100644 index 0000000..d84a22f --- /dev/null +++ b/icons/sign-merge-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-merge-right.svg b/icons/sign-merge-right.svg new file mode 100644 index 0000000..bb5992e --- /dev/null +++ b/icons/sign-merge-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-no-left-turn-fill.svg b/icons/sign-no-left-turn-fill.svg new file mode 100644 index 0000000..2a74d7d --- /dev/null +++ b/icons/sign-no-left-turn-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-no-left-turn.svg b/icons/sign-no-left-turn.svg new file mode 100644 index 0000000..658f516 --- /dev/null +++ b/icons/sign-no-left-turn.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-no-parking-fill.svg b/icons/sign-no-parking-fill.svg new file mode 100644 index 0000000..db8a80a --- /dev/null +++ b/icons/sign-no-parking-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-no-parking.svg b/icons/sign-no-parking.svg new file mode 100644 index 0000000..559e73e --- /dev/null +++ b/icons/sign-no-parking.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-no-right-turn-fill.svg b/icons/sign-no-right-turn-fill.svg new file mode 100644 index 0000000..05dd666 --- /dev/null +++ b/icons/sign-no-right-turn-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-no-right-turn.svg b/icons/sign-no-right-turn.svg new file mode 100644 index 0000000..f55cd9a --- /dev/null +++ b/icons/sign-no-right-turn.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-railroad-fill.svg b/icons/sign-railroad-fill.svg new file mode 100644 index 0000000..b51b8e9 --- /dev/null +++ b/icons/sign-railroad-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sign-railroad.svg b/icons/sign-railroad.svg new file mode 100644 index 0000000..2c4065d --- /dev/null +++ b/icons/sign-railroad.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-stop-fill.svg b/icons/sign-stop-fill.svg new file mode 100644 index 0000000..76ad911 --- /dev/null +++ b/icons/sign-stop-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-stop-lights-fill.svg b/icons/sign-stop-lights-fill.svg new file mode 100644 index 0000000..6c1470a --- /dev/null +++ b/icons/sign-stop-lights-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-stop-lights.svg b/icons/sign-stop-lights.svg new file mode 100644 index 0000000..5465d81 --- /dev/null +++ b/icons/sign-stop-lights.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-stop.svg b/icons/sign-stop.svg new file mode 100644 index 0000000..5dae2e3 --- /dev/null +++ b/icons/sign-stop.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sign-turn-left-fill.svg b/icons/sign-turn-left-fill.svg new file mode 100644 index 0000000..e001fd5 --- /dev/null +++ b/icons/sign-turn-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-turn-left.svg b/icons/sign-turn-left.svg new file mode 100644 index 0000000..20bcd3a --- /dev/null +++ b/icons/sign-turn-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-turn-right-fill.svg b/icons/sign-turn-right-fill.svg new file mode 100644 index 0000000..ce68a34 --- /dev/null +++ b/icons/sign-turn-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-turn-right.svg b/icons/sign-turn-right.svg new file mode 100644 index 0000000..3d0e3d6 --- /dev/null +++ b/icons/sign-turn-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-turn-slight-left-fill.svg b/icons/sign-turn-slight-left-fill.svg new file mode 100644 index 0000000..e891308 --- /dev/null +++ b/icons/sign-turn-slight-left-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-turn-slight-left.svg b/icons/sign-turn-slight-left.svg new file mode 100644 index 0000000..9f97ba0 --- /dev/null +++ b/icons/sign-turn-slight-left.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-turn-slight-right-fill.svg b/icons/sign-turn-slight-right-fill.svg new file mode 100644 index 0000000..e7acbb2 --- /dev/null +++ b/icons/sign-turn-slight-right-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sign-turn-slight-right.svg b/icons/sign-turn-slight-right.svg new file mode 100644 index 0000000..7e105fa --- /dev/null +++ b/icons/sign-turn-slight-right.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-yield-fill.svg b/icons/sign-yield-fill.svg new file mode 100644 index 0000000..31e65d1 --- /dev/null +++ b/icons/sign-yield-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sign-yield.svg b/icons/sign-yield.svg new file mode 100644 index 0000000..6b1d6b9 --- /dev/null +++ b/icons/sign-yield.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/signal.svg b/icons/signal.svg new file mode 100644 index 0000000..a1720c0 --- /dev/null +++ b/icons/signal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost-2-fill.svg b/icons/signpost-2-fill.svg new file mode 100644 index 0000000..acf0243 --- /dev/null +++ b/icons/signpost-2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost-2.svg b/icons/signpost-2.svg new file mode 100644 index 0000000..b4e92f1 --- /dev/null +++ b/icons/signpost-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost-fill.svg b/icons/signpost-fill.svg new file mode 100644 index 0000000..bb8e97b --- /dev/null +++ b/icons/signpost-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost-split-fill.svg b/icons/signpost-split-fill.svg new file mode 100644 index 0000000..bc164a7 --- /dev/null +++ b/icons/signpost-split-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost-split.svg b/icons/signpost-split.svg new file mode 100644 index 0000000..431ed7d --- /dev/null +++ b/icons/signpost-split.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/signpost.svg b/icons/signpost.svg new file mode 100644 index 0000000..be4623e --- /dev/null +++ b/icons/signpost.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sim-fill.svg b/icons/sim-fill.svg new file mode 100644 index 0000000..5ef9079 --- /dev/null +++ b/icons/sim-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sim-slash-fill.svg b/icons/sim-slash-fill.svg new file mode 100644 index 0000000..46fa2a4 --- /dev/null +++ b/icons/sim-slash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sim-slash.svg b/icons/sim-slash.svg new file mode 100644 index 0000000..f58ba05 --- /dev/null +++ b/icons/sim-slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sim.svg b/icons/sim.svg new file mode 100644 index 0000000..d5d26ad --- /dev/null +++ b/icons/sim.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sina-weibo.svg b/icons/sina-weibo.svg new file mode 100644 index 0000000..a150dff --- /dev/null +++ b/icons/sina-weibo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-backward-btn-fill.svg b/icons/skip-backward-btn-fill.svg new file mode 100644 index 0000000..6949530 --- /dev/null +++ b/icons/skip-backward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-backward-btn.svg b/icons/skip-backward-btn.svg new file mode 100644 index 0000000..079e453 --- /dev/null +++ b/icons/skip-backward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-backward-circle-fill.svg b/icons/skip-backward-circle-fill.svg new file mode 100644 index 0000000..d069136 --- /dev/null +++ b/icons/skip-backward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-backward-circle.svg b/icons/skip-backward-circle.svg new file mode 100644 index 0000000..6afde38 --- /dev/null +++ b/icons/skip-backward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-backward-fill.svg b/icons/skip-backward-fill.svg new file mode 100644 index 0000000..f0813b5 --- /dev/null +++ b/icons/skip-backward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-backward.svg b/icons/skip-backward.svg new file mode 100644 index 0000000..1322cab --- /dev/null +++ b/icons/skip-backward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-end-btn-fill.svg b/icons/skip-end-btn-fill.svg new file mode 100644 index 0000000..aaf2b54 --- /dev/null +++ b/icons/skip-end-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-end-btn.svg b/icons/skip-end-btn.svg new file mode 100644 index 0000000..86e8880 --- /dev/null +++ b/icons/skip-end-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-end-circle-fill.svg b/icons/skip-end-circle-fill.svg new file mode 100644 index 0000000..a45aa19 --- /dev/null +++ b/icons/skip-end-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-end-circle.svg b/icons/skip-end-circle.svg new file mode 100644 index 0000000..565d205 --- /dev/null +++ b/icons/skip-end-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-end-fill.svg b/icons/skip-end-fill.svg new file mode 100644 index 0000000..122d4bd --- /dev/null +++ b/icons/skip-end-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-end.svg b/icons/skip-end.svg new file mode 100644 index 0000000..ecf7d56 --- /dev/null +++ b/icons/skip-end.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-forward-btn-fill.svg b/icons/skip-forward-btn-fill.svg new file mode 100644 index 0000000..99d51ab --- /dev/null +++ b/icons/skip-forward-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-forward-btn.svg b/icons/skip-forward-btn.svg new file mode 100644 index 0000000..8b97dc4 --- /dev/null +++ b/icons/skip-forward-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-forward-circle-fill.svg b/icons/skip-forward-circle-fill.svg new file mode 100644 index 0000000..c9a8fd7 --- /dev/null +++ b/icons/skip-forward-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-forward-circle.svg b/icons/skip-forward-circle.svg new file mode 100644 index 0000000..9dacaed --- /dev/null +++ b/icons/skip-forward-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-forward-fill.svg b/icons/skip-forward-fill.svg new file mode 100644 index 0000000..20534ec --- /dev/null +++ b/icons/skip-forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-forward.svg b/icons/skip-forward.svg new file mode 100644 index 0000000..16d6a82 --- /dev/null +++ b/icons/skip-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-start-btn-fill.svg b/icons/skip-start-btn-fill.svg new file mode 100644 index 0000000..09230dd --- /dev/null +++ b/icons/skip-start-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-start-btn.svg b/icons/skip-start-btn.svg new file mode 100644 index 0000000..ca8ced2 --- /dev/null +++ b/icons/skip-start-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-start-circle-fill.svg b/icons/skip-start-circle-fill.svg new file mode 100644 index 0000000..8aa2ef9 --- /dev/null +++ b/icons/skip-start-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-start-circle.svg b/icons/skip-start-circle.svg new file mode 100644 index 0000000..65e67c8 --- /dev/null +++ b/icons/skip-start-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/skip-start-fill.svg b/icons/skip-start-fill.svg new file mode 100644 index 0000000..930c664 --- /dev/null +++ b/icons/skip-start-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skip-start.svg b/icons/skip-start.svg new file mode 100644 index 0000000..d953a15 --- /dev/null +++ b/icons/skip-start.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/skype.svg b/icons/skype.svg new file mode 100644 index 0000000..97d85ba --- /dev/null +++ b/icons/skype.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/slack.svg b/icons/slack.svg new file mode 100644 index 0000000..69c3feb --- /dev/null +++ b/icons/slack.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/slash-circle-fill.svg b/icons/slash-circle-fill.svg new file mode 100644 index 0000000..ed60822 --- /dev/null +++ b/icons/slash-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/slash-circle.svg b/icons/slash-circle.svg new file mode 100644 index 0000000..f6756f8 --- /dev/null +++ b/icons/slash-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/slash-lg.svg b/icons/slash-lg.svg new file mode 100644 index 0000000..b75b776 --- /dev/null +++ b/icons/slash-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/slash-square-fill.svg b/icons/slash-square-fill.svg new file mode 100644 index 0000000..0f31d48 --- /dev/null +++ b/icons/slash-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/slash-square.svg b/icons/slash-square.svg new file mode 100644 index 0000000..c85b1cc --- /dev/null +++ b/icons/slash-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/slash.svg b/icons/slash.svg new file mode 100644 index 0000000..586a92a --- /dev/null +++ b/icons/slash.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sliders.svg b/icons/sliders.svg new file mode 100644 index 0000000..beff9e4 --- /dev/null +++ b/icons/sliders.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sliders2-vertical.svg b/icons/sliders2-vertical.svg new file mode 100644 index 0000000..bdc828d --- /dev/null +++ b/icons/sliders2-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sliders2.svg b/icons/sliders2.svg new file mode 100644 index 0000000..0adce19 --- /dev/null +++ b/icons/sliders2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/smartwatch.svg b/icons/smartwatch.svg new file mode 100644 index 0000000..9e4a024 --- /dev/null +++ b/icons/smartwatch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/snapchat.svg b/icons/snapchat.svg new file mode 100644 index 0000000..b175731 --- /dev/null +++ b/icons/snapchat.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/snow.svg b/icons/snow.svg new file mode 100644 index 0000000..70bc89c --- /dev/null +++ b/icons/snow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/snow2.svg b/icons/snow2.svg new file mode 100644 index 0000000..ac4706a --- /dev/null +++ b/icons/snow2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/snow3.svg b/icons/snow3.svg new file mode 100644 index 0000000..62fd515 --- /dev/null +++ b/icons/snow3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sort-alpha-down-alt.svg b/icons/sort-alpha-down-alt.svg new file mode 100644 index 0000000..ebf01ed --- /dev/null +++ b/icons/sort-alpha-down-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sort-alpha-down.svg b/icons/sort-alpha-down.svg new file mode 100644 index 0000000..869f880 --- /dev/null +++ b/icons/sort-alpha-down.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sort-alpha-up-alt.svg b/icons/sort-alpha-up-alt.svg new file mode 100644 index 0000000..588e058 --- /dev/null +++ b/icons/sort-alpha-up-alt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sort-alpha-up.svg b/icons/sort-alpha-up.svg new file mode 100644 index 0000000..199766f --- /dev/null +++ b/icons/sort-alpha-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sort-down-alt.svg b/icons/sort-down-alt.svg new file mode 100644 index 0000000..5ff1617 --- /dev/null +++ b/icons/sort-down-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sort-down.svg b/icons/sort-down.svg new file mode 100644 index 0000000..91ffd73 --- /dev/null +++ b/icons/sort-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sort-numeric-down-alt.svg b/icons/sort-numeric-down-alt.svg new file mode 100644 index 0000000..74d6122 --- /dev/null +++ b/icons/sort-numeric-down-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sort-numeric-down.svg b/icons/sort-numeric-down.svg new file mode 100644 index 0000000..49637c5 --- /dev/null +++ b/icons/sort-numeric-down.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sort-numeric-up-alt.svg b/icons/sort-numeric-up-alt.svg new file mode 100644 index 0000000..307ced4 --- /dev/null +++ b/icons/sort-numeric-up-alt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sort-numeric-up.svg b/icons/sort-numeric-up.svg new file mode 100644 index 0000000..2758ee9 --- /dev/null +++ b/icons/sort-numeric-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/sort-up-alt.svg b/icons/sort-up-alt.svg new file mode 100644 index 0000000..6ac5260 --- /dev/null +++ b/icons/sort-up-alt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sort-up.svg b/icons/sort-up.svg new file mode 100644 index 0000000..06a991f --- /dev/null +++ b/icons/sort-up.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/soundwave.svg b/icons/soundwave.svg new file mode 100644 index 0000000..e48a5e4 --- /dev/null +++ b/icons/soundwave.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sourceforge.svg b/icons/sourceforge.svg new file mode 100644 index 0000000..b0f2a09 --- /dev/null +++ b/icons/sourceforge.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/speaker-fill.svg b/icons/speaker-fill.svg new file mode 100644 index 0000000..79f4739 --- /dev/null +++ b/icons/speaker-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/speaker.svg b/icons/speaker.svg new file mode 100644 index 0000000..5e4e33d --- /dev/null +++ b/icons/speaker.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/speedometer.svg b/icons/speedometer.svg new file mode 100644 index 0000000..7ca71ad --- /dev/null +++ b/icons/speedometer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/speedometer2.svg b/icons/speedometer2.svg new file mode 100644 index 0000000..7ff7e21 --- /dev/null +++ b/icons/speedometer2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/spellcheck.svg b/icons/spellcheck.svg new file mode 100644 index 0000000..ca37840 --- /dev/null +++ b/icons/spellcheck.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/spotify.svg b/icons/spotify.svg new file mode 100644 index 0000000..3ba2974 --- /dev/null +++ b/icons/spotify.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/square-fill.svg b/icons/square-fill.svg new file mode 100644 index 0000000..32c3249 --- /dev/null +++ b/icons/square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/square-half.svg b/icons/square-half.svg new file mode 100644 index 0000000..789eb61 --- /dev/null +++ b/icons/square-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/square.svg b/icons/square.svg new file mode 100644 index 0000000..d1ca3c5 --- /dev/null +++ b/icons/square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stack-overflow.svg b/icons/stack-overflow.svg new file mode 100644 index 0000000..e3e149c --- /dev/null +++ b/icons/stack-overflow.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stack.svg b/icons/stack.svg new file mode 100644 index 0000000..a689b21 --- /dev/null +++ b/icons/stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/star-fill.svg b/icons/star-fill.svg new file mode 100644 index 0000000..3252816 --- /dev/null +++ b/icons/star-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/star-half.svg b/icons/star-half.svg new file mode 100644 index 0000000..5a7fa24 --- /dev/null +++ b/icons/star-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/star.svg b/icons/star.svg new file mode 100644 index 0000000..73296f3 --- /dev/null +++ b/icons/star.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stars.svg b/icons/stars.svg new file mode 100644 index 0000000..a8ded4d --- /dev/null +++ b/icons/stars.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/steam.svg b/icons/steam.svg new file mode 100644 index 0000000..6db9687 --- /dev/null +++ b/icons/steam.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stickies-fill.svg b/icons/stickies-fill.svg new file mode 100644 index 0000000..568326e --- /dev/null +++ b/icons/stickies-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stickies.svg b/icons/stickies.svg new file mode 100644 index 0000000..034440e --- /dev/null +++ b/icons/stickies.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/sticky-fill.svg b/icons/sticky-fill.svg new file mode 100644 index 0000000..8314074 --- /dev/null +++ b/icons/sticky-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sticky.svg b/icons/sticky.svg new file mode 100644 index 0000000..9a08780 --- /dev/null +++ b/icons/sticky.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stop-btn-fill.svg b/icons/stop-btn-fill.svg new file mode 100644 index 0000000..20352df --- /dev/null +++ b/icons/stop-btn-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stop-btn.svg b/icons/stop-btn.svg new file mode 100644 index 0000000..a3b8743 --- /dev/null +++ b/icons/stop-btn.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stop-circle-fill.svg b/icons/stop-circle-fill.svg new file mode 100644 index 0000000..8b4aba1 --- /dev/null +++ b/icons/stop-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stop-circle.svg b/icons/stop-circle.svg new file mode 100644 index 0000000..819ab28 --- /dev/null +++ b/icons/stop-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stop-fill.svg b/icons/stop-fill.svg new file mode 100644 index 0000000..510ca14 --- /dev/null +++ b/icons/stop-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stop.svg b/icons/stop.svg new file mode 100644 index 0000000..28c9ca1 --- /dev/null +++ b/icons/stop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stoplights-fill.svg b/icons/stoplights-fill.svg new file mode 100644 index 0000000..0d4fbea --- /dev/null +++ b/icons/stoplights-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stoplights.svg b/icons/stoplights.svg new file mode 100644 index 0000000..8845ed4 --- /dev/null +++ b/icons/stoplights.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/stopwatch-fill.svg b/icons/stopwatch-fill.svg new file mode 100644 index 0000000..d286a50 --- /dev/null +++ b/icons/stopwatch-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stopwatch.svg b/icons/stopwatch.svg new file mode 100644 index 0000000..d20fc8e --- /dev/null +++ b/icons/stopwatch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/strava.svg b/icons/strava.svg new file mode 100644 index 0000000..7f1f9fb --- /dev/null +++ b/icons/strava.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/stripe.svg b/icons/stripe.svg new file mode 100644 index 0000000..4b69c80 --- /dev/null +++ b/icons/stripe.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/subscript.svg b/icons/subscript.svg new file mode 100644 index 0000000..8492a33 --- /dev/null +++ b/icons/subscript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/substack.svg b/icons/substack.svg new file mode 100644 index 0000000..266d00a --- /dev/null +++ b/icons/substack.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/subtract.svg b/icons/subtract.svg new file mode 100644 index 0000000..b5314c4 --- /dev/null +++ b/icons/subtract.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-club-fill.svg b/icons/suit-club-fill.svg new file mode 100644 index 0000000..413575d --- /dev/null +++ b/icons/suit-club-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-club.svg b/icons/suit-club.svg new file mode 100644 index 0000000..2ef4205 --- /dev/null +++ b/icons/suit-club.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-diamond-fill.svg b/icons/suit-diamond-fill.svg new file mode 100644 index 0000000..cfb4a20 --- /dev/null +++ b/icons/suit-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-diamond.svg b/icons/suit-diamond.svg new file mode 100644 index 0000000..ef69774 --- /dev/null +++ b/icons/suit-diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-heart-fill.svg b/icons/suit-heart-fill.svg new file mode 100644 index 0000000..ce19750 --- /dev/null +++ b/icons/suit-heart-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-heart.svg b/icons/suit-heart.svg new file mode 100644 index 0000000..7a4328f --- /dev/null +++ b/icons/suit-heart.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-spade-fill.svg b/icons/suit-spade-fill.svg new file mode 100644 index 0000000..3651b53 --- /dev/null +++ b/icons/suit-spade-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suit-spade.svg b/icons/suit-spade.svg new file mode 100644 index 0000000..d29ac58 --- /dev/null +++ b/icons/suit-spade.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suitcase-fill.svg b/icons/suitcase-fill.svg new file mode 100644 index 0000000..04667c4 --- /dev/null +++ b/icons/suitcase-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suitcase-lg-fill.svg b/icons/suitcase-lg-fill.svg new file mode 100644 index 0000000..a6ccef3 --- /dev/null +++ b/icons/suitcase-lg-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suitcase-lg.svg b/icons/suitcase-lg.svg new file mode 100644 index 0000000..e68b21f --- /dev/null +++ b/icons/suitcase-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suitcase.svg b/icons/suitcase.svg new file mode 100644 index 0000000..6bb4744 --- /dev/null +++ b/icons/suitcase.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/suitcase2-fill.svg b/icons/suitcase2-fill.svg new file mode 100644 index 0000000..e678003 --- /dev/null +++ b/icons/suitcase2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/suitcase2.svg b/icons/suitcase2.svg new file mode 100644 index 0000000..6126c82 --- /dev/null +++ b/icons/suitcase2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sun-fill.svg b/icons/sun-fill.svg new file mode 100644 index 0000000..10ef7ae --- /dev/null +++ b/icons/sun-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sun.svg b/icons/sun.svg new file mode 100644 index 0000000..35088f6 --- /dev/null +++ b/icons/sun.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sunglasses.svg b/icons/sunglasses.svg new file mode 100644 index 0000000..83417d7 --- /dev/null +++ b/icons/sunglasses.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sunrise-fill.svg b/icons/sunrise-fill.svg new file mode 100644 index 0000000..6f33f8e --- /dev/null +++ b/icons/sunrise-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sunrise.svg b/icons/sunrise.svg new file mode 100644 index 0000000..4136e19 --- /dev/null +++ b/icons/sunrise.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sunset-fill.svg b/icons/sunset-fill.svg new file mode 100644 index 0000000..0cc2ac7 --- /dev/null +++ b/icons/sunset-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/sunset.svg b/icons/sunset.svg new file mode 100644 index 0000000..cc83e15 --- /dev/null +++ b/icons/sunset.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/superscript.svg b/icons/superscript.svg new file mode 100644 index 0000000..36095d3 --- /dev/null +++ b/icons/superscript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/symmetry-horizontal.svg b/icons/symmetry-horizontal.svg new file mode 100644 index 0000000..bb1742b --- /dev/null +++ b/icons/symmetry-horizontal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/symmetry-vertical.svg b/icons/symmetry-vertical.svg new file mode 100644 index 0000000..a89412b --- /dev/null +++ b/icons/symmetry-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/table.svg b/icons/table.svg new file mode 100644 index 0000000..9de46f1 --- /dev/null +++ b/icons/table.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tablet-fill.svg b/icons/tablet-fill.svg new file mode 100644 index 0000000..d2b65f3 --- /dev/null +++ b/icons/tablet-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tablet-landscape-fill.svg b/icons/tablet-landscape-fill.svg new file mode 100644 index 0000000..8e2bac5 --- /dev/null +++ b/icons/tablet-landscape-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tablet-landscape.svg b/icons/tablet-landscape.svg new file mode 100644 index 0000000..fd0efac --- /dev/null +++ b/icons/tablet-landscape.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/tablet.svg b/icons/tablet.svg new file mode 100644 index 0000000..05b9d8e --- /dev/null +++ b/icons/tablet.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/tag-fill.svg b/icons/tag-fill.svg new file mode 100644 index 0000000..5871f00 --- /dev/null +++ b/icons/tag-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tag.svg b/icons/tag.svg new file mode 100644 index 0000000..192c0e2 --- /dev/null +++ b/icons/tag.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/tags-fill.svg b/icons/tags-fill.svg new file mode 100644 index 0000000..9d45e3b --- /dev/null +++ b/icons/tags-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/tags.svg b/icons/tags.svg new file mode 100644 index 0000000..493a20d --- /dev/null +++ b/icons/tags.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/taxi-front-fill.svg b/icons/taxi-front-fill.svg new file mode 100644 index 0000000..3425346 --- /dev/null +++ b/icons/taxi-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/taxi-front.svg b/icons/taxi-front.svg new file mode 100644 index 0000000..f87d0fa --- /dev/null +++ b/icons/taxi-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/telegram.svg b/icons/telegram.svg new file mode 100644 index 0000000..f16eace --- /dev/null +++ b/icons/telegram.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-fill.svg b/icons/telephone-fill.svg new file mode 100644 index 0000000..9882b23 --- /dev/null +++ b/icons/telephone-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-forward-fill.svg b/icons/telephone-forward-fill.svg new file mode 100644 index 0000000..20ac8d3 --- /dev/null +++ b/icons/telephone-forward-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-forward.svg b/icons/telephone-forward.svg new file mode 100644 index 0000000..cb58fcd --- /dev/null +++ b/icons/telephone-forward.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-inbound-fill.svg b/icons/telephone-inbound-fill.svg new file mode 100644 index 0000000..fef3e26 --- /dev/null +++ b/icons/telephone-inbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-inbound.svg b/icons/telephone-inbound.svg new file mode 100644 index 0000000..4a86476 --- /dev/null +++ b/icons/telephone-inbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-minus-fill.svg b/icons/telephone-minus-fill.svg new file mode 100644 index 0000000..277cae8 --- /dev/null +++ b/icons/telephone-minus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-minus.svg b/icons/telephone-minus.svg new file mode 100644 index 0000000..254b633 --- /dev/null +++ b/icons/telephone-minus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/telephone-outbound-fill.svg b/icons/telephone-outbound-fill.svg new file mode 100644 index 0000000..0530d64 --- /dev/null +++ b/icons/telephone-outbound-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-outbound.svg b/icons/telephone-outbound.svg new file mode 100644 index 0000000..da39faa --- /dev/null +++ b/icons/telephone-outbound.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-plus-fill.svg b/icons/telephone-plus-fill.svg new file mode 100644 index 0000000..25742d9 --- /dev/null +++ b/icons/telephone-plus-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-plus.svg b/icons/telephone-plus.svg new file mode 100644 index 0000000..ed0f601 --- /dev/null +++ b/icons/telephone-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/telephone-x-fill.svg b/icons/telephone-x-fill.svg new file mode 100644 index 0000000..a7e881c --- /dev/null +++ b/icons/telephone-x-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/telephone-x.svg b/icons/telephone-x.svg new file mode 100644 index 0000000..e21c662 --- /dev/null +++ b/icons/telephone-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/telephone.svg b/icons/telephone.svg new file mode 100644 index 0000000..201bcff --- /dev/null +++ b/icons/telephone.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tencent-qq.svg b/icons/tencent-qq.svg new file mode 100644 index 0000000..f11f5e4 --- /dev/null +++ b/icons/tencent-qq.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/terminal-dash.svg b/icons/terminal-dash.svg new file mode 100644 index 0000000..bd0b3db --- /dev/null +++ b/icons/terminal-dash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/terminal-fill.svg b/icons/terminal-fill.svg new file mode 100644 index 0000000..a06303f --- /dev/null +++ b/icons/terminal-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/terminal-plus.svg b/icons/terminal-plus.svg new file mode 100644 index 0000000..c53fdff --- /dev/null +++ b/icons/terminal-plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/terminal-split.svg b/icons/terminal-split.svg new file mode 100644 index 0000000..4b95975 --- /dev/null +++ b/icons/terminal-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/terminal-x.svg b/icons/terminal-x.svg new file mode 100644 index 0000000..ca799a4 --- /dev/null +++ b/icons/terminal-x.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/terminal.svg b/icons/terminal.svg new file mode 100644 index 0000000..44b39e5 --- /dev/null +++ b/icons/terminal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/text-center.svg b/icons/text-center.svg new file mode 100644 index 0000000..057abc4 --- /dev/null +++ b/icons/text-center.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-indent-left.svg b/icons/text-indent-left.svg new file mode 100644 index 0000000..3a22661 --- /dev/null +++ b/icons/text-indent-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-indent-right.svg b/icons/text-indent-right.svg new file mode 100644 index 0000000..09512d3 --- /dev/null +++ b/icons/text-indent-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-left.svg b/icons/text-left.svg new file mode 100644 index 0000000..615db68 --- /dev/null +++ b/icons/text-left.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-paragraph.svg b/icons/text-paragraph.svg new file mode 100644 index 0000000..ba6296d --- /dev/null +++ b/icons/text-paragraph.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-right.svg b/icons/text-right.svg new file mode 100644 index 0000000..b6148f8 --- /dev/null +++ b/icons/text-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/text-wrap.svg b/icons/text-wrap.svg new file mode 100644 index 0000000..6bf272c --- /dev/null +++ b/icons/text-wrap.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/textarea-resize.svg b/icons/textarea-resize.svg new file mode 100644 index 0000000..9872a78 --- /dev/null +++ b/icons/textarea-resize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/textarea-t.svg b/icons/textarea-t.svg new file mode 100644 index 0000000..2a04d25 --- /dev/null +++ b/icons/textarea-t.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/textarea.svg b/icons/textarea.svg new file mode 100644 index 0000000..b9823b2 --- /dev/null +++ b/icons/textarea.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/thermometer-half.svg b/icons/thermometer-half.svg new file mode 100644 index 0000000..0c87815 --- /dev/null +++ b/icons/thermometer-half.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/thermometer-high.svg b/icons/thermometer-high.svg new file mode 100644 index 0000000..4b23a48 --- /dev/null +++ b/icons/thermometer-high.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/thermometer-low.svg b/icons/thermometer-low.svg new file mode 100644 index 0000000..7f2f5b9 --- /dev/null +++ b/icons/thermometer-low.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/thermometer-snow.svg b/icons/thermometer-snow.svg new file mode 100644 index 0000000..509c79d --- /dev/null +++ b/icons/thermometer-snow.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/thermometer-sun.svg b/icons/thermometer-sun.svg new file mode 100644 index 0000000..a028976 --- /dev/null +++ b/icons/thermometer-sun.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/thermometer.svg b/icons/thermometer.svg new file mode 100644 index 0000000..26a0b82 --- /dev/null +++ b/icons/thermometer.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/threads-fill.svg b/icons/threads-fill.svg new file mode 100644 index 0000000..5125e60 --- /dev/null +++ b/icons/threads-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/threads.svg b/icons/threads.svg new file mode 100644 index 0000000..aaff840 --- /dev/null +++ b/icons/threads.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/three-dots-vertical.svg b/icons/three-dots-vertical.svg new file mode 100644 index 0000000..66f2528 --- /dev/null +++ b/icons/three-dots-vertical.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/three-dots.svg b/icons/three-dots.svg new file mode 100644 index 0000000..9f7667a --- /dev/null +++ b/icons/three-dots.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/thunderbolt-fill.svg b/icons/thunderbolt-fill.svg new file mode 100644 index 0000000..6bea1f5 --- /dev/null +++ b/icons/thunderbolt-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/thunderbolt.svg b/icons/thunderbolt.svg new file mode 100644 index 0000000..86c0d1d --- /dev/null +++ b/icons/thunderbolt.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ticket-detailed-fill.svg b/icons/ticket-detailed-fill.svg new file mode 100644 index 0000000..ecde857 --- /dev/null +++ b/icons/ticket-detailed-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ticket-detailed.svg b/icons/ticket-detailed.svg new file mode 100644 index 0000000..21f6d5e --- /dev/null +++ b/icons/ticket-detailed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ticket-fill.svg b/icons/ticket-fill.svg new file mode 100644 index 0000000..26b0dd3 --- /dev/null +++ b/icons/ticket-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ticket-perforated-fill.svg b/icons/ticket-perforated-fill.svg new file mode 100644 index 0000000..d41dfc9 --- /dev/null +++ b/icons/ticket-perforated-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ticket-perforated.svg b/icons/ticket-perforated.svg new file mode 100644 index 0000000..d84999c --- /dev/null +++ b/icons/ticket-perforated.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/ticket.svg b/icons/ticket.svg new file mode 100644 index 0000000..547b83d --- /dev/null +++ b/icons/ticket.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tiktok.svg b/icons/tiktok.svg new file mode 100644 index 0000000..6332ae6 --- /dev/null +++ b/icons/tiktok.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/toggle-off.svg b/icons/toggle-off.svg new file mode 100644 index 0000000..299ede3 --- /dev/null +++ b/icons/toggle-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/toggle-on.svg b/icons/toggle-on.svg new file mode 100644 index 0000000..a18b2c0 --- /dev/null +++ b/icons/toggle-on.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/toggle2-off.svg b/icons/toggle2-off.svg new file mode 100644 index 0000000..bbfe3fd --- /dev/null +++ b/icons/toggle2-off.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/toggle2-on.svg b/icons/toggle2-on.svg new file mode 100644 index 0000000..ab47a95 --- /dev/null +++ b/icons/toggle2-on.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/toggles.svg b/icons/toggles.svg new file mode 100644 index 0000000..3e782a1 --- /dev/null +++ b/icons/toggles.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/toggles2.svg b/icons/toggles2.svg new file mode 100644 index 0000000..c3e7f3d --- /dev/null +++ b/icons/toggles2.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/tools.svg b/icons/tools.svg new file mode 100644 index 0000000..1e0d279 --- /dev/null +++ b/icons/tools.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tornado.svg b/icons/tornado.svg new file mode 100644 index 0000000..cf0c66b --- /dev/null +++ b/icons/tornado.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-freight-front-fill.svg b/icons/train-freight-front-fill.svg new file mode 100644 index 0000000..336c3b3 --- /dev/null +++ b/icons/train-freight-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-freight-front.svg b/icons/train-freight-front.svg new file mode 100644 index 0000000..b54986d --- /dev/null +++ b/icons/train-freight-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-front-fill.svg b/icons/train-front-fill.svg new file mode 100644 index 0000000..44d4023 --- /dev/null +++ b/icons/train-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-front.svg b/icons/train-front.svg new file mode 100644 index 0000000..14155d8 --- /dev/null +++ b/icons/train-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-lightrail-front-fill.svg b/icons/train-lightrail-front-fill.svg new file mode 100644 index 0000000..09c8ad2 --- /dev/null +++ b/icons/train-lightrail-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/train-lightrail-front.svg b/icons/train-lightrail-front.svg new file mode 100644 index 0000000..9e12910 --- /dev/null +++ b/icons/train-lightrail-front.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/translate.svg b/icons/translate.svg new file mode 100644 index 0000000..4654968 --- /dev/null +++ b/icons/translate.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/transparency.svg b/icons/transparency.svg new file mode 100644 index 0000000..2d0429b --- /dev/null +++ b/icons/transparency.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trash-fill.svg b/icons/trash-fill.svg new file mode 100644 index 0000000..de5eb64 --- /dev/null +++ b/icons/trash-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trash.svg b/icons/trash.svg new file mode 100644 index 0000000..94b98b5 --- /dev/null +++ b/icons/trash.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/trash2-fill.svg b/icons/trash2-fill.svg new file mode 100644 index 0000000..466e1c9 --- /dev/null +++ b/icons/trash2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trash2.svg b/icons/trash2.svg new file mode 100644 index 0000000..17d6ed8 --- /dev/null +++ b/icons/trash2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trash3-fill.svg b/icons/trash3-fill.svg new file mode 100644 index 0000000..4874933 --- /dev/null +++ b/icons/trash3-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trash3.svg b/icons/trash3.svg new file mode 100644 index 0000000..496ed18 --- /dev/null +++ b/icons/trash3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tree-fill.svg b/icons/tree-fill.svg new file mode 100644 index 0000000..9cbf3b1 --- /dev/null +++ b/icons/tree-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tree.svg b/icons/tree.svg new file mode 100644 index 0000000..c22a39d --- /dev/null +++ b/icons/tree.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trello.svg b/icons/trello.svg new file mode 100644 index 0000000..5d95b84 --- /dev/null +++ b/icons/trello.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/triangle-fill.svg b/icons/triangle-fill.svg new file mode 100644 index 0000000..cb21f60 --- /dev/null +++ b/icons/triangle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/triangle-half.svg b/icons/triangle-half.svg new file mode 100644 index 0000000..6a8dac3 --- /dev/null +++ b/icons/triangle-half.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/triangle.svg b/icons/triangle.svg new file mode 100644 index 0000000..d3d7312 --- /dev/null +++ b/icons/triangle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trophy-fill.svg b/icons/trophy-fill.svg new file mode 100644 index 0000000..38c9ef5 --- /dev/null +++ b/icons/trophy-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/trophy.svg b/icons/trophy.svg new file mode 100644 index 0000000..84c369f --- /dev/null +++ b/icons/trophy.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tropical-storm.svg b/icons/tropical-storm.svg new file mode 100644 index 0000000..6bfaa11 --- /dev/null +++ b/icons/tropical-storm.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/truck-flatbed.svg b/icons/truck-flatbed.svg new file mode 100644 index 0000000..5d99cfe --- /dev/null +++ b/icons/truck-flatbed.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/truck-front-fill.svg b/icons/truck-front-fill.svg new file mode 100644 index 0000000..f974683 --- /dev/null +++ b/icons/truck-front-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/truck-front.svg b/icons/truck-front.svg new file mode 100644 index 0000000..fb6abd1 --- /dev/null +++ b/icons/truck-front.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/truck.svg b/icons/truck.svg new file mode 100644 index 0000000..7b313c9 --- /dev/null +++ b/icons/truck.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tsunami.svg b/icons/tsunami.svg new file mode 100644 index 0000000..7f8ee16 --- /dev/null +++ b/icons/tsunami.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tux.svg b/icons/tux.svg new file mode 100644 index 0000000..59e505e --- /dev/null +++ b/icons/tux.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/tv-fill.svg b/icons/tv-fill.svg new file mode 100644 index 0000000..ac56fc2 --- /dev/null +++ b/icons/tv-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/tv.svg b/icons/tv.svg new file mode 100644 index 0000000..126d342 --- /dev/null +++ b/icons/tv.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/twitch.svg b/icons/twitch.svg new file mode 100644 index 0000000..e7107d9 --- /dev/null +++ b/icons/twitch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/twitter-x.svg b/icons/twitter-x.svg new file mode 100644 index 0000000..1af978c --- /dev/null +++ b/icons/twitter-x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/twitter.svg b/icons/twitter.svg new file mode 100644 index 0000000..0bee5db --- /dev/null +++ b/icons/twitter.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-bold.svg b/icons/type-bold.svg new file mode 100644 index 0000000..9ca85bc --- /dev/null +++ b/icons/type-bold.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h1.svg b/icons/type-h1.svg new file mode 100644 index 0000000..924bc1f --- /dev/null +++ b/icons/type-h1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h2.svg b/icons/type-h2.svg new file mode 100644 index 0000000..4b1df69 --- /dev/null +++ b/icons/type-h2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h3.svg b/icons/type-h3.svg new file mode 100644 index 0000000..d97df9e --- /dev/null +++ b/icons/type-h3.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h4.svg b/icons/type-h4.svg new file mode 100644 index 0000000..037d7fa --- /dev/null +++ b/icons/type-h4.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h5.svg b/icons/type-h5.svg new file mode 100644 index 0000000..9cc56e9 --- /dev/null +++ b/icons/type-h5.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-h6.svg b/icons/type-h6.svg new file mode 100644 index 0000000..b343781 --- /dev/null +++ b/icons/type-h6.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-italic.svg b/icons/type-italic.svg new file mode 100644 index 0000000..9fa7a86 --- /dev/null +++ b/icons/type-italic.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-strikethrough.svg b/icons/type-strikethrough.svg new file mode 100644 index 0000000..441beeb --- /dev/null +++ b/icons/type-strikethrough.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type-underline.svg b/icons/type-underline.svg new file mode 100644 index 0000000..6390c75 --- /dev/null +++ b/icons/type-underline.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/type.svg b/icons/type.svg new file mode 100644 index 0000000..c0803cc --- /dev/null +++ b/icons/type.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/typescript.svg b/icons/typescript.svg new file mode 100644 index 0000000..b9ca36b --- /dev/null +++ b/icons/typescript.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ubuntu.svg b/icons/ubuntu.svg new file mode 100644 index 0000000..6e5c37b --- /dev/null +++ b/icons/ubuntu.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ui-checks-grid.svg b/icons/ui-checks-grid.svg new file mode 100644 index 0000000..b0a2ea4 --- /dev/null +++ b/icons/ui-checks-grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ui-checks.svg b/icons/ui-checks.svg new file mode 100644 index 0000000..32b3053 --- /dev/null +++ b/icons/ui-checks.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ui-radios-grid.svg b/icons/ui-radios-grid.svg new file mode 100644 index 0000000..f9ac229 --- /dev/null +++ b/icons/ui-radios-grid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/ui-radios.svg b/icons/ui-radios.svg new file mode 100644 index 0000000..0f50bfc --- /dev/null +++ b/icons/ui-radios.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/umbrella-fill.svg b/icons/umbrella-fill.svg new file mode 100644 index 0000000..0a13fe9 --- /dev/null +++ b/icons/umbrella-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/umbrella.svg b/icons/umbrella.svg new file mode 100644 index 0000000..3c77651 --- /dev/null +++ b/icons/umbrella.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unindent.svg b/icons/unindent.svg new file mode 100644 index 0000000..1ac0b98 --- /dev/null +++ b/icons/unindent.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/union.svg b/icons/union.svg new file mode 100644 index 0000000..ab9bce3 --- /dev/null +++ b/icons/union.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unity.svg b/icons/unity.svg new file mode 100644 index 0000000..8ddd5ef --- /dev/null +++ b/icons/unity.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/universal-access-circle.svg b/icons/universal-access-circle.svg new file mode 100644 index 0000000..0621ebd --- /dev/null +++ b/icons/universal-access-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/universal-access.svg b/icons/universal-access.svg new file mode 100644 index 0000000..7197550 --- /dev/null +++ b/icons/universal-access.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unlock-fill.svg b/icons/unlock-fill.svg new file mode 100644 index 0000000..3b49067 --- /dev/null +++ b/icons/unlock-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unlock.svg b/icons/unlock.svg new file mode 100644 index 0000000..30d0a93 --- /dev/null +++ b/icons/unlock.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unlock2-fill.svg b/icons/unlock2-fill.svg new file mode 100644 index 0000000..ed59ca6 --- /dev/null +++ b/icons/unlock2-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/unlock2.svg b/icons/unlock2.svg new file mode 100644 index 0000000..510ef05 --- /dev/null +++ b/icons/unlock2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/upc-scan.svg b/icons/upc-scan.svg new file mode 100644 index 0000000..9d3ac1b --- /dev/null +++ b/icons/upc-scan.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/upc.svg b/icons/upc.svg new file mode 100644 index 0000000..fb00bc5 --- /dev/null +++ b/icons/upc.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/upload.svg b/icons/upload.svg new file mode 100644 index 0000000..17e7124 --- /dev/null +++ b/icons/upload.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/usb-c-fill.svg b/icons/usb-c-fill.svg new file mode 100644 index 0000000..7dd9851 --- /dev/null +++ b/icons/usb-c-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-c.svg b/icons/usb-c.svg new file mode 100644 index 0000000..a693d4e --- /dev/null +++ b/icons/usb-c.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/usb-drive-fill.svg b/icons/usb-drive-fill.svg new file mode 100644 index 0000000..f181bb6 --- /dev/null +++ b/icons/usb-drive-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-drive.svg b/icons/usb-drive.svg new file mode 100644 index 0000000..6eaa6ef --- /dev/null +++ b/icons/usb-drive.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-fill.svg b/icons/usb-fill.svg new file mode 100644 index 0000000..98214c4 --- /dev/null +++ b/icons/usb-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-micro-fill.svg b/icons/usb-micro-fill.svg new file mode 100644 index 0000000..7f39648 --- /dev/null +++ b/icons/usb-micro-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-micro.svg b/icons/usb-micro.svg new file mode 100644 index 0000000..4f4803f --- /dev/null +++ b/icons/usb-micro.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/usb-mini-fill.svg b/icons/usb-mini-fill.svg new file mode 100644 index 0000000..a1dd758 --- /dev/null +++ b/icons/usb-mini-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-mini.svg b/icons/usb-mini.svg new file mode 100644 index 0000000..2f80c6f --- /dev/null +++ b/icons/usb-mini.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/usb-plug-fill.svg b/icons/usb-plug-fill.svg new file mode 100644 index 0000000..9231bcf --- /dev/null +++ b/icons/usb-plug-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-plug.svg b/icons/usb-plug.svg new file mode 100644 index 0000000..0f10776 --- /dev/null +++ b/icons/usb-plug.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb-symbol.svg b/icons/usb-symbol.svg new file mode 100644 index 0000000..86730ac --- /dev/null +++ b/icons/usb-symbol.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/usb.svg b/icons/usb.svg new file mode 100644 index 0000000..7696405 --- /dev/null +++ b/icons/usb.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/valentine.svg b/icons/valentine.svg new file mode 100644 index 0000000..7e3276c --- /dev/null +++ b/icons/valentine.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/valentine2.svg b/icons/valentine2.svg new file mode 100644 index 0000000..91ed70b --- /dev/null +++ b/icons/valentine2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/vector-pen.svg b/icons/vector-pen.svg new file mode 100644 index 0000000..f0bb090 --- /dev/null +++ b/icons/vector-pen.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/view-list.svg b/icons/view-list.svg new file mode 100644 index 0000000..41f4421 --- /dev/null +++ b/icons/view-list.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/view-stacked.svg b/icons/view-stacked.svg new file mode 100644 index 0000000..51cc0d3 --- /dev/null +++ b/icons/view-stacked.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/vignette.svg b/icons/vignette.svg new file mode 100644 index 0000000..cac04cf --- /dev/null +++ b/icons/vignette.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/vimeo.svg b/icons/vimeo.svg new file mode 100644 index 0000000..18436f0 --- /dev/null +++ b/icons/vimeo.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/vinyl-fill.svg b/icons/vinyl-fill.svg new file mode 100644 index 0000000..6652047 --- /dev/null +++ b/icons/vinyl-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/vinyl.svg b/icons/vinyl.svg new file mode 100644 index 0000000..d4be3d2 --- /dev/null +++ b/icons/vinyl.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/virus.svg b/icons/virus.svg new file mode 100644 index 0000000..1cb1230 --- /dev/null +++ b/icons/virus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/virus2.svg b/icons/virus2.svg new file mode 100644 index 0000000..f58d7ac --- /dev/null +++ b/icons/virus2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/voicemail.svg b/icons/voicemail.svg new file mode 100644 index 0000000..67e18e1 --- /dev/null +++ b/icons/voicemail.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-down-fill.svg b/icons/volume-down-fill.svg new file mode 100644 index 0000000..2805189 --- /dev/null +++ b/icons/volume-down-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-down.svg b/icons/volume-down.svg new file mode 100644 index 0000000..f539e3b --- /dev/null +++ b/icons/volume-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-mute-fill.svg b/icons/volume-mute-fill.svg new file mode 100644 index 0000000..4fd2748 --- /dev/null +++ b/icons/volume-mute-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-mute.svg b/icons/volume-mute.svg new file mode 100644 index 0000000..1c3bf64 --- /dev/null +++ b/icons/volume-mute.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-off-fill.svg b/icons/volume-off-fill.svg new file mode 100644 index 0000000..2dacfa7 --- /dev/null +++ b/icons/volume-off-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-off.svg b/icons/volume-off.svg new file mode 100644 index 0000000..ccaf7be --- /dev/null +++ b/icons/volume-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/volume-up-fill.svg b/icons/volume-up-fill.svg new file mode 100644 index 0000000..59100c2 --- /dev/null +++ b/icons/volume-up-fill.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/volume-up.svg b/icons/volume-up.svg new file mode 100644 index 0000000..ad8163b --- /dev/null +++ b/icons/volume-up.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/vr.svg b/icons/vr.svg new file mode 100644 index 0000000..e32863a --- /dev/null +++ b/icons/vr.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wallet-fill.svg b/icons/wallet-fill.svg new file mode 100644 index 0000000..916c91c --- /dev/null +++ b/icons/wallet-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wallet.svg b/icons/wallet.svg new file mode 100644 index 0000000..046e4c1 --- /dev/null +++ b/icons/wallet.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wallet2.svg b/icons/wallet2.svg new file mode 100644 index 0000000..7dba9c0 --- /dev/null +++ b/icons/wallet2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/watch.svg b/icons/watch.svg new file mode 100644 index 0000000..f42ff67 --- /dev/null +++ b/icons/watch.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/water.svg b/icons/water.svg new file mode 100644 index 0000000..583b4c6 --- /dev/null +++ b/icons/water.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/webcam-fill.svg b/icons/webcam-fill.svg new file mode 100644 index 0000000..b6039bb --- /dev/null +++ b/icons/webcam-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/webcam.svg b/icons/webcam.svg new file mode 100644 index 0000000..b5a706a --- /dev/null +++ b/icons/webcam.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wechat.svg b/icons/wechat.svg new file mode 100644 index 0000000..8fb4871 --- /dev/null +++ b/icons/wechat.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/whatsapp.svg b/icons/whatsapp.svg new file mode 100644 index 0000000..d39e47f --- /dev/null +++ b/icons/whatsapp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wifi-1.svg b/icons/wifi-1.svg new file mode 100644 index 0000000..98e7d48 --- /dev/null +++ b/icons/wifi-1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wifi-2.svg b/icons/wifi-2.svg new file mode 100644 index 0000000..850826c --- /dev/null +++ b/icons/wifi-2.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wifi-off.svg b/icons/wifi-off.svg new file mode 100644 index 0000000..6915c9d --- /dev/null +++ b/icons/wifi-off.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wifi.svg b/icons/wifi.svg new file mode 100644 index 0000000..f167106 --- /dev/null +++ b/icons/wifi.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wikipedia.svg b/icons/wikipedia.svg new file mode 100644 index 0000000..a0c567c --- /dev/null +++ b/icons/wikipedia.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wind.svg b/icons/wind.svg new file mode 100644 index 0000000..a32f78e --- /dev/null +++ b/icons/wind.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/window-dash.svg b/icons/window-dash.svg new file mode 100644 index 0000000..46436fd --- /dev/null +++ b/icons/window-dash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/window-desktop.svg b/icons/window-desktop.svg new file mode 100644 index 0000000..d62148a --- /dev/null +++ b/icons/window-desktop.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-dock.svg b/icons/window-dock.svg new file mode 100644 index 0000000..279064d --- /dev/null +++ b/icons/window-dock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-fullscreen.svg b/icons/window-fullscreen.svg new file mode 100644 index 0000000..309aded --- /dev/null +++ b/icons/window-fullscreen.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-plus.svg b/icons/window-plus.svg new file mode 100644 index 0000000..8bdca67 --- /dev/null +++ b/icons/window-plus.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/window-sidebar.svg b/icons/window-sidebar.svg new file mode 100644 index 0000000..d2c593f --- /dev/null +++ b/icons/window-sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-split.svg b/icons/window-split.svg new file mode 100644 index 0000000..ce50bd0 --- /dev/null +++ b/icons/window-split.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-stack.svg b/icons/window-stack.svg new file mode 100644 index 0000000..77fcb8a --- /dev/null +++ b/icons/window-stack.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/window-x.svg b/icons/window-x.svg new file mode 100644 index 0000000..744fcd1 --- /dev/null +++ b/icons/window-x.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/window.svg b/icons/window.svg new file mode 100644 index 0000000..c7c5b0e --- /dev/null +++ b/icons/window.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/windows.svg b/icons/windows.svg new file mode 100644 index 0000000..b52dd47 --- /dev/null +++ b/icons/windows.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/wordpress.svg b/icons/wordpress.svg new file mode 100644 index 0000000..f36f595 --- /dev/null +++ b/icons/wordpress.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/wrench-adjustable-circle-fill.svg b/icons/wrench-adjustable-circle-fill.svg new file mode 100644 index 0000000..19bf7c8 --- /dev/null +++ b/icons/wrench-adjustable-circle-fill.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wrench-adjustable-circle.svg b/icons/wrench-adjustable-circle.svg new file mode 100644 index 0000000..b3de78d --- /dev/null +++ b/icons/wrench-adjustable-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wrench-adjustable.svg b/icons/wrench-adjustable.svg new file mode 100644 index 0000000..4e2ec5e --- /dev/null +++ b/icons/wrench-adjustable.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/wrench.svg b/icons/wrench.svg new file mode 100644 index 0000000..652f4fb --- /dev/null +++ b/icons/wrench.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-circle-fill.svg b/icons/x-circle-fill.svg new file mode 100644 index 0000000..33b90e8 --- /dev/null +++ b/icons/x-circle-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-circle.svg b/icons/x-circle.svg new file mode 100644 index 0000000..dbf7eff --- /dev/null +++ b/icons/x-circle.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/x-diamond-fill.svg b/icons/x-diamond-fill.svg new file mode 100644 index 0000000..6307e2c --- /dev/null +++ b/icons/x-diamond-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-diamond.svg b/icons/x-diamond.svg new file mode 100644 index 0000000..004a709 --- /dev/null +++ b/icons/x-diamond.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-lg.svg b/icons/x-lg.svg new file mode 100644 index 0000000..8b8027c --- /dev/null +++ b/icons/x-lg.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-octagon-fill.svg b/icons/x-octagon-fill.svg new file mode 100644 index 0000000..8337450 --- /dev/null +++ b/icons/x-octagon-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-square-fill.svg b/icons/x-square-fill.svg new file mode 100644 index 0000000..79aeb6d --- /dev/null +++ b/icons/x-square-fill.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/x-square.svg b/icons/x-square.svg new file mode 100644 index 0000000..f05e3b0 --- /dev/null +++ b/icons/x-square.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/x.svg b/icons/x.svg new file mode 100644 index 0000000..d4312c8 --- /dev/null +++ b/icons/x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/xbox.svg b/icons/xbox.svg new file mode 100644 index 0000000..00082cb --- /dev/null +++ b/icons/xbox.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/yelp.svg b/icons/yelp.svg new file mode 100644 index 0000000..2053e86 --- /dev/null +++ b/icons/yelp.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/yin-yang.svg b/icons/yin-yang.svg new file mode 100644 index 0000000..7bf06f8 --- /dev/null +++ b/icons/yin-yang.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/icons/youtube.svg b/icons/youtube.svg new file mode 100644 index 0000000..a5d7674 --- /dev/null +++ b/icons/youtube.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/icons/zoom-in.svg b/icons/zoom-in.svg new file mode 100644 index 0000000..61ea387 --- /dev/null +++ b/icons/zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/icons/zoom-out.svg b/icons/zoom-out.svg new file mode 100644 index 0000000..98d474c --- /dev/null +++ b/icons/zoom-out.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/log.py b/log.py index 01545d7..bf178f1 100644 --- a/log.py +++ b/log.py @@ -1,6 +1,9 @@ #!/usr/bin/env python3 # src/core/log.py +import os +import re import threading +from datetime import datetime from collections import defaultdict from typing import Iterable, Optional, TYPE_CHECKING @@ -64,6 +67,66 @@ def __init__(self, helper: Helper | None = None): self._lock = threading.Lock() self._buffers: dict[str, list[str]] = defaultdict(list) + # ---------- file persistence ---------- + # Save log lines to disk under /log/ + self._log_dir = self._helper.get_data_path("log",scope="system") + try: + os.makedirs(self._log_dir, exist_ok=True) + except Exception: + # If the directory cannot be created, we keep logging in memory. + pass + + # Optional configuration toggle for file logging + self._configuration.add("log.persist", True, "checkbox", label="Save log to file") + self._configuration.save() + + # Track currently used daily log file + self._current_log_path: str | None = None + + # ---------- file persistence helpers ---------- + + def _safe_filename(self, name: str) -> str: + name = (name or "app").strip() + # Keep only safe characters for filenames + name = re.sub(r"[^A-Za-z0-9._-]+", "_", name) + return name or "app" + + def _get_log_path(self) -> str | None: + # If directory creation failed earlier, bail out + if not os.path.isdir(self._log_dir): + return None + + app_name = "app" + if self._app is not None: + # Prefer application name when available + app_name = getattr(self._app, "name", None) or getattr(self._app, "applicationName", None) or "app" + + app_name = self._safe_filename(str(app_name)) + date_str = datetime.now().strftime("%Y-%m-%d") + return os.path.join(self._log_dir, f"{app_name}-{date_str}.log") + + def _append_to_file(self, lines: list[str]) -> None: + if not lines: + return + if not self._configuration.get("log.persist"): + return + + path = self._get_log_path() + if not path: + return + + # Write is protected by the same lock as in-memory buffers to keep ordering + try: + with open(path, "a", encoding="utf-8") as f: + for ln in lines: + f.write(ln) + if not ln.endswith("\n"): + f.write("\n") + self._current_log_path = path + except Exception: + # Never crash the app because file logging failed + return + # ---------- core storage ---------- def append(self, message: str, channel: str = "default", level: str = "info") -> None: @@ -85,20 +148,23 @@ def append(self, message: str, channel: str = "default", level: str = "info") -> return # Normalize to individual lines - lines = message.splitlines() or [message] + raw_lines = message.splitlines() or [message] # Format each line with timestamp, level, channel - for ln in lines: - line = f"[{self._helper.get_now()}][{level.upper()}][{channel}] {ln}" - lines[lines.index(ln)] = line + lines: list[str] = [] + now = self._helper.get_now() + for ln in raw_lines: + line = f"[{now}][{level.upper()}][{channel}] {ln}" + lines.append(line) # Check if verbose logging is enabled and print to console if self._configuration.get("log.verbose"): print(line) - # Append lines to the buffer + # Append lines to the buffer and persist to file (keeps ordering) with self._lock: self._buffers[channel].extend(lines) + self._append_to_file(lines) def extend(self, lines: Iterable[str], channel: str = "default") -> None: with self._lock: @@ -175,7 +241,7 @@ def show(self, parent=None, channel: Optional[str] = None, filter_text: str | No icon="info", buttons="OK", default="OK", - icon_lookup_fn=self._helper.get_path, + icon_lookup_fn=self._helper.get_sys_path, ) return @@ -194,7 +260,7 @@ def show(self, parent=None, channel: Optional[str] = None, filter_text: str | No icon="info", buttons="OK", default="OK", - icon_lookup_fn=self._helper.get_path, + icon_lookup_fn=self._helper.get_sys_path, ) return @@ -210,6 +276,7 @@ def show(self, parent=None, channel: Optional[str] = None, filter_text: str | No filter_text=filter_text, channels_text=channels_text, initial_channel=channel, + default_save_dir=getattr(self, "_log_dir", None), ) # Run the log window as a modal dialog so it appears on top and is interactive dlg.exec_() @@ -224,6 +291,7 @@ def __init__( filter_text: str | None = None, channels_text: Optional[dict[str, str]] = None, initial_channel: Optional[str] = None, + default_save_dir: str | None = None, ): super().__init__(parent) self.setWindowTitle("Log") @@ -233,6 +301,7 @@ def __init__( # Store per-channel logs (may be empty dict) self._channels_text: dict[str, str] = channels_text or {} self._current_channel: Optional[str] = initial_channel + self._default_save_dir = default_save_dir self._full_text = text or "" @@ -290,12 +359,15 @@ def set_text(self, text: str): self.apply_filter() def _copy_all(self): - from PyQt5.QtWidgets import QApplication QApplication.clipboard().setText(self.text.toPlainText()) def save_as(self): + default_name = "log.log" + if self._default_save_dir: + default_name = os.path.join(self._default_save_dir, default_name) + path, _ = QFileDialog.getSaveFileName( - self, "Save log", "log.txt", + self, "Save log", default_name, "Log Files (*.log);;Text Files (*.txt);;All Files (*)" ) if path: diff --git a/service.py b/service.py new file mode 100644 index 0000000..f0943e9 --- /dev/null +++ b/service.py @@ -0,0 +1,1712 @@ +#!/usr/bin/env python3 +# src/core/service.py + +from __future__ import annotations + +import os +import sys +import time +import signal +import shutil +import subprocess +import platform +import ctypes +import json +from pathlib import Path +from dataclasses import dataclass +from typing import Any, Callable, Optional +from PyQt5.QtCore import QTimer +# PyQt5 widgets +from PyQt5.QtWidgets import ( + QApplication, + QDialog, + QTabWidget, + QGroupBox, + QVBoxLayout, + QHBoxLayout, + QFormLayout, + QLabel, + QPushButton, + QPlainTextEdit, + QMessageBox, + QWidget, +) + +# Optional UI helpers (icons/buttons) +try: + from .ui import Form # type: ignore +except Exception: # pragma: no cover + Form = None # type: ignore + + +@dataclass +class _Task: + description: str + callable: Callable[..., Any] + interval: float = 60.0 + last_run: float = 0.0 + + +class Service: + """Service module for corePY. + + This class is **not** an application runner like CommandLine / Application. + It is a module that: + - Adds service-management commands to the CLI (start/stop/restart/install/uninstall) + - Allows apps to register tasks to be executed by the service loop + + Usage pattern (from an app/handler): + + def cli(self, cli): + cli.add("run", "Run jobs", self.run) + cli.service.add("run", "Run jobs", self.run, interval=60) + + Then: + python main.py --start + + runs all registered service tasks in a loop. + """ + + def __init__(self, logger=None, configuration=None): + self._tasks: dict[str, _Task] = {} + self._stop_requested = False + self._loop_sleep = 1.0 + self._pidfile_path: Optional[str] = None + + # Optional integrations (passed by CommandLine) + self._logger = logger + self._configuration = configuration + + # Service configuration defaults + if self._configuration is not None: + # How often the main loop wakes up to check due tasks (seconds) + self._configuration.add("service.loopSleep", 1, "number", label="Service loop sleep (s)", min=1, max=60) + # Default interval used when registering tasks (seconds) + self._configuration.add("service.defaultInterval", 3600, "number", label="Service default task interval (s)", min=1, max=86400) + # Reverse-DNS prefix used to name/register the service (e.g. com.laswitchtech) + # The final label becomes: . (lowercased and sanitized) + self._configuration.add("service.domain", "com.corepy", "text", label="Service domain (reverse DNS)") + # Persist any new defaults + self._configuration.save() + + # Initial visibility update + self._refresh_action_visibility() + + # Keep visibility in sync when configuration is saved/changed + try: + self._configuration.configChanged.connect(lambda _cfg: self._refresh_action_visibility()) + except Exception: + pass + + def _win_hidden_subprocess_kwargs(self) -> dict: + """Return subprocess kwargs that hide console windows on Windows. + + This prevents the "cmd/sc/powershell" windows from flashing when running + service install/uninstall/start/stop operations. + """ + if platform.system() != "Windows": + return {} + + # `CREATE_NO_WINDOW` exists on Windows; define defensively for older Pythons. + create_no_window = getattr(subprocess, "CREATE_NO_WINDOW", 0x08000000) + + # STARTUPINFO/STARTF_USESHOWWINDOW hides the window for console apps. + si = subprocess.STARTUPINFO() + si.dwFlags |= subprocess.STARTF_USESHOWWINDOW + si.wShowWindow = 0 # SW_HIDE + + return { + "startupinfo": si, + "creationflags": create_no_window, + } + + def _run_hidden(self, args: list[str], **kwargs): + """subprocess.run wrapper that hides Windows console windows.""" + win_kwargs = self._win_hidden_subprocess_kwargs() + # Do not override caller-provided values. + for k, v in win_kwargs.items(): + kwargs.setdefault(k, v) + # Default to no shell to avoid spawning an extra console. + kwargs.setdefault("shell", False) + return subprocess.run(args, **kwargs) + + def _popen_hidden(self, args: list[str], **kwargs): + """subprocess.Popen wrapper that hides Windows console windows.""" + win_kwargs = self._win_hidden_subprocess_kwargs() + for k, v in win_kwargs.items(): + kwargs.setdefault(k, v) + kwargs.setdefault("shell", False) + return subprocess.Popen(args, **kwargs) + + def _service_domain(self) -> str: + """Return reverse-DNS domain used for service labels. + + Prefer configuration key `service.domain` when available; fall back to + an environment override COREPY_SERVICE_DOMAIN; then to 'com.corepy'. + """ + # 1) Configuration + try: + if self._configuration is not None: + v = (self._configuration.get("service.domain", "") or "").strip() + if v: + return v + except Exception: + pass + + # 2) Environment override + v = (os.environ.get("COREPY_SERVICE_DOMAIN") or "").strip() + if v: + return v + + return "com.corepy" + def _refresh_action_visibility(self) -> None: + """Show/hide configuration action buttons based on install/running state.""" + if self._configuration is None: + return + + installed = self._is_installed() + running = self._is_service_active() if installed else self._is_running() + + # Start/Stop are mutually exclusive when installed; when not installed, start runs in-process. + self._configuration.visibility("service.actions.start", not running) + self._configuration.visibility("service.actions.stop", running) + + # Restart only makes sense when running + self._configuration.visibility("service.actions.restart", running) + + # Install/Uninstall are mutually exclusive + self._configuration.visibility("service.actions.install", not installed) + self._configuration.visibility("service.actions.uninstall", installed) + + # ------------------------------------------------------------------ + # CLI integration + # ------------------------------------------------------------------ + + def cli(self, cli=None) -> None: + """Register service management commands into CommandLine.""" + if cli is None: + return + + cli.add("service.status", "Show service status.", self.status) + cli.add("service.start", "Start the service loop.", self.start) + cli.add("service.stop", "Stop the running service.", self.stop) + cli.add("service.restart", "Restart the running service.", self.restart) + cli.add("service.install", "Install as a python service.", self.install) + cli.add("service.uninstall", "Uninstall the python service.", self.uninstall) + + # ------------------------------------------------------------------ + # Task registry + # ------------------------------------------------------------------ + + def add( + self, + command: str, + description: str = "", + callable: Optional[Callable[..., Any]] = None, + *, + interval: Optional[float] = None, + ) -> None: + """Register a command to run as part of the service loop. + + Notes: + - The command name is informational here (used for logs / debugging). + - The callable is invoked with **no arguments** by the service loop. + - Use closures/lambdas if you need to bind context. + """ + if callable is None: + raise ValueError("Service.add() requires a callable") + + # Keep the name consistent with CLI commands (no leading -- expected here) + normalized = command[2:] if command.startswith("--") else command + + # Resolve effective interval from configuration (if present) + # - interval is None: use configured service.defaultInterval (default 3600) + # - interval == 0: run every tick + # - interval > 0: use that value (and allow override via per-task config) + if interval is None: + effective_interval = 0.0 + else: + effective_interval = float(interval) + + if self._configuration is not None: + key = f"service.intervals.{normalized}" + + # Schema default for this task's interval + if interval is None: + schema_default = int(self._configuration.get("service.defaultInterval", 3600) or 3600) + else: + schema_default = int(effective_interval) + + self._configuration.add( + key, + schema_default, + "spin", + label=f"Service interval: {normalized} (s)", + min=0, + max=86400, + ) + + try: + configured = self._configuration.get(key, schema_default) + effective_interval = float(configured) if configured is not None else float(schema_default) + except Exception: + effective_interval = float(schema_default) + + self._configuration.save() + else: + # No configuration system; if interval is None, fall back to 3600 + if interval is None: + effective_interval = 3600.0 + + self._tasks[normalized] = _Task( + description=description, + callable=callable, + interval=effective_interval, + last_run=0.0, + ) + + def remove(self, command: str) -> None: + normalized = command[2:] if command.startswith("--") else command + if normalized in self._tasks: + del self._tasks[normalized] + + def clear(self) -> None: + self._tasks.clear() + + def set_loop_sleep(self, seconds: float) -> None: + """How often to wake up to check due tasks.""" + self._loop_sleep = max(0.1, float(seconds)) + + def _log(self, message: str, level: str = "info") -> None: + """Log to core Log module if available, else print.""" + try: + if self._logger is not None and hasattr(self._logger, "append"): + self._logger.append(message, channel="service", level=level) + return + except Exception: + pass + + # Fallback to console + if level == "error": + print(message, file=sys.stderr) + else: + print(message) + + # ------------------------------------------------------------------ + # Service control + # ------------------------------------------------------------------ + + def start(self) -> None: + """Enter the service loop in the current process.""" + self._stop_requested = False + + # If installed, either: + # - We are a *manager* request (user invoked --start): delegate to OS manager, OR + # - We are the *service process* (OS invoked --start): run the loop in-process. + if self._is_installed() and not self._running_under_service_manager(): + self._service_manager_start() + self._refresh_action_visibility() + return + + # Apply configured loop sleep if available + if self._configuration is not None: + try: + self._loop_sleep = float(self._configuration.get("service.loopSleep", 1) or 1) + except Exception: + self._loop_sleep = 1.0 + + self._install_signal_handlers() + + pidfile = self._pidfile() + if self._is_running(): + self._log(f"Service already running (pidfile: {pidfile}).", level="info") + return + + os.makedirs(os.path.dirname(pidfile), exist_ok=True) + with open(pidfile, "w", encoding="utf-8") as f: + f.write(str(os.getpid())) + + self._log(f"Service started (PID {os.getpid()}).", level="info") + + try: + self._service_loop() + finally: + self._cleanup_pidfile() + self._log("Service stopped.", level="info") + + def stop(self) -> None: + """Stop a running service by signaling the PID from the pidfile.""" + # If installed, delegate to platform service manager. + if self._is_installed(): + self._service_manager_stop() + self._refresh_action_visibility() + return + + pid = self._read_pidfile() + if not pid: + self._log("Service is not running (no pidfile).", level="info") + return + + if not self._pid_exists(pid): + self._log("Service pidfile found but process is not running. Cleaning up.", level="warning") + self._cleanup_pidfile() + return + + try: + os.kill(pid, signal.SIGTERM) + self._log(f"Stop signal sent to PID {pid}.", level="info") + except PermissionError: + self._log(f"Permission denied sending SIGTERM to PID {pid}.", level="error") + except ProcessLookupError: + self._log(f"Process {pid} not found. Cleaning up pidfile.", level="error") + self._cleanup_pidfile() + + def restart(self) -> None: + # If installed, delegate to platform service manager. + if self._is_installed(): + self._service_manager_restart() + self._refresh_action_visibility() + return + + # Otherwise run in-process restart + self.stop() + time.sleep(0.5) + self.start() + + def status(self) -> None: + """Show current service status.""" + pidfile = self._pidfile() + pid = self._read_pidfile() + + installed = self._is_installed() + running = self._is_service_active() if installed else bool(pid and self._pid_exists(pid)) + + # Build a readable status + lines = [] + lines.append(f"Service: {self._app_name()}") + lines.append(f"PID file: {pidfile}") + lines.append(f"Installed: {'yes' if installed else 'no'}") + lines.append(f"Running: {'yes' if running else 'no'}") + if pid: + lines.append(f"PID: {pid}") + lines.append(f"Tasks registered: {len(self._tasks)}") + + # Show intervals (effective) + if self._configuration is not None and self._tasks: + lines.append("Task intervals (s):") + for name in sorted(self._tasks.keys()): + key = f"service.intervals.{name}" + interval = self._configuration.get(key, self._tasks[name].interval) + lines.append(f" - {name}: {interval}") + + msg = "\n".join(lines) + print(msg) + self._log(msg, level="info") + + + # ------------------------------------------------------------------ + # UI helper + # ------------------------------------------------------------------ + + def open_manager_dialog(self, parent=None) -> None: + """Open a small GUI dialog to manage the service (install/start/stop + logs). + + This is intentionally optional: apps can call it when running with a GUI. + """ + try: + dlg = ServiceManagerDialog(self, parent=parent) + dlg.exec_() + except Exception as e: + # If called from a non-GUI context, fail gracefully. + self._log(f"Failed to open service manager dialog: {e}", level="error") + + def request_stop(self) -> None: + """Request the current service loop to stop (used by signal handlers).""" + self._stop_requested = True + + # ------------------------------------------------------------------ + # Scheduler loop + # ------------------------------------------------------------------ + + def _service_loop(self) -> None: + if not self._tasks: + self._log("Warning: no tasks registered for service mode.", level="warning") + + while not self._stop_requested: + now = time.time() + + for name, task in list(self._tasks.items()): + # interval == 0 means "run every tick" + due = (task.interval <= 0) or (now - task.last_run >= task.interval) + if not due: + continue + + try: + task.callable() + task.last_run = now + except Exception as e: + # Keep the service alive; print error. + self._log(f"Task {name} failed: {e}", level="error") + + time.sleep(self._loop_sleep) + + # ------------------------------------------------------------------ + # systemd integration (Linux only) + # ------------------------------------------------------------------ + + def install(self) -> None: + + if sys.platform.startswith("win"): + self._install_windows_service() + elif sys.platform == "darwin": + self._install_macos_launchd() + else: + self._install_systemd() + + self._refresh_action_visibility() + + def uninstall(self) -> None: + + if sys.platform.startswith("win"): + self._uninstall_windows_service() + elif sys.platform == "darwin": + self._uninstall_macos_launchd() + else: + self._uninstall_systemd() + + self._refresh_action_visibility() + + def _install_systemd(self) -> None: + """Install a systemd unit that runs ` --start`.""" + if shutil.which("systemctl") is None: + raise RuntimeError("systemctl not found; systemd does not appear available") + + service_name = f"{self._app_name()}.service" + unit_path = os.path.join("/etc/systemd/system", service_name) + + program_start, argv_start, workdir = self._service_command("start") + program_stop, argv_stop, _ = self._service_command("stop") + + unit = self._systemd_unit( + service_name=service_name, + python_exe=program_start, + entrypoint=" ".join(argv_start), + working_dir=workdir, + pidfile=self._pidfile(), + execstop_program=program_stop, + execstop_args=" ".join(argv_stop), + ) + + with open(unit_path, "w", encoding="utf-8") as f: + f.write(unit) + + subprocess.run(["systemctl", "daemon-reload"], check=False) + subprocess.run(["systemctl", "enable", "--now", service_name], check=False) + + print(f"Installed and started: {unit_path}") + + def _uninstall_systemd(self) -> None: + if shutil.which("systemctl") is None: + raise RuntimeError("systemctl not found; systemd does not appear available") + + service_name = f"{self._app_name()}.service" + unit_path = os.path.join("/etc/systemd/system", service_name) + + subprocess.run(["systemctl", "disable", "--now", service_name], check=False) + if os.path.exists(unit_path): + os.remove(unit_path) + subprocess.run(["systemctl", "daemon-reload"], check=False) + + print(f"Uninstalled: {unit_path}") + + def _systemd_unit( + self, + *, + service_name: str, + python_exe: str, + entrypoint: str, + working_dir: str, + pidfile: str, + execstop_program: str, + execstop_args: str, + ) -> str: + app_name = self._app_name() + return ( + "[Unit]\n" + f"Description={app_name}\n" + "After=network.target\n\n" + "[Service]\n" + "Type=simple\n" + "Environment=COREPY_RUN_AS_SERVICE=1\n" + f"Environment=COREPY_SERVICE_LABEL={self._service_label()}\n" + f"WorkingDirectory={working_dir}\n" + f"ExecStart={python_exe} {entrypoint}\n" + f"ExecStop={execstop_program} {execstop_args}\n" + "Restart=on-failure\n" + "RestartSec=2\n" + f"PIDFile={pidfile}\n" + "\n" + "[Install]\n" + "WantedBy=multi-user.target\n" + ) + def _running_under_service_manager(self) -> bool: + """Return True if this process should run the service loop. + + When installed, `start()` is used both to *request* the service manager to + start the job and as the entrypoint that the service manager executes. + + We differentiate the two cases using an explicit env flag set by the + service definitions (launchd/systemd/Windows), plus a couple of platform + hints as fallback. + """ + # Explicit flag (preferred) + flag = (os.environ.get("COREPY_RUN_AS_SERVICE") or "").strip().lower() + if flag in ("1", "true", "yes", "on"): + return True + + # Fallback hints + if sys.platform == "darwin": + # launchd commonly sets this for jobs + xpc = (os.environ.get("XPC_SERVICE_NAME") or "").strip() + if xpc and xpc == self._service_label(): + return True + + if not sys.platform.startswith("win"): + # systemd sets INVOCATION_ID for services + if os.environ.get("INVOCATION_ID"): + return True + + return False + + # ------------------------------------------------------------------ + # Internals + # ------------------------------------------------------------------ + + def _app_name(self) -> str: + # Try to read from Qt application if present, else fallback. + try: + inst = QApplication.instance() + if inst and inst.applicationName(): + return inst.applicationName() + except Exception: + pass + return "corepy" + + def _pidfile(self) -> str: + if self._pidfile_path: + return self._pidfile_path + self._pidfile_path = self._default_pidfile_path() + return self._pidfile_path + + def _default_pidfile_path(self) -> str: + name = self._app_name() or "corepy" + candidate = os.path.join("/run", f"{name}.pid") + try: + os.makedirs(os.path.dirname(candidate), exist_ok=True) + if os.access(os.path.dirname(candidate), os.W_OK): + return candidate + except Exception: + pass + return os.path.join("/tmp", f"{name}.pid") + + def _read_pidfile(self) -> Optional[int]: + try: + with open(self._pidfile(), "r", encoding="utf-8") as f: + raw = f.read().strip() + return int(raw) if raw else None + except Exception: + return None + + def _cleanup_pidfile(self) -> None: + try: + path = self._pidfile() + if os.path.exists(path): + os.remove(path) + except Exception: + pass + + def _pid_exists(self, pid: int) -> bool: + if pid <= 0: + return False + try: + os.kill(pid, 0) + return True + except Exception: + return False + + def _is_running(self) -> bool: + pid = self._read_pidfile() + return bool(pid and self._pid_exists(pid)) + + def _install_signal_handlers(self) -> None: + def _handler(_sig, _frame): + self.request_stop() + + try: + signal.signal(signal.SIGTERM, _handler) + signal.signal(signal.SIGINT, _handler) + except Exception: + pass + + + # ------------------------------------------------------------------ + # Windows elevation helpers + # ------------------------------------------------------------------ + + def _windows_is_admin(self) -> bool: + """Return True if the current process has admin rights on Windows.""" + if not sys.platform.startswith("win"): + return False + try: + return bool(ctypes.windll.shell32.IsUserAnAdmin()) + except Exception: + return False + + def _windows_relaunch_elevated(self, argv: list[str]) -> bool: + """Relaunch the current executable with UAC elevation. + + Returns True if the elevation prompt was successfully triggered. + """ + if not sys.platform.startswith("win"): + return False + + # Avoid infinite loops if something goes wrong. + if (os.environ.get("COREPY_ELEVATED_RELAUNCH") or "").strip() == "1": + return False + + try: + # Build argument string for ShellExecuteW. + # Use subprocess.list2cmdline to quote correctly for Windows. + args = list(argv[1:]) + ["--elevated-relaunch"] + params = subprocess.list2cmdline(args) + + # Pass a marker to the elevated process. + # We cannot reliably set environment variables via ShellExecute, + # so we append an internal flag and also set an env var for same-process codepaths. + os.environ["COREPY_ELEVATED_RELAUNCH"] = "1" + + # 1 = SW_SHOWNORMAL + rc = ctypes.windll.shell32.ShellExecuteW(None, "runas", argv[0], params, None, 1) + return int(rc) > 32 + except Exception: + return False + + # ------------------------------------------------------------------ + # Cross-platform service manager helpers + # ------------------------------------------------------------------ + + def _run_subprocess(self, args: list[str], **kwargs) -> subprocess.CompletedProcess: + if sys.platform.startswith("win"): + return self._run_hidden(args, **kwargs) + return subprocess.run(args, **kwargs) + + def _service_label(self) -> str: + """Stable label used for OS service registration. + + - macOS launchd prefers reverse-DNS labels. + - Windows 'sc' service names and systemd unit names also benefit from stability. + + Result: . (lowercased and sanitized) + """ + domain = (self._service_domain() or "com.corepy").strip().strip(".") + app = (self._app_name() or "corepy").strip() + + base = f"{domain}.{app}" if domain else app + base = base.lower() + + # Keep only characters typically safe across platforms; replace others with '-' + safe = "".join(c if c.isalnum() or c in ("-", "_", ".") else "-" for c in base) + # Avoid accidental leading/trailing dots + safe = safe.strip(".") + return safe or "com.corepy.corepy" + + def _entry_command(self) -> tuple[str, str, str]: + """Return (python_exe, entrypoint, working_dir) for service registration. + + Notes: + - When `sys.argv[0]` is a relative path and the current working directory + is already inside `src/`, it's easy to end up with paths like `src/src/main.py`. + - launchd will happily try to execute that path, but the process will fail. + + This helper resolves the path and applies a small normalization pass. + """ + python_exe = sys.executable + + # Resolve argv[0] robustly (handles relative paths) + try: + p = Path(sys.argv[0]).expanduser() + entry_path = (p if p.is_absolute() else (Path.cwd() / p)).resolve() + except Exception: + entry_path = Path(os.path.abspath(sys.argv[0])) + + def _dedupe_consecutive(parts: list[str]) -> list[str]: + out: list[str] = [] + for seg in parts: + if out and out[-1] == seg: + continue + out.append(seg) + return out + + # If we ended up with duplicated segments like .../src/src/..., collapse them. + parts = list(entry_path.parts) + deduped = Path(*_dedupe_consecutive(parts)) + + # Prefer the deduped version if it exists. + if deduped.exists(): + entry_path = deduped + else: + # Common case: /.../src/src/main.py -> /.../src/main.py + # If the path contains two consecutive 'src' segments, drop one. + if "src" in parts: + try: + new_parts: list[str] = [] + i = 0 + while i < len(parts): + if i + 1 < len(parts) and parts[i] == parts[i + 1]: + # Drop the duplicate segment + new_parts.append(parts[i]) + i += 2 + continue + new_parts.append(parts[i]) + i += 1 + candidate = Path(*new_parts) + if candidate.exists(): + entry_path = candidate + except Exception: + pass + + entry = str(entry_path) + workdir = str(entry_path.parent) + return python_exe, entry, workdir + + def _is_installed(self) -> bool: + """Best-effort check whether this app is installed as a service.""" + try: + if sys.platform.startswith("win"): + name = self._service_label() + # sc query returns non-zero if missing + r = self._run_subprocess(["sc", "query", name], capture_output=True, text=True) + return r.returncode == 0 + if sys.platform == "darwin": + return self._macos_plist_path().exists() + # linux + if shutil.which("systemctl") is None: + return False + service_name = f"{self._service_label()}.service" + r = subprocess.run(["systemctl", "is-enabled", service_name], capture_output=True, text=True) + return r.returncode == 0 + except Exception: + return False + + def _is_service_active(self) -> bool: + """Check if the installed service is running (best-effort).""" + try: + if sys.platform.startswith("win"): + name = self._service_label() + r = self._run_subprocess(["sc", "query", name], capture_output=True, text=True) + if r.returncode != 0: + return False + out = (r.stdout or "") + (r.stderr or "") + return "RUNNING" in out.upper() + if sys.platform == "darwin": + label = self._service_label() + r = subprocess.run(["launchctl", "print", f"gui/{os.getuid()}/{label}"], capture_output=True, text=True) + if r.returncode != 0: + return False + out = (r.stdout or "") + (r.stderr or "") + o = out.lower() + # Typical indicators in `launchctl print` output + if "job state = running" in o: + return True + if "state = running" in o: + return True + # If explicitly exited, consider not running + if "job state = exited" in o: + return False + # Fallback: loaded but ambiguous => treat as active + return True + # linux + if shutil.which("systemctl") is None: + return False + service_name = f"{self._service_label()}.service" + r = subprocess.run(["systemctl", "is-active", service_name], capture_output=True, text=True) + return r.returncode == 0 + except Exception: + return False + + def _service_manager_start(self) -> None: + label = self._service_label() + try: + if sys.platform.startswith("win"): + # Prefer NSSM if bundled + if self._windows_has_nssm(): + self._windows_nssm_run(["start", label]) + else: + self._run_hidden(["sc", "start", label], check=False) + self._log(f"Requested start for Windows service: {label}") + return + if sys.platform == "darwin": + plist = self._macos_plist_path() + domain = f"gui/{os.getuid()}" + target = f"{domain}/{label}" + + # If it's already loaded, bootstrap may fail with error 5. + already_loaded = False + try: + r = subprocess.run(["launchctl", "print", target], capture_output=True, text=True) + already_loaded = (r.returncode == 0) + except Exception: + already_loaded = False + + if plist.exists() and not already_loaded: + subprocess.run(["launchctl", "bootstrap", domain, str(plist)], check=False) + + # Enable + kickstart regardless (these are safe even if already loaded) + subprocess.run(["launchctl", "enable", target], check=False) + subprocess.run(["launchctl", "kickstart", "-k", target], check=False) + + self._log(f"Requested start for launchd agent: {label}") + return + # linux + service_name = f"{label}.service" + subprocess.run(["systemctl", "start", service_name], check=False) + self._log(f"Requested start for systemd service: {service_name}") + except Exception as e: + self._log(f"Failed to start service via manager: {e}", level="error") + + def _service_manager_stop(self) -> None: + label = self._service_label() + try: + if sys.platform.startswith("win"): + # Prefer NSSM if bundled + if self._windows_has_nssm(): + self._windows_nssm_run(["stop", label]) + else: + self._run_hidden(["sc", "stop", label], check=False) + self._log(f"Requested stop for Windows service: {label}") + return + if sys.platform == "darwin": + subprocess.run(["launchctl", "bootout", f"gui/{os.getuid()}/{label}"], check=False) + self._log(f"Requested stop for launchd agent: {label}") + return + service_name = f"{label}.service" + subprocess.run(["systemctl", "stop", service_name], check=False) + self._log(f"Requested stop for systemd service: {service_name}") + except Exception as e: + self._log(f"Failed to stop service via manager: {e}", level="error") + + def _service_manager_restart(self) -> None: + label = self._service_label() + try: + if sys.platform.startswith("win"): + if self._windows_has_nssm(): + self._windows_nssm_run(["restart", label]) + else: + self._run_hidden(["sc", "stop", label], check=False) + time.sleep(0.5) + self._run_hidden(["sc", "start", label], check=False) + self._log(f"Requested restart for Windows service: {label}") + return + if sys.platform == "darwin": + subprocess.run(["launchctl", "kickstart", "-k", f"gui/{os.getuid()}/{label}"], check=False) + self._log(f"Requested restart for launchd agent: {label}") + return + service_name = f"{label}.service" + subprocess.run(["systemctl", "restart", service_name], check=False) + self._log(f"Requested restart for systemd service: {service_name}") + except Exception as e: + self._log(f"Failed to restart service via manager: {e}", level="error") + + # ------------------------------------------------------------------ + # Windows service install/uninstall (sc.exe) + # ------------------------------------------------------------------ + + def _install_windows_service(self) -> None: + """Install Windows service. + + Prefer NSSM when available (bundled in corePY). + + Why: + - `sc create` + a long `cmd.exe /c ...` binPath is fragile. + - NSSM hosts a normal console program and reports service state properly. + """ + name = self._service_label() + + # Installing a Windows service requires elevation. + if not self._windows_is_admin(): + self._log("Admin privileges required to install the service. Requesting elevation...", level="info") + if self._windows_relaunch_elevated(sys.argv): + return + raise RuntimeError("Admin privileges required to install the service.") + + # Use NSSM if present. + if not self._windows_has_nssm(): + raise RuntimeError( + "NSSM was not found. Expected one of: " + "src/bin/nssm/windows/x86/nssm.exe or src/bin/nssm/windows/x86_64/nssm.exe (or the same under core/src/bin)." + ) + + # Resolve the command the service should run. + program, argv, workdir = self._service_command("start") + + # Install directory: stable place for logs and (optionally) copied binaries. + install_dir = self._windows_install_dir() + install_dir.mkdir(parents=True, exist_ok=True) + + logs_dir = install_dir.parent / "log" + logs_dir.mkdir(parents=True, exist_ok=True) + + stdout_log = logs_dir / f"{name}.out.log" + stderr_log = logs_dir / f"{name}.err.log" + + # In frozen mode, it's safer to point NSSM at a stable path. + # If we're already running from Program Files/ProgramData, we can use it directly. + # Otherwise (common during dev / unpackaged runs), we still allow it, but you may + # want to set COREPY_SERVICE_EXECUTABLE to an installed *-cli.exe. + app_program = program + app_dir = workdir + + # Install (create) service + self._windows_nssm_run(["install", name, app_program] + argv) + + # Configure working directory + self._windows_nssm_run(["set", name, "AppDirectory", app_dir]) + + # Environment variables so `start()` knows this is the service process + env_extra = "COREPY_RUN_AS_SERVICE=1\r\n" + f"COREPY_SERVICE_LABEL={name}" + "\r\n" + self._windows_nssm_run(["set", name, "AppEnvironmentExtra", env_extra]) + + # Logging + self._windows_nssm_run(["set", name, "AppStdout", str(stdout_log)]) + self._windows_nssm_run(["set", name, "AppStderr", str(stderr_log)]) + self._windows_nssm_run(["set", name, "AppRotateFiles", "1"]) + self._windows_nssm_run(["set", name, "AppRotateOnline", "1"]) + self._windows_nssm_run(["set", name, "AppRotateSeconds", "86400"]) + self._windows_nssm_run(["set", name, "AppRotateBytes", str(10 * 1024 * 1024)]) + + # Startup + self._windows_nssm_run(["set", name, "Start", "SERVICE_AUTO_START"]) + + # Restart policy + self._windows_nssm_run(["set", name, "AppExit", "Default", "Restart"]) + + self._log(f"Installed Windows service (NSSM): {name}") + + def _uninstall_windows_service(self) -> None: + name = self._service_label() + + # Uninstalling a Windows service requires elevation. + if not self._windows_is_admin(): + self._log("Admin privileges required to uninstall the service. Requesting elevation...", level="info") + if self._windows_relaunch_elevated(sys.argv): + return + raise RuntimeError("Admin privileges required to uninstall the service.") + + # Prefer NSSM removal if available + if self._windows_has_nssm(): + # Stop (best-effort) + self._windows_nssm_run(["stop", name], check=False) + # remove confirm + self._windows_nssm_run(["remove", name, "confirm"], check=False) + self._log(f"Uninstalled Windows service (NSSM): {name}") + return + + # Fallback to sc + self._run_hidden(["sc", "stop", name], check=False) + r = self._run_hidden(["sc", "delete", name], capture_output=True, text=True) + if r.returncode != 0: + raise RuntimeError(f"sc delete failed: {(r.stdout or '') + (r.stderr or '')}") + self._log(f"Uninstalled Windows service: {name}") + + # ------------------------------------------------------------------ + # macOS launchd install/uninstall (per-user LaunchAgent) + # ------------------------------------------------------------------ + + def _macos_plist_path(self) -> Path: + # Per-user agent (no root required) + return Path.home() / "Library" / "LaunchAgents" / f"{self._service_label()}.plist" + + def _install_macos_launchd(self) -> None: + label = self._service_label() + program, argv, workdir = self._service_command("start") + plist_path = self._macos_plist_path() + plist_path.parent.mkdir(parents=True, exist_ok=True) + # Ensure logs directory exists + logs_dir = Path.home() / "Library" / "Logs" / self._app_name() + logs_dir.mkdir(parents=True, exist_ok=True) + + # Simple LaunchAgent; keep it alive, run at load. + plist = ( + "\n" + "\n" + "\n" + "\n" + f" Label{label}\n" + " ProgramArguments\n" + " \n" + f" {program}\n" + + "".join(f" {a}\n" for a in argv) + + " \n" + f" WorkingDirectory{workdir}\n" + " EnvironmentVariables\n" + " \n" + " COREPY_RUN_AS_SERVICE1\n" + f" COREPY_SERVICE_LABEL{label}\n" + " \n" + " RunAtLoad\n" + " KeepAlive\n" + f" StandardOutPath{Path.home() / 'Library' / 'Logs' / self._app_name() / 'service.out.log'}\n" + f" StandardErrorPath{Path.home() / 'Library' / 'Logs' / self._app_name() / 'service.err.log'}\n" + "\n" + "\n" + ) + + plist_path.write_text(plist, encoding="utf-8") + + # Load into the current user's launchd + subprocess.run(["launchctl", "bootstrap", f"gui/{os.getuid()}", str(plist_path)], check=False) + subprocess.run(["launchctl", "enable", f"gui/{os.getuid()}/{label}"], check=False) + subprocess.run(["launchctl", "kickstart", "-k", f"gui/{os.getuid()}/{label}"], check=False) + + self._log(f"Installed launchd LaunchAgent: {plist_path}") + + def _uninstall_macos_launchd(self) -> None: + label = self._service_label() + plist_path = self._macos_plist_path() + + subprocess.run(["launchctl", "bootout", f"gui/{os.getuid()}/{label}"], check=False) + if plist_path.exists(): + try: + plist_path.unlink() + except Exception: + pass + + self._log(f"Uninstalled launchd LaunchAgent: {label}") + + def _service_command(self, action: str) -> tuple[str, list[str], str]: + """Return (program, argv, working_dir) for service manager registration. + + Supports both source runs (python + entry script) and frozen bundles (.exe/.app). + + Environment overrides: + - COREPY_SERVICE_EXECUTABLE: absolute/relative path to the executable to register + (useful to force a sibling *-cli.exe on Windows). + """ + action = (action or "").strip().lstrip("-") + if action not in ("start", "stop"): + raise ValueError(f"Invalid service action: {action}") + + # Frozen bundle: run the executable directly. + if getattr(sys, "frozen", False): + exe_path = Path(sys.executable).expanduser() + + # Optional override (preferred for Windows to target a console *-cli.exe) + override = (os.environ.get("COREPY_SERVICE_EXECUTABLE") or "").strip().strip('"') + if override: + ov = Path(override).expanduser() + if not ov.is_absolute(): + ov = (Path.cwd() / ov).resolve() + if ov.exists(): + exe_path = ov + + # Best-effort Windows: if running GUI exe, prefer sibling "-cli.exe". + if sys.platform.startswith("win"): + try: + s = str(exe_path) + if s.lower().endswith(".exe") and not s.lower().endswith("-cli.exe"): + cand = Path(s[:-4] + "-cli.exe") + if cand.exists(): + exe_path = cand + except Exception: + pass + + program = str(exe_path) + workdir = str(exe_path.parent) + argv = [f"--{action}"] + return program, argv, workdir + + # Source run: python + entrypoint + python_exe, entry, workdir = self._entry_command() + program = python_exe + argv = [entry, f"--{action}"] + return program, argv, workdir + + def _windows_is_64bit(self) -> bool: + try: + return platform.machine().endswith("64") or ("PROGRAMFILES(X86)" in os.environ) + except Exception: + return True + + def _windows_install_dir(self) -> Path: + """Stable per-machine install dir for service-related assets/logs.""" + base = Path(os.environ.get("PROGRAMDATA", r"C:\\ProgramData")) + return base / (self._app_name() or "corepy") / "bin" + + def _windows_bin_dir(self) -> Path: + """Best-effort directory where vendored tools live on Windows. + + Priority: + 1) Stable install dir under ProgramData (created by this module) + 2) If frozen, beside the executable (typical for unpacked builds) + 3) Source-tree locations (dev) + + Returns a directory that *may* not exist; callers should validate. + """ + # 1) Preferred stable location + try: + d = self._windows_install_dir() + if d: + return d + except Exception: + pass + + # 2) Frozen bundle: beside the executable + if getattr(sys, "frozen", False): + try: + return Path(sys.executable).resolve().parent + except Exception: + pass + + # 3) Fallback: current working directory + return Path.cwd() + + def _windows_copy_tool_to_install_dir(self, tool_path: Path) -> Path: + """Copy a bundled tool (like nssm.exe) into the stable install dir. + + This avoids services pointing into PyInstaller's temporary _MEI folder. + """ + install_dir = self._windows_install_dir() + install_dir.mkdir(parents=True, exist_ok=True) + + dest = install_dir / tool_path.name + try: + # Only copy if missing or different size/mtime; keep it simple. + if not dest.exists(): + shutil.copy2(str(tool_path), str(dest)) + else: + try: + if tool_path.stat().st_size != dest.stat().st_size: + shutil.copy2(str(tool_path), str(dest)) + except Exception: + # If we can't stat, just overwrite. + shutil.copy2(str(tool_path), str(dest)) + except Exception: + # Last resort: attempt overwrite + try: + shutil.copy2(str(tool_path), str(dest)) + except Exception: + pass + + return dest + + def _windows_nssm_candidates(self) -> list[Path]: + """Return candidate NSSM locations (supports both corePY and vendored corePY inside apps).""" + # Running inside corePY source tree + here = Path(__file__).resolve() + core_dir = here.parent # .../src/core + + rels = [ + # Common repo layouts + Path("src") / "bin" / "nssm" / "windows" / "x86" / "nssm.exe", + Path("src") / "bin" / "nssm" / "windows" / "x86_64" / "nssm.exe", + Path("bin") / "nssm" / "windows" / "x86" / "nssm.exe", + Path("bin") / "nssm" / "windows" / "x86_64" / "nssm.exe", + + # Vendored corePY inside another repo (e.g. Replicator: src/core/src/bin/...) + Path("src") / "core" / "src" / "bin" / "nssm" / "windows" / "x86" / "nssm.exe", + Path("src") / "core" / "src" / "bin" / "nssm" / "windows" / "x86_64" / "nssm.exe", + + # Flat copies in a bin dir (after we copy tools into ProgramData) + Path("nssm.exe"), + Path("bin") / "nssm.exe", + Path("tools") / "nssm.exe", + ] + + roots = [ + Path.cwd(), + core_dir.parent, # .../src + core_dir.parent.parent, # project root + here.parent.parent, # .../src (safe-ish) + ] + + # Preferred stable install dir (ProgramData) for services + try: + roots.insert(0, self._windows_install_dir()) + except Exception: + pass + + # If frozen, also look beside the executable + if getattr(sys, "frozen", False): + try: + roots.append(Path(sys.executable).resolve().parent) + except Exception: + pass + + out: list[Path] = [] + for root in roots: + for rel in rels: + p = (root / rel).resolve() + out.append(p) + return out + + def _windows_find_nssm(self) -> Optional[Path]: + if not sys.platform.startswith("win"): + return None + + # Allow explicit override + override = (os.environ.get("COREPY_NSSM") or "").strip().strip('"') + if override: + p = Path(override).expanduser() + if not p.is_absolute(): + p = (Path.cwd() / p).resolve() + if p.exists(): + return p + + want_64 = self._windows_is_64bit() + # Prefer matching arch first + preferred = ["x86_64"] if want_64 else ["x86"] + preferred += ["x86"] if want_64 else ["x86_64"] + + candidates = self._windows_nssm_candidates() + candidate: Optional[Path] = None + # Prefer matching arch + for arch in preferred: + for p in candidates: + if f"\\{arch}\\" in str(p).lower() and p.exists(): + candidate = p + break + if candidate is not None: + break + # Any existing + if candidate is None: + for p in candidates: + if p.exists(): + candidate = p + break + if candidate is not None: + # If it's in a temp unpack dir, copy to stable dir. + try: + s = str(candidate) + if "_mei" in s.lower() or "\\appdata\\local\\temp\\" in s.lower(): + stable = self._windows_copy_tool_to_install_dir(candidate) + if stable.exists(): + return stable + except Exception: + pass + return candidate + + # If we found NSSM inside a PyInstaller temp folder (_MEI...), copy it to stable ProgramData + # and return the stable path so services never reference a temporary location. + try: + found = None + for arch in preferred: + for p in candidates: + if f"\\{arch}\\" in str(p).lower() and p.exists(): + found = p + break + if found: + break + if found is None: + for p in candidates: + if p.exists(): + found = p + break + + if found is not None: + s = str(found) + if "_mei" in s.lower() or "\\appdata\\local\\temp\\" in s.lower(): + stable = self._windows_copy_tool_to_install_dir(found) + if stable.exists(): + return stable + except Exception: + pass + + return None + + def _windows_has_nssm(self) -> bool: + return bool(self._windows_find_nssm()) + + + def _windows_nssm_run(self, args: list[str], *, check: bool = True) -> subprocess.CompletedProcess: + """Run NSSM with the given args. + + Uses the bundled NSSM, and captures output for better error messages. + """ + nssm = self._windows_find_nssm() + # Prefer a stable copy under ProgramData if available + try: + stable = self._windows_install_dir() / "nssm.exe" + if stable.exists(): + nssm = stable + except Exception: + pass + + if not nssm: + raise RuntimeError("NSSM not found (COREPY_NSSM override not set and no bundled binary found).") + + cmd = [str(nssm)] + list(args) + r = subprocess.run(cmd, capture_output=True, text=True) + if check and r.returncode != 0: + raise RuntimeError(f"nssm failed: {cmd}\n{(r.stdout or '') + (r.stderr or '')}") + return r + + +# ------------------------------------------------------------------ +# Service Manager Dialog UI (PyQt5) +# ------------------------------------------------------------------ + +class _TailReader: + """Tiny file tailer used by the ServiceManagerDialog. + + Keeps an in-memory cursor per file and reads new bytes on each poll. + """ + + def __init__(self) -> None: + self._pos: dict[str, int] = {} + + def read_new_text(self, path: str, *, max_bytes: int = 256 * 1024) -> str: + if not path: + return "" + try: + if not os.path.exists(path): + return "" + + last = self._pos.get(path, 0) + size = os.path.getsize(path) + + # If file was truncated/rotated, restart. + if size < last: + last = 0 + + # Avoid reading gigantic chunks at once. + start = max(0, size - max_bytes) if last == 0 and size > max_bytes else last + + with open(path, "rb") as f: + f.seek(start) + data = f.read() + + self._pos[path] = start + len(data) + + # Best-effort decode + try: + return data.decode("utf-8", errors="replace") + except Exception: + return data.decode(errors="replace") + except Exception: + return "" + + +class ServiceManagerDialog(QDialog): + """Cross-platform service manager UI. + + Focus: + - Install / Uninstall + - Start / Stop + - Status (installed/running) + - Live-ish log view (stdout/stderr files when available) + + Note: On Linux, services often log to journald; this dialog will show file logs + when present, otherwise it shows a hint. + """ + + def __init__(self, service: Service, parent=None) -> None: + super().__init__(parent) + self._svc = service + self._tail = _TailReader() + self._poll_ms = 1000 + + self.setWindowTitle("Service Manager") + self.setModal(True) + self.resize(980, 560) + + # ----------------------------- + # Logs (right column, under controls) + # ----------------------------- + self._tabs = QTabWidget() + + self._txt_out = QPlainTextEdit() + self._txt_out.setReadOnly(True) + self._txt_err = QPlainTextEdit() + self._txt_err.setReadOnly(True) + + self._tabs.addTab(self._txt_out, "Stdout") + self._tabs.addTab(self._txt_err, "Stderr") + + logs_box = QGroupBox() + logs_layout = QVBoxLayout(logs_box) + logs_layout.addWidget(self._tabs) + + # ----------------------------- + # Controls (right column) + # ----------------------------- + controls = QGroupBox() + self._controls_layout = QHBoxLayout(controls) + self._controls_layout.setSpacing(10) + self._controls_layout.setContentsMargins(10, 10, 10, 10) + + # Use Form.button when available (for icons); fallback to QPushButton. + def _mk_btn(label: str, fn: Callable[[], None], icon: str = ""): + if Form is not None and hasattr(Form, "button"): + return Form.button(label="", icon=icon, action=fn) + b = QPushButton(label) + b.clicked.connect(fn) + return b + + self._btn_install = _mk_btn("Install", self._on_install, icon="download") + self._btn_uninstall = _mk_btn("Uninstall", self._on_uninstall, icon="trash") + self._btn_start = _mk_btn("Start", self._on_start, icon="play") + self._btn_stop = _mk_btn("Stop", self._on_stop, icon="stop") + self._btn_refresh = _mk_btn("Refresh", self.refresh, icon="arrow-clockwise") + + self._controls_layout.addWidget(self._btn_install) + self._controls_layout.addWidget(self._btn_uninstall) + self._controls_layout.addWidget(self._btn_start) + self._controls_layout.addWidget(self._btn_stop) + self._controls_layout.addWidget(self._btn_refresh) + self._controls_layout.addStretch(1) + + # ----------------------------- + # Status (left column) + # ----------------------------- + self._lbl_name = QLabel("") + self._lbl_label = QLabel("") + self._lbl_installed = QLabel("") + self._lbl_running = QLabel("") + self._lbl_pid = QLabel("") + self._lbl_mgr = QLabel("") + self._lbl_nssm = QLabel("") + self._lbl_stdout = QLabel("") + self._lbl_stderr = QLabel("") + + status_box = QGroupBox() + status_form = QFormLayout(status_box) + status_form.addRow("Application:", self._lbl_name) + status_form.addRow("Service label:", self._lbl_label) + status_form.addRow("Manager:", self._lbl_mgr) + status_form.addRow("Installed:", self._lbl_installed) + status_form.addRow("Running:", self._lbl_running) + status_form.addRow("PID:", self._lbl_pid) + status_form.addRow("NSSM:", self._lbl_nssm) + + # ----------------------------- + # Root layout: 2 columns + # Left (1/4): Status + # Right (3/4): Controls + Logs + # ----------------------------- + root = QHBoxLayout(self) + root.setContentsMargins(8, 8, 8, 8) + root.setSpacing(10) + + # Left column (Status) + root.addWidget(status_box, 1) + + # Right column (Controls + Logs) + right = QWidget(self) + right_layout = QVBoxLayout(right) + right_layout.setContentsMargins(0, 0, 0, 0) + right_layout.setSpacing(10) + right_layout.addWidget(controls, 0) + right_layout.addWidget(logs_box, 1) + + root.addWidget(right, 3) + + # Avoid UI flashing on Windows by only updating widgets when values actually change. + self._last_snapshot: dict[str, object] = {} + self._refresh_tick = 0 + # Poll timer (status + logs) + self._timer = QTimer(self) + self._timer.setInterval(self._poll_ms) + self._timer.timeout.connect(self._on_timer) + + # Initial refresh + self.refresh() + self._timer.start() + + # ----------------------------- + # Helpers + # ----------------------------- + + def _manager_name(self) -> str: + if sys.platform.startswith("win"): + return "Windows Service Control Manager (NSSM)" if self._svc._windows_has_nssm() else "Windows Service Control Manager" + if sys.platform == "darwin": + return "launchd" + return "systemd" if shutil.which("systemctl") else "(unknown)" + + def _windows_log_paths(self) -> tuple[str, str]: + label = self._svc._service_label() + try: + logs_dir = self._svc._windows_install_dir().parent / "log" + return str(logs_dir / f"{label}.out.log"), str(logs_dir / f"{label}.err.log") + except Exception: + return "", "" + + def _macos_log_paths(self) -> tuple[str, str]: + try: + logs_dir = Path.home() / "Library" / "Logs" / self._svc._app_name() + return str(logs_dir / "service.out.log"), str(logs_dir / "service.err.log") + except Exception: + return "", "" + + def _log_paths(self) -> tuple[str, str]: + if sys.platform.startswith("win"): + return self._windows_log_paths() + if sys.platform == "darwin": + return self._macos_log_paths() + # Linux: systemd typically logs to journal; still try common file paths + return "", "" + + def _set_bool_label(self, lbl: QLabel, value: bool) -> None: + lbl.setText("yes" if value else "no") + + def refresh(self) -> None: + try: + name = self._svc._app_name() + label = self._svc._service_label() + installed = self._svc._is_installed() + running = self._svc._is_service_active() if installed else self._svc._is_running() + pid = self._svc._read_pidfile() if not installed else None + + # NSSM path (Windows only) + if sys.platform.startswith("win"): + try: + nssm_path = self._svc._windows_find_nssm() + nssm_text = str(nssm_path) if nssm_path else "(not found)" + except Exception: + nssm_text = "(unknown)" + else: + nssm_text = "-" + + out_path, err_path = self._log_paths() + stdout_text = out_path if out_path else "(no file log configured)" + stderr_text = err_path if err_path else "(no file log configured)" + + # Snapshot current state to avoid redundant UI updates (prevents flashing on Windows) + snap: dict[str, object] = { + "name": name, + "label": label, + "manager": self._manager_name(), + "installed": installed, + "running": running, + "pid": str(pid) if pid else "-", + "nssm": nssm_text, + "stdout": stdout_text, + "stderr": stderr_text, + "btn_install": (not installed), + "btn_uninstall": installed, + "btn_start": (installed and not running), + "btn_stop": (installed and running), + } + + if snap != self._last_snapshot: + self._lbl_name.setText(str(snap["name"])) + self._lbl_label.setText(str(snap["label"])) + self._lbl_mgr.setText(str(snap["manager"])) + self._set_bool_label(self._lbl_installed, bool(snap["installed"])) + self._set_bool_label(self._lbl_running, bool(snap["running"])) + self._lbl_pid.setText(str(snap["pid"])) + self._lbl_nssm.setText(str(snap["nssm"])) + self._lbl_stdout.setText(str(snap["stdout"])) + self._lbl_stderr.setText(str(snap["stderr"])) + + # Button visibility: only show actions that make sense. + self._btn_install.setVisible(bool(snap["btn_install"])) + self._btn_uninstall.setVisible(bool(snap["btn_uninstall"])) + self._btn_start.setVisible(bool(snap["btn_start"])) + self._btn_stop.setVisible(bool(snap["btn_stop"])) + + self._last_snapshot = snap + + # Show a helpful note in logs pane when file logs aren't available. + if not out_path and not err_path: + note = ( + "Logs are not available as files on this platform/configuration.\n" + "- Windows: logs are written to ProgramData via NSSM settings.\n" + "- macOS: logs are written to ~/Library/Logs//.\n" + "- Linux: consider using journald (journalctl -u ).\n" + ) + # Only set the note once to avoid flicker + if self._txt_out.toPlainText().strip() == "": + self._txt_out.setPlainText(note) + if self._txt_err.toPlainText().strip() == "": + self._txt_err.setPlainText(note) + + except Exception as e: + QMessageBox.warning(self, "Service", f"Failed to refresh status: {e}") + + # ----------------------------- + # Actions + # ----------------------------- + + def _on_install(self) -> None: + try: + self._svc.install() + except Exception as e: + QMessageBox.critical(self, "Service", f"Install failed:\n\n{e}") + finally: + self.refresh() + + def _on_uninstall(self) -> None: + try: + self._svc.uninstall() + except Exception as e: + QMessageBox.critical(self, "Service", f"Uninstall failed:\n\n{e}") + finally: + self.refresh() + + def _on_start(self) -> None: + try: + self._svc._service_manager_start() + except Exception as e: + QMessageBox.critical(self, "Service", f"Start failed:\n\n{e}") + finally: + self.refresh() + + def _on_stop(self) -> None: + try: + self._svc._service_manager_stop() + except Exception as e: + QMessageBox.critical(self, "Service", f"Stop failed:\n\n{e}") + finally: + self.refresh() + + # ----------------------------- + # Log polling + # ----------------------------- + + def _on_timer(self) -> None: + # Only tail logs on a timer. Avoid polling status (may spawn sc/systemctl windows). + self._poll_logs() + + # ----------------------------- + # Log polling + # ----------------------------- + + def _append_text(self, widget: QPlainTextEdit, text: str) -> None: + if not text: + return + try: + widget.moveCursor(widget.textCursor().End) + widget.insertPlainText(text) + widget.moveCursor(widget.textCursor().End) + except Exception: + # Safe fallback + try: + widget.setPlainText(widget.toPlainText() + text) + except Exception: + pass + + def _poll_logs(self) -> None: + out_path, err_path = self._log_paths() + if out_path: + self._append_text(self._txt_out, self._tail.read_new_text(out_path)) + if err_path: + self._append_text(self._txt_err, self._tail.read_new_text(err_path)) + + def closeEvent(self, event) -> None: # type: ignore[override] + try: + if self._timer.isActive(): + self._timer.stop() + except Exception: + pass + super().closeEvent(event) diff --git a/src/bin/nssm/windows/x86/nssm.exe b/src/bin/nssm/windows/x86/nssm.exe new file mode 100644 index 0000000..8faee45 Binary files /dev/null and b/src/bin/nssm/windows/x86/nssm.exe differ diff --git a/src/bin/nssm/windows/x86_64/nssm.exe b/src/bin/nssm/windows/x86_64/nssm.exe new file mode 100644 index 0000000..6ccfe3c Binary files /dev/null and b/src/bin/nssm/windows/x86_64/nssm.exe differ diff --git a/styles/style.css b/styles/style.css index 503937b..8a40ced 100644 --- a/styles/style.css +++ b/styles/style.css @@ -1,19 +1,32 @@ -QDialog, QMessageBox, QProgressDialog, QTabWidget, QTabWidget::pane { - background-color: #393939; +QDialog, QMessageBox, QProgressDialog, QTabWidget, QTabWidget::pane, QGroupBox, QGroupBox::title { + background-color: #212121; color: #FFFFFF; font-family: Arial, sans-serif; font-size: 14px; } +QGroupBox { + border: 1px solid #76797C; + border-radius: 5px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + left: 10px; + padding: 0 6px; +} + QTabWidget::pane { background-color: #414141; border: 1px solid #76797C; border-radius: 5px; position: absolute; top: -1px; + padding: 10px; } -QLabel, QLineEdit, QCheckBox, QTextEdit, QComboBox, QSpinBox, QPushButton, QTabBar::tab { +QLabel, QLineEdit, QTimeEdit, QCheckBox, QTextEdit, QComboBox, QSpinBox, QPushButton, QTabBar::tab, QPlainTextEdit { font-size: 14px; border: 1px solid #76797C; border-radius: 5px; @@ -21,13 +34,17 @@ QLabel, QLineEdit, QCheckBox, QTextEdit, QComboBox, QSpinBox, QPushButton, QTabB margin: 5px 0px; } -QLineEdit, QTextEdit, QComboBox, QSpinBox { +QLineEdit, QTimeEdit, QTextEdit, QComboBox, QSpinBox, QPlainTextEdit { background-color: #212121; color: #FFFFFF; width: 300px; } -QLineEdit:focus, QTextEdit:focus, QComboBox:focus, QSpinBox:focus { +QTimeEdit { + width: 75px; +} + +QLineEdit:focus, QTimeEdit:focus, QTextEdit:focus, QComboBox:focus, QSpinBox:focus, QPlainTextEdit:focus { border: 1px solid #0d6efd; } @@ -117,6 +134,55 @@ QAbstractItemView::item:hover { background-color: #5f6263; border: none; } + +/* Added styling for QTableView and QTableWidget to match dark theme */ +QTableView, QTableWidget { + border: 1px solid #76797C; + border-radius: 5px; + background-color: #212121; + color: #FFFFFF; + gridline-color: #414344; + selection-background-color: #0d6efd; + selection-color: #FFFFFF; + outline: 0; + padding: 0px; + margin: 5px 0px; +} + +QHeaderView::section { + background-color: #414344; + color: #FFFFFF; + border: 1px solid #414344; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + padding: 8px 10px; +} + +QTableCornerButton::section { + background-color: #414344; + color: #FFFFFF; + border: 1px solid #414344; + padding: 8px 10px; +} + +QTableView::item, QTableWidget::item { + padding: 6px 10px; + border: none; +} + +QTableView::item:hover, QTableWidget::item:hover { + background-color: #5f6263; +} + +QTableView::item:selected, QTableWidget::item:selected { + background-color: #0d6efd; + color: #FFFFFF; +} + +QTableView:focus, QTableWidget:focus { + outline: 0; +} + QComboBox QFrame, QFrame#qt_qcombobox_popup { background-color: #212121; @@ -229,7 +295,7 @@ QPushButton:pressed, QTabBar::tab:pressed, QTabBar::tab:selected { #MsgBox { min-width: 400px; - background-color: #393939; + background-color: #212121; color: #FFFFFF; padding: 10px; font-size: 14px; @@ -237,7 +303,7 @@ QPushButton:pressed, QTabBar::tab:pressed, QTabBar::tab:selected { #Client { min-width: 400px; - background-color: #393939; + background-color: #212121; color: #FFFFFF; padding: 10px; font-size: 14px; diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..86308c9 --- /dev/null +++ b/update.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +BRANCH=$(git config -f .gitmodules submodule.src/core.branch) +cd src/core && git checkout $BRANCH && git pull && cd ../.. +git add src/core +git commit -m "General: Update submodule corePY" || echo "No changes to commit" +git push