diff --git a/.air.toml b/.air.toml
new file mode 100644
index 0000000..435a885
--- /dev/null
+++ b/.air.toml
@@ -0,0 +1,17 @@
+# Working directory
+root = "."
+
+# The main Go file
+main = "main.go"
+
+bin = "tmp/main.exe"
+
+# Watching all Go files, excluding certain directories
+[build]
+ cmd = "go build -o ./tmp/main.exe main.go"
+ include_ext = ["go"]
+ exclude_dir = ["fe", "panels", "builds"]
+
+# Restart on file changes
+[log]
+ time = true
diff --git a/.github/workflows/windows-release.yml b/.github/workflows/windows-release.yml
deleted file mode 100644
index 5048c9b..0000000
--- a/.github/workflows/windows-release.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-name: Release Build (Windows)
-
-on:
- push:
- branches:
- - "release/**"
-
-permissions:
- contents: write
-
-jobs:
- windows-release-build:
- runs-on: windows-latest
-
- steps:
- - name: Checkout the release branch
- uses: actions/checkout@v4
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Extract version from branch name
- id: extract
- shell: bash
- run: |
- version="${GITHUB_REF##*/}"
- echo "version=$version" >> $GITHUB_OUTPUT
-
- - name: Set up Git
- shell: bash
- run: |
- git config user.name "github-actions"
- git config user.email "github-actions@github.com"
-
- - name: Run build script
- shell: cmd
- run: .\build-scripts\windows-build.bat
-
- - name: Cleanup root directory
- shell: pwsh
- run: |
- $folders = @("app", "ui", "build-scripts")
- foreach ($folder in $folders) {
- if (Test-Path $folder) {
- Remove-Item -Recurse -Force -Path $folder
- Write-Output "Removed development folder: $folder"
- } else {
- Write-Output "$folder does not exist"
- }
- }
-
- # Delete all files except: Macrame.exe, favicon.ico, README.md
- Get-ChildItem -File | Where-Object { $_.Name -notin @("Macrame.exe", "favicon.ico", "README.md") } | ForEach-Object {
- Write-Output "Deleting file: $($_.Name)"
- Remove-Item -Force $_.FullName
- }
-
- - name: Commit and push build artifacts
- shell: bash
- run: |
- git add -A
- git commit -m "Automated release build for version: ${{ steps.extract.outputs.version }}"
- git push origin ${{ github.ref }}
-
- - name: Fetch and force merge into main
- shell: bash
- run: |
- git fetch origin main
- git checkout main
- git merge -X theirs ${{ github.ref }} -m "Merging release version ${{ steps.extract.outputs.version }} into main"
- git push origin main
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..345ff6f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+.env
+config.js
+
+devices/*
+tmp/
+log.txt
+
+Macrame.exe
+
+public
+macros/*
+builds
+node_modules
+ToDo.md
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index 35d673b..0000000
--- a/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Macrame
-
-**Version 1.0.0 is now available: [Macrame 1.0.0](https://github.com/Macrame-App/Macrame/archive/refs/heads/release/1.0.0.zip)**
-
-Turn Any Device into a button panel. Open-source, easy, and built to supercharge your workflow or gaming.
-Macrame is released under the GPL V3 licence. More information can be found at: [Macrame License](https://macrame-app.github.io/license.html)
-
-Macrame is small application that can be used to record keyboard macros.
-The macros can be linked to button panels and the panels can be used by devices on the same network.
-
-## Getting Started
-
-Read the [official documentation](https://macrame-app.github.io/) about the Macrame app to get started.
diff --git a/add-gpl-header.sh b/add-gpl-header.sh
new file mode 100644
index 0000000..fe20142
--- /dev/null
+++ b/add-gpl-header.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Directory to start searching from (default to current directory)
+DIR="${1:-.}"
+
+# Define the GPLv3 header content
+GPL_HEADER="Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see ."
+
+# Loop through all files in the directory (and subdirectories), excluding node_modules
+find "$DIR" \( -iname \*.go -o \( -path "$DIR/fe/src/*.js" -o -path "$DIR/fe/src/*.vue" -o -path "$DIR/fe/src/*.css" \) \) ! -path "*/node_modules/*" | while read file
+do
+ # Check if the file already has a GPL header
+ if ! grep -q "Copyright (C) 2025 Jesse Malotaux" "$file"; then
+ # Check if it's a Vue file and handle it carefully
+ if [[ "$file" == *.vue ]]; then
+ echo "Adding GPL header to: $file"
+ # Prepend the GPL header to Vue files as raw text
+ # Make sure we don't add comment marks that break Vue syntax
+ echo -e "\n\n$(cat "$file")" > "$file"
+ else
+ echo "Adding GPL header to: $file"
+ # Prepend the GPL header to other files (go, js, ts, etc.) as comments
+ echo -e "/*\n$GPL_HEADER\n*/\n\n$(cat "$file")" > "$file"
+ fi
+ else
+ echo "GPL header already present in: $file"
+ fi
+done
+
+echo "GPL header addition complete!"
diff --git a/app/api.go b/app/api.go
new file mode 100644
index 0000000..e9c2f84
--- /dev/null
+++ b/app/api.go
@@ -0,0 +1,137 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package app
+
+import (
+ "macrame/app/helper"
+ "mime"
+ "net/http"
+ "path/filepath"
+ "strings"
+)
+
+func ApiCORS(w http.ResponseWriter, r *http.Request) (http.ResponseWriter, *http.Request) {
+ origin := r.Header.Get("Origin")
+
+ w.Header().Set("Access-Control-Allow-Origin", "http://localhost:5173")
+
+ if strings.HasPrefix(r.Host, "192.168.") {
+ w.Header().Set("Access-Control-Allow-Origin", origin)
+ }
+
+ w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
+ w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Accept, Accept-Language, Accept-Encoding")
+
+ return w, r
+}
+
+func ApiGet(w http.ResponseWriter, r *http.Request) {
+ root, err := filepath.Abs("public")
+ if err != nil {
+ MCRMLog("ApiGet Abs Error: ", err)
+ return
+ }
+
+ var file string
+
+ if strings.Contains(r.URL.Path, "/config.js") {
+ file = filepath.Join(root, "config.js")
+ w.Header().Set("Content-Type", "text/javascript") // set content type header
+ } else if r.URL.Path != "/" {
+ file = filepath.Join(root, r.URL.Path)
+ }
+
+ contentType := mime.TypeByExtension(filepath.Ext(file)) // get content type
+
+ if contentType == "" {
+ file = filepath.Join(root, "index.html")
+ }
+
+ http.ServeFile(w, r, file)
+}
+
+func ApiPost(w http.ResponseWriter, r *http.Request) {
+ access, data, err := helper.EndpointAccess(w, r)
+
+ if !access || err != nil {
+ MCRMLog("ApiPost EndPointAccess Error: ", err)
+ return
+ }
+
+ if data != "" {
+ ApiAuth(data, w, r)
+ return
+ }
+
+ switch r.URL.Path {
+ case "/macro/check":
+ CheckMacro(w, r)
+ case "/macro/record":
+ SaveMacro(w, r)
+ case "/macro/list":
+ ListMacros(w, r)
+ case "/macro/open":
+ OpenMacro(w, r)
+ case "/macro/delete":
+ DeleteMacro(w, r)
+ case "/macro/play":
+ PlayMacro("", w, r)
+ case "/device/server/ip":
+ ListServerIP(w)
+ case "/device/list":
+ DeviceList(w, r)
+ case "/device/access/check":
+ DeviceAccessCheck(w, r)
+ case "/device/access/request":
+ DeviceAccessRequest(w, r)
+ case "/device/link/ping":
+ PingLink(w, r)
+ case "/device/link/start":
+ StartLink(w, r)
+ case "/device/link/poll":
+ PollLink(w, r)
+ case "/device/link/remove":
+ RemoveLink("", w, r)
+ case "/device/handshake":
+ Handshake(w, r)
+ case "/panel/list":
+ PanelList(w, r)
+ case "/panel/get":
+ GetPanel("", w, r)
+ case "/panel/save/json":
+ SavePanelJSON(w, r)
+ }
+}
+
+func ApiAuth(data string, w http.ResponseWriter, r *http.Request) {
+ switch r.URL.Path {
+ case "/macro/play":
+ PlayMacro(data, w, r)
+ case "/device/link/remove":
+ RemoveLink(data, w, r)
+ case "/panel/list":
+ MCRMLog("Authenticated Panellist")
+ PanelList(w, r)
+ case "/panel/get":
+ GetPanel(data, w, r)
+ }
+}
diff --git a/app/device.go b/app/device.go
new file mode 100644
index 0000000..6352e5f
--- /dev/null
+++ b/app/device.go
@@ -0,0 +1,329 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package app
+
+import (
+ "encoding/json"
+ "fmt"
+ "macrame/app/helper"
+ "macrame/app/structs"
+ "math/rand"
+ "net"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+func ListServerIP(w http.ResponseWriter) {
+ ip, err := GetServerIp()
+
+ if err != nil {
+ MCRMLog("GetServerIP err: ", err)
+ return
+ }
+
+ json.NewEncoder(w).Encode(ip)
+}
+
+func GetServerIp() (string, error) {
+ ifs, err := net.Interfaces()
+ if err != nil {
+ MCRMLog(err)
+ return "", err
+ }
+
+ for _, ifi := range ifs {
+ // Skip interfaces that are down
+ if ifi.Flags&net.FlagUp == 0 {
+ continue
+ }
+ // Skip loopback interfaces
+ if ifi.Flags&net.FlagLoopback != 0 {
+ continue
+ }
+
+ addrs, err := ifi.Addrs()
+ if err != nil {
+ MCRMLog(err)
+ continue
+ }
+
+ for _, addr := range addrs {
+ var ip net.IP
+
+ switch v := addr.(type) {
+ case *net.IPNet:
+ ip = v.IP
+ case *net.IPAddr:
+ ip = v.IP
+ }
+
+ if ip == nil || ip.To4() == nil {
+ continue
+ }
+
+ // Skip APIPA (169.254.x.x) addresses
+ if ip.IsLinkLocalUnicast() {
+ continue
+ }
+
+ // Found a good IP, return it
+ return ip.String(), nil
+ }
+ }
+
+ return "", fmt.Errorf("No IP found")
+}
+
+func DeviceList(w http.ResponseWriter, r *http.Request) {
+ dir := "devices"
+
+ files, err := os.ReadDir(dir)
+ if err != nil {
+ os.MkdirAll(dir, 0600)
+ files = nil
+ MCRMLog("DeviceList Error: ", err)
+ }
+
+ devices := make(map[string]map[string]interface{})
+
+ for _, file := range files {
+ filePath := dir + "/" + file.Name()
+ ext := filepath.Ext(filePath)
+ device := strings.TrimSuffix(file.Name(), ext)
+
+ if _, ok := devices[device]; !ok {
+ devices[device] = make(map[string]interface{})
+ }
+
+ if ext == ".json" {
+ devices[device]["settings"] = readDeviceSettings(filePath)
+ }
+ if ext == ".key" {
+ devices[device]["key"] = true
+ }
+ }
+
+ result := map[string]interface{}{
+ "devices": devices,
+ }
+
+ json.NewEncoder(w).Encode(result)
+}
+
+func readDeviceSettings(filepath string) (settings structs.Settings) {
+ data, err := os.ReadFile(filepath)
+ if err != nil {
+ MCRMLog("readDeviceSettings Error: ", err)
+ }
+
+ err = json.Unmarshal(data, &settings)
+ if err != nil {
+ MCRMLog("readDeviceSettings JSON Error: ", err)
+ }
+
+ return settings
+}
+
+func DeviceAccessCheck(w http.ResponseWriter, r *http.Request) {
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("DeviceAccessCheck Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ _, errSett := os.Stat("devices/" + req.Uuid + ".json")
+ _, errKey := os.Stat("devices/" + req.Uuid + ".key")
+
+ if (errSett == nil) && (errKey == nil) {
+ json.NewEncoder(w).Encode("authorized")
+ } else if (errSett == nil) && (errKey != nil) {
+ MCRMLog("DeviceAccessCheck: UUID: ", req.Uuid, "; Access: Unauthorized")
+ json.NewEncoder(w).Encode("unauthorized")
+ } else {
+ MCRMLog("DeviceAccessCheck: UUID: ", req.Uuid, "; Access: Unlinked")
+ json.NewEncoder(w).Encode("unlinked")
+ }
+}
+
+func DeviceAccessRequest(w http.ResponseWriter, r *http.Request) {
+ var req structs.Request
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ deviceSettings := structs.Settings{Name: req.Name, Type: req.Type}
+
+ settingsJSON, err := json.Marshal(deviceSettings)
+ if err != nil {
+ MCRMLog("DeviceAccessRequest JSON Error: ", err)
+ return
+ }
+
+ err = os.WriteFile("devices/"+req.Uuid+".json", settingsJSON, 0644)
+
+ if err != nil {
+ MCRMLog("DeviceAccessRequest Error: ", err)
+ return
+ }
+
+ json.NewEncoder(w).Encode("unauthorized")
+}
+
+func PingLink(w http.ResponseWriter, r *http.Request) {
+ var req structs.Check
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("PingLink Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ key, keyErr := os.ReadFile("devices/" + req.Uuid + ".key")
+ pin, pinErr := os.ReadFile("devices/" + req.Uuid + ".tmp")
+
+ encryptedKey, encErr := helper.EncryptAES(string(pin), string(key))
+
+ if keyErr == nil && pinErr == nil && encErr == nil {
+ MCRMLog("PINGLINK FIXED")
+ w.Header().Set("Content-Type", "application/json")
+ w.Write([]byte(encryptedKey))
+ return
+ } else {
+ MCRMLog("PingLink Error: keyErr:", keyErr, "; pinErr:", pinErr, "; encErr:", encErr)
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func StartLink(w http.ResponseWriter, r *http.Request) {
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("StartLink Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ pin := fmt.Sprintf("%04d", rand.Intn(10000))
+
+ deviceKey := helper.GenerateKey()
+
+ errKey := helper.SaveDeviceKey(req.Uuid, deviceKey)
+ savedPin, errPin := helper.TempPinFile(req.Uuid, pin)
+
+ if errKey == nil && errPin == nil && savedPin {
+ json.NewEncoder(w).Encode(pin)
+ } else {
+ MCRMLog("StartLink Error: errKey:", errKey, "; errPin:", errPin)
+ }
+}
+
+func PollLink(w http.ResponseWriter, r *http.Request) {
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ if helper.CheckPinFile(req.Uuid) {
+ json.NewEncoder(w).Encode(true)
+ return
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func RemoveLink(data string, w http.ResponseWriter, r *http.Request) {
+ req := &structs.Check{}
+ _, err := helper.ParseRequest(req, data, r)
+
+ if err != nil {
+ MCRMLog("RemoveLink ParseRequest Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ err = os.Remove("devices/" + req.Uuid + ".key")
+
+ if err != nil {
+ MCRMLog("RemoveLink Remove Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ json.NewEncoder(w).Encode(true)
+}
+
+func Handshake(w http.ResponseWriter, r *http.Request) {
+ var req structs.Handshake
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ return
+ }
+
+ deviceKey, err := helper.GetKeyByUuid(req.Uuid)
+
+ if err != nil {
+ MCRMLog("Handshake GetKeyByUuid Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ decryptShake, _ := helper.DecryptAES(deviceKey, req.Shake)
+
+ helper.RemovePinFile(req.Uuid)
+
+ if decryptShake == getDateStr() {
+ json.NewEncoder(w).Encode(true)
+ return
+ } else {
+ os.Remove("devices/" + req.Uuid + ".key")
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func getDateStr() string {
+ date := time.Now()
+ year, month, day := date.Date()
+ formattedDate := fmt.Sprintf("%04d%02d%02d", year, month, day)
+ return formattedDate
+}
diff --git a/app/helper/api-helper.go b/app/helper/api-helper.go
new file mode 100644
index 0000000..f88106b
--- /dev/null
+++ b/app/helper/api-helper.go
@@ -0,0 +1,123 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "encoding/json"
+ "errors"
+ "net"
+ "net/http"
+ "strings"
+
+ "macrame/app/structs"
+ . "macrame/app/structs"
+)
+
+func EndpointAccess(w http.ResponseWriter, r *http.Request) (bool, string, error) {
+ ip, _, err := net.SplitHostPort(r.RemoteAddr)
+
+ if err != nil {
+ return false, "", errors.New(r.URL.Path + ": SplitHostPort error: " + err.Error())
+ }
+
+ if (isLocal(ip) && isEndpointAllowed("Local", r.URL.Path)) ||
+ (isLanRemote(ip) && isEndpointAllowed("Remote", r.URL.Path)) {
+ return true, "", nil
+ } else if isLanRemote(ip) && isEndpointAllowed("Auth", r.URL.Path) {
+ data, err := decryptAuth(r)
+
+ if err != nil {
+ return false, "", err
+ }
+
+ return data != "", data, nil
+ }
+
+ return false, "", errors.New(r.URL.Path + ": not authorized or accessible")
+}
+
+func isLocal(ip string) bool {
+ return ip == "127.0.0.1" || ip == "::1"
+}
+
+func isLanRemote(ip string) bool {
+ return strings.HasPrefix(ip, "192.168.")
+}
+
+func isEndpointAllowed(source string, endpoint string) bool {
+ var endpoints, err = getAllowedEndpoints(source)
+ if err != "" {
+ return false
+ }
+
+ if (endpoints != nil) && (len(endpoints) > 0) {
+ for _, e := range endpoints {
+ if e == endpoint {
+ return true
+ }
+ }
+ }
+
+ return false
+}
+
+func getAllowedEndpoints(source string) (endpoints []string, err string) {
+ if source == "Local" {
+ return Endpoints.Local, ""
+ }
+ if source == "Remote" {
+ return Endpoints.Remote, ""
+ }
+ if source == "Auth" {
+ return Endpoints.Auth, ""
+ }
+
+ return []string{}, "No allowed endpoints"
+}
+
+func decryptAuth(r *http.Request) (string, error) {
+ var req structs.Authcall
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil || req.Uuid == "" || req.Data == "" {
+ return "", errors.New("DecryptAuth Error: " + err.Error() + "; UUID: " + req.Uuid + "; Data: " + req.Data)
+ }
+
+ deviceKey, errKey := GetKeyByUuid(req.Uuid)
+ decryptData, errDec := DecryptAES(deviceKey, req.Data)
+
+ if errKey != nil && errDec != nil || decryptData == "" {
+ return "", errors.New("DecryptAuth Error: " + errKey.Error() + "; " + errDec.Error() + "; UUID: " + req.Uuid + "; Data: " + req.Data)
+ }
+
+ return decryptData, nil
+}
+
+func ParseRequest(req interface{}, data string, r *http.Request) (d interface{}, err error) {
+ if data != "" {
+ dataBytes := []byte(data)
+ return req, json.Unmarshal(dataBytes, &req)
+ } else {
+ return req, json.NewDecoder(r.Body).Decode(&req)
+ }
+}
diff --git a/app/helper/browser-helper.go b/app/helper/browser-helper.go
new file mode 100644
index 0000000..5b2e3d0
--- /dev/null
+++ b/app/helper/browser-helper.go
@@ -0,0 +1,44 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "os/exec"
+ "runtime"
+)
+
+func OpenBrowser(url string) bool {
+ var args []string
+
+ switch runtime.GOOS {
+ case "darwin":
+ args = []string{"open"}
+ case "windows":
+ args = []string{"cmd", "/c", "start"}
+ default:
+ args = []string{"xdg-open"}
+ }
+
+ cmd := exec.Command(args[0], append(args[1:], url)...)
+
+ return cmd.Start() == nil
+}
diff --git a/app/helper/device-helper.go b/app/helper/device-helper.go
new file mode 100644
index 0000000..30d7c56
--- /dev/null
+++ b/app/helper/device-helper.go
@@ -0,0 +1,66 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "errors"
+ "os"
+ "time"
+)
+
+func TempPinFile(Uuid string, pin string) (bool, error) {
+ err := os.WriteFile("devices/"+Uuid+".tmp", []byte(pin), 0644)
+ if err != nil {
+ return false, errors.New("TempPinFile Error: " + err.Error())
+ }
+
+ time.AfterFunc(1*time.Minute, func() {
+ os.Remove("devices/" + Uuid + ".tmp")
+ })
+
+ return true, nil
+}
+
+func RemovePinFile(Uuid string) error { return os.Remove("devices/" + Uuid + ".tmp") }
+
+func CheckPinFile(Uuid string) bool {
+ _, err := os.Stat("devices/" + Uuid + ".tmp")
+ return err == nil
+}
+
+func SaveDeviceKey(Uuid string, key string) error {
+ err := os.WriteFile("devices/"+Uuid+".key", []byte(key), 0644)
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func GetKeyByUuid(Uuid string) (string, error) {
+ data, err := os.ReadFile("devices/" + Uuid + ".key")
+ if err != nil {
+ return "", err
+ }
+ return string(data), nil
+}
diff --git a/app/helper/encrypt-helper.go b/app/helper/encrypt-helper.go
new file mode 100644
index 0000000..ad883c5
--- /dev/null
+++ b/app/helper/encrypt-helper.go
@@ -0,0 +1,135 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "bytes"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/rand"
+ "encoding/base64"
+ "errors"
+ mathRand "math/rand"
+ "strings"
+)
+
+func EncryptAES(key string, plaintext string) (string, error) {
+ origData := []byte(plaintext)
+
+ // Create AES cipher
+ block, err := aes.NewCipher(keyToBytes(key))
+ if err != nil {
+ return "", err
+ }
+ blockSize := block.BlockSize()
+
+ origData = PKCS5Padding(origData, blockSize)
+
+ iv := []byte(EnvGet("MCRM__IV"))
+ blockMode := cipher.NewCBCEncrypter(block, iv)
+
+ crypted := make([]byte, len(origData))
+ blockMode.CryptBlocks(crypted, origData)
+
+ cryptedString := base64.StdEncoding.EncodeToString(crypted)
+
+ return cryptedString, nil
+}
+
+func DecryptAES(key string, cryptedText string) (string, error) {
+ crypted, err := base64.StdEncoding.DecodeString(cryptedText)
+
+ if err != nil {
+ return "", err
+ }
+
+ block, err := aes.NewCipher(keyToBytes(key))
+ if err != nil {
+ return "", err
+ }
+
+ iv := []byte(EnvGet("MCRM__IV"))
+ blockMode := cipher.NewCBCDecrypter(block, iv)
+
+ origData := make([]byte, len(crypted))
+
+ blockMode.CryptBlocks(origData, crypted)
+ origData, err = PKCS5UnPadding(origData)
+
+ if err != nil || len(origData) <= 3 {
+ return "", errors.New("invalid key")
+ }
+
+ origDataString := string(origData)
+
+ return origDataString, nil
+}
+
+func GenerateRandomString(length int) string {
+ b := make([]byte, length)
+ _, err := rand.Read(b)
+ if err != nil {
+ panic(err)
+ }
+ return base64.StdEncoding.EncodeToString(b)
+}
+
+func GenerateRandomIntegerString(length int) string {
+ var sb strings.Builder
+ for i := 0; i < length; i++ {
+ sb.WriteByte('0' + byte(mathRand.Intn(10)))
+ }
+ return sb.String()
+}
+
+func GenerateKey() string {
+ return strings.Replace(GenerateRandomString(24), "=", "", -1)
+}
+
+func keyToBytes(key string) []byte {
+ // Convert key to bytes
+ keyBytes := []byte(key)
+
+ // If key is 4 characters, append salt
+ if len(key) == 4 {
+ keyBytes = []byte(key + EnvGet("MCRM__SALT"))
+ }
+
+ return keyBytes
+}
+
+func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
+ padding := blockSize - len(ciphertext)%blockSize
+ padtext := bytes.Repeat([]byte{byte(padding)}, padding)
+ return append(ciphertext, padtext...)
+}
+
+func PKCS5UnPadding(origData []byte) ([]byte, error) {
+ length := len(origData)
+ unpadding := int(origData[length-1])
+
+ if (unpadding >= length) || (unpadding == 0) {
+ return nil, errors.New("unpadding error")
+ }
+
+ return origData[:(length - unpadding)], nil
+}
diff --git a/app/helper/env-helper.go b/app/helper/env-helper.go
new file mode 100644
index 0000000..28af4d4
--- /dev/null
+++ b/app/helper/env-helper.go
@@ -0,0 +1,128 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "encoding/json"
+ "log"
+ "net"
+ "os"
+ "strconv"
+ "strings"
+)
+
+var configPath = "public/config.js"
+
+func EnvGet(key string) string {
+
+ if !configFileExists() {
+ CreateConfigFile(configPath)
+ CheckFeDevDir()
+ }
+
+ data, err := os.ReadFile(configPath)
+ if err != nil {
+ log.Println("Error reading config.js:", err)
+ return ""
+ }
+
+ raw := strings.TrimSpace(string(data))
+ raw = strings.TrimPrefix(raw, "window.__CONFIG__ = ")
+ raw = strings.TrimSuffix(raw, ";")
+
+ var config map[string]string
+ if err := json.Unmarshal([]byte(raw), &config); err != nil {
+ log.Println("Error parsing config.js:", err)
+ return ""
+ }
+
+ return config[key]
+}
+
+func configFileExists() bool {
+ _, err := os.Stat(configPath)
+ return err == nil
+}
+
+func CheckFeDevDir() {
+ log.Println("Checking FE dev directory...")
+ _, err := os.Stat("fe")
+
+ if err != nil {
+ log.Println("Error checking FE dev directory:", err)
+ return
+ }
+
+ copyConfigToFe()
+}
+
+func copyConfigToFe() {
+ data, err := os.ReadFile(configPath)
+
+ if err != nil {
+ log.Println("Error reading config.js:", err)
+ return
+ }
+
+ if err := os.WriteFile("fe/config.js", data, 0644); err != nil {
+ log.Println("Error writing config.js:", err)
+ }
+}
+
+func CreateConfigFile(filename string) {
+ port, _ := findOpenPort()
+ saltKey := GenerateKey()
+ salt := saltKey[:28]
+ iv := GenerateRandomIntegerString(16)
+
+ config := map[string]string{
+ "MCRM__PORT": port,
+ "MCRM__SALT": salt,
+ "MCRM__IV": iv,
+ }
+
+ jsonData, err := json.MarshalIndent(config, "", " ")
+ if err != nil {
+ log.Println("Error creating config JSON:", err)
+ return
+ }
+ jsData := "window.__CONFIG__ = " + string(jsonData) + ";"
+
+ log.Println("Created JS config:", jsData)
+
+ if err := os.WriteFile(filename, []byte(jsData), 0644); err != nil {
+ log.Println("Error writing config.js:", err)
+ }
+}
+
+func findOpenPort() (string, error) {
+ addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
+ if err != nil {
+ return "", err
+ }
+ l, err := net.ListenTCP("tcp", addr)
+ if err != nil {
+ return "", err
+ }
+ defer l.Close()
+ return strconv.Itoa(l.Addr().(*net.TCPAddr).Port), nil
+}
diff --git a/app/helper/macro-helper.go b/app/helper/macro-helper.go
new file mode 100644
index 0000000..a49dc57
--- /dev/null
+++ b/app/helper/macro-helper.go
@@ -0,0 +1,114 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "encoding/json"
+ "errors"
+ "fmt"
+ "os"
+ "regexp"
+ "strings"
+ "time"
+
+ "github.com/go-vgo/robotgo"
+)
+
+func FormatMacroFileName(s string) string {
+ // Remove invalid characters
+ re := regexp.MustCompile(`[\/\?\*\>\<\:\"\|
+]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Replace spaces with underscores
+ s = strings.ReplaceAll(s, " ", "_")
+
+ // Remove special characters
+ re = regexp.MustCompile(`[!@#$%^&\(\)\[\]\{\}\~]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Truncate the string
+ if len(s) > 255 {
+ s = s[:255]
+ }
+
+ return s
+}
+
+func ReadMacroFile(filename string) (steps []map[string]interface{}, err error) {
+ content, err := os.ReadFile(filename)
+
+ if err != nil {
+ return nil, err
+ }
+
+ err = json.Unmarshal(content, &steps)
+
+ return steps, err
+}
+
+func RunMacroSteps(steps []map[string]interface{}) error {
+ for _, step := range steps {
+ switch step["type"] {
+ case "key":
+ keyCode := step["code"].(string)
+
+ if strings.Contains(keyCode, "|") {
+ keyCode = handleToggleCode(keyCode, step["direction"].(string))
+ }
+
+ robotgo.KeyToggle(keyCode, step["direction"].(string))
+ case "delay":
+
+ time.Sleep(time.Duration(step["value"].(float64)) * time.Millisecond)
+
+ default:
+ return errors.New("RunMacroSteps Unknown step type: %v" + fmt.Sprint(step["type"]))
+ }
+ }
+ return nil
+}
+
+var toggleCodes = map[string]bool{}
+
+func handleToggleCode(keyCode string, direction string) string {
+ splitCodes := strings.Split(keyCode, "|")
+
+ if direction == "down" {
+ if _, ok := toggleCodes[splitCodes[0]]; !ok {
+ toggleCodes[splitCodes[0]] = true
+ return splitCodes[0]
+ }
+ return splitCodes[1]
+ }
+
+ if direction == "up" {
+ if toggleCodes[splitCodes[0]] {
+ toggleCodes[splitCodes[0]] = false
+ return splitCodes[0]
+ }
+ delete(toggleCodes, splitCodes[0])
+ return splitCodes[1]
+ }
+
+ return ""
+}
diff --git a/app/helper/translation-helper.go b/app/helper/translation-helper.go
new file mode 100644
index 0000000..fdcffff
--- /dev/null
+++ b/app/helper/translation-helper.go
@@ -0,0 +1,101 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package helper
+
+import (
+ "strings"
+)
+
+var translations = map[string]string{
+ "ArrowUp": "up",
+ "ArrowDown": "down",
+ "ArrowRight": "right",
+ "ArrowLeft": "left",
+ "Meta": "cmd",
+ "MetaLeft": "lcmd",
+ "MetaRight": "rcmd",
+ "Alt": "alt",
+ "AltLeft": "lalt",
+ "AltRight": "ralt",
+ "Control": "ctrl",
+ "ControlLeft": "lctrl",
+ "ControlRight": "rctrl",
+ "Shift": "shift",
+ "ShiftLeft": "lshift",
+ "ShiftRight": "rshift",
+ "AudioVolumeMute": "audio_mute",
+ "AudioVolumeDown": "audio_vol_down",
+ "AudioVolumeUp": "audio_vol_up",
+ "MediaTrackPrevious": "audio_prev",
+ "MediaTrackNext": "audio_next",
+ "MediaPlayPause": "audio_play|audio_pause",
+ "Numpad0": "num0",
+ "Numpad1": "num1",
+ "Numpad2": "num2",
+ "Numpad3": "num3",
+ "Numpad4": "num4",
+ "Numpad5": "num5",
+ "Numpad6": "num6",
+ "Numpad7": "num7",
+ "Numpad8": "num8",
+ "Numpad9": "num9",
+ "NumLock": "num_lock",
+ "NumpadDecimal": "num.",
+ "NumpadAdd": "num+",
+ "NumpadSubtract": "num-",
+ "NumpadMultiply": "num*",
+ "NumpadDivide": "num/",
+ "NumpadEnter": "num_enter",
+ "Clear": "num_clear",
+ "BracketLeft": "[",
+ "BracketRight": "]",
+ "Quote": "'",
+ "Semicolon": ";",
+ "Backquote": "`",
+ "Backslash": "\\",
+ "IntlBackslash": "\\",
+ "Slash": "/",
+ "Comma": ",",
+ "Period": ".",
+ "Equal": "=",
+ "Minus": "-",
+}
+
+func Translate(code string) string {
+ if val, ok := translations[code]; ok {
+ return val
+ }
+ return strings.ToLower(code)
+}
+
+func ReverseTranslate(name string) string {
+ if name == "\\" {
+ return "Backslash"
+ }
+
+ for key, value := range translations {
+ if value == name {
+ return key
+ }
+ }
+ return name
+}
diff --git a/app/log.go b/app/log.go
new file mode 100644
index 0000000..db662ed
--- /dev/null
+++ b/app/log.go
@@ -0,0 +1,45 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package app
+
+import (
+ "log"
+ "os"
+)
+
+var logFile *os.File
+
+func MCRMLogInit() {
+ var err error
+ // Open or create the log file with append permissions
+ logFile, err = os.OpenFile("log.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
+ if err != nil {
+ log.Fatal(err) // Exit if we can't open the log file
+ }
+
+ // Optionally set log to write to file in addition to standard log output
+ log.SetOutput(logFile)
+}
+
+func MCRMLog(v ...interface{}) {
+ log.Println(v...) // Logs to terminal as well
+}
diff --git a/app/macro.go b/app/macro.go
new file mode 100644
index 0000000..5dff9e0
--- /dev/null
+++ b/app/macro.go
@@ -0,0 +1,229 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package app
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "log"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "macrame/app/helper"
+ "macrame/app/structs"
+)
+
+func CheckMacro(w http.ResponseWriter, r *http.Request) {
+ var req structs.MacroRequest
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("OpenMacro Decode Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ var filename = helper.FormatMacroFileName(req.Macro)
+
+ macroFile, err := helper.ReadMacroFile(fmt.Sprintf("macros/%s.json", filename))
+
+ if macroFile != nil && err == nil {
+ json.NewEncoder(w).Encode(true)
+ return
+ } else {
+ MCRMLog("OpenMacro ReadMacroFile Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+}
+
+func SaveMacro(w http.ResponseWriter, r *http.Request) {
+ var newMacro structs.NewMacro
+
+ body, err := io.ReadAll(r.Body)
+ if err != nil {
+ MCRMLog("SaveMacro ReadAll Error: ", err)
+ return
+ }
+
+ err = json.Unmarshal(body, &newMacro)
+ if err != nil {
+ MCRMLog("SaveMacro Unmarshal Error: ", err)
+ return
+ }
+
+ simplifiedSteps := make([]map[string]interface{}, 0)
+ for _, step := range newMacro.Steps {
+ simplifiedSteps = append(simplifiedSteps, simplifyMacro(step))
+ }
+
+ stepsJSON, err := json.Marshal(simplifiedSteps)
+ if err != nil {
+ MCRMLog("SaveMacro Marshal Error: ", err)
+ return
+ }
+
+ err = os.WriteFile("macros/"+helper.FormatMacroFileName(newMacro.Name)+".json", stepsJSON, 0644)
+ if err != nil {
+ MCRMLog("SaveMacro WriteFile Error: ", err)
+ return
+ }
+}
+
+func simplifyMacro(step structs.Step) map[string]interface{} {
+ simplified := make(map[string]interface{})
+
+ simplified["type"] = step.Type
+
+ switch step.Type {
+ case "delay":
+ simplified["value"] = step.Value
+ case "key":
+ keyCode := step.Code
+
+ if keyCode == "" || (strings.Contains(keyCode, "Digit")) {
+ keyCode = step.Key
+ } else if strings.Contains(keyCode, "Key") {
+ keyCode = strings.Replace(keyCode, "Key", "", 1)
+ }
+
+ simplified["code"] = helper.Translate(keyCode)
+ simplified["direction"] = step.Direction
+ }
+
+ return simplified
+}
+
+func ListMacros(w http.ResponseWriter, r *http.Request) {
+ dir := "macros"
+ files, err := os.ReadDir(dir)
+ if err != nil {
+ MCRMLog("ListMacros ReadDir Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ var macroList []structs.MacroInfo
+
+ for _, file := range files {
+ filename := filepath.Base(file.Name())
+ macroname := strings.TrimSuffix(filename, filepath.Ext(filename))
+ nicename := strings.Replace(macroname, "_", " ", -1)
+
+ macroList = append(macroList, structs.MacroInfo{
+ Name: nicename,
+ Macroname: macroname,
+ })
+ }
+
+ json.NewEncoder(w).Encode(macroList)
+}
+
+func DeleteMacro(w http.ResponseWriter, r *http.Request) {
+ var req structs.MacroRequest
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("DeleteMacro Decode Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ var filename = helper.FormatMacroFileName(req.Macro)
+
+ err = os.Remove("macros/" + filename + ".json")
+
+ if err != nil {
+ MCRMLog("DeleteMacro Remove Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+ log.Println("Deleted Macro:", req.Macro)
+ json.NewEncoder(w).Encode(true)
+}
+
+func PlayMacro(data string, w http.ResponseWriter, r *http.Request) {
+ req := &structs.MacroRequest{}
+ _, err := helper.ParseRequest(req, data, r)
+
+ if err != nil {
+ MCRMLog("PlayMacro ParseRequest Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ macro := req.Macro
+
+ MCRMLog("Playing Macro: ", macro)
+
+ var filename = helper.FormatMacroFileName(macro)
+ var filepath = fmt.Sprintf("macros/%s.json", filename)
+
+ macroFile, err := helper.ReadMacroFile(filepath)
+ if err != nil {
+ MCRMLog("PlayMacro ReadMacroFile Error: ", err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ err = helper.RunMacroSteps(macroFile)
+
+ if err != nil {
+ MCRMLog("PlayMacro RunMacroSteps Error: ", err)
+ return
+ }
+}
+
+func OpenMacro(w http.ResponseWriter, r *http.Request) {
+ var req structs.MacroRequest
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ MCRMLog("OpenMacro Decode Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ macroFile, err := helper.ReadMacroFile(fmt.Sprintf("macros/%s.json", req.Macro))
+
+ if err != nil {
+ MCRMLog("OpenMacro ReadMacroFile Error: ", err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ // Walk through the macro file and reverse translate codes
+ for i, action := range macroFile {
+ if actionType, ok := action["type"].(string); ok && actionType == "key" {
+ if code, ok := action["code"].(string); ok {
+ macroFile[i]["code"] = helper.ReverseTranslate(code)
+ }
+ }
+ }
+
+ json.NewEncoder(w).Encode(macroFile)
+}
diff --git a/app/panel.go b/app/panel.go
new file mode 100644
index 0000000..9c4a15f
--- /dev/null
+++ b/app/panel.go
@@ -0,0 +1,176 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package app
+
+import (
+ "encoding/base64"
+ "encoding/json"
+ "macrame/app/helper"
+ "macrame/app/structs"
+ "net/http"
+ "os"
+ "strings"
+)
+
+func PanelList(w http.ResponseWriter, r *http.Request) {
+ panelDirs, err := os.ReadDir("panels")
+ if err != nil {
+ MCRMLog("PanelList ReadDir Error: ", err)
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ var panelList []interface{}
+
+ for _, panelDir := range panelDirs {
+ if panelDir.IsDir() {
+ panelList = append(panelList, getPanelInfo(panelDir.Name()))
+ }
+ }
+
+ if len(panelList) == 0 {
+ MCRMLog("PanelList: No panels found")
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ json.NewEncoder(w).Encode(panelList)
+}
+
+func getPanelInfo(dirname string) structs.PanelInfo {
+ var panelInfo structs.PanelInfo
+
+ jsonFile, err := os.ReadFile("panels/" + dirname + "/panel.json")
+
+ if err != nil {
+ panelInfo.Name = strings.Replace(dirname, "_", " ", -1)
+ panelInfo.Description = "null"
+ panelInfo.AspectRatio = "null"
+ panelInfo.Macros = make(map[string]string)
+ } else {
+ err = json.Unmarshal(jsonFile, &panelInfo)
+ if err != nil {
+ MCRMLog("getPanelInfo Unmarshal Error: ", err)
+ }
+ }
+
+ panelInfo.Dir = dirname
+
+ thumb := getPanelThumb(dirname)
+ panelInfo.Thumb = thumb
+
+ return panelInfo
+}
+
+func getPanelThumb(dirname string) string {
+ extensions := []string{".jpg", ".jpeg", ".png", ".webp"}
+
+ for _, ext := range extensions {
+ filename := "thumbnail" + ext
+ file, err := os.Open("panels/" + dirname + "/" + filename)
+ if err != nil {
+ MCRMLog("getPanelThumb Open Error: ", err)
+ continue
+ }
+ defer file.Close()
+
+ return encodeImg(file)
+ }
+
+ return ""
+}
+
+func getPanelCode(dirname string) (html string, css string) {
+ htmlBytes, _ := os.ReadFile("panels/" + dirname + "/index.html")
+ cssBytes, _ := os.ReadFile("panels/" + dirname + "/output.css")
+
+ return string(htmlBytes), string(cssBytes)
+}
+
+func encodeImg(file *os.File) string {
+ contents, err := os.ReadFile(file.Name())
+ if err != nil {
+ MCRMLog("encodeImg ReadFile Error: ", err)
+ return ""
+ }
+
+ encoded := base64.StdEncoding.EncodeToString(contents)
+ return encoded
+}
+
+func GetPanel(data string, w http.ResponseWriter, r *http.Request) {
+ req := &structs.PanelRequest{}
+
+ _, err := helper.ParseRequest(req, data, r)
+ if err != nil {
+ MCRMLog("GetPanel ParseRequest Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ var response = structs.PanelResponse{}
+
+ panelInfo := getPanelInfo(req.Dir)
+ panelHtml, panelCss := getPanelCode(req.Dir)
+
+ response.Dir = panelInfo.Dir
+ response.Name = panelInfo.Name
+ response.Description = panelInfo.Description
+ response.AspectRatio = panelInfo.AspectRatio
+ response.Macros = panelInfo.Macros
+ response.Thumb = panelInfo.Thumb
+ response.HTML = panelHtml
+ response.Style = panelCss
+
+ json.NewEncoder(w).Encode(response)
+}
+
+func SavePanelJSON(w http.ResponseWriter, r *http.Request) {
+ var req structs.PanelSaveJSON
+ err := json.NewDecoder(r.Body).Decode(&req)
+ if err != nil {
+ MCRMLog("SavePanelJSON Decode Error: ", err)
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ filePath := "panels/" + req.Dir + "/panel.json"
+
+ req.Dir = ""
+
+ // Marshal the data to JSON without the dir field
+ jsonData, err := json.Marshal(req)
+ if err != nil {
+ MCRMLog("SavePanelJSON Marshal Error: ", err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ err = os.WriteFile(filePath, jsonData, 0644)
+ if err != nil {
+ MCRMLog("SavePanelJSON WriteFile Error: ", err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ w.WriteHeader(http.StatusOK)
+}
diff --git a/app/structs/api-struct.go b/app/structs/api-struct.go
new file mode 100644
index 0000000..7fc7889
--- /dev/null
+++ b/app/structs/api-struct.go
@@ -0,0 +1,66 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package structs
+
+type Allowed struct {
+ Local []string
+ Remote []string
+ Auth []string
+}
+
+var Endpoints = Allowed{
+ Local: []string{
+ "/macro/check",
+ "/macro/record",
+ "/macro/list",
+ "/macro/open",
+ "/macro/delete",
+ "/macro/play",
+ "/device/server/ip",
+ "/device/list",
+ "/device/access/check",
+ "/device/access/request",
+ "/device/link/ping",
+ "/device/link/start",
+ "/device/link/poll",
+ "/device/link/remove",
+ "/device/handshake",
+ "/panel/get",
+ "/panel/list",
+ "/panel/save/json",
+ },
+ Remote: []string{
+ "/device/access/check",
+ "/device/access/request",
+ "/device/server/ip",
+ "/device/link/ping",
+ "/device/link/end",
+ "/device/handshake",
+ "/device/auth",
+ },
+ Auth: []string{
+ "/macro/play",
+ "/device/link/remove",
+ "/panel/get",
+ "/panel/list",
+ },
+}
diff --git a/app/structs/device-struct.go b/app/structs/device-struct.go
new file mode 100644
index 0000000..dcad84b
--- /dev/null
+++ b/app/structs/device-struct.go
@@ -0,0 +1,52 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package structs
+
+type Settings struct {
+ Name string `json:"name"`
+ Type string `json:"type"`
+}
+
+type RemoteWebhook struct {
+ Event string `json:"event"`
+ Data string `json:"data"`
+}
+
+type Check struct {
+ Uuid string `json:"uuid"`
+}
+
+type Request struct {
+ Uuid string `json:"uuid"`
+ Name string `json:"name"`
+ Type string `json:"type"`
+}
+
+type Handshake struct {
+ Uuid string `json:"uuid"`
+ Shake string `json:"shake"`
+}
+
+type Authcall struct {
+ Uuid string `json:"uuid"`
+ Data string `json:"d"`
+}
diff --git a/app/structs/macro-struct.go b/app/structs/macro-struct.go
new file mode 100644
index 0000000..94e1fef
--- /dev/null
+++ b/app/structs/macro-struct.go
@@ -0,0 +1,58 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package structs
+
+type MacroRequest struct {
+ Macro string `json:"macro"`
+}
+
+type Step struct {
+ Type string `json:"type"`
+ Key string `json:"key"`
+ Code string `json:"code"`
+ Location int `json:"location"`
+ Direction string `json:"direction"`
+ Value int `json:"value"`
+}
+
+type NewMacro struct {
+ Name string `json:"name"`
+ Steps []Step `json:"steps"`
+}
+
+type MacroInfo struct {
+ Name string `json:"name"`
+ Macroname string `json:"macroname"`
+}
+
+type MacroKey struct {
+ Type string `json:"type"`
+ Key string `json:"key"`
+ Code string `json:"code"`
+ Location int `json:"location"`
+ Direction string `json:"direction"`
+}
+
+type MacroDelay struct {
+ Type string `json:"type"`
+ Value int `json:"value"`
+}
diff --git a/app/structs/panel-struct.go b/app/structs/panel-struct.go
new file mode 100644
index 0000000..7d1bb97
--- /dev/null
+++ b/app/structs/panel-struct.go
@@ -0,0 +1,65 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package structs
+
+type PanelJSON struct {
+ Name string `json:"name"`
+ Description string `json:"description"`
+ AspectRatio string `json:"aspectRatio"`
+ Macros map[string]string `json:"macros"`
+}
+
+type PanelSaveJSON struct {
+ // Name string `json:"name"`
+ // Description string `json:"description"`
+ // AspectRatio string `json:"aspectRatio"`
+ // Macros map[string]string `json:"macros"`
+ Dir string `json:"dir"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ AspectRatio string `json:"aspectRatio"`
+ Macros interface{} `json:"macros"`
+}
+
+type PanelInfo struct {
+ Dir string `json:"dir"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ AspectRatio string `json:"aspectRatio"`
+ Macros map[string]string `json:"macros"`
+ Thumb string `json:"thumb"`
+}
+
+type PanelRequest struct {
+ Dir string `json:"dir"`
+}
+
+type PanelResponse struct {
+ Dir string `json:"dir"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ AspectRatio string `json:"aspectRatio"`
+ Macros map[string]string `json:"macros"`
+ Thumb string `json:"thumb"`
+ HTML string `json:"html"`
+ Style string `json:"style"`
+}
diff --git a/app/systray.go b/app/systray.go
new file mode 100644
index 0000000..2c4d819
--- /dev/null
+++ b/app/systray.go
@@ -0,0 +1,64 @@
+package app
+
+import (
+ "macrame/app/helper"
+ "os"
+
+ "github.com/getlantern/systray"
+)
+
+func InitSystray() {
+ go func() {
+ systray.Run(OnReady, OnExit)
+ }()
+}
+
+func OnReady() {
+ systray.SetIcon(getIcon("favicon.ico"))
+ systray.SetTitle("Macrame")
+ systray.SetTooltip("Macrame - Server")
+
+ ip, err := GetServerIp()
+
+ if err == nil {
+ systray.AddMenuItem("IP: "+ip+":"+helper.EnvGet("MCRM__PORT"), "Server IP")
+ }
+
+ systray.AddSeparator()
+
+ addMCRMItem("Dashboard", "/")
+ addMCRMItem("Panels", "/panels")
+ addMCRMItem("Macros", "/macros")
+ addMCRMItem("Devices", "/devices")
+
+ systray.AddSeparator()
+
+ mQuit := systray.AddMenuItem("Quit Macrame", "Quit Macrame")
+ go func() {
+ <-mQuit.ClickedCh
+ os.Exit(0)
+ }()
+}
+
+func addMCRMItem(name, urlPath string) {
+ m := systray.AddMenuItem(name, name)
+
+ go func() {
+ <-m.ClickedCh
+ helper.OpenBrowser("http://localhost:" + helper.EnvGet("MCRM__PORT") + urlPath)
+ }()
+}
+
+func OnExit() {
+ systray.Quit()
+}
+
+func getIcon(path string) []byte {
+ icon, err := os.ReadFile(path)
+
+ if err != nil {
+ MCRMLog("getIcon Error: ", err)
+ }
+
+ return icon
+}
diff --git a/be/app/api.go b/be/app/api.go
new file mode 100644
index 0000000..41535e3
--- /dev/null
+++ b/be/app/api.go
@@ -0,0 +1,99 @@
+package app
+
+import (
+ "be/app/helper"
+ "log"
+ "mime"
+ "net/http"
+ "path/filepath"
+ "strings"
+)
+
+func ApiCORS(w http.ResponseWriter, r *http.Request) (http.ResponseWriter, *http.Request) {
+ origin := r.Header.Get("Origin")
+
+ w.Header().Set("Access-Control-Allow-Origin", "http://localhost:5173")
+
+ if strings.HasPrefix(r.Host, "192.168.") {
+ log.Println("lan device")
+ w.Header().Set("Access-Control-Allow-Origin", origin)
+ }
+
+ w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
+ w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Accept, Accept-Language, Accept-Encoding")
+
+ return w, r
+}
+
+func ApiGet(w http.ResponseWriter, r *http.Request) {
+ file := "" // base directory
+
+ if r.URL.Path != "/" {
+ file = "../public" + r.URL.Path // request
+ }
+ contentType := mime.TypeByExtension(filepath.Ext(file)) // get content type
+
+ if contentType != "" {
+ w.Header().Set("Content-Type", contentType) // set content type header
+ }
+
+ if contentType == "" {
+ file = "../public/index.html" // default
+ }
+
+ // log.Println("GET:", file)
+
+ http.ServeFile(w, r, file) // serve file
+}
+
+func ApiPost(w http.ResponseWriter, r *http.Request) {
+
+ access, data := helper.EndpointAccess(w, r)
+
+ if !access {
+ return
+ }
+
+ log.Println("api post", data == "")
+ if data != "" {
+ ApiAuth(data, w, r)
+ return
+ }
+
+ switch r.URL.Path {
+ case "/macro/record":
+ SaveMacro(w, r)
+ case "/macro/list":
+ ListMacros(w, r)
+ case "/macro/delete":
+ DeleteMacro(w, r)
+ case "/macro/play":
+ PlayMacro("", w, r)
+ case "/device/list":
+ DeviceList(w, r)
+ case "/device/access/check":
+ DeviceAccessCheck(w, r)
+ case "/device/access/request":
+ DeviceAccessRequest(w, r)
+ case "/device/link/ping":
+ PingLink(w, r)
+ case "/device/link/start":
+ StartLink(w, r)
+ case "/device/link/poll":
+ PollLink(w, r)
+ case "/device/link/remove":
+ RemoveLink("", w, r)
+ case "/device/handshake":
+ Handshake(w, r)
+ }
+}
+
+func ApiAuth(data string, w http.ResponseWriter, r *http.Request) {
+ log.Println("apiauth", data != "")
+ switch r.URL.Path {
+ case "/macro/play":
+ PlayMacro(data, w, r)
+ case "/device/link/remove":
+ RemoveLink(data, w, r)
+ }
+}
diff --git a/be/app/device.go b/be/app/device.go
new file mode 100644
index 0000000..90165db
--- /dev/null
+++ b/be/app/device.go
@@ -0,0 +1,245 @@
+package app
+
+import (
+ "be/app/helper"
+ "be/app/structs"
+ "encoding/json"
+ "fmt"
+ "log"
+ "math/rand"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+ "time"
+)
+
+func DeviceList(w http.ResponseWriter, r *http.Request) {
+ log.Println("device list")
+ dir := "devices"
+ files, err := os.ReadDir(dir)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ devices := make(map[string]map[string]interface{})
+
+ for _, file := range files {
+ filePath := dir + "/" + file.Name()
+ ext := filepath.Ext(filePath)
+ device := strings.TrimSuffix(file.Name(), ext)
+
+ log.Println(device, ext)
+
+ if _, ok := devices[device]; !ok {
+ devices[device] = make(map[string]interface{})
+ }
+
+ if ext == ".json" {
+ devices[device]["settings"] = readDeviceSettings(filePath)
+ }
+ if ext == ".key" {
+ devices[device]["key"] = true
+ }
+ }
+
+ result := map[string]interface{}{
+ "devices": devices,
+ }
+
+ json.NewEncoder(w).Encode(result)
+}
+
+func readDeviceSettings(filepath string) (settings structs.Settings) {
+ data, err := os.ReadFile(filepath)
+ if err != nil {
+ log.Println(err)
+ }
+
+ err = json.Unmarshal(data, &settings)
+ if err != nil {
+ log.Println(err)
+ }
+ log.Println(settings)
+ return settings
+}
+
+func DeviceAccessCheck(w http.ResponseWriter, r *http.Request) {
+ log.Println("device access check")
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ _, errSett := os.Stat("devices/" + req.Uuid + ".json")
+ _, errKey := os.Stat("devices/" + req.Uuid + ".key")
+
+ if (errSett == nil) && (errKey == nil) {
+ log.Println("authorized")
+ json.NewEncoder(w).Encode("authorized")
+ } else if (errSett == nil) && (errKey != nil) {
+ log.Println("unauthorized")
+ json.NewEncoder(w).Encode("unauthorized")
+ } else {
+ log.Println("unauthorized")
+ json.NewEncoder(w).Encode("unlinked")
+ }
+
+ return
+}
+
+func DeviceAccessRequest(w http.ResponseWriter, r *http.Request) {
+ var req structs.Request
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ deviceSettings := structs.Settings{Name: req.Name, Type: req.Type}
+
+ settingsJSON, err := json.Marshal(deviceSettings)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+
+ err = os.WriteFile("devices/"+req.Uuid+".json", settingsJSON, 0644)
+
+ if err != nil {
+ log.Println(err)
+ return
+ }
+
+ json.NewEncoder(w).Encode("unauthorized")
+}
+
+func PingLink(w http.ResponseWriter, r *http.Request) {
+ log.Println("ping link")
+ var req structs.Check
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ key, keyErr := os.ReadFile("devices/" + req.Uuid + ".key")
+ pin, pinErr := os.ReadFile("devices/" + req.Uuid + ".tmp")
+
+ encryptedKey, encErr := helper.EncryptAES(string(pin), string(key))
+
+ log.Println(encryptedKey, string(pin), string(key))
+
+ if keyErr == nil && pinErr == nil && encErr == nil {
+ w.Header().Set("Content-Type", "application/json")
+ w.Write([]byte(encryptedKey))
+ return
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func StartLink(w http.ResponseWriter, r *http.Request) {
+ log.Println("start link")
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ pin := fmt.Sprintf("%04d", rand.Intn(10000))
+
+ deviceKey := helper.GenerateKey()
+
+ err = helper.SaveDeviceKey(req.Uuid, deviceKey)
+
+ if err == nil && helper.TempPinFile(req.Uuid, pin) {
+ json.NewEncoder(w).Encode(pin)
+ }
+
+ return
+}
+
+func PollLink(w http.ResponseWriter, r *http.Request) {
+ var req structs.Check
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ if helper.CheckPinFile(req.Uuid) {
+ json.NewEncoder(w).Encode(true)
+ return
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func RemoveLink(data string, w http.ResponseWriter, r *http.Request) {
+ req := &structs.Check{}
+ _, err := helper.ParseRequest(req, data, r)
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ err = os.Remove("devices/" + req.Uuid + ".key")
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ json.NewEncoder(w).Encode(true)
+}
+
+func Handshake(w http.ResponseWriter, r *http.Request) {
+ var req structs.Handshake
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ return
+ }
+
+ deviceKey, err := helper.GetKeyByUuid(req.Uuid)
+
+ if err != nil {
+ json.NewEncoder(w).Encode(false)
+ return
+ }
+
+ decryptShake, _ := helper.DecryptAES(deviceKey, req.Shake)
+
+ if decryptShake == getDateStr() {
+ os.Remove("devices/" + req.Uuid + ".tmp")
+
+ json.NewEncoder(w).Encode(true)
+ return
+ } else {
+ os.Remove("devices/" + req.Uuid + ".key")
+ }
+
+ json.NewEncoder(w).Encode(false)
+}
+
+func getDateStr() string {
+ date := time.Now()
+ year, month, day := date.Date()
+ formattedDate := fmt.Sprintf("%04d%02d%02d", year, month, day)
+ return formattedDate
+}
diff --git a/be/app/helper/api-helper.go b/be/app/helper/api-helper.go
new file mode 100644
index 0000000..8adacde
--- /dev/null
+++ b/be/app/helper/api-helper.go
@@ -0,0 +1,102 @@
+package helper
+
+import (
+ "encoding/json"
+ "log"
+ "net"
+ "net/http"
+ "strings"
+
+ "be/app/structs"
+ . "be/app/structs"
+)
+
+func EndpointAccess(w http.ResponseWriter, r *http.Request) (bool, string) {
+ ip, _, err := net.SplitHostPort(r.RemoteAddr)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if (isLocal(ip) && isEndpointAllowed("Local", r.URL.Path)) ||
+ (isLanRemote(ip) && isEndpointAllowed("Remote", r.URL.Path)) {
+ log.Println(r.URL.Path, "endpoint access: accessible")
+ return true, ""
+ } else if isLanRemote(ip) && isEndpointAllowed("Auth", r.URL.Path) {
+ log.Println(r.URL.Path, "endpoint access: authorized")
+
+ data := decryptAuth(r)
+
+ return data != "", data
+ }
+
+ log.Println(r.URL.Path, "endpoint access: not authorized or accessible")
+
+ return false, ""
+}
+
+func isLocal(ip string) bool {
+ return ip == "127.0.0.1" || ip == "::1"
+}
+
+func isLanRemote(ip string) bool {
+ return strings.HasPrefix(ip, "192.168.")
+}
+
+func isEndpointAllowed(source string, endpoint string) bool {
+ var endpoints, err = getAllowedEndpoints(source)
+ if err != "" {
+ log.Println(err)
+ }
+
+ if (endpoints != nil) && (len(endpoints) > 0) {
+ for _, e := range endpoints {
+ if e == endpoint {
+ return true
+ }
+ }
+ }
+
+ return false
+}
+
+func getAllowedEndpoints(source string) (endpoints []string, err string) {
+ if source == "Local" {
+ return Endpoints.Local, ""
+ }
+ if source == "Remote" {
+ return Endpoints.Remote, ""
+ }
+ if source == "Auth" {
+ return Endpoints.Auth, ""
+ }
+
+ return []string{}, "No allowed endpoints"
+}
+
+func decryptAuth(r *http.Request) string {
+ var req structs.Authcall
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil || req.Uuid == "" || req.Data == "" {
+ return ""
+ }
+
+ deviceKey, errKey := GetKeyByUuid(req.Uuid)
+ decryptData, errDec := DecryptAES(deviceKey, req.Data)
+
+ if errKey != nil && errDec != nil || decryptData == "" {
+ return ""
+ }
+
+ return decryptData
+}
+
+func ParseRequest(req interface{}, data string, r *http.Request) (d interface{}, err error) {
+ if data != "" {
+ dataBytes := []byte(data)
+ return req, json.Unmarshal(dataBytes, &req)
+ } else {
+ return req, json.NewDecoder(r.Body).Decode(&req)
+ }
+}
diff --git a/be/app/helper/browser-helper.go b/be/app/helper/browser-helper.go
new file mode 100644
index 0000000..579bc9e
--- /dev/null
+++ b/be/app/helper/browser-helper.go
@@ -0,0 +1,23 @@
+package helper
+
+import (
+ "os/exec"
+ "runtime"
+)
+
+func OpenBrowser(url string) bool {
+ var args []string
+
+ switch runtime.GOOS {
+ case "darwin":
+ args = []string{"open"}
+ case "windows":
+ args = []string{"cmd", "/c", "start"}
+ default:
+ args = []string{"xdg-open"}
+ }
+
+ cmd := exec.Command(args[0], append(args[1:], url)...)
+
+ return cmd.Start() == nil
+}
diff --git a/be/app/helper/device-helper.go b/be/app/helper/device-helper.go
new file mode 100644
index 0000000..38db5ba
--- /dev/null
+++ b/be/app/helper/device-helper.go
@@ -0,0 +1,46 @@
+package helper
+
+import (
+ "log"
+ "os"
+ "time"
+)
+
+func TempPinFile(Uuid string, pin string) bool {
+ log.Println("temp pin file", Uuid, pin)
+ err := os.WriteFile("devices/"+Uuid+".tmp", []byte(pin), 0644)
+ if err != nil {
+ log.Println(err)
+ return false
+ }
+
+ time.AfterFunc(1*time.Minute, func() {
+ log.Println("deleting", Uuid, pin)
+ os.Remove("devices/" + Uuid + ".tmp")
+ })
+
+ return true
+}
+
+func CheckPinFile(Uuid string) bool {
+ _, err := os.Stat("devices/" + Uuid + ".tmp")
+ return err == nil
+}
+
+func SaveDeviceKey(Uuid string, key string) error {
+ err := os.WriteFile("devices/"+Uuid+".key", []byte(key), 0644)
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func GetKeyByUuid(Uuid string) (string, error) {
+ data, err := os.ReadFile("devices/" + Uuid + ".key")
+ if err != nil {
+ return "", err
+ }
+ return string(data), nil
+}
diff --git a/be/app/helper/encrypt-helper.go b/be/app/helper/encrypt-helper.go
new file mode 100644
index 0000000..f5a6f91
--- /dev/null
+++ b/be/app/helper/encrypt-helper.go
@@ -0,0 +1,105 @@
+package helper
+
+import (
+ "bytes"
+ "crypto/aes"
+ "crypto/cipher"
+ "crypto/rand"
+ "encoding/base64"
+ "errors"
+ "strings"
+)
+
+func EncryptAES(key string, plaintext string) (string, error) {
+ origData := []byte(plaintext)
+
+ // Create AES cipher
+ block, err := aes.NewCipher(keyToBytes(key))
+ if err != nil {
+ return "", err
+ }
+ blockSize := block.BlockSize()
+
+ origData = PKCS5Padding(origData, blockSize)
+
+ iv := []byte(EnvGet("MCRM__IV"))
+ blockMode := cipher.NewCBCEncrypter(block, iv)
+
+ crypted := make([]byte, len(origData))
+ blockMode.CryptBlocks(crypted, origData)
+
+ cryptedString := base64.StdEncoding.EncodeToString(crypted)
+
+ return cryptedString, nil
+}
+
+func DecryptAES(key string, cryptedText string) (string, error) {
+ crypted, err := base64.StdEncoding.DecodeString(cryptedText)
+
+ if err != nil {
+ return "", err
+ }
+
+ block, err := aes.NewCipher(keyToBytes(key))
+ if err != nil {
+ return "", err
+ }
+
+ iv := []byte(EnvGet("MCRM__IV"))
+ blockMode := cipher.NewCBCDecrypter(block, iv)
+
+ origData := make([]byte, len(crypted))
+
+ blockMode.CryptBlocks(origData, crypted)
+ origData, err = PKCS5UnPadding(origData)
+
+ if err != nil || len(origData) <= 3 {
+ return "", errors.New("invalid key")
+ }
+
+ origDataString := string(origData)
+
+ return origDataString, nil
+}
+
+func generateRandomString(length int) string {
+ b := make([]byte, length)
+ _, err := rand.Read(b)
+ if err != nil {
+ panic(err)
+ }
+ return base64.StdEncoding.EncodeToString(b)
+}
+
+func GenerateKey() string {
+ return strings.Replace(generateRandomString(24), "=", "", -1)
+}
+
+func keyToBytes(key string) []byte {
+ // Convert key to bytes
+ keyBytes := []byte(key)
+
+ // If key is 4 characters, append salt
+ if len(key) == 4 {
+ keyBytes = []byte(key + EnvGet("MCRM__SALT"))
+ }
+
+ return keyBytes
+}
+
+func PKCS5Padding(ciphertext []byte, blockSize int) []byte {
+ padding := blockSize - len(ciphertext)%blockSize
+ padtext := bytes.Repeat([]byte{byte(padding)}, padding)
+ return append(ciphertext, padtext...)
+}
+
+func PKCS5UnPadding(origData []byte) ([]byte, error) {
+ length := len(origData)
+ unpadding := int(origData[length-1])
+
+ if (unpadding >= length) || (unpadding == 0) {
+ return nil, errors.New("unpadding error")
+ }
+
+ return origData[:(length - unpadding)], nil
+}
diff --git a/be/app/helper/env-helper.go b/be/app/helper/env-helper.go
new file mode 100644
index 0000000..0c58023
--- /dev/null
+++ b/be/app/helper/env-helper.go
@@ -0,0 +1,16 @@
+package helper
+
+import (
+ "log"
+ "os"
+
+ "github.com/joho/godotenv"
+)
+
+func EnvGet(key string) string {
+ err := godotenv.Load("../.env")
+ if err != nil {
+ log.Fatal("Error loading .env file")
+ }
+ return os.Getenv("VITE_" + key)
+}
diff --git a/be/app/helper/macro-helper.go b/be/app/helper/macro-helper.go
new file mode 100644
index 0000000..ec6a94a
--- /dev/null
+++ b/be/app/helper/macro-helper.go
@@ -0,0 +1,64 @@
+package helper
+
+import (
+ "encoding/json"
+ "log"
+ "os"
+ "regexp"
+ "strings"
+ "time"
+
+ "be/app/structs"
+
+ "github.com/go-vgo/robotgo"
+)
+
+func FormatMacroFileName(s string) string {
+ // Remove invalid characters
+ re := regexp.MustCompile(`[\/\?\*\>\<\:\\"\|\n]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Replace spaces with underscores
+ s = strings.ReplaceAll(s, " ", "_")
+
+ // Remove special characters
+ re = regexp.MustCompile(`[!@#$%^&\(\)\[\]\{\}\~]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Truncate the string
+ if len(s) > 255 {
+ s = s[:255]
+ }
+
+ return s
+}
+
+func ReadMacroFile(filename string) (steps []structs.Step, err error) {
+ log.Println(filename)
+
+ content, err := os.ReadFile(filename)
+
+ if err != nil {
+ log.Fatal("Error when opening file: ", err)
+ }
+
+ err = json.Unmarshal(content, &steps)
+
+ return steps, err
+}
+
+func RunMacroSteps(steps []structs.Step) {
+ for _, step := range steps {
+ // log.Println(step)
+ switch step.Type {
+ case "key":
+ robotgo.KeyToggle(step.Key, step.Direction)
+ // log.Println("Toggling", step.Key, "to", step.Direction)
+ case "delay":
+ time.Sleep(time.Duration(step.Location) * time.Millisecond)
+ // log.Println("Sleeping for", step.Value, "milliseconds")
+ default:
+ log.Println("Unknown step type:", step.Type)
+ }
+ }
+}
diff --git a/be/app/macro.go b/be/app/macro.go
new file mode 100644
index 0000000..4b82e5a
--- /dev/null
+++ b/be/app/macro.go
@@ -0,0 +1,88 @@
+package app
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "log"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "be/app/helper"
+ "be/app/structs"
+)
+
+func SaveMacro(w http.ResponseWriter, r *http.Request) {
+ var newMacro structs.NewMacro
+
+ body, err := io.ReadAll(r.Body)
+ if err != nil {
+ panic(err)
+ }
+
+ log.Println(string(body))
+
+ err = json.Unmarshal(body, &newMacro)
+ if err != nil {
+ panic(err)
+ }
+
+ stepsJSON, err := json.Marshal(newMacro.Steps)
+ if err != nil {
+ panic(err)
+ }
+
+ err = os.WriteFile("../macros/"+helper.FormatMacroFileName(newMacro.Name)+".json", stepsJSON, 0644)
+ if err != nil {
+ panic(err)
+ }
+}
+
+func ListMacros(w http.ResponseWriter, r *http.Request) {
+ log.Println("listing macros")
+ dir := "../macros"
+ files, err := os.ReadDir(dir)
+ if err != nil {
+ log.Println(err)
+ }
+
+ var fileNames []string
+
+ for _, file := range files {
+ filename := filepath.Base(file.Name())
+ filename = strings.TrimSuffix(filename, filepath.Ext(filename))
+ filename = strings.Replace(filename, "_", " ", -1)
+
+ fileNames = append(fileNames, filename)
+ }
+
+ json.NewEncoder(w).Encode(fileNames)
+}
+
+func DeleteMacro(w http.ResponseWriter, r *http.Request) {}
+
+func PlayMacro(data string, w http.ResponseWriter, r *http.Request) {
+ req := &structs.MacroRequest{}
+ _, err := helper.ParseRequest(req, data, r)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ macro := req.Macro
+
+ var filename = helper.FormatMacroFileName(macro)
+ var filepath = fmt.Sprintf("../macros/%s.json", filename)
+
+ macroFile, err := helper.ReadMacroFile(filepath)
+ if err != nil {
+ fmt.Println(err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ helper.RunMacroSteps(macroFile)
+}
diff --git a/be/app/structs/api-struct.go b/be/app/structs/api-struct.go
new file mode 100644
index 0000000..774bbad
--- /dev/null
+++ b/be/app/structs/api-struct.go
@@ -0,0 +1,37 @@
+package structs
+
+type Allowed struct {
+ Local []string
+ Remote []string
+ Auth []string
+}
+
+var Endpoints = Allowed{
+ Local: []string{
+ "/macro/record",
+ "/macro/list",
+ "/macro/delete",
+ "/macro/play",
+ "/device/list",
+ "/device/access/check",
+ "/device/access/request",
+ "/device/link/ping",
+ "/device/link/start",
+ "/device/link/poll",
+ "/device/link/remove",
+ "/device/handshake",
+ },
+ Remote: []string{
+ "/macro/list",
+ "/device/access/check",
+ "/device/access/request",
+ "/device/link/ping",
+ "/device/link/end",
+ "/device/handshake",
+ "/device/auth",
+ },
+ Auth: []string{
+ "/macro/play",
+ "/device/link/remove",
+ },
+}
diff --git a/be/app/structs/device-struct.go b/be/app/structs/device-struct.go
new file mode 100644
index 0000000..39586cd
--- /dev/null
+++ b/be/app/structs/device-struct.go
@@ -0,0 +1,31 @@
+package structs
+
+type Settings struct {
+ Name string `json:"name"`
+ Type string `json:"type"`
+}
+
+type RemoteWebhook struct {
+ Event string `json:"event"`
+ Data string `json:"data"`
+}
+
+type Check struct {
+ Uuid string `json:"uuid"`
+}
+
+type Request struct {
+ Uuid string `json:"uuid"`
+ Name string `json:"name"`
+ Type string `json:"type"`
+}
+
+type Handshake struct {
+ Uuid string `json:"uuid"`
+ Shake string `json:"shake"`
+}
+
+type Authcall struct {
+ Uuid string `json:"uuid"`
+ Data string `json:"d"`
+}
diff --git a/be/app/structs/macro-struct.go b/be/app/structs/macro-struct.go
new file mode 100644
index 0000000..a22fa1b
--- /dev/null
+++ b/be/app/structs/macro-struct.go
@@ -0,0 +1,19 @@
+package structs
+
+type MacroRequest struct {
+ Macro string `json:"macro"`
+}
+
+type Step struct {
+ Type string `json:"type"`
+ Key string `json:"key"`
+ Code string `json:"code"`
+ Location int `json:"location"`
+ Direction string `json:"direction"`
+ Value int `json:"value"`
+}
+
+type NewMacro struct {
+ Name string `json:"name"`
+ Steps []Step `json:"steps"`
+}
diff --git a/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.json b/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.json
new file mode 100644
index 0000000..e0eb582
--- /dev/null
+++ b/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.json
@@ -0,0 +1 @@
+{"name":"Unknown desktop","type":"desktop"}
\ No newline at end of file
diff --git a/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.key b/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.key
new file mode 100644
index 0000000..5bb53d8
--- /dev/null
+++ b/be/devices/a42e16a8-0e99-4bb9-a93f-363740c45b24.key
@@ -0,0 +1 @@
+3JYxP8LOq1Y2fhpgEtpXVJ3v4s3qdML3
\ No newline at end of file
diff --git a/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.json b/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.json
new file mode 100644
index 0000000..203fbb3
--- /dev/null
+++ b/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.json
@@ -0,0 +1 @@
+{"name":"Unknown mobile","type":"mobile"}
\ No newline at end of file
diff --git a/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.key b/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.key
new file mode 100644
index 0000000..4aa4e7a
--- /dev/null
+++ b/be/devices/f70778be-99c1-4c5c-b1a2-36ef73d971a0.key
@@ -0,0 +1 @@
+4MqIbBoPsHizsWCyeqg6gd/wpQzfhc7e
\ No newline at end of file
diff --git a/be/go.mod b/be/go.mod
new file mode 100644
index 0000000..abe1604
--- /dev/null
+++ b/be/go.mod
@@ -0,0 +1,38 @@
+module be
+
+go 1.24.0
+
+require (
+ github.com/go-vgo/robotgo v0.110.6
+ github.com/joho/godotenv v1.5.1
+)
+
+require (
+ github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e // indirect
+ github.com/ebitengine/purego v0.8.2 // indirect
+ github.com/gen2brain/shm v0.1.1 // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/godbus/dbus/v5 v5.1.0 // indirect
+ github.com/jezek/xgb v1.1.1 // indirect
+ github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c // indirect
+ github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect
+ github.com/lxn/win v0.0.0-20210218163916-a377121e959e // indirect
+ github.com/otiai10/gosseract v2.2.1+incompatible // indirect
+ github.com/otiai10/mint v1.6.3 // indirect
+ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
+ github.com/robotn/xgb v0.10.0 // indirect
+ github.com/robotn/xgbutil v0.10.0 // indirect
+ github.com/shirou/gopsutil/v4 v4.25.1 // indirect
+ github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35 // indirect
+ github.com/tklauser/go-sysconf v0.3.14 // indirect
+ github.com/tklauser/numcpus v0.9.0 // indirect
+ github.com/vcaesar/gops v0.40.0 // indirect
+ github.com/vcaesar/imgo v0.40.2 // indirect
+ github.com/vcaesar/keycode v0.10.1 // indirect
+ github.com/vcaesar/tt v0.20.1 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
+ golang.org/x/image v0.24.0 // indirect
+ golang.org/x/net v0.38.0 // indirect
+ golang.org/x/sys v0.31.0 // indirect
+)
diff --git a/be/go.sum b/be/go.sum
new file mode 100644
index 0000000..27c1608
--- /dev/null
+++ b/be/go.sum
@@ -0,0 +1,80 @@
+github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298/go.mod h1:D+QujdIlUNfa0igpNMk6UIvlb6C252URs4yupRUV4lQ=
+github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966/go.mod h1:Mid70uvE93zn9wgF92A/r5ixgnvX8Lh68fxp9KQBaI0=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e h1:L+XrFvD0vBIBm+Wf9sFN6aU395t7JROoai0qXZraA4U=
+github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e/go.mod h1:SUxUaAK/0UG5lYyZR1L1nC4AaYYvSSYTWQSH3FPcxKU=
+github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I=
+github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
+github.com/gen2brain/shm v0.1.1 h1:1cTVA5qcsUFixnDHl14TmRoxgfWEEZlTezpUj1vm5uQ=
+github.com/gen2brain/shm v0.1.1/go.mod h1:UgIcVtvmOu+aCJpqJX7GOtiN7X2ct+TKLg4RTxwPIUA=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-vgo/robotgo v0.110.6 h1:1tOxlmTXYg6F3Xs8IT++331MxY2nZ+Q3B6eW312llbo=
+github.com/go-vgo/robotgo v0.110.6/go.mod h1:eBUjTHY1HYjzdi1+UWJUbxB+b9gE+l4Ei7vQU/9SnLw=
+github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
+github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4=
+github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk=
+github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
+github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
+github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c h1:1IlzDla/ZATV/FsRn1ETf7ir91PHS2mrd4VMunEtd9k=
+github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c/go.mod h1:Pmpz2BLf55auQZ67u3rvyI2vAQvNetkK/4zYUmpauZQ=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
+github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc=
+github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
+github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
+github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
+github.com/otiai10/gosseract v2.2.1+incompatible h1:Ry5ltVdpdp4LAa2bMjsSJH34XHVOV7XMi41HtzL8X2I=
+github.com/otiai10/gosseract v2.2.1+incompatible/go.mod h1:XrzWItCzCpFRZ35n3YtVTgq5bLAhFIkascoRo8G32QE=
+github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs=
+github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
+github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ=
+github.com/robotn/xgb v0.10.0 h1:O3kFbIwtwZ3pgLbp1h5slCQ4OpY8BdwugJLrUe6GPIM=
+github.com/robotn/xgb v0.10.0/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ=
+github.com/robotn/xgbutil v0.10.0 h1:gvf7mGQqCWQ68aHRtCxgdewRk+/KAJui6l3MJQQRCKw=
+github.com/robotn/xgbutil v0.10.0/go.mod h1:svkDXUDQjUiWzLrA0OZgHc4lbOts3C+uRfP6/yjwYnU=
+github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs=
+github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35 h1:wAZbkTZkqDzWsqxPh2qkBd3KvFU7tcxV0BP0Rnhkxog=
+github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35/go.mod h1:aMd4yDHLjbOuYP6fMxj1d9ACDQlSWwYztcpybGHCQc8=
+github.com/tc-hib/winres v0.2.1 h1:YDE0FiP0VmtRaDn7+aaChp1KiF4owBiJa5l964l5ujA=
+github.com/tc-hib/winres v0.2.1/go.mod h1:C/JaNhH3KBvhNKVbvdlDWkbMDO9H4fKKDaN7/07SSuk=
+github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
+github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
+github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo=
+github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI=
+github.com/vcaesar/gops v0.40.0 h1:I+1RCGiV+LkZJUYNzAd373xs0uM2UyeFdZBmow8HfCM=
+github.com/vcaesar/gops v0.40.0/go.mod h1:3u/USW7JovqUK6i13VOD3qWfvXXd2TIIKE4PYIv4TOM=
+github.com/vcaesar/imgo v0.40.2 h1:5GWScRLdBCMtO1v2I1bs+ZmDLZFINxYSMZ+mtUw5qPM=
+github.com/vcaesar/imgo v0.40.2/go.mod h1:MVCl+FxHI2gTgmiHoi0n5xNCbYcfv9SVtdEOUC92+eo=
+github.com/vcaesar/keycode v0.10.1 h1:0DesGmMAPWpYTCYddOFiCMKCDKgNnwiQa2QXindVUHw=
+github.com/vcaesar/keycode v0.10.1/go.mod h1:JNlY7xbKsh+LAGfY2j4M3znVrGEm5W1R8s/Uv6BJcfQ=
+github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4=
+github.com/vcaesar/tt v0.20.1/go.mod h1:cH2+AwGAJm19Wa6xvEa+0r+sXDJBT0QgNQey6mwqLeU=
+github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
+github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+golang.org/x/exp v0.0.0-20250215185904-eff6e970281f h1:oFMYAjX0867ZD2jcNiLBrI9BdpmEkvPyi5YrBGXbamg=
+golang.org/x/exp v0.0.0-20250215185904-eff6e970281f/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
+golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
+golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
+golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
+golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
+golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/be/index.html b/be/index.html
new file mode 100644
index 0000000..bc22877
--- /dev/null
+++ b/be/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
+ 404 - BALLS
+
+
+
+ Balls found
+ So not the content you're looking for.
+
+
diff --git a/be/macroOLD/macro.go b/be/macroOLD/macro.go
new file mode 100644
index 0000000..4abe231
--- /dev/null
+++ b/be/macroOLD/macro.go
@@ -0,0 +1,162 @@
+package macro
+
+import (
+ "encoding/json"
+ "fmt"
+ "io"
+ "log"
+ "net/http"
+ "os"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "time"
+
+ "github.com/go-vgo/robotgo"
+)
+
+type Step struct {
+ Type string `json:"type"`
+ Key string `json:"key"`
+ Code string `json:"code"`
+ Location int `json:"location"`
+ Direction string `json:"direction"`
+ Value int `json:"value"`
+}
+
+var newMacro struct {
+ Name string `json:"name"`
+ Steps []Step `json:"steps"`
+}
+
+func Save(w http.ResponseWriter, r *http.Request) {
+ body, err := io.ReadAll(r.Body)
+
+ if err != nil {
+ panic(err)
+ }
+
+ log.Println(string(body))
+
+ err = json.Unmarshal(body, &newMacro)
+
+ if err != nil {
+ panic(err)
+ }
+
+ stepsJSON, err := json.Marshal(newMacro.Steps)
+ if err != nil {
+ panic(err)
+ }
+
+ err = os.WriteFile("../macros/"+makeValidFilename(newMacro.Name)+".json", stepsJSON, 0644)
+ if err != nil {
+ panic(err)
+ }
+}
+
+func makeValidFilename(s string) string {
+ // Remove invalid characters
+ re := regexp.MustCompile(`[\/\?\*\>\<\:\\"\|\n]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Replace spaces with underscores
+ s = strings.ReplaceAll(s, " ", "_")
+
+ // Remove special characters
+ re = regexp.MustCompile(`[!@#$%^&\(\)\[\]\{\}\~]`)
+ s = re.ReplaceAllString(s, "")
+
+ // Truncate the string
+ if len(s) > 255 {
+ s = s[:255]
+ }
+
+ return s
+}
+
+func List(w http.ResponseWriter, r *http.Request) {
+ log.Println("listing macros")
+ dir := "../macros"
+ files, err := os.ReadDir(dir)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ var fileNames []string
+
+ for _, file := range files {
+ filename := filepath.Base(file.Name())
+ filename = strings.TrimSuffix(filename, filepath.Ext(filename))
+ filename = strings.Replace(filename, "_", " ", -1)
+
+ fileNames = append(fileNames, filename)
+ }
+
+ json.NewEncoder(w).Encode(fileNames)
+}
+
+func Delete(w http.ResponseWriter, r *http.Request) {}
+
+func Play(w http.ResponseWriter, r *http.Request) {
+ type MacroRequest struct {
+ Macro string `json:"macro"`
+ }
+
+ var req MacroRequest
+
+ err := json.NewDecoder(r.Body).Decode(&req)
+
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadRequest)
+ return
+ }
+
+ macro := req.Macro
+
+ macroFile, err := readMacroFile(fmt.Sprintf("../macros/%s.json", makeValidFilename(macro)))
+
+ if err != nil {
+ fmt.Println(err)
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ playMacro(macroFile)
+ // fmt.Println(macroFile)
+}
+
+func readMacroFile(filename string) (steps []Step, err error) {
+
+ log.Println(filename)
+ // Let's first read the `config.json` file
+ content, err := os.ReadFile(filename)
+ if err != nil {
+ log.Fatal("Error when opening file: ", err)
+ }
+
+ // Now let's unmarshall the data into `steps`
+ err = json.Unmarshal(content, &steps)
+ if err != nil {
+ log.Fatal("Error during Unmarshal(): ", err)
+ }
+
+ return steps, nil
+}
+
+func playMacro(steps []Step) {
+ for _, step := range steps {
+ // log.Println(step)
+ switch step.Type {
+ case "key":
+ robotgo.KeyToggle(step.Key, step.Direction)
+ // log.Println("Toggling", step.Key, "to", step.Direction)
+ case "delay":
+ time.Sleep(time.Duration(step.Location) * time.Millisecond)
+ // log.Println("Sleeping for", step.Value, "milliseconds")
+ default:
+ log.Println("Unknown step type:", step.Type)
+ }
+ }
+
+}
diff --git a/be/main.go b/be/main.go
new file mode 100644
index 0000000..6c02643
--- /dev/null
+++ b/be/main.go
@@ -0,0 +1,26 @@
+package main
+
+import (
+ "log"
+ "net/http"
+
+ "be/app"
+)
+
+func main() {
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ apiInit(w, r)
+ })
+
+ log.Println(http.ListenAndServe(":6970", nil))
+}
+
+func apiInit(w http.ResponseWriter, r *http.Request) {
+ app.ApiCORS(w, r)
+
+ if r.Method == "GET" {
+ app.ApiGet(w, r)
+ } else if r.Method == "POST" {
+ app.ApiPost(w, r)
+ }
+}
diff --git a/be/tmp/build-errors.log b/be/tmp/build-errors.log
new file mode 100644
index 0000000..d4bc9c7
--- /dev/null
+++ b/be/tmp/build-errors.log
@@ -0,0 +1 @@
+exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1
\ No newline at end of file
diff --git a/Macrame.exe b/be/tmp/main.exe
similarity index 70%
rename from Macrame.exe
rename to be/tmp/main.exe
index c900c64..86c4c25 100644
Binary files a/Macrame.exe and b/be/tmp/main.exe differ
diff --git a/build.sh b/build.sh
new file mode 100644
index 0000000..65eb876
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Set the name of the build directory
+BUILD_DIR="Macrame_$(date +'%m%d%H%M%S')"
+
+# Build the Go application
+go build -ldflags "-H=windowsgui" -o Macrame.exe main.go
+
+# Build the frontend
+cd fe
+npm run build
+
+cd ../builds
+
+# Create the new build directory
+mkdir $BUILD_DIR
+mkdir $BUILD_DIR/macros
+mkdir $BUILD_DIR/panels
+mkdir $BUILD_DIR/panels/test_panel
+mkdir $BUILD_DIR/public
+mkdir $BUILD_DIR/public/assets
+
+# Move the generated files to the new build directory
+cp ../Macrame.exe $BUILD_DIR/Macrame.exe
+cp ../favicon.ico $BUILD_DIR/favicon.ico
+find ../macros -type f ! -name 'ED-*' -exec cp --parents {} "$BUILD_DIR/macros/" \;
+cp -r ../panels/test_panel/* $BUILD_DIR/panels/test_panel/
+mv ../public/* $BUILD_DIR/public/
+
+# cp ../install.bat $BUILD_DIR/install.bat
+
+powershell -Command "Compress-Archive -Path $BUILD_DIR/* -DestinationPath $BUILD_DIR.zip -Force"
+
+# Print the path to the new build directory
+echo "Build directory: ../$BUILD_DIR"
\ No newline at end of file
diff --git a/fe/.editorconfig b/fe/.editorconfig
new file mode 100644
index 0000000..7f5b23f
--- /dev/null
+++ b/fe/.editorconfig
@@ -0,0 +1,9 @@
+[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}]
+charset = utf-8
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+end_of_line = lf
+max_line_length = 100
diff --git a/fe/.gitattributes b/fe/.gitattributes
new file mode 100644
index 0000000..6313b56
--- /dev/null
+++ b/fe/.gitattributes
@@ -0,0 +1 @@
+* text=auto eol=lf
diff --git a/fe/.gitignore b/fe/.gitignore
new file mode 100644
index 0000000..8ee54e8
--- /dev/null
+++ b/fe/.gitignore
@@ -0,0 +1,30 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+*.tsbuildinfo
diff --git a/fe/.prettierrc.json b/fe/.prettierrc.json
new file mode 100644
index 0000000..17a23d0
--- /dev/null
+++ b/fe/.prettierrc.json
@@ -0,0 +1,7 @@
+
+{
+ "$schema": "https://json.schemastore.org/prettierrc",
+ "semi": false,
+ "singleQuote": true,
+ "printWidth": 100
+}
diff --git a/fe/.vscode/extensions.json b/fe/.vscode/extensions.json
new file mode 100644
index 0000000..c92168f
--- /dev/null
+++ b/fe/.vscode/extensions.json
@@ -0,0 +1,8 @@
+{
+ "recommendations": [
+ "Vue.volar",
+ "dbaeumer.vscode-eslint",
+ "EditorConfig.EditorConfig",
+ "esbenp.prettier-vscode"
+ ]
+}
diff --git a/fe/README.md b/fe/README.md
new file mode 100644
index 0000000..ae6174c
--- /dev/null
+++ b/fe/README.md
@@ -0,0 +1,35 @@
+# fe
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vite.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Compile and Minify for Production
+
+```sh
+npm run build
+```
+
+### Lint with [ESLint](https://eslint.org/)
+
+```sh
+npm run lint
+```
diff --git a/fe/assets/main.css b/fe/assets/main.css
new file mode 100644
index 0000000..1b2d914
--- /dev/null
+++ b/fe/assets/main.css
@@ -0,0 +1,4 @@
+html,
+body {
+ background-color: white;
+}
diff --git a/fe/eslint.config.js b/fe/eslint.config.js
new file mode 100644
index 0000000..76c70ec
--- /dev/null
+++ b/fe/eslint.config.js
@@ -0,0 +1,19 @@
+import js from '@eslint/js'
+import pluginVue from 'eslint-plugin-vue'
+import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
+
+export default [
+ {
+ name: 'app/files-to-lint',
+ files: ['**/*.{js,mjs,jsx,vue}'],
+ },
+
+ {
+ name: 'app/files-to-ignore',
+ ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
+ },
+
+ js.configs.recommended,
+ ...pluginVue.configs['flat/essential'],
+ skipFormatting,
+]
diff --git a/fe/index.html b/fe/index.html
new file mode 100644
index 0000000..3dbdfe8
--- /dev/null
+++ b/fe/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+ Macrame
+
+
+
+
+
+
+
diff --git a/fe/jsconfig.json b/fe/jsconfig.json
new file mode 100644
index 0000000..5a1f2d2
--- /dev/null
+++ b/fe/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/public/assets/mcrm-icon-_gnb1h7S.svg b/fe/mcrm-icon.svg
similarity index 100%
rename from public/assets/mcrm-icon-_gnb1h7S.svg
rename to fe/mcrm-icon.svg
diff --git a/fe/package-lock.json b/fe/package-lock.json
new file mode 100644
index 0000000..96e15e3
--- /dev/null
+++ b/fe/package-lock.json
@@ -0,0 +1,5334 @@
+{
+ "name": "fe",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "fe",
+ "version": "0.0.0",
+ "dependencies": {
+ "@tabler/icons-vue": "^3.30.0",
+ "@tailwindcss/vite": "^4.0.9",
+ "vue": "^3.5.13",
+ "vue-router": "^4.5.0"
+ },
+ "devDependencies": {
+ "@basitcodeenv/vue3-device-detect": "^1.0.3",
+ "@eslint/js": "^9.20.0",
+ "@vitejs/plugin-vue": "^5.2.1",
+ "@vue/eslint-config-prettier": "^10.2.0",
+ "axios": "^1.8.3",
+ "crypto-js": "^4.2.0",
+ "eslint": "^9.20.1",
+ "eslint-plugin-vue": "^9.32.0",
+ "pinia": "^3.0.1",
+ "prettier": "^3.5.1",
+ "qrcode": "^1.5.4",
+ "sass-embedded": "^1.85.1",
+ "tailwindcss": "^4.0.9",
+ "uuid": "^11.1.0",
+ "vite": "^6.1.0",
+ "vite-plugin-vue-devtools": "^7.7.2"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz",
+ "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.26.2",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
+ "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.26.8",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
+ "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
+ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.26.10",
+ "@babel/helper-compilation-targets": "^7.26.5",
+ "@babel/helper-module-transforms": "^7.26.0",
+ "@babel/helpers": "^7.26.10",
+ "@babel/parser": "^7.26.10",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.10",
+ "@babel/types": "^7.26.10",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+ "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
+ "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
+ "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.26.8",
+ "@babel/helper-validator-option": "^7.25.9",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz",
+ "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/helper-replace-supers": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/traverse": "^7.27.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
+ "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
+ "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
+ "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/traverse": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
+ "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
+ "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.26.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
+ "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.25.9",
+ "@babel/helper-optimise-call-expression": "^7.25.9",
+ "@babel/traverse": "^7.26.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
+ "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/traverse": "^7.25.9",
+ "@babel/types": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
+ "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
+ "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+ "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
+ "dependencies": {
+ "@babel/types": "^7.27.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz",
+ "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.25.9",
+ "@babel/plugin-syntax-decorators": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz",
+ "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
+ "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
+ "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
+ "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz",
+ "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.25.9",
+ "@babel/helper-create-class-features-plugin": "^7.27.0",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
+ "@babel/plugin-syntax-typescript": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+ "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/parser": "^7.27.0",
+ "@babel/types": "^7.27.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+ "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/generator": "^7.27.0",
+ "@babel/parser": "^7.27.0",
+ "@babel/template": "^7.27.0",
+ "@babel/types": "^7.27.0",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+ "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@basitcodeenv/vue3-device-detect": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@basitcodeenv/vue3-device-detect/-/vue3-device-detect-1.0.3.tgz",
+ "integrity": "sha512-BDHoM2KYJx/PrEyEzgYOLEVSTxQmvd1PR7UqRQSMClgnM7O1cGoagG/5K0CZy6LUHGifyU5qnrQdC3Sy9nt3zQ==",
+ "dev": true,
+ "dependencies": {
+ "ua-parser-js": "^1.0.37",
+ "vue": "^3.0.0-0"
+ }
+ },
+ "node_modules/@bufbuild/protobuf": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.5.tgz",
+ "integrity": "sha512-/g5EzJifw5GF8aren8wZ/G5oMuPoGeS6MQD3ca8ddcvdXR5UELUfdTZITCGNhNXynY/AYl3Z4plmxdj/tRl/hQ==",
+ "devOptional": true
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz",
+ "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz",
+ "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz",
+ "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz",
+ "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz",
+ "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz",
+ "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz",
+ "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz",
+ "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz",
+ "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz",
+ "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz",
+ "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz",
+ "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz",
+ "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz",
+ "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz",
+ "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz",
+ "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz",
+ "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz",
+ "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz",
+ "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz",
+ "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz",
+ "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz",
+ "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz",
+ "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz",
+ "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz",
+ "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz",
+ "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
+ "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.6",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
+ "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
+ "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.23.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+ "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
+ "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
+ "dev": true,
+ "dependencies": {
+ "@eslint/core": "^0.13.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+ "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz",
+ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz",
+ "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unts"
+ }
+ },
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+ "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
+ "dev": true
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz",
+ "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz",
+ "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz",
+ "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz",
+ "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz",
+ "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz",
+ "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz",
+ "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz",
+ "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz",
+ "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz",
+ "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz",
+ "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz",
+ "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz",
+ "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz",
+ "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz",
+ "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz",
+ "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz",
+ "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz",
+ "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz",
+ "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz",
+ "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "dev": true
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@tabler/icons": {
+ "version": "3.31.0",
+ "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.31.0.tgz",
+ "integrity": "sha512-dblAdeKY3+GA1U+Q9eziZ0ooVlZMHsE8dqP0RkwvRtEsAULoKOYaCUOcJ4oW1DjWegdxk++UAt2SlQVnmeHv+g==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/codecalm"
+ }
+ },
+ "node_modules/@tabler/icons-vue": {
+ "version": "3.31.0",
+ "resolved": "https://registry.npmjs.org/@tabler/icons-vue/-/icons-vue-3.31.0.tgz",
+ "integrity": "sha512-a6kMUSakgjHhyDiQvi+nLh0uign8xEkzpOzmXpNF+tVyUA6Y9dCeK8c3o67onYZdPZPg22RpvQuX3K6bAuV/oA==",
+ "dependencies": {
+ "@tabler/icons": "3.31.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/codecalm"
+ },
+ "peerDependencies": {
+ "vue": ">=3.0.1"
+ }
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.2.tgz",
+ "integrity": "sha512-ZwFnxH+1z8Ehh8bNTMX3YFrYdzAv7JLY5X5X7XSFY+G9QGJVce/P9xb2mh+j5hKt8NceuHmdtllJvAHWKtsNrQ==",
+ "dependencies": {
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "lightningcss": "1.29.2",
+ "tailwindcss": "4.1.2"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.2.tgz",
+ "integrity": "sha512-Zwz//1QKo6+KqnCKMT7lA4bspGfwEgcPAHlSthmahtgrpKDfwRGk8PKQrW8Zg/ofCDIlg6EtjSTKSxxSufC+CQ==",
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.2",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.2",
+ "@tailwindcss/oxide-darwin-x64": "4.1.2",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.2",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.2",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.2",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.2",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.2",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.2",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.2",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.2"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.2.tgz",
+ "integrity": "sha512-IxkXbntHX8lwGmwURUj4xTr6nezHhLYqeiJeqa179eihGv99pRlKV1W69WByPJDQgSf4qfmwx904H6MkQqTA8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.2.tgz",
+ "integrity": "sha512-ZRtiHSnFYHb4jHKIdzxlFm6EDfijTCOT4qwUhJ3GWxfDoW2yT3z/y8xg0nE7e72unsmSj6dtfZ9Y5r75FIrlpA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.2.tgz",
+ "integrity": "sha512-BiKUNZf1A0pBNzndBvnPnBxonCY49mgbOsPfILhcCE5RM7pQlRoOgN7QnwNhY284bDbfQSEOWnFR0zbPo6IDTw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.2.tgz",
+ "integrity": "sha512-Z30VcpUfRGkiddj4l5NRCpzbSGjhmmklVoqkVQdkEC0MOelpY+fJrVhzSaXHmWrmSvnX8yiaEqAbdDScjVujYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.2.tgz",
+ "integrity": "sha512-w3wsK1ChOLeQ3gFOiwabtWU5e8fY3P1Ss8jR3IFIn/V0va3ir//hZ8AwURveS4oK1Pu6b8i+yxesT4qWnLVUow==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.2.tgz",
+ "integrity": "sha512-oY/u+xJHpndTj7B5XwtmXGk8mQ1KALMfhjWMMpE8pdVAznjJsF5KkCceJ4Fmn5lS1nHMCwZum5M3/KzdmwDMdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.2.tgz",
+ "integrity": "sha512-k7G6vcRK/D+JOWqnKzKN/yQq1q4dCkI49fMoLcfs2pVcaUAXEqCP9NmA8Jv+XahBv5DtDjSAY3HJbjosEdKczg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.2.tgz",
+ "integrity": "sha512-fLL+c678TkYKgkDLLNxSjPPK/SzTec7q/E5pTwvpTqrth867dftV4ezRyhPM5PaiCqX651Y8Yk0wRQMcWUGnmQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.2.tgz",
+ "integrity": "sha512-0tU1Vjd1WucZ2ooq6y4nI9xyTSaH2g338bhrqk+2yzkMHskBm+pMsOCfY7nEIvALkA1PKPOycR4YVdlV7Czo+A==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.2.tgz",
+ "integrity": "sha512-r8QaMo3QKiHqUcn+vXYCypCEha+R0sfYxmaZSgZshx9NfkY+CHz91aS2xwNV/E4dmUDkTPUag7sSdiCHPzFVTg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.2.tgz",
+ "integrity": "sha512-lYCdkPxh9JRHXoBsPE8Pu/mppUsC2xihYArNAESub41PKhHTnvn6++5RpmFM+GLSt3ewyS8fwCVvht7ulWm6cw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.2.tgz",
+ "integrity": "sha512-3r/ZdMW0gxY8uOx1To0lpYa4coq4CzINcCX4laM1rS340Kcn0ac4A/MMFfHN8qba51aorZMYwMcOxYk4wJ9FYg==",
+ "dependencies": {
+ "@tailwindcss/node": "4.1.2",
+ "@tailwindcss/oxide": "4.1.2",
+ "tailwindcss": "4.1.2"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
+ "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==",
+ "dev": true,
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz",
+ "integrity": "sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz",
+ "integrity": "sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/plugin-syntax-jsx": "^7.25.9",
+ "@babel/template": "^7.26.9",
+ "@babel/traverse": "^7.26.9",
+ "@babel/types": "^7.26.9",
+ "@vue/babel-helper-vue-transform-on": "1.4.0",
+ "@vue/babel-plugin-resolve-type": "1.4.0",
+ "@vue/shared": "^3.5.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz",
+ "integrity": "sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "@babel/helper-module-imports": "^7.25.9",
+ "@babel/helper-plugin-utils": "^7.26.5",
+ "@babel/parser": "^7.26.9",
+ "@vue/compiler-sfc": "^3.5.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
+ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/shared": "3.5.13",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
+ "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
+ "dependencies": {
+ "@vue/compiler-core": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
+ "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
+ "dependencies": {
+ "@babel/parser": "^7.25.3",
+ "@vue/compiler-core": "3.5.13",
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.11",
+ "postcss": "^8.4.48",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
+ "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.2.tgz",
+ "integrity": "sha512-1syn558KhyN+chO5SjlZIwJ8bV/bQ1nOVTG66t2RbG66ZGekyiYNmRO7X9BJCXQqPsFHlnksqvPhce2qpzxFnA==",
+ "dev": true,
+ "dependencies": {
+ "@vue/devtools-kit": "^7.7.2"
+ }
+ },
+ "node_modules/@vue/devtools-core": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.2.tgz",
+ "integrity": "sha512-lexREWj1lKi91Tblr38ntSsy6CvI8ba7u+jmwh2yruib/ltLUcsIzEjCnrkh1yYGGIKXbAuYV2tOG10fGDB9OQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/devtools-kit": "^7.7.2",
+ "@vue/devtools-shared": "^7.7.2",
+ "mitt": "^3.0.1",
+ "nanoid": "^5.0.9",
+ "pathe": "^2.0.2",
+ "vite-hot-client": "^0.2.4"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@vue/devtools-core/node_modules/nanoid": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz",
+ "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ }
+ },
+ "node_modules/@vue/devtools-kit": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.2.tgz",
+ "integrity": "sha512-CY0I1JH3Z8PECbn6k3TqM1Bk9ASWxeMtTCvZr7vb+CHi+X/QwQm5F1/fPagraamKMAHVfuuCbdcnNg1A4CYVWQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/devtools-shared": "^7.7.2",
+ "birpc": "^0.2.19",
+ "hookable": "^5.5.3",
+ "mitt": "^3.0.1",
+ "perfect-debounce": "^1.0.0",
+ "speakingurl": "^14.0.1",
+ "superjson": "^2.2.1"
+ }
+ },
+ "node_modules/@vue/devtools-shared": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.2.tgz",
+ "integrity": "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA==",
+ "dev": true,
+ "dependencies": {
+ "rfdc": "^1.4.1"
+ }
+ },
+ "node_modules/@vue/eslint-config-prettier": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-10.2.0.tgz",
+ "integrity": "sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==",
+ "dev": true,
+ "dependencies": {
+ "eslint-config-prettier": "^10.0.1",
+ "eslint-plugin-prettier": "^5.2.2"
+ },
+ "peerDependencies": {
+ "eslint": ">= 8.21.0",
+ "prettier": ">= 3.0.0"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
+ "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
+ "dependencies": {
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
+ "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
+ "dependencies": {
+ "@vue/reactivity": "3.5.13",
+ "@vue/shared": "3.5.13"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
+ "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
+ "dependencies": {
+ "@vue/reactivity": "3.5.13",
+ "@vue/runtime-core": "3.5.13",
+ "@vue/shared": "3.5.13",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
+ "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.5.13",
+ "@vue/shared": "3.5.13"
+ },
+ "peerDependencies": {
+ "vue": "3.5.13"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz",
+ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
+ },
+ "node_modules/acorn": {
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/axios": {
+ "version": "1.8.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
+ "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
+ "dev": true,
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/birpc": {
+ "version": "0.2.19",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz",
+ "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.24.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
+ "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001688",
+ "electron-to-chromium": "^1.5.73",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.1"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-builder": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz",
+ "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==",
+ "devOptional": true
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001710",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001710.tgz",
+ "integrity": "sha512-B5C0I0UmaGqHgo5FuqJ7hBd4L57A4dDD+Xi+XX1nXOoxGeDdY4Ko38qJYOyqznBVJEqON5p8P1x5zRR3+rsnxA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/colorjs.io": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz",
+ "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==",
+ "devOptional": true
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/copy-anything": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz",
+ "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==",
+ "dev": true,
+ "dependencies": {
+ "is-what": "^4.1.8"
+ },
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+ "dev": true
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/default-browser": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+ "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "dev": true,
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+ "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dijkstrajs": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+ "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
+ "dev": true
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.132",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.132.tgz",
+ "integrity": "sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-stack-parser-es": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz",
+ "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz",
+ "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==",
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.2",
+ "@esbuild/android-arm": "0.25.2",
+ "@esbuild/android-arm64": "0.25.2",
+ "@esbuild/android-x64": "0.25.2",
+ "@esbuild/darwin-arm64": "0.25.2",
+ "@esbuild/darwin-x64": "0.25.2",
+ "@esbuild/freebsd-arm64": "0.25.2",
+ "@esbuild/freebsd-x64": "0.25.2",
+ "@esbuild/linux-arm": "0.25.2",
+ "@esbuild/linux-arm64": "0.25.2",
+ "@esbuild/linux-ia32": "0.25.2",
+ "@esbuild/linux-loong64": "0.25.2",
+ "@esbuild/linux-mips64el": "0.25.2",
+ "@esbuild/linux-ppc64": "0.25.2",
+ "@esbuild/linux-riscv64": "0.25.2",
+ "@esbuild/linux-s390x": "0.25.2",
+ "@esbuild/linux-x64": "0.25.2",
+ "@esbuild/netbsd-arm64": "0.25.2",
+ "@esbuild/netbsd-x64": "0.25.2",
+ "@esbuild/openbsd-arm64": "0.25.2",
+ "@esbuild/openbsd-x64": "0.25.2",
+ "@esbuild/sunos-x64": "0.25.2",
+ "@esbuild/win32-arm64": "0.25.2",
+ "@esbuild/win32-ia32": "0.25.2",
+ "@esbuild/win32-x64": "0.25.2"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.23.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+ "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.19.2",
+ "@eslint/config-helpers": "^0.2.0",
+ "@eslint/core": "^0.12.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.23.0",
+ "@eslint/plugin-kit": "^0.2.7",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.3.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz",
+ "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.2.6",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz",
+ "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.33.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz",
+ "integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "globals": "^13.24.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.15",
+ "semver": "^7.6.3",
+ "vue-eslint-parser": "^9.4.3",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
+ "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "9.5.2",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz",
+ "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.3",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.0",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.0.0"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "dev": true,
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "dev": true,
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hookable": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
+ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz",
+ "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==",
+ "devOptional": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "4.1.16",
+ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz",
+ "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mesqueeb"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "dev": true,
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kolorist": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+ "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+ "dev": true
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
+ "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.29.2",
+ "lightningcss-darwin-x64": "1.29.2",
+ "lightningcss-freebsd-x64": "1.29.2",
+ "lightningcss-linux-arm-gnueabihf": "1.29.2",
+ "lightningcss-linux-arm64-gnu": "1.29.2",
+ "lightningcss-linux-arm64-musl": "1.29.2",
+ "lightningcss-linux-x64-gnu": "1.29.2",
+ "lightningcss-linux-x64-musl": "1.29.2",
+ "lightningcss-win32-arm64-msvc": "1.29.2",
+ "lightningcss-win32-x64-msvc": "1.29.2"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
+ "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
+ "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
+ "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
+ "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
+ "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
+ "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
+ "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
+ "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
+ "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
+ "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "dev": true
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "dev": true
+ },
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/open": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
+ "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "dev": true,
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true
+ },
+ "node_modules/perfect-debounce": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
+ "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.1.tgz",
+ "integrity": "sha512-WXglsDzztOTH6IfcJ99ltYZin2mY8XZCXujkYWVIJlBjqsP6ST7zw+Aarh63E1cDVYeyUcPCxPHzJpEOmzB6Wg==",
+ "dev": true,
+ "dependencies": {
+ "@vue/devtools-api": "^7.7.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.4.4",
+ "vue": "^2.7.0 || ^3.5.11"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
+ "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
+ "dev": true,
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz",
+ "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+ "dev": true,
+ "dependencies": {
+ "dijkstrajs": "^1.0.1",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "qrcode": "bin/qrcode"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "dev": true
+ },
+ "node_modules/rollup": {
+ "version": "4.39.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz",
+ "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==",
+ "dependencies": {
+ "@types/estree": "1.0.7"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.39.0",
+ "@rollup/rollup-android-arm64": "4.39.0",
+ "@rollup/rollup-darwin-arm64": "4.39.0",
+ "@rollup/rollup-darwin-x64": "4.39.0",
+ "@rollup/rollup-freebsd-arm64": "4.39.0",
+ "@rollup/rollup-freebsd-x64": "4.39.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.39.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.39.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.39.0",
+ "@rollup/rollup-linux-arm64-musl": "4.39.0",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.39.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.39.0",
+ "@rollup/rollup-linux-riscv64-musl": "4.39.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.39.0",
+ "@rollup/rollup-linux-x64-gnu": "4.39.0",
+ "@rollup/rollup-linux-x64-musl": "4.39.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.39.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.39.0",
+ "@rollup/rollup-win32-x64-msvc": "4.39.0",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
+ "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "7.8.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
+ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
+ "devOptional": true,
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/sass-embedded": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.86.3.tgz",
+ "integrity": "sha512-3pZSp24ibO1hdopj+W9DuiWsZOb2YY6AFRo/jjutKLBkqJGM1nJjXzhAYfzRV+Xn5BX1eTI4bBTE09P0XNHOZg==",
+ "devOptional": true,
+ "dependencies": {
+ "@bufbuild/protobuf": "^2.0.0",
+ "buffer-builder": "^0.2.0",
+ "colorjs.io": "^0.5.0",
+ "immutable": "^5.0.2",
+ "rxjs": "^7.4.0",
+ "supports-color": "^8.1.1",
+ "sync-child-process": "^1.0.2",
+ "varint": "^6.0.0"
+ },
+ "bin": {
+ "sass": "dist/bin/sass.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "optionalDependencies": {
+ "sass-embedded-android-arm": "1.86.3",
+ "sass-embedded-android-arm64": "1.86.3",
+ "sass-embedded-android-ia32": "1.86.3",
+ "sass-embedded-android-riscv64": "1.86.3",
+ "sass-embedded-android-x64": "1.86.3",
+ "sass-embedded-darwin-arm64": "1.86.3",
+ "sass-embedded-darwin-x64": "1.86.3",
+ "sass-embedded-linux-arm": "1.86.3",
+ "sass-embedded-linux-arm64": "1.86.3",
+ "sass-embedded-linux-ia32": "1.86.3",
+ "sass-embedded-linux-musl-arm": "1.86.3",
+ "sass-embedded-linux-musl-arm64": "1.86.3",
+ "sass-embedded-linux-musl-ia32": "1.86.3",
+ "sass-embedded-linux-musl-riscv64": "1.86.3",
+ "sass-embedded-linux-musl-x64": "1.86.3",
+ "sass-embedded-linux-riscv64": "1.86.3",
+ "sass-embedded-linux-x64": "1.86.3",
+ "sass-embedded-win32-arm64": "1.86.3",
+ "sass-embedded-win32-ia32": "1.86.3",
+ "sass-embedded-win32-x64": "1.86.3"
+ }
+ },
+ "node_modules/sass-embedded-android-arm": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.86.3.tgz",
+ "integrity": "sha512-UyeXrFzZSvrGbvrWUBcspbsbivGgAgebLGJdSqJulgSyGbA6no3DWQ5Qpdd6+OAUC39BlpPu74Wx9s4RrVuaFw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-arm64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.86.3.tgz",
+ "integrity": "sha512-q+XwFp6WgAv+UgnQhsB8KQ95kppvWAB7DSoJp+8Vino8b9ND+1ai3cUUZPE5u4SnLZrgo5NtrbPvN5KLc4Pfyg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-ia32": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.86.3.tgz",
+ "integrity": "sha512-gTJjVh2cRzvGujXj5ApPk/owUTL5SiO7rDtNLrzYAzi1N5HRuLYXqk3h1IQY3+eCOBjGl7mQ9XyySbJs/3hDvg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-riscv64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.86.3.tgz",
+ "integrity": "sha512-Po3JnyiCS16kd6REo1IMUbFGYtvL9O0rmKaXx5vOuBaJD1LPy2LiSSp7TU7wkJ9IxsTDGzFaSeP1I9qb6D8VVg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-android-x64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.86.3.tgz",
+ "integrity": "sha512-+7h3jdDv/0kUFx0BvxYlq2fa7CcHiDPlta6k5OxO5K6jyqJwo9hc0Z052BoYEauWTqZ+vK6bB5rv2BIzq4U9nA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-darwin-arm64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.86.3.tgz",
+ "integrity": "sha512-EgLwV4ORm5Hr0DmIXo0Xw/vlzwLnfAiqD2jDXIglkBsc5czJmo4/IBdGXOP65TRnsgJEqvbU3aQhuawX5++x9A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-darwin-x64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.86.3.tgz",
+ "integrity": "sha512-dfKhfrGPRNLWLC82vy/vQGmNKmAiKWpdFuWiePRtg/E95pqw+sCu6080Y6oQLfFu37Iq3MpnXiSpDuSo7UnPWA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-arm": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.86.3.tgz",
+ "integrity": "sha512-+fVCIH+OR0SMHn2NEhb/VfbpHuUxcPtqMS34OCV3Ka99LYZUJZqth4M3lT/ppGl52mwIVLNYzR4iLe6mdZ6mYA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-arm64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.86.3.tgz",
+ "integrity": "sha512-tYq5rywR53Qtc+0KI6pPipOvW7a47ETY69VxfqI9BR2RKw2hBbaz0bIw6OaOgEBv2/XNwcWb7a4sr7TqgkqKAA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-ia32": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.86.3.tgz",
+ "integrity": "sha512-CmQ5OkqnaeLdaF+bMqlYGooBuenqm3LvEN9H8BLhjkpWiFW8hnYMetiqMcJjhrXLvDw601KGqA5sr/Rsg5s45g==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-arm": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.86.3.tgz",
+ "integrity": "sha512-SEm65SQknI4pl+mH5Xf231hOkHJyrlgh5nj4qDbiBG6gFeutaNkNIeRgKEg3cflXchCr8iV/q/SyPgjhhzQb7w==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-arm64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.86.3.tgz",
+ "integrity": "sha512-4zOr2C/eW89rxb4ozTfn7lBzyyM5ZigA1ZSRTcAR26Qbg/t2UksLdGnVX9/yxga0d6aOi0IvO/7iM2DPPRRotg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-ia32": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.86.3.tgz",
+ "integrity": "sha512-84Tcld32LB1loiqUvczWyVBQRCChm0wNLlkT59qF29nxh8njFIVf9yaPgXcSyyjpPoD9Tu0wnq3dvVzoMCh9AQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-riscv64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.86.3.tgz",
+ "integrity": "sha512-IxEqoiD7vdNpiOwccybbV93NljBy64wSTkUOknGy21SyV43C8uqESOwTwW9ywa3KufImKm8L3uQAW/B0KhJMWg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-musl-x64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.86.3.tgz",
+ "integrity": "sha512-ePeTPXUxPK6JgHcUfnrkIyDtyt+zlAvF22mVZv6y1g/PZFm1lSfX+Za7TYHg9KaYqaaXDiw6zICX4i44HhR8rA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-riscv64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.86.3.tgz",
+ "integrity": "sha512-NuXQ72dwfNLe35E+RaXJ4Noq4EkFwM65eWwCwxEWyJO9qxOx1EXiCAJii6x8kkOh5daWuMU0VAI1B9RsJaqqQQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-linux-x64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.86.3.tgz",
+ "integrity": "sha512-t8be9zJ5B82+og9bQmIQ83yMGYZMTMrlGA+uGWtYacmwg6w3093dk91Fx0YzNSZBp3Tk60qVYjCZnEIwy60x0g==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-arm64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.86.3.tgz",
+ "integrity": "sha512-4ghuAzjX4q8Nksm0aifRz8hgXMMxS0SuymrFfkfJlrSx68pIgvAge6AOw0edoZoe0Tf5ZbsWUWamhkNyNxkTvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-ia32": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.86.3.tgz",
+ "integrity": "sha512-tCaK4zIRq9mLRPxLzBAdYlfCuS/xLNpmjunYxeWkIwlJo+k53h1udyXH/FInnQ2GgEz0xMXyvH3buuPgzwWYsw==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded-win32-x64": {
+ "version": "1.86.3",
+ "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.86.3.tgz",
+ "integrity": "sha512-zS+YNKfTF4SnOfpC77VTb0qNZyTXrxnAezSoRV0xnw6HlY+1WawMSSB6PbWtmbvyfXNgpmJUttoTtsvJjRCucg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/sass-embedded/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "devOptional": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sirv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz",
+ "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==",
+ "dev": true,
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/speakingurl": {
+ "version": "14.0.1",
+ "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz",
+ "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/superjson": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz",
+ "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==",
+ "dev": true,
+ "dependencies": {
+ "copy-anything": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/sync-child-process": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz",
+ "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==",
+ "devOptional": true,
+ "dependencies": {
+ "sync-message-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/sync-message-port": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz",
+ "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==",
+ "devOptional": true,
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/synckit": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.2.tgz",
+ "integrity": "sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA==",
+ "dev": true,
+ "dependencies": {
+ "@pkgr/core": "^0.2.0",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.2.tgz",
+ "integrity": "sha512-VCsK+fitIbQF7JlxXaibFhxrPq4E2hDcG8apzHUdWFMCQWD8uLdlHg4iSkZ53cgLCCcZ+FZK7vG8VjvLcnBgKw=="
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "devOptional": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ua-parser-js": {
+ "version": "1.0.40",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.40.tgz",
+ "integrity": "sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ua-parser-js"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/faisalman"
+ }
+ ],
+ "bin": {
+ "ua-parser-js": "script/cli.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/uuid": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz",
+ "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/broofa",
+ "https://github.com/sponsors/ctavan"
+ ],
+ "bin": {
+ "uuid": "dist/esm/bin/uuid"
+ }
+ },
+ "node_modules/varint": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
+ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==",
+ "devOptional": true
+ },
+ "node_modules/vite": {
+ "version": "6.2.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz",
+ "integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "postcss": "^8.5.3",
+ "rollup": "^4.30.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-hot-client": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz",
+ "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0"
+ }
+ },
+ "node_modules/vite-plugin-inspect": {
+ "version": "0.8.9",
+ "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.9.tgz",
+ "integrity": "sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.7.10",
+ "@rollup/pluginutils": "^5.1.3",
+ "debug": "^4.3.7",
+ "error-stack-parser-es": "^0.1.5",
+ "fs-extra": "^11.2.0",
+ "open": "^10.1.0",
+ "perfect-debounce": "^1.0.0",
+ "picocolors": "^1.1.1",
+ "sirv": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1"
+ },
+ "peerDependenciesMeta": {
+ "@nuxt/kit": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-vue-devtools": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.7.2.tgz",
+ "integrity": "sha512-5V0UijQWiSBj32blkyPEqIbzc6HO9c1bwnBhx+ay2dzU0FakH+qMdNUT8nF9BvDE+i6I1U8CqCuJiO20vKEdQw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/devtools-core": "^7.7.2",
+ "@vue/devtools-kit": "^7.7.2",
+ "@vue/devtools-shared": "^7.7.2",
+ "execa": "^9.5.1",
+ "sirv": "^3.0.0",
+ "vite-plugin-inspect": "0.8.9",
+ "vite-plugin-vue-inspector": "^5.3.1"
+ },
+ "engines": {
+ "node": ">=v14.21.3"
+ },
+ "peerDependencies": {
+ "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
+ }
+ },
+ "node_modules/vite-plugin-vue-inspector": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.3.1.tgz",
+ "integrity": "sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.23.0",
+ "@babel/plugin-proposal-decorators": "^7.23.0",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-transform-typescript": "^7.22.15",
+ "@vue/babel-plugin-jsx": "^1.1.5",
+ "@vue/compiler-dom": "^3.3.4",
+ "kolorist": "^1.8.0",
+ "magic-string": "^0.30.4"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.5.13",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz",
+ "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.5.13",
+ "@vue/compiler-sfc": "3.5.13",
+ "@vue/runtime-dom": "3.5.13",
+ "@vue/server-renderer": "3.5.13",
+ "@vue/shared": "3.5.13"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.3",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz",
+ "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
+ "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.6.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-router/node_modules/@vue/devtools-api": {
+ "version": "6.6.4",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
+ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
+ "dev": true
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/fe/package.json b/fe/package.json
new file mode 100644
index 0000000..f23dda3
--- /dev/null
+++ b/fe/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "fe",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite --host",
+ "build": "vite build --emptyOutDir",
+ "preview": "vite preview",
+ "lint": "eslint . --fix",
+ "format": "prettier --write src/"
+ },
+ "dependencies": {
+ "@tabler/icons-vue": "^3.30.0",
+ "@tailwindcss/vite": "^4.0.9",
+ "vue": "^3.5.13",
+ "vue-router": "^4.5.0"
+ },
+ "devDependencies": {
+ "@basitcodeenv/vue3-device-detect": "^1.0.3",
+ "@eslint/js": "^9.20.0",
+ "@vitejs/plugin-vue": "^5.2.1",
+ "@vue/eslint-config-prettier": "^10.2.0",
+ "axios": "^1.8.3",
+ "crypto-js": "^4.2.0",
+ "eslint": "^9.20.1",
+ "eslint-plugin-vue": "^9.32.0",
+ "pinia": "^3.0.1",
+ "prettier": "^3.5.1",
+ "qrcode": "^1.5.4",
+ "sass-embedded": "^1.85.1",
+ "tailwindcss": "^4.0.9",
+ "uuid": "^11.1.0",
+ "vite": "^6.1.0",
+ "vite-plugin-vue-devtools": "^7.7.2"
+ }
+}
diff --git a/public/assets/index-CNkZ911J.js b/fe/public/assets/index-CNkZ911J.js
similarity index 100%
rename from public/assets/index-CNkZ911J.js
rename to fe/public/assets/index-CNkZ911J.js
diff --git a/public/assets/index-zqIqfzzx.css b/fe/public/assets/index-zqIqfzzx.css
similarity index 100%
rename from public/assets/index-zqIqfzzx.css
rename to fe/public/assets/index-zqIqfzzx.css
diff --git a/fe/public/index.html b/fe/public/index.html
new file mode 100644
index 0000000..a29aefd
--- /dev/null
+++ b/fe/public/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Vite + Vue
+
+
+
+
+
+
+
diff --git a/fe/src/App.vue b/fe/src/App.vue
new file mode 100644
index 0000000..99eb1ba
--- /dev/null
+++ b/fe/src/App.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+ Not authorized!
+ Click here to start authorization and open the "Devices" page on your PC.
+
+
+
+
+
+
diff --git a/fe/src/assets/img/Macrame-Logo-duo.svg b/fe/src/assets/img/Macrame-Logo-duo.svg
new file mode 100644
index 0000000..41b172e
--- /dev/null
+++ b/fe/src/assets/img/Macrame-Logo-duo.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/assets/img/Macrame-Logo-gradient.svg b/fe/src/assets/img/Macrame-Logo-gradient.svg
new file mode 100644
index 0000000..af3a5fe
--- /dev/null
+++ b/fe/src/assets/img/Macrame-Logo-gradient.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/assets/img/Macrame-Logo-white.svg b/fe/src/assets/img/Macrame-Logo-white.svg
new file mode 100644
index 0000000..5be1bf9
--- /dev/null
+++ b/fe/src/assets/img/Macrame-Logo-white.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/assets/img/bg-gradient.svg b/fe/src/assets/img/bg-gradient.svg
new file mode 100644
index 0000000..889a57e
--- /dev/null
+++ b/fe/src/assets/img/bg-gradient.svg
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/assets/main.css b/fe/src/assets/main.css
new file mode 100644
index 0000000..538c404
--- /dev/null
+++ b/fe/src/assets/main.css
@@ -0,0 +1,38 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+@import './style/_content.css';
+@import './style/_form.css';
+@import './style/_scrollbar.css';
+@import './style/_macro.css';
+@import './style/_mcrm-block.css';
+@import './style/_panel.css';
+
+@import 'tailwindcss';
+
+@variant dark (&:where(.dark, .dark *));
+
+html,
+body,
+:not(#panel-html__body) {
+ --font-sans: 'Roboto', sans-serif;
+ --font-mono: 'Fira Code', monospace;
+}
diff --git a/fe/src/assets/style/_content.css b/fe/src/assets/style/_content.css
new file mode 100644
index 0000000..83c798c
--- /dev/null
+++ b/fe/src/assets/style/_content.css
@@ -0,0 +1,68 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+body {
+ @apply font-sans font-light tracking-wide bg-slate-900 text-slate-50;
+}
+
+h1,
+h2 {
+ @apply font-mono font-bold;
+}
+
+h3,
+h4,
+h5,
+h6 {
+ @apply font-semibold;
+}
+
+h1 {
+ @apply text-4xl;
+}
+
+h2 {
+ @apply text-3xl;
+}
+
+h3 {
+ @apply text-2xl;
+}
+
+h4 {
+ @apply text-xl;
+}
+
+h5 {
+ @apply text-lg;
+}
+
+ul {
+ @apply list-disc list-inside;
+}
+
+strong {
+ @apply font-bold;
+}
+
+a {
+ @apply underline text-amber-400 hover:text-amber-300;
+}
diff --git a/fe/src/assets/style/_form.css b/fe/src/assets/style/_form.css
new file mode 100644
index 0000000..bc4fcf8
--- /dev/null
+++ b/fe/src/assets/style/_form.css
@@ -0,0 +1,49 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+.input-group {
+ @apply grid gap-2;
+}
+
+input,
+select {
+ @apply w-full px-2 py-1 text-white border rounded-md border-slate-400 bg-black/20;
+}
+
+:has(> input + span) {
+ @apply flex;
+
+ input {
+ @apply rounded-r-none;
+ }
+
+ span {
+ @apply flex items-center px-2 text-white rounded-r-md bg-slate-400;
+ }
+}
+
+select option {
+ @apply bg-slate-700;
+
+ &:not([disabled]) {
+ @apply cursor-pointer;
+ }
+}
diff --git a/fe/src/assets/style/_macro.css b/fe/src/assets/style/_macro.css
new file mode 100644
index 0000000..4a0b2e7
--- /dev/null
+++ b/fe/src/assets/style/_macro.css
@@ -0,0 +1,49 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+/* @reference "main"; */
+hr.spacer {
+ @apply relative
+ w-6
+ border
+ border-gray-300
+ opacity-80
+ overflow-visible;
+
+ &::before,
+ &::after {
+ @apply content-['']
+ absolute
+ top-1/2
+ -translate-y-1/2
+ size-2
+ bg-gray-300
+ rounded-full;
+ }
+
+ &::before {
+ @apply -left-1;
+ }
+
+ &::after {
+ @apply -right-1;
+ }
+}
diff --git a/fe/src/assets/style/_mcrm-block.css b/fe/src/assets/style/_mcrm-block.css
new file mode 100644
index 0000000..9620206
--- /dev/null
+++ b/fe/src/assets/style/_mcrm-block.css
@@ -0,0 +1,123 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+.mcrm-block {
+ @apply relative p-6 overflow-hidden gap-x-6 gap-y-2 backdrop-blur-lg rounded-2xl;
+
+ &::before {
+ @apply content-['']
+ absolute
+ inset-0
+ p-px
+ rounded-2xl
+ size-full
+ bg-gradient-to-br
+ to-transparent
+ z-[10]
+ pointer-events-none;
+
+ mask:
+ linear-gradient(#000 0 0) exclude,
+ linear-gradient(#000 0 0) content-box;
+ }
+
+ &.block__light {
+ @apply bg-white/20;
+
+ &::before {
+ @apply from-white/20;
+ }
+ }
+
+ &.block__dark {
+ @apply bg-slate-900/70;
+
+ &::before {
+ @apply from-slate-400/40;
+ }
+ }
+
+ &.block__primary {
+ @apply bg-sky-300/20;
+
+ &::before {
+ @apply from-sky-100/20;
+ }
+ }
+
+ &.block__secondary {
+ @apply bg-amber-300/20;
+
+ &::before {
+ @apply from-amber-100/20;
+ }
+ }
+
+ &.block__success {
+ @apply bg-emerald-300/40;
+
+ &::before {
+ @apply from-emerald-100/40;
+ }
+ }
+
+ &.block__warning {
+ @apply bg-orange-300/40;
+
+ &::before {
+ @apply from-orange-100/40;
+ }
+ }
+
+ &.block__danger {
+ @apply bg-rose-300/40;
+
+ &::before {
+ @apply from-rose-100/40;
+ }
+ }
+
+ &.block-spacing__sm,
+ &.block-size__sm {
+ @apply p-4 gap-x-4 gap-y-2;
+ }
+
+ &.block-size__sm {
+ @apply rounded-lg;
+
+ &::before {
+ @apply rounded-lg;
+ }
+ }
+
+ &.block-spacing__lg,
+ &.block-size__lg {
+ @apply p-8 gap-x-8 gap-y-4;
+ }
+
+ &.block-size__lg {
+ @apply rounded-3xl;
+
+ &::before {
+ @apply rounded-3xl;
+ }
+ }
+}
diff --git a/fe/src/assets/style/_panel.css b/fe/src/assets/style/_panel.css
new file mode 100644
index 0000000..a2fbe29
--- /dev/null
+++ b/fe/src/assets/style/_panel.css
@@ -0,0 +1,56 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+.panel {
+ @apply grid
+ grid-rows-[auto_1fr]
+ fixed
+ top-2
+ left-4 sm:left-16
+ right-4 sm:right-16
+ bottom-2
+ overflow-hidden;
+
+ > .panel__header,
+ > .panel__title {
+ @apply px-4 py-2;
+
+ /* &:first-child {
+ @apply pt-4;
+ }
+
+ &:last-child {
+ @apply pb-4;
+ } */
+ }
+
+ .panel__title {
+ @apply pt-3 pl-16 text-transparent bg-gradient-to-r w-fit from-amber-300 to-white/50 sm:pl-4 bg-clip-text;
+ }
+
+ .panel__content {
+ @apply grid
+ h-[calc(100%-1rem)]
+ pt-4 sm:pt-0
+ pl-0 sm:pl-4
+ overflow-auto;
+ }
+}
diff --git a/fe/src/assets/style/_scrollbar.css b/fe/src/assets/style/_scrollbar.css
new file mode 100644
index 0000000..c228668
--- /dev/null
+++ b/fe/src/assets/style/_scrollbar.css
@@ -0,0 +1,44 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+::-webkit-scrollbar {
+ @apply w-2;
+}
+
+::-moz-scrollbar {
+ @apply w-2;
+}
+
+::-webkit-scrollbar-thumb {
+ @apply rounded bg-slate-400/80;
+}
+
+::-moz-scrollbar-thumb {
+ @apply rounded bg-slate-400/80;
+}
+
+::-webkit-scrollbar-track {
+ @apply mr-1 rounded bg-slate-100/10;
+}
+
+::-moz-scrollbar-track {
+ @apply mr-1 rounded bg-slate-100/10;
+}
diff --git a/fe/src/components/base/AccordionComp.vue b/fe/src/components/base/AccordionComp.vue
new file mode 100644
index 0000000..6aa0126
--- /dev/null
+++ b/fe/src/components/base/AccordionComp.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/AlertComp.vue b/fe/src/components/base/AlertComp.vue
new file mode 100644
index 0000000..674eb8c
--- /dev/null
+++ b/fe/src/components/base/AlertComp.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/ButtonComp.vue b/fe/src/components/base/ButtonComp.vue
new file mode 100644
index 0000000..f0cc766
--- /dev/null
+++ b/fe/src/components/base/ButtonComp.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/ButtonGroup.vue b/fe/src/components/base/ButtonGroup.vue
new file mode 100644
index 0000000..9fa5c60
--- /dev/null
+++ b/fe/src/components/base/ButtonGroup.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/ContextMenu.vue b/fe/src/components/base/ContextMenu.vue
new file mode 100644
index 0000000..d74d1b2
--- /dev/null
+++ b/fe/src/components/base/ContextMenu.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/DialogComp.vue b/fe/src/components/base/DialogComp.vue
new file mode 100644
index 0000000..d2d9eaa
--- /dev/null
+++ b/fe/src/components/base/DialogComp.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/LoadComp.vue b/fe/src/components/base/LoadComp.vue
new file mode 100644
index 0000000..6461a24
--- /dev/null
+++ b/fe/src/components/base/LoadComp.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/base/MainMenu.vue b/fe/src/components/base/MainMenu.vue
new file mode 100644
index 0000000..4b91bf4
--- /dev/null
+++ b/fe/src/components/base/MainMenu.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+ Dashboard
+
+
+ Panels
+
+
+ Macros
+
+
+
+ {{ isLocal() ? 'Devices' : 'Server' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/dashboard/RemoteView.vue b/fe/src/components/dashboard/RemoteView.vue
new file mode 100644
index 0000000..42f5660
--- /dev/null
+++ b/fe/src/components/dashboard/RemoteView.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
{{ server.panelCount }} {{ server.panelCount != 1 ? 'Panels' : 'Panel' }}
+
+ No panels found.
+ Learn how to create a panel here .
+
+
+ Start using a panel!
+ View panels
+
+
+
+
+
+
+
Server
+
+
+ Linked with: {{ server.ip }}
+
+ View server
+
+
+
+ Not linked
+
+ Link with server
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/dashboard/ServerView.vue b/fe/src/components/dashboard/ServerView.vue
new file mode 100644
index 0000000..0e3caee
--- /dev/null
+++ b/fe/src/components/dashboard/ServerView.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
+
{{ server.remoteCount }} {{ server.remoteCount != 1 ? 'Devices' : 'Device' }}
+
+ No devices found.
+ Link a device
+
+
+ Unlink a device or add new devices.
+ View devices
+
+
+
+
+
+
+
{{ server.macroCount }} {{ server.macroCount != 1 ? 'Macros' : 'Macro' }}
+
+ No macros found.
+ Create macro
+
+
+ Edit and view your macros.
+ View macros
+
+
+
+
+
+
+
+
{{ server.panelCount }} {{ server.panelCount != 1 ? 'Panels' : 'Panel' }}
+
+ No panels found.
+ Learn how to create a panel here .
+
+
+ Link macros to panels or view a panel.
+ View panels
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/devices/RemoteView.vue b/fe/src/components/devices/RemoteView.vue
new file mode 100644
index 0000000..4e3405e
--- /dev/null
+++ b/fe/src/components/devices/RemoteView.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+ This is a remote device.
+ UUID: {{ device.uuid() }}
+
+
+
+
+ Server
+
+
+
+
+ Connected to: {{ server.host }}
+
+
+
+
Authorized
+
Not linked
+
+
+
Access requested
+
+
+
+
+ Checking server for link...
+
+
+
+
+ Check for server link
+
+
+
+
+
+
+ Disconnect
+
+
+
+
+
+
Server link pin:
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/devices/ServerView.vue b/fe/src/components/devices/ServerView.vue
new file mode 100644
index 0000000..0a3c0b0
--- /dev/null
+++ b/fe/src/components/devices/ServerView.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+ This is a server!
+ UUID: {{ device.uuid() }}
+
+
+
+
+
+ {{ Object.keys(remote.devices).length }}
+ {{ Object.keys(remote.devices).length == 1 ? 'Device' : 'Devices' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ remoteDevice.settings.name }}
+
+
+ {{ id }}
+
+
+
+ Authorized
+
+ Unlink device
+
+
+
+
+ Unauthorized
+
+ Link device
+
+
+
+
+ One time pin: {{ remote.pinlink.pin }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Pin code
+ {{ remote.pinlink.pin }}
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/form/FormSelect.vue b/fe/src/components/form/FormSelect.vue
new file mode 100644
index 0000000..52a6808
--- /dev/null
+++ b/fe/src/components/form/FormSelect.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/icons/IconCommunity.vue b/fe/src/components/icons/IconCommunity.vue
new file mode 100644
index 0000000..2dc8b05
--- /dev/null
+++ b/fe/src/components/icons/IconCommunity.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/fe/src/components/icons/IconDocumentation.vue b/fe/src/components/icons/IconDocumentation.vue
new file mode 100644
index 0000000..6d4791c
--- /dev/null
+++ b/fe/src/components/icons/IconDocumentation.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/fe/src/components/icons/IconEcosystem.vue b/fe/src/components/icons/IconEcosystem.vue
new file mode 100644
index 0000000..c3a4f07
--- /dev/null
+++ b/fe/src/components/icons/IconEcosystem.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/fe/src/components/icons/IconSupport.vue b/fe/src/components/icons/IconSupport.vue
new file mode 100644
index 0000000..7452834
--- /dev/null
+++ b/fe/src/components/icons/IconSupport.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/fe/src/components/icons/IconTooling.vue b/fe/src/components/icons/IconTooling.vue
new file mode 100644
index 0000000..660598d
--- /dev/null
+++ b/fe/src/components/icons/IconTooling.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/fe/src/components/macros/MacroOverview.vue b/fe/src/components/macros/MacroOverview.vue
new file mode 100644
index 0000000..ef71ed0
--- /dev/null
+++ b/fe/src/components/macros/MacroOverview.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
Saved Macros
+
+
+
+
+ {{ macro.name }}
+
+
+
+
+
+
+
+
+
+
+
+
Are you sure you want to delete:
+
{{ macroToBeDeleted }}
+
+
+ No
+
+ Yes
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/MacroRecorder.vue b/fe/src/components/macros/MacroRecorder.vue
new file mode 100644
index 0000000..03e92cc
--- /dev/null
+++ b/fe/src/components/macros/MacroRecorder.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/DelaySpan.vue b/fe/src/components/macros/components/DelaySpan.vue
new file mode 100644
index 0000000..ef20255
--- /dev/null
+++ b/fe/src/components/macros/components/DelaySpan.vue
@@ -0,0 +1,78 @@
+
+
+
+
+ {{ value }} ms
+ >10 s
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/DeleteKeyDialog.vue b/fe/src/components/macros/components/DeleteKeyDialog.vue
new file mode 100644
index 0000000..c3418aa
--- /dev/null
+++ b/fe/src/components/macros/components/DeleteKeyDialog.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
Delete key
+
+
+
+
Are you sure you want to delete this key?
+
+
+ Delete key
+
+
+
+
+
+
+
+
+'
diff --git a/fe/src/components/macros/components/EditDelayDialog.vue b/fe/src/components/macros/components/EditDelayDialog.vue
new file mode 100644
index 0000000..7877764
--- /dev/null
+++ b/fe/src/components/macros/components/EditDelayDialog.vue
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/EditKeyDialog.vue b/fe/src/components/macros/components/EditKeyDialog.vue
new file mode 100644
index 0000000..f7c1fac
--- /dev/null
+++ b/fe/src/components/macros/components/EditKeyDialog.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
Press a key
+
+
+
+
+ >>>
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/FixedDelayMenu.vue b/fe/src/components/macros/components/FixedDelayMenu.vue
new file mode 100644
index 0000000..b123d16
--- /dev/null
+++ b/fe/src/components/macros/components/FixedDelayMenu.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+ Fixed delay
+
+
+
+ 0ms
+ 15ms
+ 50ms
+ 100ms
+
+
+
+ Custom delay
+
+
+
+ Custom delay
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/InsertKeyDialog.vue b/fe/src/components/macros/components/InsertKeyDialog.vue
new file mode 100644
index 0000000..450263b
--- /dev/null
+++ b/fe/src/components/macros/components/InsertKeyDialog.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
Insert key {{ position }}
+
[Press a key]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ↓ Down
+
+
+ ↑ Up
+
+
+
+ Insert key
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/MacroKey.vue b/fe/src/components/macros/components/MacroKey.vue
new file mode 100644
index 0000000..c258945
--- /dev/null
+++ b/fe/src/components/macros/components/MacroKey.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ {{ keyObj.loc }}
+
+
+ {{ dir.value === 'down' ? '↓' : '↑' }}
+
+
+
+ [ ]
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/components/ValidationErrorDialog.vue b/fe/src/components/macros/components/ValidationErrorDialog.vue
new file mode 100644
index 0000000..55cbc10
--- /dev/null
+++ b/fe/src/components/macros/components/ValidationErrorDialog.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
There's an error in your macro
+
+
+
+
+ The following keys have been pressed down, but
+ not released .
+
+
+ {{ key.toUpperCase() }}
+
+
+
+
+
+ The following keys have been released , but
+ not pressed down.
+
+
+ {{ key.toUpperCase() }}
+
+
+
+
+
+ Close
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/parts/EditDialogs.vue b/fe/src/components/macros/parts/EditDialogs.vue
new file mode 100644
index 0000000..d11c1d8
--- /dev/null
+++ b/fe/src/components/macros/parts/EditDialogs.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+ Insert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/parts/RecorderFooter.vue b/fe/src/components/macros/parts/RecorderFooter.vue
new file mode 100644
index 0000000..a5d1b63
--- /dev/null
+++ b/fe/src/components/macros/parts/RecorderFooter.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/parts/RecorderHeader.vue b/fe/src/components/macros/parts/RecorderHeader.vue
new file mode 100644
index 0000000..6258746
--- /dev/null
+++ b/fe/src/components/macros/parts/RecorderHeader.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/parts/RecorderInput.vue b/fe/src/components/macros/parts/RecorderInput.vue
new file mode 100644
index 0000000..994acc6
--- /dev/null
+++ b/fe/src/components/macros/parts/RecorderInput.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/macros/parts/RecorderOutput.vue b/fe/src/components/macros/parts/RecorderOutput.vue
new file mode 100644
index 0000000..fb6612c
--- /dev/null
+++ b/fe/src/components/macros/parts/RecorderOutput.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/panels/PanelEdit.vue b/fe/src/components/panels/PanelEdit.vue
new file mode 100644
index 0000000..43cd833
--- /dev/null
+++ b/fe/src/components/panels/PanelEdit.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+ Name: {{ editPanel.name }}
+
+ Aspect ratio: {{ editPanel.aspectRatio }}
+
+
+ Linked Macros:
+ {{ Object.keys(editPanel.macros).length }}
+
+
+
+
+
+
+
+ Button ID:
+ {{ editButton.id }}
+
+
+
+
+
+ Unlink
+
+
+ Link
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/panels/PanelView.vue b/fe/src/components/panels/PanelView.vue
new file mode 100644
index 0000000..28a1b82
--- /dev/null
+++ b/fe/src/components/panels/PanelView.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/components/panels/PanelsOverview.vue b/fe/src/components/panels/PanelsOverview.vue
new file mode 100644
index 0000000..047b696
--- /dev/null
+++ b/fe/src/components/panels/PanelsOverview.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+ No panels found
+
+
+
+
+
+
+
+
+
{{ panel.name }}
+
+
+
{{ panel.name }}
+
+
+ {{ panel.description }}
+
+
+
+
+ Preview
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/main.js b/fe/src/main.js
new file mode 100644
index 0000000..2c0d3cc
--- /dev/null
+++ b/fe/src/main.js
@@ -0,0 +1,37 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+// import './assets/jemx.scss'
+import '@/assets/main.css'
+import '@/assets/img/Macrame-Logo-gradient.svg'
+
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
+
+import App from '@/App.vue'
+import router from '@/router'
+
+const app = createApp(App)
+
+app.use(createPinia())
+app.use(router)
+
+app.mount('#app')
diff --git a/fe/src/router/index.js b/fe/src/router/index.js
new file mode 100644
index 0000000..83cabea
--- /dev/null
+++ b/fe/src/router/index.js
@@ -0,0 +1,87 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { createRouter, createWebHistory } from 'vue-router'
+import DashboardView from '../views/DashboardView.vue'
+import { checkAuth, isLocal } from '@/services/ApiService'
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: [
+ {
+ path: '/',
+ name: 'dashboard',
+ component: DashboardView,
+ },
+ {
+ path: '/panels',
+ name: 'panels',
+ component: () => import('../views/PanelsView.vue'),
+ meta: { requiresAuth: true },
+ },
+ {
+ path: '/panel/edit/:dirname',
+ name: 'panel-edit',
+ component: () => import('../views/PanelsView.vue'),
+ meta: { requiresAuth: true },
+ },
+ {
+ path: '/panel/view/:dirname',
+ name: 'panel-view',
+ component: () => import('../views/PanelsView.vue'),
+ meta: { requiresAuth: true },
+ },
+ {
+ path: '/macros',
+ name: 'macros',
+ component: () => import('../views/MacrosView.vue'),
+ meta: { localOnly: true },
+ },
+ {
+ path: '/devices',
+ name: 'devices',
+ component: () => import('../views/DevicesView.vue'),
+ },
+ // {
+ // path: '/settings',
+ // name: 'settings',
+ // component: () => import('../views/SettingsView.vue'),
+ // },
+ // {
+ // path: '/about',
+ // name: 'about',
+ // // route level code-splitting
+ // // this generates a separate chunk (About.[hash].js) for this route
+ // // which is lazy-loaded when the route is visited.
+ // component: () => import('../views/AboutView.vue'),
+ // },
+ ],
+})
+
+router.beforeEach(async (to, from, next) => {
+ const auth = await checkAuth()
+
+ if (to.meta.requiresAuth && !auth && !isLocal()) next('/devices')
+ else if (to.meta.localOnly && !isLocal()) next('/')
+ else next()
+})
+
+export default router
diff --git a/fe/src/services/ApiService.js b/fe/src/services/ApiService.js
new file mode 100644
index 0000000..2652497
--- /dev/null
+++ b/fe/src/services/ApiService.js
@@ -0,0 +1,55 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { useDeviceStore } from '@/stores/device'
+import CryptoJS from 'crypto-js'
+
+export const appUrl = () => {
+ const port = window.location.port == 5173 ? window.__CONFIG__.MCRM__PORT : window.location.port
+
+ return `http://${window.location.hostname}:${port}`
+}
+
+export const isLocal = () => {
+ return window.location.hostname === '127.0.0.1' || window.location.hostname === 'localhost'
+}
+
+export const encrypt = (data, key = false) => {
+ const pk = !key ? localStorage.getItem('Macrame__pk') : key
+
+ if (pk) {
+ return CryptoJS.RSA.encrypt(JSON.stringify(data), pk).toString()
+ } else {
+ return false
+ }
+}
+
+export const checkAuth = async () => {
+ const device = useDeviceStore()
+
+ const handshake = await device.remoteHandshake()
+
+ if (handshake === true) return true
+
+ if (device.key()) return true
+
+ return false
+}
diff --git a/fe/src/services/EncryptService.js b/fe/src/services/EncryptService.js
new file mode 100644
index 0000000..102182e
--- /dev/null
+++ b/fe/src/services/EncryptService.js
@@ -0,0 +1,77 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { useDeviceStore } from '@/stores/device'
+import { AES, enc, pad } from 'crypto-js'
+import { isLocal } from './ApiService'
+
+export const encryptAES = (key, str) => {
+ key = keyPad(key)
+
+ let iv = enc.Utf8.parse(window.__CONFIG__.MCRM__IV)
+ let encrypted = AES.encrypt(str, key, {
+ iv: iv,
+ padding: pad.Pkcs7,
+ })
+ return encrypted.toString()
+}
+
+export const decryptAES = (key, str) => {
+ key = keyPad(key)
+
+ let iv = enc.Utf8.parse(window.__CONFIG__.MCRM__IV)
+ let encrypted = AES.decrypt(str.toString(), key, {
+ iv: iv,
+ padding: pad.Pkcs7,
+ })
+ return encrypted.toString(enc.Utf8)
+}
+
+export const AuthCall = (data = false) => {
+ if (isLocal()) return data
+
+ if (!data) data = {empty: true}
+
+ const device = useDeviceStore()
+
+ return {
+ uuid: device.uuid(),
+ d: encryptAES(device.key(), JSON.stringify(data)),
+ }
+}
+
+function keyPad(key) {
+ let returnKey = key
+
+ if (key.length == 4) {
+ returnKey = key + window.__CONFIG__.MCRM__SALT
+ }
+
+ return enc.Utf8.parse(returnKey)
+}
+
+export const getDateStr = () => {
+ const date = new Date()
+ const year = date.getFullYear()
+ const month = String(date.getMonth() + 1).padStart(2, '0')
+ const day = String(date.getDate()).padStart(2, '0')
+ return `${year}${month}${day}`
+}
diff --git a/fe/src/services/MacroRecordService.js b/fe/src/services/MacroRecordService.js
new file mode 100644
index 0000000..9fd61fd
--- /dev/null
+++ b/fe/src/services/MacroRecordService.js
@@ -0,0 +1,192 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+const keyMap = {
+ // Modifier keys
+ Control: 'Ctrl',
+ Shift: 'Shift',
+ Alt: 'Alt',
+ Meta: 'Win',
+ CapsLock: 'Caps',
+ // Special keys
+ PageUp: 'PgUp',
+ PageDown: 'PgDn',
+ ScrollLock: 'Scr Lk',
+ Insert: 'Ins',
+ Delete: 'Del',
+ Escape: 'Esc',
+ Space: 'Space',
+ // Symbol keys
+ Backquote: '`',
+ Backslash: '\\',
+ BracketLeft: '[',
+ BracketRight: ']',
+ Comma: ',',
+ Equal: '=',
+ Minus: '-',
+ Period: '.',
+ Quote: "'",
+ Semicolon: ';',
+ Slash: '/',
+ // Arrow keys
+ ArrowUp: '▲',
+ ArrowRight: '▶',
+ ArrowDown: '▼',
+ ArrowLeft: '◀',
+ // Media keys
+ MediaPlayPause: 'Play',
+ MediaStop: 'Stop',
+ MediaTrackNext: 'Next',
+ MediaTrackPrevious: 'Prev',
+ MediaVolumeDown: 'Down',
+ MediaVolumeUp: 'Up',
+ AudioVolumeMute: 'Mute',
+ AudioVolumeDown: 'Down',
+ AudioVolumeUp: 'Up',
+}
+
+/**
+ * Filters a keyboard event and returns an object with two properties:
+ * loc (optional) and str.
+ * loc is the location of the key (either 'left', 'right', or 'num').
+ * str is the string representation of the key (e.g. 'a', 'A', 'Enter', etc.).
+ * If the key is a modifier key, it is represented by its name (e.g. 'Ctrl', 'Shift', etc.).
+ * If the key is not a modifier key, it is represented by its character (e.g. 'a', 'A', etc.).
+ * If the key is not a character key, it is represented by its symbol (e.g. ',', '.', etc.).
+ * @param {KeyboardEvent} e - The keyboard event to filter.
+ * @return {Object} An object with two properties: loc (optional) and str.
+ */
+export const filterKey = (e) => {
+ const k = {} // Object k (key)
+
+ // If location is set, set loc (location)
+ if (e.location === 1) k.loc = 'left'
+ if (e.location === 2) k.loc = 'right'
+ if (e.location === 3) k.loc = 'num'
+
+ if (e.key.includes('Media') || e.key.includes('Audio')) k.loc = mediaPrefix(e)
+
+ // If code is in keyMap, set str by code
+ if (keyMap[e.code] || keyMap[e.key]) {
+ k.str = keyMap[e.code] || keyMap[e.key]
+ } else {
+ // If code is not in keyMap, set str by e.key
+ k.str = e.key.toLowerCase()
+ }
+
+ // return k object
+ return k
+}
+
+/**
+ * Returns a string prefix for the given media key.
+ * @param {KeyboardEvent} e - The keyboard event to get the prefix for.
+ * @return {string} The prefix for the key (either 'Media' or 'Volume').
+ */
+const mediaPrefix = (e) => {
+ switch (e.key) {
+ case 'MediaPlayPause':
+ case 'MediaStop':
+ case 'MediaTrackNext':
+ case 'MediaTrackPrevious':
+ return 'Media'
+ case 'MediaVolumeDown':
+ case 'MediaVolumeUp':
+ case 'AudioVolumeDown':
+ case 'AudioVolumeUp':
+ case 'AudioVolumeMute':
+ return 'Volume'
+ }
+}
+
+export const isRepeat = (lastStep, e, direction) => {
+ return (
+ lastStep &&
+ lastStep.type === 'key' &&
+ lastStep.code === e.code &&
+ lastStep.direction === direction
+ )
+}
+
+export const invalidMacro = (steps) => {
+ const downKeys = []
+ const upKeys = []
+
+ Object.keys(steps).forEach((stepKey) => {
+ const step = steps[stepKey]
+
+ if (step.type !== 'key') return
+
+ if (step.direction == 'down') downKeys.push(step.key)
+ if (step.direction == 'up') {
+ if (!downKeys.includes(step.key)) upKeys.push(step.key)
+ else downKeys.splice(downKeys.indexOf(step.key), 1)
+ }
+ })
+
+ if (upKeys.length === 0 && downKeys.length === 0) return false
+
+ return { down: downKeys, up: upKeys }
+}
+
+export const translateJSON = (json) => {
+ const steps = []
+
+ json.forEach((step) => {
+ if (step.type === 'delay') steps.push(step)
+ if (step.type === 'key') steps.push(codeToStep(step.code, step.direction))
+ })
+
+ return steps
+}
+
+export const codeToStep = (code, direction) => {
+ let key = ''
+ let location = 0
+ let codeStr = code
+
+ if (code.includes('Left')) {
+ key = code.replace('Left', '')
+ location = 1
+ }
+ if (code.includes('Right')) {
+ key = code.replace('Right', '')
+ location = 2
+ }
+ if (code.includes('Numpad')) {
+ key = code.replace('Numpad', '')
+ location = 3
+ }
+
+ if (code.includes('Media')) codeStr = ''
+
+ if (key === '') key = code
+
+ const stepObj = {
+ type: 'key',
+ code: codeStr,
+ key: key,
+ location: location,
+ direction: direction,
+ }
+
+ return { ...stepObj, keyObj: filterKey(stepObj) }
+}
diff --git a/fe/src/services/MacroService.js b/fe/src/services/MacroService.js
new file mode 100644
index 0000000..c6cf8b2
--- /dev/null
+++ b/fe/src/services/MacroService.js
@@ -0,0 +1,47 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import axios from 'axios'
+import { appUrl, isLocal } from './ApiService'
+import { AuthCall } from './EncryptService'
+
+export const GetMacroList = async (count = false) => {
+ const request = await axios.post(appUrl() + '/macro/list')
+
+ if (!request.data) return 0
+
+ if (!count) return sortMacroList(request.data)
+ else return request.data.length
+}
+
+const sortMacroList = (list) => {
+ return [...list].sort((a, b) => a.name.localeCompare(b.name))
+}
+
+export const RunMacro = async (macro) => {
+ const data = isLocal() ? { macro: macro } : AuthCall({ macro: macro })
+ const request = await axios.post(appUrl() + '/macro/play', data)
+ return request.data
+}
+
+export const CheckMacroListChange = (oldList, newList) => {
+ return oldList !== JSON.stringify(newList)
+}
diff --git a/fe/src/services/PanelService.js b/fe/src/services/PanelService.js
new file mode 100644
index 0000000..0f78dab
--- /dev/null
+++ b/fe/src/services/PanelService.js
@@ -0,0 +1,120 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+export const SetPanelStyle = (styleStr) => {
+ const styleEl = document.createElement('style')
+ styleEl.setAttribute('custom_panel_style', true)
+ styleEl.innerHTML = styleStr
+ document.head.appendChild(styleEl)
+}
+
+export const RemovePanelStyle = () => {
+ const styleEl = document.querySelector('style[custom_panel_style]')
+ if (styleEl) {
+ styleEl.remove()
+ }
+}
+
+export const StripPanelHTML = (html, aspectRatio) => {
+ const parser = new DOMParser()
+ const doc = parser.parseFromString(html, 'text/html')
+ let scripts = []
+
+ if (doc.querySelectorAll('script').length > 0) {
+ const stripped = StripPanelScripts(doc)
+ doc.body = stripped.body
+ scripts = stripped.scripts
+ }
+
+ const body = doc.body
+ const bodyContents = body.innerHTML
+
+ const panelBody = document.createElement('div')
+ panelBody.id = 'panel-html__body'
+ panelBody.style = `aspect-ratio: ${aspectRatio}`
+ panelBody.innerHTML = bodyContents
+
+ if (scripts.length > 0) {
+ SetPanelScripts(scripts)
+ }
+
+ return panelBody.outerHTML
+}
+
+export const StripPanelScripts = (doc) => {
+ const scriptEls = doc.querySelectorAll('script')
+ const scripts = []
+
+ scriptEls.forEach((script) => {
+ if (script.getAttribute('no-compile') != '') scripts.push(script.innerHTML)
+ script.remove()
+ })
+
+ return { body: doc.body, scripts }
+}
+
+export const SetPanelScripts = (scripts) => {
+ scripts.forEach((script) => {
+ const scriptEl = document.createElement('script')
+ scriptEl.setAttribute('custom_panel_script', true)
+ scriptEl.innerHTML = script
+ document.body.appendChild(scriptEl)
+ })
+}
+
+export const RemovePanelScripts = () => {
+ const scripts = document.querySelectorAll('script[custom_panel_script]')
+ scripts.forEach((script) => {
+ script.remove()
+ })
+}
+
+export const PanelButtonListeners = (panelEl, callback) => {
+ panelEl.querySelectorAll('[mcrm__button]').forEach((button) => {
+ button.addEventListener('click', () => {
+ callback(button)
+ })
+ })
+}
+
+export const PanelDialogListeners = (panelEl) => {
+ panelEl.querySelectorAll('[mcrm__dialog-trigger]').forEach((dialogTrigger) => {
+ const dialogEl = document.querySelector(dialogTrigger.getAttribute('dialog-trigger'))
+
+ if (dialogEl) {
+ dialogTrigger.addEventListener('click', () => {
+ dialogEl.show()
+ })
+ }
+ })
+
+ document.querySelectorAll('dialog, dialog .dialog__close').forEach((dialogClose) => {
+ dialogClose.addEventListener('click', (e) => {
+ if (
+ e.target.classList.contains('dialog__close') ||
+ e.target.closest('.dialog__close') ||
+ e.target.tagName == 'DIALOG'
+ ) {
+ dialogClose.closest('dialog').close()
+ }
+ })
+ })
+}
diff --git a/fe/src/services/RobotKeys.md b/fe/src/services/RobotKeys.md
new file mode 100644
index 0000000..58f82de
--- /dev/null
+++ b/fe/src/services/RobotKeys.md
@@ -0,0 +1,117 @@
+ "A-Z a-z 0-9"
+
+ "backspace"
+ "delete"
+ "enter"
+ "tab"
+ "esc"
+ "escape"
+ "up" Up arrow key
+ "down" Down arrow key
+ "right" Right arrow key
+ "left" Left arrow key
+ "home"
+ "end"
+ "pageup"
+ "pagedown"
+
+ "f1"
+ "f2"
+ "f3"
+ "f4"
+ "f5"
+ "f6"
+ "f7"
+ "f8"
+ "f9"
+ "f10"
+ "f11"
+ "f12"
+ "f13"
+ "f14"
+ "f15"
+ "f16"
+ "f17"
+ "f18"
+ "f19"
+ "f20"
+ "f21"
+ "f22"
+ "f23"
+ "f24"
+
+ "cmd" is the "win" key for windows
+ "lcmd" left command
+ "rcmd" right command
+ // "command"
+ "alt"
+ "lalt" left alt
+ "ralt" right alt
+ "ctrl"
+ "lctrl" left ctrl
+ "rctrl" right ctrl
+ "control"
+ "shift"
+ "lshift" left shift
+ "rshift" right shift
+ // "right_shift"
+ "capslock"
+ "space"
+ "print"
+ "printscreen" // No Mac support
+ "insert"
+ "menu" Windows only
+
+ "audio_mute" Mute the volume
+ "audio_vol_down" Lower the volume
+ "audio_vol_up" Increase the volume
+ "audio_play"
+ "audio_stop"
+ "audio_pause"
+ "audio_prev" Previous Track
+ "audio_next" Next Track
+ "audio_rewind" Linux only
+ "audio_forward" Linux only
+ "audio_repeat" Linux only
+ "audio_random" Linux only
+
+
+ "num0"
+ "num1"
+ "num2"
+ "num3"
+ "num4"
+ "num5"
+ "num6"
+ "num7"
+ "num8"
+ "num9"
+ "num_lock"
+
+ "num."
+ "num+"
+ "num-"
+ "num*"
+ "num/"
+ "num_clear"
+ "num_enter"
+ "num_equal"
+
+ // // "numpad_0" No Linux support
+ // "numpad_0"
+ // "numpad_1"
+ // "numpad_2"
+ // "numpad_3"
+ // "numpad_4"
+ // "numpad_5"
+ // "numpad_6"
+ // "numpad_7"
+ // "numpad_8"
+ // "numpad_9"
+ // "numpad_lock"
+
+ "lights_mon_up" Turn up monitor brightness No Windows support
+ "lights_mon_down" Turn down monitor brightness No Windows support
+ "lights_kbd_toggle" Toggle keyboard backlight on/off No Windows support
+ "lights_kbd_up" Turn up keyboard backlight brightness No Windows support
+ "lights_kbd_down" Turn down keyboard backlight brightness No Windows support
diff --git a/fe/src/stores/counter.js b/fe/src/stores/counter.js
new file mode 100644
index 0000000..52bf0c6
--- /dev/null
+++ b/fe/src/stores/counter.js
@@ -0,0 +1,33 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { ref, computed } from 'vue'
+import { defineStore } from 'pinia'
+
+export const useCounterStore = defineStore('counter', () => {
+ const count = ref(0)
+ const doubleCount = computed(() => count.value * 2)
+ function increment() {
+ count.value++
+ }
+
+ return { count, doubleCount, increment }
+})
diff --git a/fe/src/stores/device.js b/fe/src/stores/device.js
new file mode 100644
index 0000000..bbf319a
--- /dev/null
+++ b/fe/src/stores/device.js
@@ -0,0 +1,153 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { ref } from 'vue'
+import { defineStore } from 'pinia'
+import axios from 'axios'
+import { appUrl, encrypt } from '@/services/ApiService'
+import { v4 as uuidv4 } from 'uuid'
+import { encryptAES, getDateStr } from '@/services/EncryptService'
+
+export const useDeviceStore = defineStore('device', () => {
+ // Properties - State values
+ const current = ref({
+ uuid: false,
+ key: false,
+ })
+
+ const remote = ref([])
+ const server = ref({
+ status: false,
+ })
+
+ // Current device
+ const uuid = () => {
+ if (!current.value.uuid && localStorage.getItem('deviceId')) {
+ current.value.uuid = localStorage.getItem('deviceId')
+ } else if (!current.value.uuid) {
+ current.value.uuid = setDeviceId()
+ }
+ return current.value.uuid
+ }
+
+ const setDeviceId = () => {
+ const uuid = uuidv4()
+ localStorage.setItem('deviceId', uuid)
+ return uuid
+ }
+
+ const key = () => {
+ if (!current.value.key && localStorage.getItem('deviceKey')) {
+ current.value.key = localStorage.getItem('deviceKey')
+ }
+ return current.value.key
+ }
+
+ const setDeviceKey = (key) => {
+ current.value.key = key
+ localStorage.setItem('deviceKey', key)
+ }
+
+ const removeDeviceKey = () => {
+ current.value.key = false
+ localStorage.removeItem('deviceKey')
+ }
+
+ const serverGetIP = async () => {
+ const request = await axios.post(appUrl() + '/device/server/ip')
+ return `http://${request.data}:${window.__CONFIG__.MCRM__PORT}`
+ }
+
+ // Server application
+ const serverGetRemotes = async (count = false) => {
+ const request = await axios.post(appUrl() + '/device/list')
+
+ if (!request.data.devices) return false
+
+ remote.value = request.data.devices
+
+ if (!count) return remote.value
+ else return Object.keys(remote.value).length
+ }
+
+ const serverStartLink = async (deviceUuid) => {
+ const request = await axios.post(appUrl() + '/device/link/start', { uuid: deviceUuid })
+ return request.data
+ }
+
+ // Remote application
+ const remoteCheckServerAccess = async () => {
+ const check = await axios.post(appUrl() + '/device/access/check', { uuid: uuid() })
+ server.value.access = check.data
+ return check.data
+ }
+
+ const remoteRequestServerAccess = async (deviceName, deviceType) => {
+ const request = await axios.post(appUrl() + '/device/access/request', {
+ uuid: uuid(),
+ name: deviceName,
+ type: deviceType,
+ })
+ return request
+ }
+ const remotePingLink = async (cb) => {
+ const pingInterval = setInterval(() => {
+ axios.post(appUrl() + '/device/link/ping', { uuid: uuid() }).then((data) => {
+ if (data.data) {
+ clearInterval(pingInterval)
+ cb(data.data)
+ }
+ })
+ }, 1000)
+ }
+
+ const remoteHandshake = async (keyStr = false) => {
+ if (!keyStr) keyStr = key()
+
+ if (!keyStr) return false
+
+ const handshake = await axios.post(appUrl() + '/device/handshake', {
+ uuid: uuid(),
+ shake: encryptAES(keyStr, getDateStr()),
+ })
+
+ if (!handshake.data) removeDeviceKey()
+
+ return handshake.data
+ }
+
+ return {
+ remote,
+ server,
+ uuid,
+ setDeviceId,
+ key,
+ setDeviceKey,
+ removeDeviceKey,
+ serverGetIP,
+ serverGetRemotes,
+ serverStartLink,
+ remoteCheckServerAccess,
+ remoteRequestServerAccess,
+ remotePingLink,
+ remoteHandshake,
+ }
+})
diff --git a/fe/src/stores/macrorecorder.js b/fe/src/stores/macrorecorder.js
new file mode 100644
index 0000000..29cee6b
--- /dev/null
+++ b/fe/src/stores/macrorecorder.js
@@ -0,0 +1,260 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { ref } from 'vue'
+import { defineStore } from 'pinia'
+
+import { filterKey, isRepeat, invalidMacro, translateJSON } from '../services/MacroRecordService'
+import axios from 'axios'
+import { appUrl } from '@/services/ApiService'
+
+export const useMacroRecorderStore = defineStore('macrorecorder', () => {
+ // Properties - State values
+ const state = ref({
+ record: false,
+ edit: false,
+ editKey: false,
+ editDelay: false,
+ validationErrors: false,
+ })
+
+ const macroName = ref('')
+
+ const steps = ref([])
+
+ const delay = ref({
+ start: 0,
+ fixed: false,
+ })
+
+ // Getters - Computed values
+ const getEditKey = () => steps.value[state.value.editKey]
+ const getAdjacentKey = (pos, includeDelay = false) => {
+ let returnVal = false
+
+ const mod = pos == 'before' ? -1 : 1
+ const keyIndex = state.value.editKey + 2 * mod
+ const delayIndex = includeDelay ? state.value.editKey + 1 * mod : false
+
+ if (steps.value[keyIndex]) returnVal = steps.value[keyIndex]
+ if (delayIndex && steps.value[delayIndex])
+ returnVal = {
+ delay: steps.value[delayIndex],
+ key: steps.value[keyIndex],
+ delayIndex: delayIndex,
+ }
+
+ return returnVal
+ }
+
+ const getEditDelay = () => steps.value[state.value.editDelay]
+
+ // Setters - Actions
+ const recordStep = (e, direction = false, key = false) => {
+ if ((e.ctrlKey, e.shiftKey, e.altKey, e.metaKey)) e.preventDefault()
+
+ const lastStep = steps.value[steps.value.length - 1]
+
+ let stepVal = {}
+
+ if (typeof e === 'object' && !isRepeat(lastStep, e, direction)) {
+ if (key === false) recordDelay()
+
+ stepVal = {
+ type: 'key',
+ key: e.key,
+ code: e.code,
+ location: e.location,
+ direction: direction,
+ keyObj: filterKey(e),
+ }
+ } else if (direction && key !== false) {
+ stepVal = steps.value[key]
+ stepVal.direction = direction
+ } else if (typeof e === 'number') {
+ stepVal = { type: 'delay', value: parseFloat(e.toFixed()) }
+ }
+
+ if (key !== false) steps.value[key] = stepVal
+ else steps.value.push(stepVal)
+ }
+
+ const recordDelay = () => {
+ if (delay.value.fixed !== false)
+ recordStep(delay.value.fixed) // Record fixed delay
+ else if (delay.value.start == 0)
+ delay.value.start = performance.now() // Record start of delay
+ else {
+ recordStep(performance.now() - delay.value.start) // Record end of delay
+ delay.value.start = performance.now() // Reset start
+ }
+ }
+
+ const insertKey = (e, direction, adjacentDelayIndex) => {
+ let min, max, newKeyIndex, newDelayIndex
+
+ if (adjacentDelayIndex === null) {
+ min = state.value.editKey == 0 ? 0 : state.value.editKey
+ max = state.value.editKey == 0 ? 1 : false
+
+ newKeyIndex = max === false ? min + 2 : min
+ newDelayIndex = min + 1
+ } else if (state.value.editKey < adjacentDelayIndex) {
+ min = state.value.editKey
+ max = adjacentDelayIndex
+ newKeyIndex = min + 2
+ newDelayIndex = min + 1
+ } else {
+ min = adjacentDelayIndex
+ max = state.value.editKey
+ newKeyIndex = min + 1
+ newDelayIndex = min + 2
+ }
+
+ if (max !== false) {
+ for (let i = Object.keys(steps.value).length - 1; i >= max; i--) {
+ steps.value[i + 2] = steps.value[i]
+ }
+ }
+
+ recordStep(e, direction, newKeyIndex)
+ recordStep(10, false, newDelayIndex)
+
+ state.value.editKey = false
+ }
+
+ const deleteEditKey = () => {
+ if (state.value.editKey === 0) steps.value.splice(state.value.editKey, 2)
+ else steps.value.splice(state.value.editKey - 1, 2)
+ state.value.editKey = false
+ }
+
+ const restartDelay = () => {
+ delay.value.start = performance.now()
+ }
+
+ const changeName = (name) => {
+ macroName.value = name
+ }
+
+ const changeDelay = (fixed) => {
+ delay.value.fixed = fixed
+
+ formatDelays()
+ }
+
+ const formatDelays = () => {
+ steps.value = steps.value.map((step) => {
+ if (step.type === 'delay' && delay.value.fixed !== false) step.value = delay.value.fixed
+ return step
+ })
+ }
+
+ const toggleEdit = (type, key) => {
+ if (type === 'key') {
+ state.value.editKey = key
+ state.value.editDelay = false
+ }
+
+ if (type === 'delay') {
+ state.value.editKey = false
+ state.value.editDelay = key
+ }
+ }
+
+ const resetEdit = () => {
+ state.value.edit = false
+ state.value.editKey = false
+ state.value.editDelay = false
+ }
+
+ const resetMacro = () => {
+ state.value.record = false
+ delay.value.start = 0
+ macroName.value = ''
+ steps.value = []
+
+ if (state.value.edit) resetEdit()
+ }
+
+ const checkMacro = async () => {
+ const resp = await axios.post(appUrl() + '/macro/check', {
+ macro: macroName.value,
+ })
+
+ return resp.data
+ }
+
+ const saveMacro = async () => {
+ state.value.validationErrors = invalidMacro(steps.value)
+
+ if (state.value.validationErrors) return false
+
+ const resp = await axios.post(appUrl() + '/macro/record', {
+ name: macroName.value,
+ steps: steps.value,
+ })
+
+ return resp.status == 200
+ }
+
+ const deleteMacro = async (macroFilename) => {
+ const resp = await axios.post(appUrl() + '/macro/delete', {
+ macro: macroFilename,
+ })
+
+ if (resp.status == 200) return resp.data
+ else return false
+ }
+
+ const openMacro = async (macroFileName, name) => {
+ const openResp = await axios.post(appUrl() + '/macro/open', {
+ macro: macroFileName,
+ })
+
+ if (openResp.data) steps.value = translateJSON(openResp.data)
+
+ macroName.value = name
+ }
+
+ return {
+ state,
+ macroName,
+ steps,
+ delay,
+ getEditKey,
+ getAdjacentKey,
+ getEditDelay,
+ recordStep,
+ insertKey,
+ deleteEditKey,
+ restartDelay,
+ changeName,
+ changeDelay,
+ toggleEdit,
+ resetEdit,
+ resetMacro,
+ checkMacro,
+ saveMacro,
+ deleteMacro,
+ openMacro,
+ }
+})
diff --git a/fe/src/stores/panel.js b/fe/src/stores/panel.js
new file mode 100644
index 0000000..9cfca54
--- /dev/null
+++ b/fe/src/stores/panel.js
@@ -0,0 +1,82 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+import { appUrl } from '@/services/ApiService'
+import { AuthCall } from '@/services/EncryptService'
+import axios from 'axios'
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+export const usePanelStore = defineStore('panel', () => {
+ const current = ref({
+ dir: false,
+ name: false,
+ description: false,
+ aspectRatio: false,
+ macros: false,
+ thumb: false,
+ html: false,
+ style: false,
+ })
+
+ const list = ref([])
+
+ const get = async (dir) => {
+ const data = AuthCall({ dir: dir })
+
+ const resp = await axios.post(appUrl() + '/panel/get', data)
+
+ if (!resp.data && !current.value.html) return false
+
+ current.value.name = resp.data.name
+ current.value.description = resp.data.description
+ current.value.aspectRatio = resp.data.aspectRatio
+ current.value.macros = resp.data.macros
+ current.value.thumb = resp.data.thumb
+ current.value.html = resp.data.html
+ current.value.style = resp.data.style
+
+ return current.value
+ }
+
+ const getList = async (count = false) => {
+ if (list.value.length > 0 && !count) return list.value
+ else if (list.value.length > 0 && count) return list.value.length
+
+ const data = AuthCall()
+
+ const resp = await axios.post(appUrl() + '/panel/list', data)
+ list.value = resp.data
+
+ if (!resp.data && !count) return false
+ else if (!resp.data && count) return 0
+
+ if (!count) return list.value
+ else return list.value.length
+ }
+
+ return {
+ current,
+ list,
+ get,
+ getList,
+ }
+})
diff --git a/fe/src/views/DashboardView.vue b/fe/src/views/DashboardView.vue
new file mode 100644
index 0000000..2b614cc
--- /dev/null
+++ b/fe/src/views/DashboardView.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
Dashboard
+
+ This is the server dashboard.
+ This is the remote dashboard.
+
+
+
+
+
+
+
+
About Macrame
+
+ Macrame is an open-source application designed to turn any device into a customizable
+ button panel. Whether you're optimizing your workflow or enhancing your gaming experience,
+ Macrame makes it simple to create and link macros to your button panels.
+
+
+ For more information, including details on licensing, visit
+ https://macrame.github.io
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/views/DevicesView.vue b/fe/src/views/DevicesView.vue
new file mode 100644
index 0000000..9e77279
--- /dev/null
+++ b/fe/src/views/DevicesView.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+ {{ isLocal() ? 'Remote devices' : 'Server' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/views/HomeView.vue b/fe/src/views/HomeView.vue
new file mode 100644
index 0000000..c304a7a
--- /dev/null
+++ b/fe/src/views/HomeView.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/fe/src/views/MacrosView.vue b/fe/src/views/MacrosView.vue
new file mode 100644
index 0000000..11394ae
--- /dev/null
+++ b/fe/src/views/MacrosView.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/views/PanelsView.vue b/fe/src/views/PanelsView.vue
new file mode 100644
index 0000000..b96e96f
--- /dev/null
+++ b/fe/src/views/PanelsView.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ Panels
+
+ Overview
+
+
+
+
+
+
+
+
+
diff --git a/fe/src/views/SettingsView.vue b/fe/src/views/SettingsView.vue
new file mode 100644
index 0000000..00094e7
--- /dev/null
+++ b/fe/src/views/SettingsView.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/fe/vite.config.js b/fe/vite.config.js
new file mode 100644
index 0000000..6c382bd
--- /dev/null
+++ b/fe/vite.config.js
@@ -0,0 +1,31 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import vueDevTools from 'vite-plugin-vue-devtools'
+import tailwindcss from '@tailwindcss/vite'
+
+// https://vite.dev/config/
+export default defineConfig({
+ server: {
+ host: 'localhost',
+ port: 5173,
+ watch: {
+ usePolling: true,
+ },
+ },
+ plugins: [vue(), vueDevTools(), tailwindcss()],
+ envDir: '../',
+ assets: ['assets'],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ },
+ },
+ base: '/',
+ build: {
+ outDir: '../public',
+ sourcemap: true,
+ minify: true,
+ },
+})
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..369a50c
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,46 @@
+module macrame
+
+go 1.24.1
+
+require (
+ github.com/getlantern/systray v1.2.2
+ github.com/go-vgo/robotgo v0.110.7
+)
+
+require (
+ github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e // indirect
+ github.com/ebitengine/purego v0.8.2 // indirect
+ github.com/gen2brain/shm v0.1.1 // indirect
+ github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect
+ github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 // indirect
+ github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 // indirect
+ github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 // indirect
+ github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 // indirect
+ github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f // indirect
+ github.com/go-ole/go-ole v1.3.0 // indirect
+ github.com/go-stack/stack v1.8.0 // indirect
+ github.com/godbus/dbus/v5 v5.1.0 // indirect
+ github.com/jezek/xgb v1.1.1 // indirect
+ github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c // indirect
+ github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect
+ github.com/lxn/win v0.0.0-20210218163916-a377121e959e // indirect
+ github.com/otiai10/gosseract v2.2.1+incompatible // indirect
+ github.com/otiai10/mint v1.6.3 // indirect
+ github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect
+ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
+ github.com/robotn/xgb v0.10.0 // indirect
+ github.com/robotn/xgbutil v0.10.0 // indirect
+ github.com/shirou/gopsutil/v4 v4.25.1 // indirect
+ github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35 // indirect
+ github.com/tklauser/go-sysconf v0.3.14 // indirect
+ github.com/tklauser/numcpus v0.9.0 // indirect
+ github.com/vcaesar/gops v0.40.0 // indirect
+ github.com/vcaesar/imgo v0.40.2 // indirect
+ github.com/vcaesar/keycode v0.10.1 // indirect
+ github.com/vcaesar/tt v0.20.1 // indirect
+ github.com/yusufpapurcu/wmi v1.2.4 // indirect
+ golang.org/x/exp v0.0.0-20250215185904-eff6e970281f // indirect
+ golang.org/x/image v0.24.0 // indirect
+ golang.org/x/net v0.39.0 // indirect
+ golang.org/x/sys v0.32.0 // indirect
+)
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..eca718f
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,102 @@
+github.com/BurntSushi/freetype-go v0.0.0-20160129220410-b763ddbfe298/go.mod h1:D+QujdIlUNfa0igpNMk6UIvlb6C252URs4yupRUV4lQ=
+github.com/BurntSushi/graphics-go v0.0.0-20160129215708-b43f31a4a966/go.mod h1:Mid70uvE93zn9wgF92A/r5ixgnvX8Lh68fxp9KQBaI0=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e h1:L+XrFvD0vBIBm+Wf9sFN6aU395t7JROoai0qXZraA4U=
+github.com/dblohm7/wingoes v0.0.0-20240820181039-f2b84150679e/go.mod h1:SUxUaAK/0UG5lYyZR1L1nC4AaYYvSSYTWQSH3FPcxKU=
+github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I=
+github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
+github.com/gen2brain/shm v0.1.1 h1:1cTVA5qcsUFixnDHl14TmRoxgfWEEZlTezpUj1vm5uQ=
+github.com/gen2brain/shm v0.1.1/go.mod h1:UgIcVtvmOu+aCJpqJX7GOtiN7X2ct+TKLg4RTxwPIUA=
+github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 h1:NRUJuo3v3WGC/g5YiyF790gut6oQr5f3FBI88Wv0dx4=
+github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY=
+github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 h1:6uJ+sZ/e03gkbqZ0kUG6mfKoqDb4XMAzMIwlajq19So=
+github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7/go.mod h1:l+xpFBrCtDLpK9qNjxs+cHU6+BAdlBaxHqikB6Lku3A=
+github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 h1:guBYzEaLz0Vfc/jv0czrr2z7qyzTOGC9hiQ0VC+hKjk=
+github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7/go.mod h1:zx/1xUUeYPy3Pcmet8OSXLbF47l+3y6hIPpyLWoR9oc=
+github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 h1:micT5vkcr9tOVk1FiH8SWKID8ultN44Z+yzd2y/Vyb0=
+github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7/go.mod h1:dD3CgOrwlzca8ed61CsZouQS5h5jIzkK9ZWrTcf0s+o=
+github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 h1:XYzSdCbkzOC0FDNrgJqGRo8PCMFOBFL9py72DRs7bmc=
+github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55/go.mod h1:6mmzY2kW1TOOrVy+r41Za2MxXM+hhqTtY3oBKd2AgFA=
+github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f h1:wrYrQttPS8FHIRSlsrcuKazukx/xqO/PpLZzZXsF+EA=
+github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f/go.mod h1:D5ao98qkA6pxftxoqzibIBBrLSUli+kYnJqrgBf9cIA=
+github.com/getlantern/systray v1.2.2 h1:dCEHtfmvkJG7HZ8lS/sLklTH4RKUcIsKrAD9sThoEBE=
+github.com/getlantern/systray v1.2.2/go.mod h1:pXFOI1wwqwYXEhLPm9ZGjS2u/vVELeIgNMY5HvhHhcE=
+github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
+github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
+github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
+github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
+github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/go-vgo/robotgo v0.110.7 h1:4scqQrJOBHoFCfcMROYEVFBxHvB3nF/UN6DWoRIFzBE=
+github.com/go-vgo/robotgo v0.110.7/go.mod h1:eBUjTHY1HYjzdi1+UWJUbxB+b9gE+l4Ei7vQU/9SnLw=
+github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
+github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/jezek/xgb v1.1.1 h1:bE/r8ZZtSv7l9gk6nU0mYx51aXrvnyb44892TwSaqS4=
+github.com/jezek/xgb v1.1.1/go.mod h1:nrhwO0FX/enq75I7Y7G8iN1ubpSGZEiA3v9e9GyRFlk=
+github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c h1:1IlzDla/ZATV/FsRn1ETf7ir91PHS2mrd4VMunEtd9k=
+github.com/kbinani/screenshot v0.0.0-20250118074034-a3924b7bbc8c/go.mod h1:Pmpz2BLf55auQZ67u3rvyI2vAQvNetkK/4zYUmpauZQ=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0=
+github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k=
+github.com/lxn/walk v0.0.0-20210112085537-c389da54e794/go.mod h1:E23UucZGqpuUANJooIbHWCufXvOcT6E7Stq81gU+CSQ=
+github.com/lxn/win v0.0.0-20210218163916-a377121e959e h1:H+t6A/QJMbhCSEH5rAuRxh+CtW96g0Or0Fxa9IKr4uc=
+github.com/lxn/win v0.0.0-20210218163916-a377121e959e/go.mod h1:KxxjdtRkfNoYDCUP5ryK7XJJNTnpC8atvtmTheChOtk=
+github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
+github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
+github.com/otiai10/gosseract v2.2.1+incompatible h1:Ry5ltVdpdp4LAa2bMjsSJH34XHVOV7XMi41HtzL8X2I=
+github.com/otiai10/gosseract v2.2.1+incompatible/go.mod h1:XrzWItCzCpFRZ35n3YtVTgq5bLAhFIkascoRo8G32QE=
+github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs=
+github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
+github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw=
+github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
+github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
+github.com/robotn/xgb v0.0.0-20190912153532-2cb92d044934/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ=
+github.com/robotn/xgb v0.10.0 h1:O3kFbIwtwZ3pgLbp1h5slCQ4OpY8BdwugJLrUe6GPIM=
+github.com/robotn/xgb v0.10.0/go.mod h1:SxQhJskUJ4rleVU44YvnrdvxQr0tKy5SRSigBrCgyyQ=
+github.com/robotn/xgbutil v0.10.0 h1:gvf7mGQqCWQ68aHRtCxgdewRk+/KAJui6l3MJQQRCKw=
+github.com/robotn/xgbutil v0.10.0/go.mod h1:svkDXUDQjUiWzLrA0OZgHc4lbOts3C+uRfP6/yjwYnU=
+github.com/shirou/gopsutil/v4 v4.25.1 h1:QSWkTc+fu9LTAWfkZwZ6j8MSUk4A2LV7rbH0ZqmLjXs=
+github.com/shirou/gopsutil/v4 v4.25.1/go.mod h1:RoUCUpndaJFtT+2zsZzzmhvbfGoDCJ7nFXKJf8GqJbI=
+github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35 h1:wAZbkTZkqDzWsqxPh2qkBd3KvFU7tcxV0BP0Rnhkxog=
+github.com/tailscale/win v0.0.0-20250213223159-5992cb43ca35/go.mod h1:aMd4yDHLjbOuYP6fMxj1d9ACDQlSWwYztcpybGHCQc8=
+github.com/tc-hib/winres v0.2.1 h1:YDE0FiP0VmtRaDn7+aaChp1KiF4owBiJa5l964l5ujA=
+github.com/tc-hib/winres v0.2.1/go.mod h1:C/JaNhH3KBvhNKVbvdlDWkbMDO9H4fKKDaN7/07SSuk=
+github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU=
+github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY=
+github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo=
+github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI=
+github.com/vcaesar/gops v0.40.0 h1:I+1RCGiV+LkZJUYNzAd373xs0uM2UyeFdZBmow8HfCM=
+github.com/vcaesar/gops v0.40.0/go.mod h1:3u/USW7JovqUK6i13VOD3qWfvXXd2TIIKE4PYIv4TOM=
+github.com/vcaesar/imgo v0.40.2 h1:5GWScRLdBCMtO1v2I1bs+ZmDLZFINxYSMZ+mtUw5qPM=
+github.com/vcaesar/imgo v0.40.2/go.mod h1:MVCl+FxHI2gTgmiHoi0n5xNCbYcfv9SVtdEOUC92+eo=
+github.com/vcaesar/keycode v0.10.1 h1:0DesGmMAPWpYTCYddOFiCMKCDKgNnwiQa2QXindVUHw=
+github.com/vcaesar/keycode v0.10.1/go.mod h1:JNlY7xbKsh+LAGfY2j4M3znVrGEm5W1R8s/Uv6BJcfQ=
+github.com/vcaesar/tt v0.20.1 h1:D/jUeeVCNbq3ad8M7hhtB3J9x5RZ6I1n1eZ0BJp7M+4=
+github.com/vcaesar/tt v0.20.1/go.mod h1:cH2+AwGAJm19Wa6xvEa+0r+sXDJBT0QgNQey6mwqLeU=
+github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
+github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
+golang.org/x/exp v0.0.0-20250215185904-eff6e970281f h1:oFMYAjX0867ZD2jcNiLBrI9BdpmEkvPyi5YrBGXbamg=
+golang.org/x/exp v0.0.0-20250215185904-eff6e970281f/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
+golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
+golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
+golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
+golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
+golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/macros/TEST-Close_Application.json b/macros/TEST-Close_Application.json
deleted file mode 100644
index c481f1b..0000000
--- a/macros/TEST-Close_Application.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lalt", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "f4", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lalt", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "f4", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Close_Browser_Window.json b/macros/TEST-Close_Browser_Window.json
deleted file mode 100644
index 63cb228..0000000
--- a/macros/TEST-Close_Browser_Window.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "w", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "w", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Close_Tab.json b/macros/TEST-Close_Tab.json
deleted file mode 100644
index 577aa88..0000000
--- a/macros/TEST-Close_Tab.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "w", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "w", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Displays.json b/macros/TEST-Displays.json
deleted file mode 100644
index 80ba168..0000000
--- a/macros/TEST-Displays.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "p", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "p", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Files.json b/macros/TEST-Files.json
deleted file mode 100644
index be664ab..0000000
--- a/macros/TEST-Files.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "e", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "e", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Fullscreen.json b/macros/TEST-Fullscreen.json
deleted file mode 100644
index 16aa578..0000000
--- a/macros/TEST-Fullscreen.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"code":"f11","direction":"down","type":"key"},{"type":"delay","value":15},{"code":"f11","direction":"up","type":"key"}]
\ No newline at end of file
diff --git a/macros/TEST-Home.json b/macros/TEST-Home.json
deleted file mode 100644
index 4782647..0000000
--- a/macros/TEST-Home.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lalt", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "home", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "home", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lalt", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-New_Desktop.json b/macros/TEST-New_Desktop.json
deleted file mode 100644
index 9ade4e0..0000000
--- a/macros/TEST-New_Desktop.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 50 },
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 50 },
- { "code": "d", "direction": "down", "type": "key" },
- { "type": "delay", "value": 50 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 50 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 50 },
- { "code": "d", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-New_Tab.json b/macros/TEST-New_Tab.json
deleted file mode 100644
index f62acf0..0000000
--- a/macros/TEST-New_Tab.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "t", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "t", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-New_Window.json b/macros/TEST-New_Window.json
deleted file mode 100644
index 8880f54..0000000
--- a/macros/TEST-New_Window.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "n", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "n", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Next_Tab.json b/macros/TEST-Next_Tab.json
deleted file mode 100644
index 1ee9641..0000000
--- a/macros/TEST-Next_Tab.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-PlayPause.json b/macros/TEST-PlayPause.json
deleted file mode 100644
index 5471bd1..0000000
--- a/macros/TEST-PlayPause.json
+++ /dev/null
@@ -1 +0,0 @@
-[{"code":"audio_play|audio_pause","direction":"down","type":"key"},{"type":"delay","value":15},{"code":"audio_play|audio_pause","direction":"up","type":"key"}]
\ No newline at end of file
diff --git a/macros/TEST-Previous_Tab.json b/macros/TEST-Previous_Tab.json
deleted file mode 100644
index 57dfb44..0000000
--- a/macros/TEST-Previous_Tab.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-RunDialog.json b/macros/TEST-RunDialog.json
deleted file mode 100644
index 4b73502..0000000
--- a/macros/TEST-RunDialog.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "r", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "r", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Settings.json b/macros/TEST-Settings.json
deleted file mode 100644
index fdc8f80..0000000
--- a/macros/TEST-Settings.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "i", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "i", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Task_manager.json b/macros/TEST-Task_manager.json
deleted file mode 100644
index 732e5df..0000000
--- a/macros/TEST-Task_manager.json
+++ /dev/null
@@ -1,13 +0,0 @@
-[
- { "code": "lctrl", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "esc", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "esc", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lshift", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lctrl", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-Task_view.json b/macros/TEST-Task_view.json
deleted file mode 100644
index 65901ec..0000000
--- a/macros/TEST-Task_view.json
+++ /dev/null
@@ -1,9 +0,0 @@
-[
- { "code": "lcmd", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "down", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "lcmd", "direction": "up", "type": "key" },
- { "type": "delay", "value": 15 },
- { "code": "tab", "direction": "up", "type": "key" }
-]
diff --git a/macros/TEST-desktop.json b/macros/desktop.json
similarity index 100%
rename from macros/TEST-desktop.json
rename to macros/desktop.json
diff --git a/macros/task_manager.json b/macros/task_manager.json
new file mode 100644
index 0000000..194fbc4
--- /dev/null
+++ b/macros/task_manager.json
@@ -0,0 +1 @@
+[{"type":"key","key":"Control","code":"ControlLeft","location":1,"direction":"down","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":15},{"type":"key","key":"Shift","code":"ShiftLeft","location":1,"direction":"down","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":15},{"type":"key","key":"Escape","code":"Escape","location":0,"direction":"down","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":15},{"type":"key","key":"Escape","code":"Escape","location":0,"direction":"up","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":15},{"type":"key","key":"Shift","code":"ShiftLeft","location":1,"direction":"up","value":0},{"type":"delay","key":"","code":"","location":0,"direction":"","value":15},{"type":"key","key":"Control","code":"ControlLeft","location":1,"direction":"up","value":0}]
\ No newline at end of file
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..fcbdd69
--- /dev/null
+++ b/main.go
@@ -0,0 +1,73 @@
+/*
+Macrame is a program that enables the user to create keyboard macros and button panels.
+The macros are saved as simple JSON files and can be linked to the button panels. The panels can
+be created with HTML and CSS.
+
+Copyright (C) 2025 Jesse Malotaux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+package main
+
+import (
+ "log"
+ "net/http"
+ "os"
+
+ "macrame/app"
+ "macrame/app/helper"
+)
+
+func main() {
+ app.MCRMLogInit()
+
+ switchDir()
+
+ if helper.EnvGet("MCRM__PORT") == "" {
+ app.MCRMLog("Error: MCRM__PORT is not set")
+ }
+
+ http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
+ apiInit(w, r)
+ })
+
+ helper.OpenBrowser("http://localhost:" + helper.EnvGet("MCRM__PORT"))
+
+ app.MCRMLog("Listening on http://localhost:" + helper.EnvGet("MCRM__PORT"))
+
+ app.InitSystray()
+
+ app.MCRMLog(http.ListenAndServe(":"+helper.EnvGet("MCRM__PORT"), nil))
+}
+
+func switchDir() {
+ cwd, err := os.Getwd()
+
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ log.Println(cwd)
+}
+
+func apiInit(w http.ResponseWriter, r *http.Request) {
+ app.ApiCORS(w, r)
+
+ if r.Method == "GET" {
+ app.ApiGet(w, r)
+ } else if r.Method == "POST" {
+ app.ApiPost(w, r)
+ }
+}
diff --git a/panels/Elite_Dangerous/index.html b/panels/Elite_Dangerous/index.html
new file mode 100644
index 0000000..2d230d9
--- /dev/null
+++ b/panels/Elite_Dangerous/index.html
@@ -0,0 +1,913 @@
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
+
+
+
+
Frame Shift Drive
+
+
+ Toggle FSD
+
+
+
+
+
+
+
+
Mode
+
Analysis
+
+
Combat
+
+
+
Hardpoints
+
Retract
+
+
Deploy
+
+
+
+
+
+
+
+
Flight Assist
+
+
+
+ Rotational Correction
+
+
+
+
+
+
+
Lights
+
+
+ Off
+ On
+
+
+
+
Night Vis.
+
+
+ Off
+ On
+
+
+
+
+
+
Silent Running
+
+
+ Off
+ On
+
+
+
+
+
+
+
+
+
JETTISON CARGO
+
+
+
+
+
+
+
+
+
+
Camera
+
+
+
+
+
+
+
+
+
Camera Suite
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panels/Elite_Dangerous/input.css b/panels/Elite_Dangerous/input.css
new file mode 100644
index 0000000..6056744
--- /dev/null
+++ b/panels/Elite_Dangerous/input.css
@@ -0,0 +1,253 @@
+@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800);
+@layer theme, utilities;
+@import "tailwindcss/theme.css" layer(theme);
+@import "tailwindcss/utilities.css" layer(utilities);
+
+@layer theme {
+ /* :root {
+ } */
+}
+
+html,
+body,
+#panel-html__body {
+ @apply relative;
+}
+
+#panel-html__body {
+ --font-sans: "Orbitron", sans-serif;
+ @apply font-sans text-sm font-light tracking-wide bg-gray-900 text-slate-50 size-full;
+
+ * {
+ box-sizing: border-box;
+ }
+}
+
+.group-left,
+.group-middle,
+.group-right {
+ @apply grid gap-2 h-fit;
+}
+
+.ed-panel {
+ @apply w-full p-2 border h-fit rounded-b-xl;
+
+ h3,
+ h4 {
+ @apply m-0 mb-1 font-extralight;
+ }
+
+ h3 {
+ @apply text-base;
+ }
+
+ h4 {
+ @apply text-sm;
+ }
+
+ &.pnl__blue {
+ @apply border-sky-300 bg-sky-500/30;
+
+ h3,
+ h4 {
+ @apply text-sky-100;
+
+ text-shadow: 0 0 0.2em var(--color-sky-300);
+ }
+ }
+
+ &.pnl__yellow {
+ @apply border-amber-300 bg-amber-500/30;
+
+ h3,
+ h4 {
+ @apply text-amber-100;
+
+ text-shadow: 0 0 0.2em var(--color-amber-300);
+ }
+ }
+
+ &.pnl__orange {
+ @apply border-orange-300 bg-orange-500/30;
+
+ h3,
+ h4 {
+ @apply text-orange-100;
+
+ text-shadow: 0 0 0.2em var(--color-orange-300);
+ }
+ }
+
+ &.pnl__red {
+ @apply border-rose-300 bg-rose-500/30;
+
+ h3,
+ h4 {
+ @apply text-rose-100;
+
+ text-shadow: 0 0 0.2em var(--color-rose-400);
+ }
+ }
+
+ &.pnl__white {
+ @apply border-white bg-white/20;
+
+ h3,
+ h4 {
+ @apply text-white;
+
+ text-shadow: 0 0 0.2em var(--color-white);
+ }
+ }
+}
+
+.ed-button {
+ @apply flex items-center justify-center px-4 py-2 text-base text-center rounded-lg border-3;
+
+ svg {
+ @apply block !size-5;
+ }
+
+ &.btn__vertical {
+ @apply flex-col;
+ }
+
+ &.btn__filled {
+ @apply text-gray-900;
+ }
+
+ &.btn__orange {
+ @apply text-orange-100 border-orange-400 bg-orange-500/50;
+
+ &.btn__filled {
+ @apply bg-orange-400;
+ }
+ }
+
+ &.btn__yellow {
+ @apply text-orange-100 border-amber-400 bg-amber-500/50;
+
+ &.btn__filled {
+ @apply bg-amber-400;
+ }
+ }
+
+ &.btn__blue {
+ @apply border-sky-400 bg-sky-500/50 text-sky-100;
+
+ &.btn__filled {
+ @apply bg-sky-500;
+ }
+ }
+
+ &.btn__red {
+ @apply border-rose-500 bg-rose-600/50 text-rose-100;
+
+ &.btn__filled {
+ @apply bg-rose-600;
+ }
+ }
+
+ &.btn__white {
+ @apply border-white bg-white/30;
+
+ &.btn__filled {
+ @apply bg-white;
+ }
+ }
+}
+
+.ed-button-group__horizontal {
+ @apply grid divide-x;
+
+ .ed-button {
+ @apply rounded-none;
+
+ &:first-child {
+ @apply rounded-l-lg;
+ }
+
+ &:last-child {
+ @apply rounded-r-lg;
+ }
+ }
+}
+
+.ed-button-group__vertical {
+ @apply grid divide-y;
+
+ .ed-button {
+ @apply rounded-none;
+
+ &:first-child {
+ @apply rounded-t-lg;
+ }
+
+ &:last-child {
+ @apply rounded-b-lg;
+ }
+ }
+}
+
+.ed-toggle {
+ .toggle__wrapper {
+ @apply relative p-1.5 border-2 rounded-full size-full;
+ }
+
+ .toggle__indicator {
+ @apply absolute transition rounded-full aspect-square;
+ }
+
+ &.toggle__horizontal {
+ @apply w-20 h-12;
+
+ .toggle__indicator {
+ @apply left-1.5 translate-x-0 h-[calc(100%-.75rem)];
+ }
+
+ &[active] .toggle__indicator {
+ @apply translate-x-full;
+ }
+ }
+
+ &.toggle__vertical {
+ @apply w-12 h-20;
+
+ .toggle__indicator {
+ @apply top-1.5 translate-y-0 w-[calc(100%-.75rem)];
+ }
+ &[active] .toggle__indicator {
+ @apply translate-y-full;
+ }
+ }
+}
+
+dialog[open] {
+ @apply absolute -translate-x-1/2 -translate-y-1/2 bg-transparent border-0 outline-0 top-1/2 left-1/2;
+ @apply backdrop:absolute backdrop:bg-black/50;
+
+ .dialog__close {
+ @apply absolute text-white top-3 right-3;
+ }
+}
+
+#clock {
+ @apply relative flex pr-16 text-3xl w-fit;
+
+ i {
+ @apply pl-1 not-italic;
+ }
+
+ .hours-minutes,
+ .seconds {
+ @apply flex gap-1;
+ }
+
+ span {
+ @apply inline-block w-[.75em] text-center;
+ }
+
+ sup {
+ @apply absolute right-0 w-16 pl-2 text-lg text-left opacity-80;
+ }
+}
diff --git a/panels/Elite_Dangerous/output.css b/panels/Elite_Dangerous/output.css
new file mode 100644
index 0000000..4446c1f
--- /dev/null
+++ b/panels/Elite_Dangerous/output.css
@@ -0,0 +1,688 @@
+/*! tailwindcss v4.1.4 | MIT License | https://tailwindcss.com */
+@import url(https://fonts.bunny.net/css?family=orbitron:400,600,800);
+@layer properties;
+@layer theme, utilities;
+@layer theme {
+ :root, :host {
+ --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
+ 'Noto Color Emoji';
+ --color-red-400: oklch(70.4% 0.191 22.216);
+ --color-red-500: oklch(63.7% 0.237 25.331);
+ --color-red-600: oklch(57.7% 0.245 27.325);
+ --color-orange-100: oklch(95.4% 0.038 75.164);
+ --color-orange-300: oklch(83.7% 0.128 66.29);
+ --color-orange-400: oklch(75% 0.183 55.934);
+ --color-orange-500: oklch(70.5% 0.213 47.604);
+ --color-amber-100: oklch(96.2% 0.059 95.617);
+ --color-amber-300: oklch(87.9% 0.169 91.605);
+ --color-amber-400: oklch(82.8% 0.189 84.429);
+ --color-amber-500: oklch(76.9% 0.188 70.08);
+ --color-lime-400: oklch(84.1% 0.238 128.85);
+ --color-lime-600: oklch(64.8% 0.2 131.684);
+ --color-sky-100: oklch(95.1% 0.026 236.824);
+ --color-sky-300: oklch(82.8% 0.111 230.318);
+ --color-sky-400: oklch(74.6% 0.16 232.661);
+ --color-sky-500: oklch(68.5% 0.169 237.323);
+ --color-sky-600: oklch(58.8% 0.158 241.966);
+ --color-sky-900: oklch(39.1% 0.09 240.876);
+ --color-rose-100: oklch(94.1% 0.03 12.58);
+ --color-rose-300: oklch(81% 0.117 11.638);
+ --color-rose-400: oklch(71.2% 0.194 13.428);
+ --color-rose-500: oklch(64.5% 0.246 16.439);
+ --color-rose-600: oklch(58.6% 0.253 17.585);
+ --color-slate-50: oklch(98.4% 0.003 247.858);
+ --color-slate-950: oklch(12.9% 0.042 264.695);
+ --color-gray-800: oklch(27.8% 0.033 256.848);
+ --color-gray-900: oklch(21% 0.034 264.665);
+ --color-black: #000;
+ --color-white: #fff;
+ --spacing: 0.25rem;
+ --text-xs: 0.75rem;
+ --text-xs--line-height: calc(1 / 0.75);
+ --text-sm: 0.875rem;
+ --text-sm--line-height: calc(1.25 / 0.875);
+ --text-base: 1rem;
+ --text-base--line-height: calc(1.5 / 1);
+ --text-lg: 1.125rem;
+ --text-lg--line-height: calc(1.75 / 1.125);
+ --text-3xl: 1.875rem;
+ --text-3xl--line-height: calc(2.25 / 1.875);
+ --font-weight-extralight: 200;
+ --font-weight-light: 300;
+ --tracking-wide: 0.025em;
+ --radius-lg: 0.5rem;
+ --radius-xl: 0.75rem;
+ --default-transition-duration: 150ms;
+ --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ }
+}
+@layer utilities {
+ .absolute {
+ position: absolute;
+ }
+ .relative {
+ position: relative;
+ }
+ .inset-0 {
+ inset: calc(var(--spacing) * 0);
+ }
+ .right-0 {
+ right: calc(var(--spacing) * 0);
+ }
+ .bottom-full {
+ bottom: 100%;
+ }
+ .m-0 {
+ margin: calc(var(--spacing) * 0);
+ }
+ .mt-4 {
+ margin-top: calc(var(--spacing) * 4);
+ }
+ .flex {
+ display: flex;
+ }
+ .grid {
+ display: grid;
+ }
+ .aspect-square {
+ aspect-ratio: 1 / 1;
+ }
+ .size-8 {
+ width: calc(var(--spacing) * 8);
+ height: calc(var(--spacing) * 8);
+ }
+ .size-16 {
+ width: calc(var(--spacing) * 16);
+ height: calc(var(--spacing) * 16);
+ }
+ .size-full {
+ width: 100%;
+ height: 100%;
+ }
+ .h-28 {
+ height: calc(var(--spacing) * 28);
+ }
+ .h-full {
+ height: 100%;
+ }
+ .\!w-fit {
+ width: fit-content !important;
+ }
+ .w-28 {
+ width: calc(var(--spacing) * 28);
+ }
+ .w-fit {
+ width: fit-content;
+ }
+ .w-full {
+ width: 100%;
+ }
+ .grid-cols-2 {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ }
+ .grid-cols-4 {
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ }
+ .grid-cols-\[1fr_2fr\] {
+ grid-template-columns: 1fr 2fr;
+ }
+ .grid-cols-\[1fr_2fr_1fr\] {
+ grid-template-columns: 1fr 2fr 1fr;
+ }
+ .grid-cols-\[2fr_1fr\] {
+ grid-template-columns: 2fr 1fr;
+ }
+ .grid-cols-\[3fr_1fr_1fr\] {
+ grid-template-columns: 3fr 1fr 1fr;
+ }
+ .grid-rows-3 {
+ grid-template-rows: repeat(3, minmax(0, 1fr));
+ }
+ .flex-col {
+ flex-direction: column;
+ }
+ .items-center {
+ align-items: center;
+ }
+ .items-end {
+ align-items: flex-end;
+ }
+ .\!justify-start {
+ justify-content: flex-start !important;
+ }
+ .justify-between {
+ justify-content: space-between;
+ }
+ .justify-center {
+ justify-content: center;
+ }
+ .justify-end {
+ justify-content: flex-end;
+ }
+ .justify-items-center {
+ justify-items: center;
+ }
+ .gap-2 {
+ gap: calc(var(--spacing) * 2);
+ }
+ .divide-x {
+ :where(& > :not(:last-child)) {
+ --tw-divide-x-reverse: 0;
+ border-inline-style: var(--tw-border-style);
+ border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));
+ border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
+ }
+ }
+ .rounded-full {
+ border-radius: calc(infinity * 1px);
+ }
+ .\!rounded-tl-none {
+ border-top-left-radius: 0 !important;
+ }
+ .\!rounded-tr-none {
+ border-top-right-radius: 0 !important;
+ }
+ .\!rounded-b-none {
+ border-bottom-right-radius: 0 !important;
+ border-bottom-left-radius: 0 !important;
+ }
+ .border-3 {
+ border-style: var(--tw-border-style);
+ border-width: 3px;
+ }
+ .border-lime-600 {
+ border-color: var(--color-lime-600);
+ }
+ .border-red-500 {
+ border-color: var(--color-red-500);
+ }
+ .border-red-600 {
+ border-color: var(--color-red-600);
+ }
+ .border-sky-600 {
+ border-color: var(--color-sky-600);
+ }
+ .border-white {
+ border-color: var(--color-white);
+ }
+ .\!bg-sky-900 {
+ background-color: var(--color-sky-900) !important;
+ }
+ .bg-lime-400 {
+ background-color: var(--color-lime-400);
+ }
+ .bg-lime-400\/30 {
+ background-color: color-mix(in srgb, oklch(84.1% 0.238 128.85) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-lime-400) 30%, transparent);
+ }
+ }
+ .bg-red-400 {
+ background-color: var(--color-red-400);
+ }
+ .bg-red-400\/30 {
+ background-color: color-mix(in srgb, oklch(70.4% 0.191 22.216) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-red-400) 30%, transparent);
+ }
+ }
+ .bg-red-500\/80 {
+ background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 80%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-red-500) 80%, transparent);
+ }
+ }
+ .bg-sky-400 {
+ background-color: var(--color-sky-400);
+ }
+ .bg-sky-400\/30 {
+ background-color: color-mix(in srgb, oklch(74.6% 0.16 232.661) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-400) 30%, transparent);
+ }
+ }
+ .bg-slate-950 {
+ background-color: var(--color-slate-950);
+ }
+ .bg-white {
+ background-color: var(--color-white);
+ }
+ .bg-white\/30 {
+ background-color: color-mix(in srgb, #fff 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 30%, transparent);
+ }
+ }
+ .\!p-0 {
+ padding: calc(var(--spacing) * 0) !important;
+ }
+ .\!p-4 {
+ padding: calc(var(--spacing) * 4) !important;
+ }
+ .p-2 {
+ padding: calc(var(--spacing) * 2);
+ }
+ .\!px-2 {
+ padding-inline: calc(var(--spacing) * 2) !important;
+ }
+ .\!pt-8 {
+ padding-top: calc(var(--spacing) * 8) !important;
+ }
+ .text-center {
+ text-align: center;
+ }
+ .text-left {
+ text-align: left;
+ }
+ .text-right {
+ text-align: right;
+ }
+ .text-base {
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ }
+ .text-xs {
+ font-size: var(--text-xs);
+ line-height: var(--tw-leading, var(--text-xs--line-height));
+ }
+ .\!text-gray-800 {
+ color: var(--color-gray-800) !important;
+ }
+ .text-red-400 {
+ color: var(--color-red-400);
+ }
+ .text-white {
+ color: var(--color-white);
+ }
+ .opacity-80 {
+ opacity: 80%;
+ }
+ .opacity-90 {
+ opacity: 90%;
+ }
+}
+@layer theme;
+html, body, #panel-html__body {
+ position: relative;
+}
+#panel-html__body {
+ --font-sans: "Orbitron", sans-serif;
+ width: 100%;
+ height: 100%;
+ background-color: var(--color-gray-900);
+ font-family: var(--font-sans);
+ font-size: var(--text-sm);
+ line-height: var(--tw-leading, var(--text-sm--line-height));
+ --tw-font-weight: var(--font-weight-light);
+ font-weight: var(--font-weight-light);
+ --tw-tracking: var(--tracking-wide);
+ letter-spacing: var(--tracking-wide);
+ color: var(--color-slate-50);
+ * {
+ box-sizing: border-box;
+ }
+}
+.group-left, .group-middle, .group-right {
+ display: grid;
+ height: fit-content;
+ gap: calc(var(--spacing) * 2);
+}
+.ed-panel {
+ height: fit-content;
+ width: 100%;
+ border-bottom-right-radius: var(--radius-xl);
+ border-bottom-left-radius: var(--radius-xl);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ padding: calc(var(--spacing) * 2);
+ h3, h4 {
+ margin: calc(var(--spacing) * 0);
+ margin-bottom: calc(var(--spacing) * 1);
+ --tw-font-weight: var(--font-weight-extralight);
+ font-weight: var(--font-weight-extralight);
+ }
+ h3 {
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ }
+ h4 {
+ font-size: var(--text-sm);
+ line-height: var(--tw-leading, var(--text-sm--line-height));
+ }
+ &.pnl__blue {
+ border-color: var(--color-sky-300);
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-sky-100);
+ text-shadow: 0 0 0.2em var(--color-sky-300);
+ }
+ }
+ &.pnl__yellow {
+ border-color: var(--color-amber-300);
+ background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-amber-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-amber-100);
+ text-shadow: 0 0 0.2em var(--color-amber-300);
+ }
+ }
+ &.pnl__orange {
+ border-color: var(--color-orange-300);
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-orange-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-orange-100);
+ text-shadow: 0 0 0.2em var(--color-orange-300);
+ }
+ }
+ &.pnl__red {
+ border-color: var(--color-rose-300);
+ background-color: color-mix(in srgb, oklch(64.5% 0.246 16.439) 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-rose-500) 30%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-rose-100);
+ text-shadow: 0 0 0.2em var(--color-rose-400);
+ }
+ }
+ &.pnl__white {
+ border-color: var(--color-white);
+ background-color: color-mix(in srgb, #fff 20%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
+ }
+ h3, h4 {
+ color: var(--color-white);
+ text-shadow: 0 0 0.2em var(--color-white);
+ }
+ }
+}
+.ed-button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: var(--radius-lg);
+ border-style: var(--tw-border-style);
+ border-width: 3px;
+ padding-inline: calc(var(--spacing) * 4);
+ padding-block: calc(var(--spacing) * 2);
+ text-align: center;
+ font-size: var(--text-base);
+ line-height: var(--tw-leading, var(--text-base--line-height));
+ svg {
+ display: block;
+ width: calc(var(--spacing) * 5) !important;
+ height: calc(var(--spacing) * 5) !important;
+ }
+ &.btn__vertical {
+ flex-direction: column;
+ }
+ &.btn__filled {
+ color: var(--color-gray-900);
+ }
+ &.btn__orange {
+ border-color: var(--color-orange-400);
+ background-color: color-mix(in srgb, oklch(70.5% 0.213 47.604) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-orange-500) 50%, transparent);
+ }
+ color: var(--color-orange-100);
+ &.btn__filled {
+ background-color: var(--color-orange-400);
+ }
+ }
+ &.btn__yellow {
+ border-color: var(--color-amber-400);
+ background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-amber-500) 50%, transparent);
+ }
+ color: var(--color-orange-100);
+ &.btn__filled {
+ background-color: var(--color-amber-400);
+ }
+ }
+ &.btn__blue {
+ border-color: var(--color-sky-400);
+ background-color: color-mix(in srgb, oklch(68.5% 0.169 237.323) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-sky-500) 50%, transparent);
+ }
+ color: var(--color-sky-100);
+ &.btn__filled {
+ background-color: var(--color-sky-500);
+ }
+ }
+ &.btn__red {
+ border-color: var(--color-rose-500);
+ background-color: color-mix(in srgb, oklch(58.6% 0.253 17.585) 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-rose-600) 50%, transparent);
+ }
+ color: var(--color-rose-100);
+ &.btn__filled {
+ background-color: var(--color-rose-600);
+ }
+ }
+ &.btn__white {
+ border-color: var(--color-white);
+ background-color: color-mix(in srgb, #fff 30%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-white) 30%, transparent);
+ }
+ &.btn__filled {
+ background-color: var(--color-white);
+ }
+ }
+}
+.ed-button-group__horizontal {
+ display: grid;
+ :where(& > :not(:last-child)) {
+ --tw-divide-x-reverse: 0;
+ border-inline-style: var(--tw-border-style);
+ border-inline-start-width: calc(1px * var(--tw-divide-x-reverse));
+ border-inline-end-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
+ }
+ .ed-button {
+ border-radius: 0;
+ &:first-child {
+ border-top-left-radius: var(--radius-lg);
+ border-bottom-left-radius: var(--radius-lg);
+ }
+ &:last-child {
+ border-top-right-radius: var(--radius-lg);
+ border-bottom-right-radius: var(--radius-lg);
+ }
+ }
+}
+.ed-button-group__vertical {
+ display: grid;
+ :where(& > :not(:last-child)) {
+ --tw-divide-y-reverse: 0;
+ border-bottom-style: var(--tw-border-style);
+ border-top-style: var(--tw-border-style);
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
+ }
+ .ed-button {
+ border-radius: 0;
+ &:first-child {
+ border-top-left-radius: var(--radius-lg);
+ border-top-right-radius: var(--radius-lg);
+ }
+ &:last-child {
+ border-bottom-right-radius: var(--radius-lg);
+ border-bottom-left-radius: var(--radius-lg);
+ }
+ }
+}
+.ed-toggle {
+ .toggle__wrapper {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ border-radius: calc(infinity * 1px);
+ border-style: var(--tw-border-style);
+ border-width: 2px;
+ padding: calc(var(--spacing) * 1.5);
+ }
+ .toggle__indicator {
+ position: absolute;
+ aspect-ratio: 1 / 1;
+ border-radius: calc(infinity * 1px);
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+ &.toggle__horizontal {
+ height: calc(var(--spacing) * 12);
+ width: calc(var(--spacing) * 20);
+ .toggle__indicator {
+ left: calc(var(--spacing) * 1.5);
+ height: calc(100% - .75rem);
+ --tw-translate-x: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ &[active] .toggle__indicator {
+ --tw-translate-x: 100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ }
+ &.toggle__vertical {
+ height: calc(var(--spacing) * 20);
+ width: calc(var(--spacing) * 12);
+ .toggle__indicator {
+ top: calc(var(--spacing) * 1.5);
+ width: calc(100% - .75rem);
+ --tw-translate-y: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ &[active] .toggle__indicator {
+ --tw-translate-y: 100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+ }
+}
+dialog[open] {
+ position: absolute;
+ top: calc(1/2 * 100%);
+ left: calc(1/2 * 100%);
+ --tw-translate-x: calc(calc(1/2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ --tw-translate-y: calc(calc(1/2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ border-style: var(--tw-border-style);
+ border-width: 0px;
+ background-color: transparent;
+ outline-style: var(--tw-outline-style);
+ outline-width: 0px;
+ &::backdrop {
+ background-color: color-mix(in srgb, #000 50%, transparent);
+ @supports (color: color-mix(in lab, red, red)) {
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
+ }
+ }
+ .dialog__close {
+ position: absolute;
+ top: calc(var(--spacing) * 3);
+ right: calc(var(--spacing) * 3);
+ color: var(--color-white);
+ }
+}
+#clock {
+ position: relative;
+ display: flex;
+ width: fit-content;
+ padding-right: calc(var(--spacing) * 16);
+ font-size: var(--text-3xl);
+ line-height: var(--tw-leading, var(--text-3xl--line-height));
+ i {
+ padding-left: calc(var(--spacing) * 1);
+ font-style: normal;
+ }
+ .hours-minutes, .seconds {
+ display: flex;
+ gap: calc(var(--spacing) * 1);
+ }
+ span {
+ display: inline-block;
+ width: .75em;
+ text-align: center;
+ }
+ sup {
+ position: absolute;
+ right: calc(var(--spacing) * 0);
+ width: calc(var(--spacing) * 16);
+ padding-left: calc(var(--spacing) * 2);
+ text-align: left;
+ font-size: var(--text-lg);
+ line-height: var(--tw-leading, var(--text-lg--line-height));
+ opacity: 80%;
+ }
+}
+@property --tw-divide-x-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false;
+}
+@property --tw-tracking {
+ syntax: "*";
+ inherits: false;
+}
+@property --tw-divide-y-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-outline-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@layer properties {
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
+ *, ::before, ::after, ::backdrop {
+ --tw-divide-x-reverse: 0;
+ --tw-border-style: solid;
+ --tw-font-weight: initial;
+ --tw-tracking: initial;
+ --tw-divide-y-reverse: 0;
+ --tw-translate-x: 0;
+ --tw-translate-y: 0;
+ --tw-translate-z: 0;
+ --tw-outline-style: solid;
+ }
+ }
+}
diff --git a/panels/Elite_Dangerous/package-lock.json b/panels/Elite_Dangerous/package-lock.json
new file mode 100644
index 0000000..1fb3ab8
--- /dev/null
+++ b/panels/Elite_Dangerous/package-lock.json
@@ -0,0 +1,974 @@
+{
+ "name": "test_panel",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "test_panel",
+ "version": "1.0.0",
+ "license": "ISC",
+ "devDependencies": {
+ "@tailwindcss/cli": "^4.1.2",
+ "tailwindcss": "^4.1.2"
+ }
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
+ "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.1",
+ "@parcel/watcher-darwin-arm64": "2.5.1",
+ "@parcel/watcher-darwin-x64": "2.5.1",
+ "@parcel/watcher-freebsd-x64": "2.5.1",
+ "@parcel/watcher-linux-arm-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm-musl": "2.5.1",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.1",
+ "@parcel/watcher-linux-arm64-musl": "2.5.1",
+ "@parcel/watcher-linux-x64-glibc": "2.5.1",
+ "@parcel/watcher-linux-x64-musl": "2.5.1",
+ "@parcel/watcher-win32-arm64": "2.5.1",
+ "@parcel/watcher-win32-ia32": "2.5.1",
+ "@parcel/watcher-win32-x64": "2.5.1"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
+ "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
+ "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
+ "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
+ "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
+ "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
+ "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
+ "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
+ "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
+ "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
+ "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
+ "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
+ "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
+ "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@tailwindcss/cli": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.4.tgz",
+ "integrity": "sha512-gP05Qihh+cZ2FqD5fa0WJXx3KEk2YWUYv/RBKAyiOg0V4vYVDr/xlLc0sacpnVEXM45BVUR9U2hsESufYs6YTA==",
+ "dev": true,
+ "dependencies": {
+ "@parcel/watcher": "^2.5.1",
+ "@tailwindcss/node": "4.1.4",
+ "@tailwindcss/oxide": "4.1.4",
+ "enhanced-resolve": "^5.18.1",
+ "mri": "^1.2.0",
+ "picocolors": "^1.1.1",
+ "tailwindcss": "4.1.4"
+ },
+ "bin": {
+ "tailwindcss": "dist/index.mjs"
+ }
+ },
+ "node_modules/@tailwindcss/node": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz",
+ "integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==",
+ "dev": true,
+ "dependencies": {
+ "enhanced-resolve": "^5.18.1",
+ "jiti": "^2.4.2",
+ "lightningcss": "1.29.2",
+ "tailwindcss": "4.1.4"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz",
+ "integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-arm64": "4.1.4",
+ "@tailwindcss/oxide-darwin-x64": "4.1.4",
+ "@tailwindcss/oxide-freebsd-x64": "4.1.4",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.1.4",
+ "@tailwindcss/oxide-linux-x64-musl": "4.1.4",
+ "@tailwindcss/oxide-wasm32-wasi": "4.1.4",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.1.4",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.1.4"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz",
+ "integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz",
+ "integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz",
+ "integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz",
+ "integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz",
+ "integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz",
+ "integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz",
+ "integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz",
+ "integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz",
+ "integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz",
+ "integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.0",
+ "@emnapi/runtime": "^1.4.0",
+ "@emnapi/wasi-threads": "^1.0.1",
+ "@napi-rs/wasm-runtime": "^0.2.8",
+ "@tybys/wasm-util": "^0.9.0",
+ "tslib": "^2.8.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz",
+ "integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz",
+ "integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.18.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
+ "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz",
+ "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==",
+ "dev": true,
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz",
+ "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==",
+ "dev": true,
+ "dependencies": {
+ "detect-libc": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.29.2",
+ "lightningcss-darwin-x64": "1.29.2",
+ "lightningcss-freebsd-x64": "1.29.2",
+ "lightningcss-linux-arm-gnueabihf": "1.29.2",
+ "lightningcss-linux-arm64-gnu": "1.29.2",
+ "lightningcss-linux-arm64-musl": "1.29.2",
+ "lightningcss-linux-x64-gnu": "1.29.2",
+ "lightningcss-linux-x64-musl": "1.29.2",
+ "lightningcss-win32-arm64-msvc": "1.29.2",
+ "lightningcss-win32-x64-msvc": "1.29.2"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz",
+ "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz",
+ "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz",
+ "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz",
+ "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz",
+ "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz",
+ "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz",
+ "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz",
+ "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz",
+ "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.29.2",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz",
+ "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss/node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz",
+ "integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==",
+ "dev": true
+ },
+ "node_modules/tapable": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
+ "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ }
+ }
+}
diff --git a/panels/Elite_Dangerous/package.json b/panels/Elite_Dangerous/package.json
new file mode 100644
index 0000000..cf85d0c
--- /dev/null
+++ b/panels/Elite_Dangerous/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "test_panel",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "dev": "npx tailwindcss -i ./input.css -o ./output.css --watch"
+ },
+ "author": "",
+ "license": "ISC",
+ "devDependencies": {
+ "@tailwindcss/cli": "^4.1.2",
+ "tailwindcss": "^4.1.2"
+ }
+}
diff --git a/panels/Elite_Dangerous/panel.json b/panels/Elite_Dangerous/panel.json
new file mode 100644
index 0000000..54ebe8c
--- /dev/null
+++ b/panels/Elite_Dangerous/panel.json
@@ -0,0 +1,48 @@
+{
+ "dir": "",
+ "name": "Elite Dangerous",
+ "description": "A Semi Realistic button panel for Elite Dangerous, made by JaxxMoss.",
+ "aspectRatio": "16/10",
+ "macros": {
+ "CM__Chaff": "ED-CM-Chaff",
+ "CM__ECM": "ED-CM-ECM",
+ "CM__Heatsink": "ED-CM-Heat_Sink",
+ "CM__Shieldcell": "ED-CM-Schield_Cell",
+ "Camera__Pos1": "ED-Camera-Position1",
+ "Camera__Pos2": "ED-Camera-Position2",
+ "Camera__Suite": "ED-Camera-Suite",
+ "Comms__panel": "ED-Comms_Panel",
+ "External__panel": "ED-External_Panel",
+ "FSD__toggle": "ED-Toggle_FSD",
+ "Fighter__engage": "ED-Fighter-Engage",
+ "Fighter__hold": "ED-Fighter-Hold",
+ "Fighter__recall": "ED-Fighter-Recall",
+ "Fighter__wingman1": "ED-Fighter-Wingman1",
+ "Fighter__wingman2": "ED-Fighter-Wingman2",
+ "Fighter__wingman3": "ED-Fighter-Wingman3",
+ "Fighter_attack": "ED-Fighter-Attack",
+ "Fighter_defend": "ED-Fighter-Defend",
+ "Fighter_follow": "ED-Fighter-Follow",
+ "FlightAssist__toggle": "ED-Flight_Assist",
+ "Free__Camera": "ED-Camera-Free",
+ "Galaxy__map": "ED-Galaxy_Map",
+ "Hardpoints__toggle": "ED-Hardpoints_Switch",
+ "Hyper__Space": "ED-Hyperspace",
+ "Internal__panel": "ED-Internal_Panel",
+ "Jettison__Cargo": "ED-Jettison_Cargo",
+ "Lights__toggle": "ED-Flight_Assist",
+ "Mode__toggle": "ED-Mode_Switch",
+ "Next__Camera": "ED-Camera-Next",
+ "NightVis__toggle": "ED-Night_Vision",
+ "Previous__Camera": "ED-Camera-Previous",
+ "Roles__panel": "ED-Roles_Panel",
+ "Rotational__Correction": "ED-Rotational_Correction",
+ "Route__NextSystem": "ED-Route_Next_System",
+ "Scanner__DiscScan": "ED-Scanner_Discovery",
+ "Scanner__FSS": "ED-Scanner-FSS",
+ "SilentRunning__toggle": "ED-Silent_Running",
+ "Speed_0percent": "ED-0percent_Speed",
+ "Super__Cruise": "ED-Super_Cruise",
+ "System__map": "ED-System_Map"
+ }
+}
diff --git a/panels/Elite_Dangerous/tailwind.config.js b/panels/Elite_Dangerous/tailwind.config.js
new file mode 100644
index 0000000..2c1a5aa
--- /dev/null
+++ b/panels/Elite_Dangerous/tailwind.config.js
@@ -0,0 +1,17 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ "./index.html", // Ensure this path is correct
+ ],
+ theme: {
+ extend: {},
+ },
+ safelist: [
+ {
+ pattern: /^(border|bg)-(blue|red|sky|orange|lime)-(200|400|300\/40)$/,
+ },
+ ],
+ plugins: [],
+ preflight: false,
+ mode: "jit",
+};
diff --git a/panels/test_panel/panel.json b/panels/test_panel/panel.json
index fcfbfdd..27afffd 100644
--- a/panels/test_panel/panel.json
+++ b/panels/test_panel/panel.json
@@ -1,24 +1 @@
-{
- "dir": "",
- "name": "Test Panel 1",
- "description": "This is the very first panel to be created. It is a test panel for a mobile phone.",
- "aspectRatio": "10/20",
- "macros": {
- "button_1": "TEST-Task_Manager",
- "button_10": "TEST-Close_Browser_Window",
- "button_11": "TEST-Previous_Tab",
- "button_12": "TEST-Next_Tab",
- "button_13": "TEST-Close_Tab",
- "button_14": "TEST-New_Tab",
- "button_15": "TEST-Fullscreen",
- "button_16": "TEST-Home",
- "button_2": "TEST-Close_Application",
- "button_3": "TEST-RunDialog",
- "button_4": "TEST-Files",
- "button_5": "TEST-Settings",
- "button_6": "TEST-New_Desktop",
- "button_7": "TEST-Displays",
- "button_8": "TEST-Task_view",
- "button_9": "TEST-New_Window"
- }
-}
+{"dir":"","name":"Test Panel 1","description":"This is the very first panel to be created. It is a test panel for a mobile phone.","aspectRatio":"10/20","macros":{"button_1":"Task_Manager","button_10":"Close_Browser_Window","button_11":"Previous_Tab","button_12":"Next_Tab","button_13":"Close_Tab","button_14":"New_Tab","button_15":"Fullscreen","button_16":"Home","button_2":"Close_Application","button_3":"RunDialog","button_4":"Files","button_5":"Settings","button_6":"New_Desktop","button_7":"Displays","button_8":"Task_view","button_9":"New_Window"}}
\ No newline at end of file
diff --git a/public/assets/AccordionComp-CsKCEntL.css b/public/assets/AccordionComp-CsKCEntL.css
deleted file mode 100644
index c672627..0000000
--- a/public/assets/AccordionComp-CsKCEntL.css
+++ /dev/null
@@ -1 +0,0 @@
-/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-0c582c8a],[data-v-0c582c8a]:before,[data-v-0c582c8a]:after,[data-v-0c582c8a]::backdrop{--tw-border-style:solid;--tw-duration:initial;--tw-ease:initial}}}.accordion[data-v-0c582c8a]{display:grid}.accordion header[data-v-0c582c8a]{cursor:pointer;padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);grid-template-columns:1fr auto;display:grid}.accordion .accordion__wrapper[data-v-0c582c8a]{border-block-style:var(--tw-border-style);--tw-duration:.3s;--tw-ease:var(--ease-in-out,cubic-bezier(.4,0,.2,1));transition-duration:.3s;transition-timing-function:var(--ease-in-out,cubic-bezier(.4,0,.2,1));border-block-width:1px;border-top-color:#0000;border-bottom-color:#fff9;grid-template-rows:0fr;display:grid}@supports (color:color-mix(in lab,red,red)){.accordion .accordion__wrapper[data-v-0c582c8a]{border-bottom-color:color-mix(in oklab,var(--color-white,#fff)60%,transparent)}}.accordion .accordion__wrapper .accordion__content[data-v-0c582c8a]{opacity:0;transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));grid-template-rows:0fr;transition-delay:0s;display:grid;overflow:hidden}.accordion .accordion__wrapper.open[data-v-0c582c8a]{border-top-color:#fff3;grid-template-rows:1fr}@supports (color:color-mix(in lab,red,red)){.accordion .accordion__wrapper.open[data-v-0c582c8a]{border-top-color:color-mix(in oklab,var(--color-white,#fff)20%,transparent)}}.accordion .accordion__wrapper.open .accordion__content[data-v-0c582c8a]{opacity:1;grid-template-rows:1fr;transition-delay:.2s}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
diff --git a/public/assets/AccordionComp-D0eDAM6d.js b/public/assets/AccordionComp-D0eDAM6d.js
deleted file mode 100644
index 37ef016..0000000
--- a/public/assets/AccordionComp-D0eDAM6d.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import{c as d,_,a as f,o as h,b as m,d as g,e as c,g as a,k as C,t as k,j as w,h as i,u as p,l as x,L as y,E as B}from"./index-oAtpp-VZ.js";/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var I=d("outline","chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var A=d("outline","chevron-up","IconChevronUp",[["path",{d:"M6 15l6 -6l6 6",key:"svg-0"}]]);const $={class:"accordion"},D={class:"accordion__content"},M={__name:"AccordionComp",props:{title:String,open:Boolean},emits:["onOpen","onClose","onToggle"],setup(l,{expose:u,emit:v}){const s=v;u({toggleAccordion:n});const o=l,e=f(!1);h(()=>{o.open&&n(o.open)}),m(()=>{o.open&&n(o.open)});function n(t=!1){t?(e.value=!0,s("onOpen")):(e.value=!1,s("onClose")),s("onToggle")}return(t,r)=>(c(),g("div",$,[a("header",{onClick:r[0]||(r[0]=O=>n(!e.value))},[a("h4",null,k(l.title),1),C(x,{variant:"ghost",size:"sm",class:"!px-1"},{default:w(()=>[e.value?(c(),i(p(A),{key:1})):(c(),i(p(I),{key:0}))]),_:1})]),a("section",{class:B(`accordion__wrapper ${e.value?"open":""}`)},[a("div",D,[y(t.$slots,"default",{},void 0,!0)])],2)]))}},U=_(M,[["__scopeId","data-v-0c582c8a"]]);export{U as A};
-//# sourceMappingURL=AccordionComp-D0eDAM6d.js.map
diff --git a/public/assets/AccordionComp-D0eDAM6d.js.map b/public/assets/AccordionComp-D0eDAM6d.js.map
deleted file mode 100644
index 7b91abc..0000000
--- a/public/assets/AccordionComp-D0eDAM6d.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"AccordionComp-D0eDAM6d.js","sources":["../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconChevronDown.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconChevronUp.mjs","../../ui/src/components/base/AccordionComp.vue"],"sourcesContent":["/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconChevronDown = createVueComponent(\"outline\", \"chevron-down\", \"IconChevronDown\", [[\"path\", { \"d\": \"M6 9l6 6l6 -6\", \"key\": \"svg-0\" }]]);\n\nexport { IconChevronDown as default };\n//# sourceMappingURL=IconChevronDown.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconChevronUp = createVueComponent(\"outline\", \"chevron-up\", \"IconChevronUp\", [[\"path\", { \"d\": \"M6 15l6 -6l6 6\", \"key\": \"svg-0\" }]]);\n\nexport { IconChevronUp as default };\n//# sourceMappingURL=IconChevronUp.mjs.map\n","\n\n\n \n
\n {{ title }} \n \n \n \n \n \n
\n
\n \n\n\n\n\n"],"names":["IconChevronDown","createVueComponent","IconChevronUp","emit","__emit","__expose","toggleAccordion","props","__props","accordionOpen","ref","onMounted","onUpdated","open"],"mappings":"4IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIA,EAAkBC,EAAmB,UAAW,eAAgB,kBAAmB,CAAC,CAAC,OAAQ,CAAE,EAAK,gBAAiB,IAAO,OAAO,CAAE,CAAC,CAAC,ECT3I;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,IAAIC,EAAgBD,EAAmB,UAAW,aAAc,gBAAiB,CAAC,CAAC,OAAQ,CAAE,EAAK,iBAAkB,IAAO,OAAO,CAAE,CAAC,CAAC,0LCkCtI,MAAME,EAAOC,EAEbC,EAAa,CAAE,gBAAAC,CAAiB,CAAA,EAEhC,MAAMC,EAAQC,EAKRC,EAAgBC,EAAI,EAAK,EAE/BC,EAAU,IAAM,CACVJ,EAAM,MAAMD,EAAgBC,EAAM,IAAI,CAC5C,CAAC,EAEDK,EAAU,IAAM,CACVL,EAAM,MAAMD,EAAgBC,EAAM,IAAI,CAC5C,CAAC,EAED,SAASD,EAAgBO,EAAO,GAAO,CACjCA,GACFJ,EAAc,MAAQ,GACtBN,EAAK,QAAQ,IAEbM,EAAc,MAAQ,GACtBN,EAAK,SAAS,GAGhBA,EAAK,UAAU,CACjB","x_google_ignoreList":[0,1]}
\ No newline at end of file
diff --git a/public/assets/DevicesView-BMkQ6MZ2.css b/public/assets/DevicesView-BMkQ6MZ2.css
deleted file mode 100644
index b47a5b6..0000000
--- a/public/assets/DevicesView-BMkQ6MZ2.css
+++ /dev/null
@@ -1 +0,0 @@
-.device-overview[data-v-0a3f2b41],.server-overview[data-v-6973a9f0]{align-content:flex-start;gap:calc(var(--spacing,.25rem)*4);display:grid}/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */
diff --git a/public/assets/DevicesView-C9HVDkwf.js b/public/assets/DevicesView-C9HVDkwf.js
deleted file mode 100644
index c09b127..0000000
--- a/public/assets/DevicesView-C9HVDkwf.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import{c as pe,N as gn,_ as mt,O as en,a as xe,r as ft,o as tn,b as nn,d as re,e as z,k as O,g as B,j as V,t as J,u as F,A as ce,f as j,h as G,q,P as hn,l as we,F as Fe,i as wn,I as gt,s as ht,x as wt,Q as pn,K as mn,w as bn,v as vn,S as yn,T as kn,B as It}from"./index-oAtpp-VZ.js";import{_ as rn}from"./DialogComp-CyRyORDj.js";import{A as En}from"./AccordionComp-D0eDAM6d.js";/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Cn=pe("outline","device-desktop","IconDeviceDesktop",[["path",{d:"M3 5a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1v-10z",key:"svg-0"}],["path",{d:"M7 20h10",key:"svg-1"}],["path",{d:"M9 16v4",key:"svg-2"}],["path",{d:"M15 16v4",key:"svg-3"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var In=pe("outline","device-mobile","IconDeviceMobile",[["path",{d:"M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14z",key:"svg-0"}],["path",{d:"M11 4h2",key:"svg-1"}],["path",{d:"M12 17v.01",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Sn=pe("outline","device-tablet","IconDeviceTablet",[["path",{d:"M5 4a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v16a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1v-16z",key:"svg-0"}],["path",{d:"M11 17a1 1 0 1 0 2 0a1 1 0 0 0 -2 0",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var An=pe("outline","device-unknown","IconDeviceUnknown",[["path",{d:"M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M12 16v.01",key:"svg-1"}],["path",{d:"M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Mn=pe("outline","link-off","IconLinkOff",[["path",{d:"M9 15l3 -3m2 -2l1 -1",key:"svg-0"}],["path",{d:"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}],["path",{d:"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463",key:"svg-3"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Bn=pe("outline","plug-connected-x","IconPlugConnectedX",[["path",{d:"M20 16l-4 4",key:"svg-0"}],["path",{d:"M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z",key:"svg-1"}],["path",{d:"M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z",key:"svg-2"}],["path",{d:"M3 21l2.5 -2.5",key:"svg-3"}],["path",{d:"M18.5 5.5l2.5 -2.5",key:"svg-4"}],["path",{d:"M10 11l-2 2",key:"svg-5"}],["path",{d:"M13 14l-2 2",key:"svg-6"}],["path",{d:"M16 16l4 4",key:"svg-7"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Re=pe("outline","reload","IconReload",[["path",{d:"M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747",key:"svg-0"}],["path",{d:"M20 4v5h-5",key:"svg-1"}]]),Ie={},Ve,St;function _n(){return St||(St=1,Ve=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Ve}var je={},le={},At;function me(){if(At)return le;At=1;let o;const r=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return le.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return n*4+17},le.getSymbolTotalCodewords=function(n){return r[n]},le.getBCHDigit=function(s){let n=0;for(;s!==0;)n++,s>>>=1;return n},le.setToSJISFunction=function(n){if(typeof n!="function")throw new Error('"toSJISFunc" is not a valid function.');o=n},le.isKanjiModeEnabled=function(){return typeof o<"u"},le.toSJIS=function(n){return o(n)},le}var He={},Mt;function bt(){return Mt||(Mt=1,function(o){o.L={bit:1},o.M={bit:0},o.Q={bit:3},o.H={bit:2};function r(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"l":case"low":return o.L;case"m":case"medium":return o.M;case"q":case"quartile":return o.Q;case"h":case"high":return o.H;default:throw new Error("Unknown EC Level: "+s)}}o.isValid=function(n){return n&&typeof n.bit<"u"&&n.bit>=0&&n.bit<4},o.from=function(n,e){if(o.isValid(n))return n;try{return r(n)}catch{return e}}}(He)),He}var Ke,Bt;function Rn(){if(Bt)return Ke;Bt=1;function o(){this.buffer=[],this.length=0}return o.prototype={get:function(r){const s=Math.floor(r/8);return(this.buffer[s]>>>7-r%8&1)===1},put:function(r,s){for(let n=0;n>>s-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){const s=Math.floor(this.length/8);this.buffer.length<=s&&this.buffer.push(0),r&&(this.buffer[s]|=128>>>this.length%8),this.length++}},Ke=o,Ke}var $e,_t;function Tn(){if(_t)return $e;_t=1;function o(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=new Uint8Array(r*r),this.reservedBit=new Uint8Array(r*r)}return o.prototype.set=function(r,s,n,e){const t=r*this.size+s;this.data[t]=n,e&&(this.reservedBit[t]=!0)},o.prototype.get=function(r,s){return this.data[r*this.size+s]},o.prototype.xor=function(r,s,n){this.data[r*this.size+s]^=n},o.prototype.isReserved=function(r,s){return this.reservedBit[r*this.size+s]},$e=o,$e}var Ge={},Rt;function Nn(){return Rt||(Rt=1,function(o){const r=me().getSymbolSize;o.getRowColCoords=function(n){if(n===1)return[];const e=Math.floor(n/7)+2,t=r(n),l=t===145?26:Math.ceil((t-13)/(2*e-2))*2,f=[t-7];for(let d=1;d=0&&e<=7},o.from=function(e){return o.isValid(e)?parseInt(e,10):void 0},o.getPenaltyN1=function(e){const t=e.size;let l=0,f=0,d=0,b=null,m=null;for(let g=0;g=5&&(l+=r.N1+(f-5)),b=u,f=1),u=e.get(i,g),u===m?d++:(d>=5&&(l+=r.N1+(d-5)),m=u,d=1)}f>=5&&(l+=r.N1+(f-5)),d>=5&&(l+=r.N1+(d-5))}return l},o.getPenaltyN2=function(e){const t=e.size;let l=0;for(let f=0;f=10&&(f===1488||f===93)&&l++,d=d<<1&2047|e.get(m,b),m>=10&&(d===1488||d===93)&&l++}return l*r.N3},o.getPenaltyN4=function(e){let t=0;const l=e.data.length;for(let d=0;d=0;){const l=t[0];for(let d=0;d0){const f=new Uint8Array(this.degree);return f.set(t,l),f}return t},Qe=r,Qe}var Xe={},Ze={},et={},Ut;function sn(){return Ut||(Ut=1,et.isValid=function(r){return!isNaN(r)&&r>=1&&r<=40}),et}var te={},qt;function an(){if(qt)return te;qt=1;const o="[0-9]+",r="[A-Z $%*+\\-./:]+";let s="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";s=s.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+s+`)(?:.|[\r
-]))+`;te.KANJI=new RegExp(s,"g"),te.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),te.BYTE=new RegExp(n,"g"),te.NUMERIC=new RegExp(o,"g"),te.ALPHANUMERIC=new RegExp(r,"g");const e=new RegExp("^"+s+"$"),t=new RegExp("^"+o+"$"),l=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return te.testKanji=function(d){return e.test(d)},te.testNumeric=function(d){return t.test(d)},te.testAlphanumeric=function(d){return l.test(d)},te}var Ot;function be(){return Ot||(Ot=1,function(o){const r=sn(),s=an();o.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},o.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},o.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},o.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},o.MIXED={bit:-1},o.getCharCountIndicator=function(t,l){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!r.isValid(l))throw new Error("Invalid version: "+l);return l>=1&&l<10?t.ccBits[0]:l<27?t.ccBits[1]:t.ccBits[2]},o.getBestModeForData=function(t){return s.testNumeric(t)?o.NUMERIC:s.testAlphanumeric(t)?o.ALPHANUMERIC:s.testKanji(t)?o.KANJI:o.BYTE},o.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},o.isValid=function(t){return t&&t.bit&&t.ccBits};function n(e){if(typeof e!="string")throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return o.NUMERIC;case"alphanumeric":return o.ALPHANUMERIC;case"kanji":return o.KANJI;case"byte":return o.BYTE;default:throw new Error("Unknown mode: "+e)}}o.from=function(t,l){if(o.isValid(t))return t;try{return n(t)}catch{return l}}}(Ze)),Ze}var zt;function qn(){return zt||(zt=1,function(o){const r=me(),s=on(),n=bt(),e=be(),t=sn(),l=7973,f=r.getBCHDigit(l);function d(i,u,a){for(let c=1;c<=40;c++)if(u<=o.getCapacity(c,a,i))return c}function b(i,u){return e.getCharCountIndicator(i,u)+4}function m(i,u){let a=0;return i.forEach(function(c){const h=b(c.mode,u);a+=h+c.getBitsLength()}),a}function g(i,u){for(let a=1;a<=40;a++)if(m(i,a)<=o.getCapacity(a,u,e.MIXED))return a}o.from=function(u,a){return t.isValid(u)?parseInt(u,10):a},o.getCapacity=function(u,a,c){if(!t.isValid(u))throw new Error("Invalid QR Code version");typeof c>"u"&&(c=e.BYTE);const h=r.getSymbolTotalCodewords(u),E=s.getTotalCodewordsCount(u,a),N=(h-E)*8;if(c===e.MIXED)return N;const p=N-b(c,u);switch(c){case e.NUMERIC:return Math.floor(p/10*3);case e.ALPHANUMERIC:return Math.floor(p/11*2);case e.KANJI:return Math.floor(p/13);case e.BYTE:default:return Math.floor(p/8)}},o.getBestVersionForData=function(u,a){let c;const h=n.from(a,n.M);if(Array.isArray(u)){if(u.length>1)return g(u,h);if(u.length===0)return 1;c=u[0]}else c=u;return d(c.mode,c.getLength(),h)},o.getEncodedBits=function(u){if(!t.isValid(u)||u<7)throw new Error("Invalid QR Code version");let a=u<<12;for(;r.getBCHDigit(a)-f>=0;)a^=l<=0;)d^=r<0&&(t=this.data.substr(e),l=parseInt(t,10),n.put(l,f*3+1))},it=r,it}var rt,jt;function Fn(){if(jt)return rt;jt=1;const o=be(),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function s(n){this.mode=o.ALPHANUMERIC,this.data=n}return s.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)},s.prototype.getLength=function(){return this.data.length},s.prototype.getBitsLength=function(){return s.getBitsLength(this.data.length)},s.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let l=r.indexOf(this.data[t])*45;l+=r.indexOf(this.data[t+1]),e.put(l,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},rt=s,rt}var ot,Ht;function Vn(){if(Ht)return ot;Ht=1;const o=be();function r(s){this.mode=o.BYTE,typeof s=="string"?this.data=new TextEncoder().encode(s):this.data=new Uint8Array(s)}return r.getBitsLength=function(n){return n*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(s){for(let n=0,e=this.data.length;n=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
-Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),n.put(t,13)}},st=s,st}var at={exports:{}},$t;function Hn(){return $t||($t=1,function(o){var r={single_source_shortest_paths:function(s,n,e){var t={},l={};l[n]=0;var f=r.PriorityQueue.make();f.push(n,0);for(var d,b,m,g,i,u,a,c,h;!f.empty();){d=f.pop(),b=d.value,g=d.cost,i=s[b]||{};for(m in i)i.hasOwnProperty(m)&&(u=i[m],a=g+u,c=l[m],h=typeof l[m]>"u",(h||c>a)&&(l[m]=a,f.push(m,a),t[m]=b))}if(typeof e<"u"&&typeof l[e]>"u"){var E=["Could not find a path from ",n," to ",e,"."].join("");throw new Error(E)}return t},extract_shortest_path_from_predecessor_list:function(s,n){for(var e=[],t=n;t;)e.push(t),s[t],t=s[t];return e.reverse(),e},find_path:function(s,n,e){var t=r.single_source_shortest_paths(s,n,e);return r.extract_shortest_path_from_predecessor_list(t,e)},PriorityQueue:{make:function(s){var n=r.PriorityQueue,e={},t;s=s||{};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e.queue=[],e.sorter=s.sorter||n.default_sorter,e},default_sorter:function(s,n){return s.cost-n.cost},push:function(s,n){var e={value:s,cost:n};this.queue.push(e),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};o.exports=r}(at)),at.exports}var Gt;function Kn(){return Gt||(Gt=1,function(o){const r=be(),s=zn(),n=Fn(),e=Vn(),t=jn(),l=an(),f=me(),d=Hn();function b(E){return unescape(encodeURIComponent(E)).length}function m(E,N,p){const w=[];let D;for(;(D=E.exec(p))!==null;)w.push({data:D[0],index:D.index,mode:N,length:D[0].length});return w}function g(E){const N=m(l.NUMERIC,r.NUMERIC,E),p=m(l.ALPHANUMERIC,r.ALPHANUMERIC,E);let w,D;return f.isKanjiModeEnabled()?(w=m(l.BYTE,r.BYTE,E),D=m(l.KANJI,r.KANJI,E)):(w=m(l.BYTE_KANJI,r.BYTE,E),D=[]),N.concat(p,w,D).sort(function(S,C){return S.index-C.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function i(E,N){switch(N){case r.NUMERIC:return s.getBitsLength(E);case r.ALPHANUMERIC:return n.getBitsLength(E);case r.KANJI:return t.getBitsLength(E);case r.BYTE:return e.getBitsLength(E)}}function u(E){return E.reduce(function(N,p){const w=N.length-1>=0?N[N.length-1]:null;return w&&w.mode===p.mode?(N[N.length-1].data+=p.data,N):(N.push(p),N)},[])}function a(E){const N=[];for(let p=0;p=0&&k<=6&&(_===0||_===6)||_>=0&&_<=6&&(k===0||k===6)||k>=2&&k<=4&&_>=2&&_<=4?v.set(I+k,M+_,!0,!0):v.set(I+k,M+_,!1,!0))}}function a(v){const S=v.size;for(let C=8;C>k&1)===1,v.set(A,I,M,!0),v.set(I,A,M,!0)}function E(v,S,C){const y=v.size,A=m.getEncodedBits(S,C);let I,M;for(I=0;I<15;I++)M=(A>>I&1)===1,I<6?v.set(I,8,M,!0):I<8?v.set(I+1,8,M,!0):v.set(y-15+I,8,M,!0),I<8?v.set(8,y-I-1,M,!0):I<9?v.set(8,15-I-1+1,M,!0):v.set(8,15-I-1,M,!0);v.set(y-8,8,1,!0)}function N(v,S){const C=v.size;let y=-1,A=C-1,I=7,M=0;for(let k=C-1;k>0;k-=2)for(k===6&&k--;;){for(let _=0;_<2;_++)if(!v.isReserved(A,k-_)){let X=!1;M>>I&1)===1),v.set(A,k-_,X),I--,I===-1&&(M++,I=7)}if(A+=y,A<0||C<=A){A-=y,y=-y;break}}}function p(v,S,C){const y=new s;C.forEach(function(_){y.put(_.mode.bit,4),y.put(_.getLength(),g.getCharCountIndicator(_.mode,v)),_.write(y)});const A=o.getSymbolTotalCodewords(v),I=f.getTotalCodewordsCount(v,S),M=(A-I)*8;for(y.getLengthInBits()+4<=M&&y.put(0,4);y.getLengthInBits()%8!==0;)y.putBit(0);const k=(M-y.getLengthInBits())/8;for(let _=0;_=7&&h(_,S),N(_,M),isNaN(y)&&(y=l.getBestMask(_,E.bind(null,_,C))),l.applyMask(y,_),E(_,C,y),{modules:_,version:S,errorCorrectionLevel:C,maskPattern:y,segments:A}}return je.create=function(S,C){if(typeof S>"u"||S==="")throw new Error("No input text");let y=r.M,A,I;return typeof C<"u"&&(y=r.from(C.errorCorrectionLevel,r.M),A=b.from(C.version),I=l.from(C.maskPattern),C.toSJISFunc&&o.setToSJISFunction(C.toSJISFunc)),D(S,A,y,I)},je}var ut={},lt={},Jt;function un(){return Jt||(Jt=1,function(o){function r(s){if(typeof s=="number"&&(s=s.toString()),typeof s!="string")throw new Error("Color should be defined as hex string");let n=s.slice().replace("#","").split("");if(n.length<3||n.length===5||n.length>8)throw new Error("Invalid hex color: "+s);(n.length===3||n.length===4)&&(n=Array.prototype.concat.apply([],n.map(function(t){return[t,t]}))),n.length===6&&n.push("F","F");const e=parseInt(n.join(""),16);return{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:e&255,hex:"#"+n.slice(0,6).join("")}}o.getOptions=function(n){n||(n={}),n.color||(n.color={});const e=typeof n.margin>"u"||n.margin===null||n.margin<0?4:n.margin,t=n.width&&n.width>=21?n.width:void 0,l=n.scale||4;return{width:t,scale:t?4:l,margin:e,color:{dark:r(n.color.dark||"#000000ff"),light:r(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},o.getScale=function(n,e){return e.width&&e.width>=n+e.margin*2?e.width/(n+e.margin*2):e.scale},o.getImageWidth=function(n,e){const t=o.getScale(n,e);return Math.floor((n+e.margin*2)*t)},o.qrToImageData=function(n,e,t){const l=e.modules.size,f=e.modules.data,d=o.getScale(l,t),b=Math.floor((l+t.margin*2)*d),m=t.margin*d,g=[t.color.light,t.color.dark];for(let i=0;i=m&&u>=m&&i"u"&&(!l||!l.getContext)&&(d=l,l=void 0),l||(b=n()),d=r.getOptions(d);const m=r.getImageWidth(t.modules.size,d),g=b.getContext("2d"),i=g.createImageData(m,m);return r.qrToImageData(i.data,t,d),s(g,b,m),g.putImageData(i,0,0),b},o.renderToDataURL=function(t,l,f){let d=f;typeof d>"u"&&(!l||!l.getContext)&&(d=l,l=void 0),d||(d={});const b=o.render(t,l,d),m=d.type||"image/png",g=d.rendererOpts||{};return b.toDataURL(m,g.quality)}}(ut)),ut}var ct={},Qt;function Yn(){if(Qt)return ct;Qt=1;const o=un();function r(e,t){const l=e.a/255,f=t+'="'+e.hex+'"';return l<1?f+" "+t+'-opacity="'+l.toFixed(2).slice(1)+'"':f}function s(e,t,l){let f=e+t;return typeof l<"u"&&(f+=" "+l),f}function n(e,t,l){let f="",d=0,b=!1,m=0;for(let g=0;g0&&i>0&&e[g-1]||(f+=b?s("M",i+l,.5+u+l):s("m",d,0),d=0,b=!1),i+1 ':"",u=" ',a='viewBox="0 0 '+g+" "+g+'"',h=''+i+u+`
-`;return typeof f=="function"&&f(null,h),h},ct}var Xt;function Jn(){if(Xt)return Ie;Xt=1;const o=_n(),r=$n(),s=Gn(),n=Yn();function e(t,l,f,d,b){const m=[].slice.call(arguments,1),g=m.length,i=typeof m[g-1]=="function";if(!i&&!o())throw new Error("Callback required as last argument");if(i){if(g<2)throw new Error("Too few arguments provided");g===2?(b=f,f=l,l=d=void 0):g===3&&(l.getContext&&typeof b>"u"?(b=d,d=void 0):(b=d,d=f,f=l,l=void 0))}else{if(g<1)throw new Error("Too few arguments provided");return g===1?(f=l,l=d=void 0):g===2&&!l.getContext&&(d=f,f=l,l=void 0),new Promise(function(u,a){try{const c=r.create(f,d);u(t(c,l,d))}catch(c){a(c)}})}try{const u=r.create(f,d);b(null,t(u,l,d))}catch(u){b(u)}}return Ie.create=r.create,Ie.toCanvas=e.bind(null,s.render),Ie.toDataURL=e.bind(null,s.renderToDataURL),Ie.toString=e.bind(null,function(t,l,f){return n.render(t,f)}),Ie}var Wn=Jn();const Qn=gn(Wn),Xn={class:"device-overview"},Zn={class:"flex flex-wrap items-start gap-4 mcrm-block block__light"},ei={class:"flex items-center justify-between w-full gap-4 mb-4"},ti={class:"flex gap-4"},ni={class:"grid gap-2"},ii={class:"grid grid-cols-[auto_1fr] gap-2"},ri={class:"w-full truncate"},oi={class:"grid py-4"},si={class:"space-y-2"},ai={class:"grid gap-4 py-4 pl-6"},ui={key:0},li={class:"inline-flex items-center gap-2"},ci={class:"p-1 border rounded-sm"},di={class:"inline-flex flex-wrap items-center gap-2 w-fit"},fi={class:"flex items-center gap-1 p-1 text-sm border rounded-sm"},gi={class:"grid gap-4"},hi={class:"font-mono text-4xl tracking-wide"},wi={__name:"ServerView",setup(o){const r=en(),s=xe(),n=xe(),e=ft({ip:""}),t=ft({devices:[],pinlink:!1,poll:!1});tn(async()=>{r.serverGetRemotes(),r.$subscribe((g,i)=>{i.remote!==t.devices&&(t.devices=r.remote)}),l()}),nn(()=>{l(),Object.keys(t.devices).length==0&&!t.poll&&(t.poll=setInterval(()=>{r.serverGetRemotes()},1e3)),Object.keys(t.devices).length>0&&t.poll&&(clearInterval(t.poll),t.poll=!1)});async function l(){const g=await r.serverGetIP();e.ip=g,Qn.toCanvas(n.value,`${e.ip}/devices`,i=>{i&&console.log("QRCode error: ",i)})}async function f(g){const i=await r.serverStartLink(g);t.pinlink={uuid:g,pin:i},s.value.toggleDialog(!0),d(),setTimeout(()=>{b()},6e4)}function d(){const g=setInterval(()=>{ht.post(wt()+"/device/link/poll",{uuid:t.pinlink.uuid}).then(i=>{i.data||(clearInterval(g),b(),r.serverGetRemotes())})},1e3)}function b(){t.pinlink=!1,s.value&&s.value.toggleDialog(!1)}function m(g){ht.post(wt()+"/device/link/remove",{uuid:g}).then(i=>{i.data&&r.serverGetRemotes()})}return(g,i)=>(z(),re("div",Xn,[O(ce,{variant:"info"},{default:V(()=>[i[1]||(i[1]=B("strong",null,"This is a server!",-1)),B("em",null,"UUID: "+J(F(r).uuid()),1)]),_:1}),B("div",Zn,[B("h4",ei,[B("span",ti,[O(F(hn)),q(J(Object.keys(t.devices).length)+" "+J(Object.keys(t.devices).length==1?"Device":"Devices"),1)]),t.poll?j("",!0):(z(),G(we,{key:0,variant:"primary",onClick:i[0]||(i[0]=u=>F(r).serverGetRemotes())},{default:V(()=>[O(F(Re))]),_:1}))]),Object.keys(t.devices).length>0?(z(!0),re(Fe,{key:0},wn(t.devices,(u,a)=>(z(),re("div",{key:a,class:"mcrm-block block__dark block-size__sm w-64 grid !gap-4 content-start"},[B("div",ni,[B("h5",ii,[u.settings.type=="unknown"?(z(),G(F(An),{key:0})):j("",!0),u.settings.type=="mobile"?(z(),G(F(In),{key:1})):j("",!0),u.settings.type=="tablet"?(z(),G(F(Sn),{key:2})):j("",!0),u.settings.type=="desktop"?(z(),G(F(Cn),{key:3})):j("",!0),B("span",ri,J(u.settings.name),1)]),B("em",null,J(a),1)]),u.key?(z(),re(Fe,{key:0},[O(ce,{variant:"success"},{default:V(()=>i[2]||(i[2]=[q("Authorized")])),_:1}),O(we,{variant:"danger",onClick:c=>m(a)},{default:V(()=>[O(F(Mn)),i[3]||(i[3]=q("Unlink device "))]),_:2},1032,["onClick"])],64)):(z(),re(Fe,{key:1},[O(ce,{variant:"warning"},{default:V(()=>i[4]||(i[4]=[q("Unauthorized")])),_:1}),O(we,{variant:"primary",onClick:c=>f(a)},{default:V(()=>[O(F(gt)),i[5]||(i[5]=q("Link device "))]),_:2},1032,["onClick"])],64)),t.pinlink.uuid==a?(z(),G(ce,{key:2,variant:"info"},{default:V(()=>[q("One time pin: "+J(t.pinlink.pin),1)]),_:1})):j("",!0)]))),128)):j("",!0),O(En,{class:"w-full mt-8 border-t border-t-white/50",title:"How to connect a device?",open:Object.keys(t.devices).length==0},{default:V(()=>[B("div",oi,[B("ul",si,[B("li",null,[i[8]||(i[8]=q(" Scan the QR code with the remote device. ")),B("div",ai,[B("canvas",{ref_key:"serverQr",ref:n},null,512),B("p",null,[i[6]||(i[6]=q(" Or manually type the IP address: ")),i[7]||(i[7]=B("br",null,null,-1)),B("strong",null,J(e.ip)+"/devices",1)])])]),i[14]||(i[14]=B("li",null,' The device will automatically request access, if you see "Access requested" on the device. ',-1)),t.poll?j("",!0):(z(),re("li",ui,[B("div",li,[i[9]||(i[9]=q(" Click the ")),B("span",ci,[O(F(Re),{class:"size-4"})]),i[10]||(i[10]=q(" to reload the devices. "))])])),B("li",null,[B("div",di,[i[12]||(i[12]=q(" Click on ")),B("span",fi,[O(F(gt),{class:"size-4"}),i[11]||(i[11]=q(" Link device "))]),i[13]||(i[13]=q(" A one-time-pin will be shown in a dialog. "))])]),i[15]||(i[15]=B("li",null,"Enter the pin on the remote device.",-1)),i[16]||(i[16]=B("li",null," Congratulations! You have linked a device! You can now start using panels on that device. ",-1))])])]),_:1},8,["open"]),O(rn,{ref_key:"pinDialog",ref:s},{content:V(()=>[B("div",gi,[i[17]||(i[17]=B("h3",null,"Pin code",-1)),B("span",hi,J(t.pinlink.pin),1)])]),_:1},512)])]))}},pi=mt(wi,[["__scopeId","data-v-0a3f2b41"]]);var mi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function bi(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var pt={exports:{}};(function(o,r){(function(s,n){var e="1.0.37",t="",l="?",f="function",d="undefined",b="object",m="string",g="major",i="model",u="name",a="type",c="vendor",h="version",E="architecture",N="console",p="mobile",w="tablet",D="smarttv",v="wearable",S="embedded",C=500,y="Amazon",A="Apple",I="ASUS",M="BlackBerry",k="Browser",_="Chrome",X="Edge",Z="Firefox",ye="Google",Se="Huawei",Ae="LG",fe="Microsoft",ge="Motorola",he="Opera",se="Samsung",Ne="Sharp",ae="Sony",ke="Xiaomi",$="Zebra",Y="Facebook",ne="Chromium OS",Ee="Mac OS",cn=function(P,x){var T={};for(var U in P)x[U]&&x[U].length%2===0?T[U]=x[U].concat(P[U]):T[U]=P[U];return T},Pe=function(P){for(var x={},T=0;T0?L.length===2?typeof L[1]==f?this[L[0]]=L[1].call(this,ie):this[L[0]]=L[1]:L.length===3?typeof L[1]===f&&!(L[1].exec&&L[1].test)?this[L[0]]=ie?L[1].call(this,ie,L[2]):n:this[L[0]]=ie?ie.replace(L[1],L[2]):n:L.length===4&&(this[L[0]]=ie?L[3].call(this,ie.replace(L[1],L[2])):n):this[L]=ie||n;T+=2}},Oe=function(P,x){for(var T in x)if(typeof x[T]===b&&x[T].length>0){for(var U=0;U2&&(R[i]="iPad",R[a]=w),R},this.getEngine=function(){var R={};return R[u]=n,R[h]=n,Be.call(R,U,ee.engine),R},this.getOS=function(){var R={};return R[u]=n,R[h]=n,Be.call(R,U,ee.os),L&&!R[u]&&ue&&ue.platform!="Unknown"&&(R[u]=ue.platform.replace(/chrome os/i,ne).replace(/macos/i,Ee)),R},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return U},this.setUA=function(R){return U=typeof R===m&&R.length>C?qe(R,C):R,this},this.setUA(U),this};Q.VERSION=e,Q.BROWSER=Pe([u,h,g]),Q.CPU=Pe([E]),Q.DEVICE=Pe([i,c,a,N,p,D,w,v,S]),Q.ENGINE=Q.OS=Pe([u,h]),o.exports&&(r=o.exports=Q),r.UAParser=Q;var Ce=typeof s!==d&&(s.jQuery||s.Zepto);if(Ce&&!Ce.ua){var De=new Q;Ce.ua=De.getResult(),Ce.ua.get=function(){return De.getUA()},Ce.ua.set=function(P){De.setUA(P);var x=De.getResult();for(var T in x)Ce.ua[T]=x[T]}}})(typeof window=="object"?window:mi)})(pt,pt.exports);var vi=pt.exports;const yi=bi(vi),oe={CONSOLE:"console",DESKTOP:void 0,EMBEDDED:"embedded",MOBILE:"mobile",SMART_TV:"smarttv",TABLET:"tablet",WEARABLE:"wearable"},ve={ANDROID:"Android",IOS:"iOS",LINUX:"Linux",MAC_OS:"Mac OS",WINDOWS_PHONE:"Windows Phone",WINDOWS:"Windows"},H={CHROME:"Chrome",CHROMIUM:"Chromium",EDGE:"Edge",FIREFOX:"Firefox",IE:"IE",INTERNET_EXPLORER:"Internet Explorer",MIUI:"MIUI Browser",MOBILE_SAFARI:"Mobile Safari",OPERA:"Opera",SAFARI:"Safari",SAMSUNG_BROWSER:"Samsung Browser",YANDEX:"Yandex"},Te=new yi,W=Te.getDevice(),de=Te.getOS(),K=Te.getBrowser();Te.getEngine();const vt=Te.getUA(),Ue=()=>/iPad/.test(vt),ln=()=>de.name===ve.WINDOWS&&de.version==="10"&&vt.indexOf("Edg/")!==-1;de.name,ve.ANDROID;K.name,H.CHROME;K.name,H.CHROMIUM;W.type,oe.CONSOLE;W.type,oe.DESKTOP;K.name===H.EDGE||ln();ln();K.name,H.EDGE;/electron/.test(vt.toLowerCase());W.type,oe.EMBEDDED;K.name,H.FIREFOX;K.name===H.INTERNET_EXPLORER||(K.name,H.IE);de.name===ve.IOS||Ue();de.name,ve.LINUX;de.name,ve.MAC_OS;K.name,H.MIUI;W.type===oe.MOBILE||W.type===oe.TABLET||Ue();W.type,oe.MOBILE;K.name===H.MOBILE_SAFARI||Ue();K.name,H.OPERA;K.name===H.SAFARI||(K.name,H.MOBILE_SAFARI);K.name,H.SAMSUNG_BROWSER;W.type,oe.SMART_TV;W.type===oe.TABLET||Ue();W.type,oe.WEARABLE;de.name,ve.WINDOWS;de.name,ve.WINDOWS_PHONE;K.name,H.YANDEX;const ki=()=>W.model,Zt=()=>W.type||"desktop",dt=()=>W.vendor,Ei={class:"server-overview"},Ci={class:"grid gap-4 mcrm-block block__light"},Ii={class:"flex items-center justify-between gap-4 text-lg"},Si={class:"flex gap-4"},Ai={class:"grid gap-2"},Mi={class:"mb-4"},Bi={class:"font-semibold"},_i={class:"inline-flex flex-wrap items-center gap-2 w-fit"},Ri={class:"flex items-center gap-1 p-1 text-sm border rounded-sm"},Ti={key:0,class:"grid grid-cols-[2rem_1fr] gap-2"},Ni={class:"grid w-64 gap-4"},Pi={__name:"RemoteView",setup(o){const r=en(),s=xe(),n=xe(),e=ft({host:"",port:window.__CONFIG__.MCRM__PORT,status:!1,link:!1,inputPin:"",encryptedKey:"",key:""});tn(async()=>{e.host=window.location.host}),nn(()=>{e.status||t(),e.status==="authorized"&&e.inputPin&&(e.inputPin="")});async function t(m=!0){const g=await r.remoteCheckServerAccess();return e.status=g,g==="unlinked"||g==="unauthorized"?(m&&l(),!0):r.key()?(await r.remoteHandshake(r.key())?e.key=r.key():(r.removeDeviceKey(),e.status="unlinked",m&&l()),!0):(e.status="unauthorized",!0)}function l(){let m=`${dt()?dt():"Unknown"} ${dt()?ki():Zt()}`;r.remoteRequestServerAccess(m,Zt()).then(g=>{g.data&&(e.status=g.data,f())})}function f(){e.link="checking",r.remotePingLink(m=>{e.link=!0,e.encryptedKey=m,s.value.toggleDialog(!0),n.value.focus()})}async function d(){const m=kn(e.inputPin,e.encryptedKey);await r.remoteHandshake(m)&&(r.setDeviceKey(m),e.key=m,s.value.toggleDialog(!1),e.status="authorized")}function b(){ht.post(wt()+"/device/link/remove",yn({uuid:r.uuid()})).then(m=>{m.data&&t(!1)})}return(m,g)=>(z(),re("div",Ei,[O(ce,{variant:"info"},{default:V(()=>[g[5]||(g[5]=B("strong",null,"This is a remote device.",-1)),B("em",null,"UUID: "+J(F(r).uuid()),1)]),_:1}),B("div",Ci,[B("h4",Ii,[B("span",Si,[O(F(pn)),g[6]||(g[6]=q("Server"))]),O(we,{variant:"primary",onClick:g[0]||(g[0]=i=>t())},{default:V(()=>[O(F(Re))]),_:1})]),B("p",null,[g[7]||(g[7]=q(" Connected to: ")),B("strong",null,J(e.host),1)]),e.status==="authorized"?(z(),G(ce,{key:0,variant:"success"},{default:V(()=>g[8]||(g[8]=[q("Authorized")])),_:1})):j("",!0),e.status==="unlinked"?(z(),G(ce,{key:1,variant:"warning"},{default:V(()=>g[9]||(g[9]=[q("Not linked")])),_:1})):j("",!0),e.status==="unauthorized"?(z(),G(ce,{key:2,variant:"info"},{default:V(()=>[B("div",Ai,[g[17]||(g[17]=B("strong",null,"Access requested",-1)),B("ul",Mi,[B("li",null,[g[10]||(g[10]=q(" Navigate to ")),B("em",Bi,"http://localhost:"+J(e.port)+"/devices",1),g[11]||(g[11]=q(". "))]),B("li",null,[B("div",_i,[g[13]||(g[13]=q(" Click on ")),B("span",Ri,[O(F(gt),{class:"size-4"}),g[12]||(g[12]=q(" Link device "))])])]),g[14]||(g[14]=B("li",null,"Enter the the pin shown on the desktop in the dialog that will appear.",-1))]),e.link=="checking"?(z(),re("div",Ti,[O(F(Re),{class:"animate-spin"}),g[15]||(g[15]=q(" Checking server for link... "))])):j("",!0),e.link===!1?(z(),G(we,{key:1,variant:"subtle",onClick:g[1]||(g[1]=i=>f()),class:"w-fit"},{default:V(()=>[O(F(Re)),g[16]||(g[16]=q("Check for server link "))]),_:1})):j("",!0)])]),_:1})):j("",!0),e.status==="authorized"?(z(),G(we,{key:3,variant:"danger",onClick:g[2]||(g[2]=i=>b())},{default:V(()=>[O(F(Bn)),g[18]||(g[18]=q(" Disconnect "))]),_:1})):j("",!0)]),O(rn,{ref_key:"linkPinDialog",ref:s},{content:V(()=>[B("div",Ni,[g[20]||(g[20]=B("h3",null,"Server link pin:",-1)),B("form",{class:"grid gap-4",onSubmit:g[4]||(g[4]=mn(i=>d(),["prevent"]))},[bn(B("input",{ref_key:"linkPinInput",ref:n,class:"input",id:"input-pin",type:"text",pattern:"[0-9]{4}","onUpdate:modelValue":g[3]||(g[3]=i=>e.inputPin=i),autocomplete:"off"},null,512),[[vn,e.inputPin]]),O(we,{variant:"primary"},{default:V(()=>g[19]||(g[19]=[q("Enter")])),_:1})],32)])]),_:1},512)]))}},Di=mt(Pi,[["__scopeId","data-v-6973a9f0"]]),Li={id:"devices-view",class:"panel"},xi={class:"panel__title"},Ui={class:"grid gap-8 pr-2 panel__content"},qi={__name:"DevicesView",setup(o){return(r,s)=>(z(),re("div",Li,[B("h1",xi,J(F(It)()?"Remote devices":"Server"),1),B("div",Ui,[F(It)()?(z(),G(pi,{key:0})):(z(),G(Di,{key:1}))])]))}},Vi=mt(qi,[["__scopeId","data-v-860af40f"]]);export{Vi as default};
-//# sourceMappingURL=DevicesView-C9HVDkwf.js.map
diff --git a/public/assets/DevicesView-C9HVDkwf.js.map b/public/assets/DevicesView-C9HVDkwf.js.map
deleted file mode 100644
index 64b106d..0000000
--- a/public/assets/DevicesView-C9HVDkwf.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"DevicesView-C9HVDkwf.js","sources":["../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDeviceDesktop.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDeviceMobile.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDeviceTablet.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDeviceUnknown.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconLinkOff.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconPlugConnectedX.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconReload.mjs","../../ui/node_modules/qrcode/lib/can-promise.js","../../ui/node_modules/qrcode/lib/core/utils.js","../../ui/node_modules/qrcode/lib/core/error-correction-level.js","../../ui/node_modules/qrcode/lib/core/bit-buffer.js","../../ui/node_modules/qrcode/lib/core/bit-matrix.js","../../ui/node_modules/qrcode/lib/core/alignment-pattern.js","../../ui/node_modules/qrcode/lib/core/finder-pattern.js","../../ui/node_modules/qrcode/lib/core/mask-pattern.js","../../ui/node_modules/qrcode/lib/core/error-correction-code.js","../../ui/node_modules/qrcode/lib/core/galois-field.js","../../ui/node_modules/qrcode/lib/core/polynomial.js","../../ui/node_modules/qrcode/lib/core/reed-solomon-encoder.js","../../ui/node_modules/qrcode/lib/core/version-check.js","../../ui/node_modules/qrcode/lib/core/regex.js","../../ui/node_modules/qrcode/lib/core/mode.js","../../ui/node_modules/qrcode/lib/core/version.js","../../ui/node_modules/qrcode/lib/core/format-info.js","../../ui/node_modules/qrcode/lib/core/numeric-data.js","../../ui/node_modules/qrcode/lib/core/alphanumeric-data.js","../../ui/node_modules/qrcode/lib/core/byte-data.js","../../ui/node_modules/qrcode/lib/core/kanji-data.js","../../ui/node_modules/dijkstrajs/dijkstra.js","../../ui/node_modules/qrcode/lib/core/segments.js","../../ui/node_modules/qrcode/lib/core/qrcode.js","../../ui/node_modules/qrcode/lib/renderer/utils.js","../../ui/node_modules/qrcode/lib/renderer/canvas.js","../../ui/node_modules/qrcode/lib/renderer/svg-tag.js","../../ui/node_modules/qrcode/lib/browser.js","../../ui/src/components/devices/ServerView.vue","../../ui/node_modules/@basitcodeenv/vue3-device-detect/dist/vue3-device-detect.js","../../ui/src/components/devices/RemoteView.vue"],"sourcesContent":["/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconDeviceDesktop = createVueComponent(\"outline\", \"device-desktop\", \"IconDeviceDesktop\", [[\"path\", { \"d\": \"M3 5a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1v-10z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M7 20h10\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M9 16v4\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M15 16v4\", \"key\": \"svg-3\" }]]);\n\nexport { IconDeviceDesktop as default };\n//# sourceMappingURL=IconDeviceDesktop.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconDeviceMobile = createVueComponent(\"outline\", \"device-mobile\", \"IconDeviceMobile\", [[\"path\", { \"d\": \"M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 4h2\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 17v.01\", \"key\": \"svg-2\" }]]);\n\nexport { IconDeviceMobile as default };\n//# sourceMappingURL=IconDeviceMobile.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconDeviceTablet = createVueComponent(\"outline\", \"device-tablet\", \"IconDeviceTablet\", [[\"path\", { \"d\": \"M5 4a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v16a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1v-16z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 17a1 1 0 1 0 2 0a1 1 0 0 0 -2 0\", \"key\": \"svg-1\" }]]);\n\nexport { IconDeviceTablet as default };\n//# sourceMappingURL=IconDeviceTablet.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconDeviceUnknown = createVueComponent(\"outline\", \"device-unknown\", \"IconDeviceUnknown\", [[\"path\", { \"d\": \"M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 16v.01\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483\", \"key\": \"svg-2\" }]]);\n\nexport { IconDeviceUnknown as default };\n//# sourceMappingURL=IconDeviceUnknown.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconLinkOff = createVueComponent(\"outline\", \"link-off\", \"IconLinkOff\", [[\"path\", { \"d\": \"M9 15l3 -3m2 -2l1 -1\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M3 3l18 18\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463\", \"key\": \"svg-3\" }]]);\n\nexport { IconLinkOff as default };\n//# sourceMappingURL=IconLinkOff.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconPlugConnectedX = createVueComponent(\"outline\", \"plug-connected-x\", \"IconPlugConnectedX\", [[\"path\", { \"d\": \"M20 16l-4 4\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M3 21l2.5 -2.5\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M18.5 5.5l2.5 -2.5\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M10 11l-2 2\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M13 14l-2 2\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M16 16l4 4\", \"key\": \"svg-7\" }]]);\n\nexport { IconPlugConnectedX as default };\n//# sourceMappingURL=IconPlugConnectedX.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconReload = createVueComponent(\"outline\", \"reload\", \"IconReload\", [[\"path\", { \"d\": \"M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M20 4v5h-5\", \"key\": \"svg-1\" }]]);\n\nexport { IconReload as default };\n//# sourceMappingURL=IconReload.mjs.map\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","const Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n this.data = new TextEncoder().encode(data)\n } else {\n this.data = new Uint8Array(data)\n }\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : ' '\n\n const path =\n ' '\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '' + bg + path + ' \\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","\n\n\n \n
\n This is a server! \n UUID: {{ device.uuid() }} \n \n\n
\n
\n \n {{ Object.keys(remote.devices).length }}\n {{ Object.keys(remote.devices).length == 1 ? 'Device' : 'Devices' }}\n \n\n \n \n
0\">\n \n \n
\n
\n \n \n \n \n \n {{ remoteDevice.settings.name }}\n \n \n {{ id }} \n \n\n
\n Authorized \n \n Unlink device\n \n \n\n
\n Unauthorized \n \n Link device\n \n \n\n
\n One time pin: {{ remote.pinlink.pin }} \n \n
\n \n \n\n \n\n
\n \n \n\n
\n \n \n
Pin code \n {{ remote.pinlink.pin }} \n \n \n \n
\n
\n \n\n\n\n\n","import { defineComponent as Ii, h as Ri } from \"vue\";\nvar Ni = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Ci(E) {\n return E && E.__esModule && Object.prototype.hasOwnProperty.call(E, \"default\") ? E.default : E;\n}\nvar wi = { exports: {} };\n(function(E, q) {\n (function(A, m) {\n var F = \"1.0.37\", M = \"\", I = \"?\", R = \"function\", V = \"undefined\", ii = \"object\", j = \"string\", li = \"major\", e = \"model\", a = \"name\", i = \"type\", o = \"vendor\", t = \"version\", v = \"architecture\", B = \"console\", n = \"mobile\", b = \"tablet\", h = \"smarttv\", N = \"wearable\", ei = \"embedded\", oi = 500, G = \"Amazon\", D = \"Apple\", di = \"ASUS\", mi = \"BlackBerry\", T = \"Browser\", H = \"Chrome\", yi = \"Edge\", X = \"Firefox\", Y = \"Google\", ui = \"Huawei\", ai = \"LG\", ti = \"Microsoft\", pi = \"Motorola\", K = \"Opera\", Z = \"Samsung\", hi = \"Sharp\", J = \"Sony\", ri = \"Xiaomi\", si = \"Zebra\", fi = \"Facebook\", vi = \"Chromium OS\", gi = \"Mac OS\", Ti = function(c, l) {\n var s = {};\n for (var d in c)\n l[d] && l[d].length % 2 === 0 ? s[d] = l[d].concat(c[d]) : s[d] = c[d];\n return s;\n }, Q = function(c) {\n for (var l = {}, s = 0; s < c.length; s++)\n l[c[s].toUpperCase()] = c[s];\n return l;\n }, Ei = function(c, l) {\n return typeof c === j ? U(l).indexOf(U(c)) !== -1 : !1;\n }, U = function(c) {\n return c.toLowerCase();\n }, _i = function(c) {\n return typeof c === j ? c.replace(/[^\\d\\.]/g, M).split(\".\")[0] : m;\n }, ni = function(c, l) {\n if (typeof c === j)\n return c = c.replace(/^\\s\\s*/, M), typeof l === V ? c : c.substring(0, oi);\n }, L = function(c, l) {\n for (var s = 0, d, y, O, w, r, k; s < l.length && !r; ) {\n var ci = l[s], xi = l[s + 1];\n for (d = y = 0; d < ci.length && !r && ci[d]; )\n if (r = ci[d++].exec(c), r)\n for (O = 0; O < xi.length; O++)\n k = r[++y], w = xi[O], typeof w === ii && w.length > 0 ? w.length === 2 ? typeof w[1] == R ? this[w[0]] = w[1].call(this, k) : this[w[0]] = w[1] : w.length === 3 ? typeof w[1] === R && !(w[1].exec && w[1].test) ? this[w[0]] = k ? w[1].call(this, k, w[2]) : m : this[w[0]] = k ? k.replace(w[1], w[2]) : m : w.length === 4 && (this[w[0]] = k ? w[3].call(this, k.replace(w[1], w[2])) : m) : this[w] = k || m;\n s += 2;\n }\n }, bi = function(c, l) {\n for (var s in l)\n if (typeof l[s] === ii && l[s].length > 0) {\n for (var d = 0; d < l[s].length; d++)\n if (Ei(l[s][d], c))\n return s === I ? m : s;\n } else if (Ei(l[s], c))\n return s === I ? m : s;\n return c;\n }, Mi = {\n \"1.0\": \"/8\",\n \"1.2\": \"/1\",\n \"1.3\": \"/3\",\n \"2.0\": \"/412\",\n \"2.0.2\": \"/416\",\n \"2.0.3\": \"/417\",\n \"2.0.4\": \"/419\",\n \"?\": \"/\"\n }, Oi = {\n ME: \"4.90\",\n \"NT 3.11\": \"NT3.51\",\n \"NT 4.0\": \"NT4.0\",\n 2e3: \"NT 5.0\",\n XP: [\"NT 5.1\", \"NT 5.2\"],\n Vista: \"NT 6.0\",\n 7: \"NT 6.1\",\n 8: \"NT 6.2\",\n \"8.1\": \"NT 6.3\",\n 10: [\"NT 6.4\", \"NT 10.0\"],\n RT: \"ARM\"\n }, ki = {\n browser: [\n [\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i\n // Chrome for Android/iOS\n ],\n [t, [a, \"Chrome\"]],\n [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i\n // Microsoft Edge\n ],\n [t, [a, \"Edge\"]],\n [\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i,\n // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,\n // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i\n // Opera\n ],\n [a, t],\n [\n /opios[\\/ ]+([\\w\\.]+)/i\n // Opera mini on iphone >= 8.0\n ],\n [t, [a, K + \" Mini\"]],\n [\n /\\bopr\\/([\\w\\.]+)/i\n // Opera Webkit\n ],\n [t, [a, K]],\n [\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i\n // Baidu\n ],\n [t, [a, \"Baidu\"]],\n [\n /(kindle)\\/([\\w\\.]+)/i,\n // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i,\n // Internet Explorer\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i,\n // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i\n // Weibo\n ],\n [a, t],\n [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i\n // UCBrowser\n ],\n [t, [a, \"UC\" + T]],\n [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i,\n // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i\n // WeChat\n ],\n [t, [a, \"WeChat\"]],\n [\n /konqueror\\/([\\w\\.]+)/i\n // Konqueror\n ],\n [t, [a, \"Konqueror\"]],\n [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i\n // IE11\n ],\n [t, [a, \"IE\"]],\n [\n /ya(?:search)?browser\\/([\\w\\.]+)/i\n // Yandex\n ],\n [t, [a, \"Yandex\"]],\n [\n /slbrowser\\/([\\w\\.]+)/i\n // Smart Lenovo Browser\n ],\n [t, [a, \"Smart Lenovo \" + T]],\n [\n /(avast|avg)\\/([\\w\\.]+)/i\n // Avast/AVG Secure Browser\n ],\n [[a, /(.+)/, \"$1 Secure \" + T], t],\n [\n /\\bfocus\\/([\\w\\.]+)/i\n // Firefox Focus\n ],\n [t, [a, X + \" Focus\"]],\n [\n /\\bopt\\/([\\w\\.]+)/i\n // Opera Touch\n ],\n [t, [a, K + \" Touch\"]],\n [\n /coc_coc\\w+\\/([\\w\\.]+)/i\n // Coc Coc Browser\n ],\n [t, [a, \"Coc Coc\"]],\n [\n /dolfin\\/([\\w\\.]+)/i\n // Dolphin\n ],\n [t, [a, \"Dolphin\"]],\n [\n /coast\\/([\\w\\.]+)/i\n // Opera Coast\n ],\n [t, [a, K + \" Coast\"]],\n [\n /miuibrowser\\/([\\w\\.]+)/i\n // MIUI Browser\n ],\n [t, [a, \"MIUI \" + T]],\n [\n /fxios\\/([-\\w\\.]+)/i\n // Firefox for iOS\n ],\n [t, [a, X]],\n [\n /\\bqihu|(qi?ho?o?|360)browser/i\n // 360\n ],\n [[a, \"360 \" + T]],\n [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ],\n [[a, /(.+)/, \"$1 \" + T], t],\n [\n // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i\n // Samsung Internet\n ],\n [t, [a, Z + \" Internet\"]],\n [\n /(comodo_dragon)\\/([\\w\\.]+)/i\n // Comodo Dragon\n ],\n [[a, /_/g, \" \"], t],\n [\n /metasr[\\/ ]?([\\d\\.]+)/i\n // Sogou Explorer\n ],\n [t, [a, \"Sogou Explorer\"]],\n [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i\n // Sogou Mobile\n ],\n [[a, \"Sogou Mobile\"], t],\n [\n /(electron)\\/([\\w\\.]+) safari/i,\n // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,\n // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i\n // QQBrowser/2345 Browser\n ],\n [a, t],\n [\n /(lbbrowser)/i,\n // LieBao Browser\n /\\[(linkedin)app\\]/i\n // LinkedIn App for iOS & Android\n ],\n [a],\n [\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i\n // Facebook App for iOS & Android\n ],\n [[a, fi], t],\n [\n /(Klarna)\\/([\\w\\.]+)/i,\n // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,\n // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,\n // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i,\n // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i,\n // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i,\n // Alipay\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i\n // Chromium/Instagram/Snapchat\n ],\n [a, t],\n [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i\n // Google Search Appliance on iOS\n ],\n [t, [a, \"GSA\"]],\n [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i\n // TikTok\n ],\n [t, [a, \"TikTok\"]],\n [\n /headlesschrome(?:\\/([\\w\\.]+)| )/i\n // Chrome Headless\n ],\n [t, [a, H + \" Headless\"]],\n [\n / wv\\).+(chrome)\\/([\\w\\.]+)/i\n // Chrome WebView\n ],\n [[a, H + \" WebView\"], t],\n [\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i\n // Android Browser\n ],\n [t, [a, \"Android \" + T]],\n [\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ],\n [a, t],\n [\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i\n // Mobile Safari\n ],\n [t, [a, \"Mobile Safari\"]],\n [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i\n // Safari & Safari Mobile\n ],\n [t, a],\n [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i\n // Safari < 3.0\n ],\n [a, [t, bi, Mi]],\n [\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ],\n [a, t],\n [\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i\n // Netscape\n ],\n [[a, \"Netscape\"], t],\n [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i\n // Firefox Reality\n ],\n [t, [a, X + \" Reality\"]],\n [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i,\n // Flow\n /(swiftfox)/i,\n // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i,\n // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,\n // Mozilla\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i,\n // Links\n /panasonic;(viera)/i\n // Panasonic Viera\n ],\n [a, t],\n [\n /(cobalt)\\/([\\w\\.]+)/i\n // Cobalt\n ],\n [a, [t, /master.|lts./, \"\"]]\n ],\n cpu: [\n [\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i\n // AMD64 (x64)\n ],\n [[v, \"amd64\"]],\n [\n /(ia32(?=;))/i\n // IA32 (quicktime)\n ],\n [[v, U]],\n [\n /((?:i[346]|x)86)[;\\)]/i\n // IA32 (x86)\n ],\n [[v, \"ia32\"]],\n [\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i\n // ARM64\n ],\n [[v, \"arm64\"]],\n [\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i\n // ARMHF\n ],\n [[v, \"armhf\"]],\n [\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ],\n [[v, \"arm\"]],\n [\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i\n // PowerPC\n ],\n [[v, /ower/, M, U]],\n [\n /(sun4\\w)[;\\)]/i\n // SPARC\n ],\n [[v, \"sparc\"]],\n [\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ],\n [[v, U]]\n ],\n device: [\n [\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ],\n [e, [o, Z], [i, b]],\n [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ],\n [e, [o, Z], [i, n]],\n [\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i\n // iPod/iPhone\n ],\n [e, [o, D], [i, n]],\n [\n /\\((ipad);[-\\w\\),; ]+apple/i,\n // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ],\n [e, [o, D], [i, b]],\n [\n /(macintosh);/i\n ],\n [e, [o, D]],\n [\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ],\n [e, [o, hi], [i, n]],\n [\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ],\n [e, [o, ui], [i, b]],\n [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ],\n [e, [o, ui], [i, n]],\n [\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,\n // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i,\n // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,\n // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,\n // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,\n // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i\n // Xiaomi Mi\n ],\n [[e, /_/g, \" \"], [o, ri], [i, n]],\n [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,\n // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i\n // Mi Pad tablets\n ],\n [[e, /_/g, \" \"], [o, ri], [i, b]],\n [\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ],\n [e, [o, \"OPPO\"], [i, n]],\n [\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ],\n [e, [o, \"Vivo\"], [i, n]],\n [\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ],\n [e, [o, \"Realme\"], [i, n]],\n [\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ],\n [e, [o, pi], [i, n]],\n [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ],\n [e, [o, pi], [i, b]],\n [\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ],\n [e, [o, ai], [i, b]],\n [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ],\n [e, [o, ai], [i, n]],\n [\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ],\n [e, [o, \"Lenovo\"], [i, b]],\n [\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ],\n [[e, /_/g, \" \"], [o, \"Nokia\"], [i, n]],\n [\n // Google\n /(pixel c)\\b/i\n // Google Pixel C\n ],\n [e, [o, Y], [i, b]],\n [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i\n // Google Pixel\n ],\n [e, [o, Y], [i, n]],\n [\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ],\n [e, [o, J], [i, n]],\n [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ],\n [[e, \"Xperia Tablet\"], [o, J], [i, b]],\n [\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ],\n [e, [o, \"OnePlus\"], [i, n]],\n [\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,\n // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i\n // Kindle Fire HD\n ],\n [e, [o, G], [i, b]],\n [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i\n // Fire Phone\n ],\n [[e, /(.+)/g, \"Fire Phone $1\"], [o, G], [i, n]],\n [\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i\n // BlackBerry PlayBook\n ],\n [e, o, [i, b]],\n [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i\n // BlackBerry 10\n ],\n [e, [o, mi], [i, n]],\n [\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ],\n [e, [o, di], [i, b]],\n [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ],\n [e, [o, di], [i, n]],\n [\n // HTC\n /(nexus 9)/i\n // HTC Nexus 9\n ],\n [e, [o, \"HTC\"], [i, b]],\n [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,\n // HTC\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i\n // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ],\n [o, [e, /_/g, \" \"], [i, n]],\n [\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ],\n [e, [o, \"Acer\"], [i, b]],\n [\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ],\n [e, [o, \"Meizu\"], [i, n]],\n [\n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ],\n [e, [o, \"Ulefone\"], [i, n]],\n [\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i,\n // HP iPAQ\n /(asus)-?(\\w+)/i,\n // Asus\n /(microsoft); (lumia[\\w ]+)/i,\n // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i,\n // Lenovo\n /(jolla)/i,\n // Jolla\n /(oppo) ?([\\w ]+) bui/i\n // OPPO\n ],\n [o, e, [i, n]],\n [\n /(kobo)\\s(ereader|touch)/i,\n // Kobo\n /(archos) (gamepad2?)/i,\n // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i,\n // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i,\n // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i,\n // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i,\n // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,\n // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i,\n // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i,\n // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i\n // Vodafone\n ],\n [o, e, [i, b]],\n [\n /(surface duo)/i\n // Surface Duo\n ],\n [e, [o, ti], [i, b]],\n [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i\n // Fairphone\n ],\n [e, [o, \"Fairphone\"], [i, n]],\n [\n /(u304aa)/i\n // AT&T\n ],\n [e, [o, \"AT&T\"], [i, n]],\n [\n /\\bsie-(\\w*)/i\n // Siemens\n ],\n [e, [o, \"Siemens\"], [i, n]],\n [\n /\\b(rct\\w+) b/i\n // RCA Tablets\n ],\n [e, [o, \"RCA\"], [i, b]],\n [\n /\\b(venue[\\d ]{2,7}) b/i\n // Dell Venue Tablets\n ],\n [e, [o, \"Dell\"], [i, b]],\n [\n /\\b(q(?:mv|ta)\\w+) b/i\n // Verizon Tablet\n ],\n [e, [o, \"Verizon\"], [i, b]],\n [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i\n // Barnes & Noble Tablet\n ],\n [e, [o, \"Barnes & Noble\"], [i, b]],\n [\n /\\b(tm\\d{3}\\w+) b/i\n ],\n [e, [o, \"NuVision\"], [i, b]],\n [\n /\\b(k88) b/i\n // ZTE K Series Tablet\n ],\n [e, [o, \"ZTE\"], [i, b]],\n [\n /\\b(nx\\d{3}j) b/i\n // ZTE Nubia\n ],\n [e, [o, \"ZTE\"], [i, n]],\n [\n /\\b(gen\\d{3}) b.+49h/i\n // Swiss GEN Mobile\n ],\n [e, [o, \"Swiss\"], [i, n]],\n [\n /\\b(zur\\d{3}) b/i\n // Swiss ZUR Tablet\n ],\n [e, [o, \"Swiss\"], [i, b]],\n [\n /\\b((zeki)?tb.*\\b) b/i\n // Zeki Tablets\n ],\n [e, [o, \"Zeki\"], [i, b]],\n [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i\n // Dragon Touch Tablet\n ],\n [[o, \"Dragon Touch\"], e, [i, b]],\n [\n /\\b(ns-?\\w{0,9}) b/i\n // Insignia Tablets\n ],\n [e, [o, \"Insignia\"], [i, b]],\n [\n /\\b((nxa|next)-?\\w{0,9}) b/i\n // NextBook Tablets\n ],\n [e, [o, \"NextBook\"], [i, b]],\n [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i\n // Voice Xtreme Phones\n ],\n [[o, \"Voice\"], e, [i, n]],\n [\n /\\b(lvtel\\-)?(v1[12]) b/i\n // LvTel Phones\n ],\n [[o, \"LvTel\"], e, [i, n]],\n [\n /\\b(ph-1) /i\n // Essential PH-1\n ],\n [e, [o, \"Essential\"], [i, n]],\n [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i\n // Envizen Tablets\n ],\n [e, [o, \"Envizen\"], [i, b]],\n [\n /\\b(trio[-\\w\\. ]+) b/i\n // MachSpeed Tablets\n ],\n [e, [o, \"MachSpeed\"], [i, b]],\n [\n /\\btu_(1491) b/i\n // Rotor Tablets\n ],\n [e, [o, \"Rotor\"], [i, b]],\n [\n /(shield[\\w ]+) b/i\n // Nvidia Shield Tablets\n ],\n [e, [o, \"Nvidia\"], [i, b]],\n [\n /(sprint) (\\w+)/i\n // Sprint Phones\n ],\n [o, e, [i, n]],\n [\n /(kin\\.[onetw]{3})/i\n // Microsoft Kin\n ],\n [[e, /\\./g, \" \"], [o, ti], [i, n]],\n [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i\n // Zebra\n ],\n [e, [o, si], [i, b]],\n [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ],\n [e, [o, si], [i, n]],\n [\n ///////////////////\n // SMARTTVS\n ///////////////////\n /smart-tv.+(samsung)/i\n // Samsung\n ],\n [o, [i, h]],\n [\n /hbbtv.+maple;(\\d+)/i\n ],\n [[e, /^/, \"SmartTV\"], [o, Z], [i, h]],\n [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n // LG SmartTV\n ],\n [[o, ai], [i, h]],\n [\n /(apple) ?tv/i\n // Apple TV\n ],\n [o, [e, D + \" TV\"], [i, h]],\n [\n /crkey/i\n // Google Chromecast\n ],\n [[e, H + \"cast\"], [o, Y], [i, h]],\n [\n /droid.+aft(\\w+)( bui|\\))/i\n // Fire TV\n ],\n [e, [o, G], [i, h]],\n [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i\n // Sharp\n ],\n [e, [o, hi], [i, h]],\n [\n /(bravia[\\w ]+)( bui|\\))/i\n // Sony\n ],\n [e, [o, J], [i, h]],\n [\n /(mitv-\\w{5}) bui/i\n // Xiaomi\n ],\n [e, [o, ri], [i, h]],\n [\n /Hbbtv.*(technisat) (.*);/i\n // TechniSAT\n ],\n [o, e, [i, h]],\n [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,\n // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i\n // HbbTV devices\n ],\n [[o, ni], [e, ni], [i, h]],\n [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n // SmartTV from Unidentified Vendors\n ],\n [[i, h]],\n [\n ///////////////////\n // CONSOLES\n ///////////////////\n /(ouya)/i,\n // Ouya\n /(nintendo) ([wids3utch]+)/i\n // Nintendo\n ],\n [o, e, [i, B]],\n [\n /droid.+; (shield) bui/i\n // Nvidia\n ],\n [e, [o, \"Nvidia\"], [i, B]],\n [\n /(playstation [345portablevi]+)/i\n // Playstation\n ],\n [e, [o, J], [i, B]],\n [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i\n // Microsoft Xbox\n ],\n [e, [o, ti], [i, B]],\n [\n ///////////////////\n // WEARABLES\n ///////////////////\n /((pebble))app/i\n // Pebble\n ],\n [o, e, [i, N]],\n [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i\n // Apple Watch\n ],\n [e, [o, D], [i, N]],\n [\n /droid.+; (glass) \\d/i\n // Google Glass\n ],\n [e, [o, Y], [i, N]],\n [\n /droid.+; (wt63?0{2,3})\\)/i\n ],\n [e, [o, si], [i, N]],\n [\n /(quest( 2| pro)?)/i\n // Oculus Quest\n ],\n [e, [o, fi], [i, N]],\n [\n ///////////////////\n // EMBEDDED\n ///////////////////\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i\n // Tesla\n ],\n [o, [i, ei]],\n [\n /(aeobc)\\b/i\n // Echo Dot\n ],\n [e, [o, G], [i, ei]],\n [\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i\n // Android Phones from Unidentified Vendors\n ],\n [e, [i, n]],\n [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i\n // Android Tablets from Unidentified Vendors\n ],\n [e, [i, b]],\n [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i\n // Unidentifiable Tablet\n ],\n [[i, b]],\n [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i\n // Unidentifiable Mobile\n ],\n [[i, n]],\n [\n /(android[-\\w\\. ]{0,9});.+buil/i\n // Generic Android Device\n ],\n [e, [o, \"Generic\"]]\n ],\n engine: [\n [\n /windows.+ edge\\/([\\w\\.]+)/i\n // EdgeHTML\n ],\n [t, [a, yi + \"HTML\"]],\n [\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i\n // Blink\n ],\n [t, [a, \"Blink\"]],\n [\n /(presto)\\/([\\w\\.]+)/i,\n // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,\n // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i,\n // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,\n // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,\n // iCab\n /\\b(libweb)/i\n ],\n [a, t],\n [\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i\n // Gecko\n ],\n [t, a]\n ],\n os: [\n [\n // Windows\n /microsoft (windows) (vista|xp)/i\n // Windows (iTunes)\n ],\n [a, t],\n [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i\n // Windows Phone\n ],\n [a, [t, bi, Oi]],\n [\n /windows nt 6\\.2; (arm)/i,\n // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ],\n [[t, bi, Oi], [a, \"Windows\"]],\n [\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,\n // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ],\n [[t, /_/g, \".\"], [a, \"iOS\"]],\n [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i\n // Mac OS\n ],\n [[a, gi], [t, /_/g, \".\"]],\n [\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i\n // Android-x86/HarmonyOS\n ],\n [t, a],\n [\n // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i,\n // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i,\n // Tizen/KaiOS\n /\\((series40);/i\n // Series 40\n ],\n [a, t],\n [\n /\\(bb(10);/i\n // BlackBerry 10\n ],\n [t, [a, mi]],\n [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i\n // Symbian\n ],\n [t, [a, \"Symbian\"]],\n [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i\n // Firefox OS\n ],\n [t, [a, X + \" OS\"]],\n [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i\n // WebOS\n ],\n [t, [a, \"webOS\"]],\n [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i\n // watchOS\n ],\n [t, [a, \"watchOS\"]],\n [\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i\n // Google Chromecast\n ],\n [t, [a, H + \"cast\"]],\n [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i\n // Chromium OS\n ],\n [[a, vi], t],\n [\n // Smart TVs\n /panasonic;(viera)/i,\n // Panasonic Viera\n /(netrange)mmh/i,\n // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,\n // NetTV\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i,\n // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i,\n // Microsoft Xbox (360, One, X, S, Series X, Series S)\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,\n // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i,\n // Mint\n /(mageia|vectorlinux)[; ]/i,\n // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i,\n // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i,\n // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,\n // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i\n // Haiku\n ],\n [a, t],\n [\n /(sunos) ?([\\w\\.\\d]*)/i\n // Solaris\n ],\n [[a, \"Solaris\"], t],\n [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,\n // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,\n // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,\n // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i\n // UNIX\n ],\n [a, t]\n ]\n }, g = function(c, l) {\n if (typeof c === ii && (l = c, c = m), !(this instanceof g))\n return new g(c, l).getResult();\n var s = typeof A !== V && A.navigator ? A.navigator : m, d = c || (s && s.userAgent ? s.userAgent : M), y = s && s.userAgentData ? s.userAgentData : m, O = l ? Ti(ki, l) : ki, w = s && s.userAgent == d;\n return this.getBrowser = function() {\n var r = {};\n return r[a] = m, r[t] = m, L.call(r, d, O.browser), r[li] = _i(r[t]), w && s && s.brave && typeof s.brave.isBrave == R && (r[a] = \"Brave\"), r;\n }, this.getCPU = function() {\n var r = {};\n return r[v] = m, L.call(r, d, O.cpu), r;\n }, this.getDevice = function() {\n var r = {};\n return r[o] = m, r[e] = m, r[i] = m, L.call(r, d, O.device), w && !r[i] && y && y.mobile && (r[i] = n), w && r[e] == \"Macintosh\" && s && typeof s.standalone !== V && s.maxTouchPoints && s.maxTouchPoints > 2 && (r[e] = \"iPad\", r[i] = b), r;\n }, this.getEngine = function() {\n var r = {};\n return r[a] = m, r[t] = m, L.call(r, d, O.engine), r;\n }, this.getOS = function() {\n var r = {};\n return r[a] = m, r[t] = m, L.call(r, d, O.os), w && !r[a] && y && y.platform != \"Unknown\" && (r[a] = y.platform.replace(/chrome os/i, vi).replace(/macos/i, gi)), r;\n }, this.getResult = function() {\n return {\n ua: this.getUA(),\n browser: this.getBrowser(),\n engine: this.getEngine(),\n os: this.getOS(),\n device: this.getDevice(),\n cpu: this.getCPU()\n };\n }, this.getUA = function() {\n return d;\n }, this.setUA = function(r) {\n return d = typeof r === j && r.length > oi ? ni(r, oi) : r, this;\n }, this.setUA(d), this;\n };\n g.VERSION = F, g.BROWSER = Q([a, t, li]), g.CPU = Q([v]), g.DEVICE = Q([e, o, i, B, n, h, b, N, ei]), g.ENGINE = g.OS = Q([a, t]), E.exports && (q = E.exports = g), q.UAParser = g;\n var C = typeof A !== V && (A.jQuery || A.Zepto);\n if (C && !C.ua) {\n var $ = new g();\n C.ua = $.getResult(), C.ua.get = function() {\n return $.getUA();\n }, C.ua.set = function(c) {\n $.setUA(c);\n var l = $.getResult();\n for (var s in l)\n C.ua[s] = l[s];\n };\n }\n })(typeof window == \"object\" ? window : Ni);\n})(wi, wi.exports);\nvar Pi = wi.exports;\nconst Bi = /* @__PURE__ */ Ci(Pi), S = {\n CONSOLE: \"console\",\n DESKTOP: void 0,\n EMBEDDED: \"embedded\",\n MOBILE: \"mobile\",\n SMART_TV: \"smarttv\",\n TABLET: \"tablet\",\n WEARABLE: \"wearable\"\n}, _ = {\n ANDROID: \"Android\",\n IOS: \"iOS\",\n LINUX: \"Linux\",\n MAC_OS: \"Mac OS\",\n WINDOWS_PHONE: \"Windows Phone\",\n WINDOWS: \"Windows\"\n}, p = {\n CHROME: \"Chrome\",\n CHROMIUM: \"Chromium\",\n EDGE_CHROMIUM: \"Edge Chromium\",\n EDGE: \"Edge\",\n FIREFOX: \"Firefox\",\n IE: \"IE\",\n INTERNET_EXPLORER: \"Internet Explorer\",\n MIUI: \"MIUI Browser\",\n MOBILE_SAFARI: \"Mobile Safari\",\n OPERA: \"Opera\",\n SAFARI: \"Safari\",\n SAMSUNG_BROWSER: \"Samsung Browser\",\n YANDEX: \"Yandex\"\n}, z = new Bi(), f = z.getDevice(), x = z.getOS(), u = z.getBrowser(), Si = z.getEngine(), P = z.getUA(), W = () => /iPad/.test(P), Ai = () => x.name === _.WINDOWS && x.version === \"10\" && P.indexOf(\"Edg/\") !== -1, Di = x.name === _.ANDROID, Ui = u.name === p.CHROME, Li = u.name === p.CHROMIUM, zi = f.type === S.CONSOLE, Wi = f.type === S.DESKTOP, qi = u.name === p.EDGE || Ai(), Fi = Ai(), Vi = u.name === p.EDGE, ji = /electron/.test(P.toLowerCase()), Gi = f.type === S.EMBEDDED, Hi = u.name === p.FIREFOX, Xi = u.name === p.INTERNET_EXPLORER || u.name === p.IE, Yi = x.name === _.IOS || W(), Ki = W(), Zi = /iPhone/.test(P), Ji = /iPod/.test(P), Qi = x.name === _.LINUX, $i = x.name === _.MAC_OS, ie = u.name === p.MIUI, ee = f.type === S.MOBILE || f.type === S.TABLET || W(), oe = f.type === S.MOBILE, ae = u.name === p.MOBILE_SAFARI || W(), te = u.name === p.OPERA, re = u.name === p.SAFARI || u.name === p.MOBILE_SAFARI, se = u.name === p.SAMSUNG_BROWSER, ne = f.type === S.SMART_TV, be = f.type === S.TABLET || W(), ce = f.type === S.WEARABLE, we = x.name === _.WINDOWS, le = x.name === _.WINDOWS_PHONE, de = u.name === p.YANDEX, pe = () => u.name, he = () => u.version, fe = () => f.model, ve = () => f.type || \"desktop\", ge = () => f.vendor, Ee = () => Si.name, Oe = () => Si.version, ke = () => P, xe = () => x.name, Se = () => x.version, me = {\n isAndroid: Di,\n isChrome: Ui,\n isChromium: Li,\n isConsole: zi,\n isDesktop: Wi,\n isEdge: qi,\n isEdgeChromium: Fi,\n isEdgeLegacy: Vi,\n isElectron: ji,\n isEmbedded: Gi,\n isFirefox: Hi,\n isIE: Xi,\n isIOS: Yi,\n isIPad: Ki,\n isIPhone: Zi,\n isIPod: Ji,\n isLinux: Qi,\n isMacOS: $i,\n isMIUI: ie,\n isMobile: ee,\n isMobileOnly: oe,\n isMobileSafari: ae,\n isOpera: te,\n isSafari: re,\n isSamsungBrowser: se,\n isSmartTV: ne,\n isTablet: be,\n isWearable: ce,\n isWindows: we,\n isWinPhone: le,\n isYandex: de\n}, Ae = {\n install: (E) => {\n for (const [q, A] of Object.entries(me)) {\n const m = `${q.substring(2)}View`, F = Ii({\n name: m,\n props: {\n tagName: { type: String, default: \"div\" }\n },\n setup(M, { slots: I }) {\n return () => {\n var R;\n return A ? Ri(M.tagName, (R = I.default) == null ? void 0 : R.call(I)) : null;\n };\n }\n });\n E.component(F.name, F);\n }\n }\n};\nexport {\n pe as browserName,\n he as browserVersion,\n Ae as default,\n fe as deviceModel,\n ve as deviceType,\n ge as deviceVendor,\n Ee as engineName,\n Oe as engineVersion,\n ke as getUA,\n Di as isAndroid,\n Ui as isChrome,\n Li as isChromium,\n zi as isConsole,\n Wi as isDesktop,\n qi as isEdge,\n Fi as isEdgeChromium,\n Vi as isEdgeLegacy,\n ji as isElectron,\n Gi as isEmbedded,\n Hi as isFirefox,\n Xi as isIE,\n Yi as isIOS,\n Ki as isIPad,\n Zi as isIPhone,\n Ji as isIPod,\n Qi as isLinux,\n ie as isMIUI,\n $i as isMacOS,\n ee as isMobile,\n oe as isMobileOnly,\n ae as isMobileSafari,\n te as isOpera,\n re as isSafari,\n se as isSamsungBrowser,\n ne as isSmartTV,\n be as isTablet,\n ce as isWearable,\n le as isWinPhone,\n we as isWindows,\n de as isYandex,\n xe as osName,\n Se as osVersion\n};\n","\n\n\n \n
\n This is a remote device. \n UUID: {{ device.uuid() }} \n \n\n
\n
\n Server \n \n \n\n
\n Connected to: {{ server.host }} \n
\n\n \n
Authorized \n
Not linked \n
\n \n
Access requested \n
\n
\n \n \n Checking server for link...\n
\n \n
\n \n Check for server link\n \n \n
\n \n
\n \n Disconnect\n \n
\n
\n \n \n
Server link pin: \n \n \n \n \n
\n \n\n\n\n\n"],"names":["IconDeviceDesktop","createVueComponent","IconDeviceMobile","IconDeviceTablet","IconDeviceUnknown","IconLinkOff","IconPlugConnectedX","IconReload","canPromise","toSJISFunction","CODEWORDS_COUNT","utils","version","data","digit","f","kanji","exports","fromString","string","level","value","defaultValue","BitBuffer","index","bufIndex","num","length","i","bit","bitBuffer","BitMatrix","size","row","col","reserved","bitMatrix","getSymbolSize","require$$0","posCount","intervals","positions","coords","pos","posLength","j","FINDER_PATTERN_SIZE","finderPattern","PenaltyScores","mask","points","sameCountCol","sameCountRow","lastCol","lastRow","module","last","bitsCol","bitsRow","darkCount","modulesCount","getMaskAt","maskPattern","pattern","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","p","penalty","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","errorCorrectionCode","errorCorrectionLevel","EXP_TABLE","LOG_TABLE","x","galoisField","y","GF","p1","p2","coeff","divident","divisor","result","offset","degree","poly","Polynomial","ReedSolomonEncoder","paddedData","remainder","start","buff","reedSolomonEncoder","versionCheck","numeric","alphanumeric","byte","regex","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","VersionCheck","Regex","require$$1","mode","dataStr","Utils","ECCode","require$$2","Mode","require$$3","require$$4","G18","G18_BCH","getBestVersionForDataLength","currentVersion","getReservedBitsCount","getTotalBitsFromDataArray","segments","totalBits","reservedBits","getBestVersionForMixedData","totalCodewords","ecTotalCodewords","dataTotalCodewordsBits","usableBits","seg","ecl","d","G15","G15_MASK","G15_BCH","formatInfo","NumericData","group","remainingNum","numericData","ALPHA_NUM_CHARS","AlphanumericData","alphanumericData","ByteData","l","byteData","KanjiData","kanjiData","dijkstra","graph","s","predecessors","costs","open","closest","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_e","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","first_visit","msg","nodes","opts","T","t","key","a","b","cost","item","require$$5","require$$6","require$$7","getStringByteLength","getSegments","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","s1","s2","obj","getSegmentBitsLength","mergeSegments","segs","acc","curr","prevSeg","buildNodes","buildGraph","table","prevNodeIds","nodeGroup","currentNodeIds","node","n","prevNodeId","buildSingleSegment","modesHint","bestMode","array","path","optimizedSegs","AlignmentPattern","FinderPattern","MaskPattern","require$$8","Version","require$$9","FormatInfo","require$$10","require$$11","Segments","require$$12","setupFinderPattern","matrix","r","c","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","bits","mod","setupFormatInfo","setupData","inc","bitIndex","byteIndex","dark","createData","buffer","remainingByte","createCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup2","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","createSymbol","estimatedVersion","rawSegments","bestVersion","dataBits","moduleCount","modules","qrcode","options","hex2rgba","hex","hexCode","hexValue","margin","width","scale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","iSrc","jSrc","clearCanvas","ctx","canvas","getCanvasElement","qrData","canvasEl","image","type","rendererOpts","getColorAttrib","color","attrib","alpha","svgCmd","cmd","qrToPath","moveBy","newRow","lineLength","svgTag","cb","qrcodesize","bg","viewBox","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","text","args","argsNum","isLastArgCb","resolve","reject","e","browser","_","device","useDeviceStore","pinDialog","ref","serverQr","server","reactive","remote","onMounted","mutation","state","getIp","onUpdated","serverIP","error","startLink","deviceUuid","pin","pollLink","resetPinLink","pollInterval","axios","appUrl","unlinkDevice","id","Ni","Ci","E","wi","q","A","m","F","M","I","R","V","ii","li","o","B","h","N","ei","oi","G","D","di","mi","H","yi","X","Y","ui","ai","ti","pi","K","Z","hi","J","ri","si","fi","vi","gi","Ti","Q","Ei","U","_i","ni","L","O","w","k","ci","xi","bi","Mi","Oi","ki","g","C","$","Pi","Bi","S","z","P","W","Ai","fe","ve","ge","linkPinDialog","linkPinInput","checkServerStatus","request","status","requestAccess","deviceName","deviceVendor","deviceModel","deviceType","pingLink","encryptedKey","decryptKey","decryptedKey","decryptAES","disonnectFromServer","AuthCall"],"mappings":"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C,EACxB,CACE,6BAED,EACD,CAAC,CAAC3M,EAAG,KAAM,GAAG,EAAGF,CAAC,EAClB,CACE,wBAED,EACD,CAACA,EAAG,CAACE,EAAG,gBAAgB,CAAC,EACzB,CACE,0BAED,EACD,CAAC,CAACA,EAAG,cAAc,EAAGF,CAAC,EACvB,CACE,gCAEA,iDAEA,4CAED,EACD,CAACE,EAAGF,CAAC,EACL,CACE,eAEA,oBAED,EACD,CAACE,CAAC,EACF,CAEE,6DAED,EACD,CAAC,CAACA,EAAGgN,CAAE,EAAGlN,CAAC,EACX,CACE,uBAEA,uCAEA,kCAEA,4BAEA,4BAEA,6BAEA,+CAED,EACD,CAACE,EAAGF,CAAC,EACL,CACE,8BAED,EACD,CAACA,EAAG,CAACE,EAAG,KAAK,CAAC,EACd,CACE,4CAED,EACD,CAACF,EAAG,CAACE,EAAG,QAAQ,CAAC,EACjB,CACE,kCAED,EACD,CAACF,EAAG,CAACE,EAAGkM,EAAI,WAAW,CAAC,EACxB,CACE,6BAED,EACD,CAAC,CAAClM,EAAGkM,EAAI,UAAU,EAAGpM,CAAC,EACvB,CACE,yDAED,EACD,CAACA,EAAG,CAACE,EAAG,WAAaH,CAAC,CAAC,EACvB,CACE,6DAED,EACD,CAACG,EAAGF,CAAC,EACL,CACE,8CAED,EACD,CAACA,EAAG,CAACE,EAAG,eAAe,CAAC,EACxB,CACE,oDAED,EACD,CAACF,EAAGE,CAAC,EACL,CACE,8CAED,EACD,CAACA,EAAG,CAACF,EAAGiO,GAAIC,EAAE,CAAC,EACf,CACE,4BACD,EACD,CAAChO,EAAGF,CAAC,EACL,CAEE,sCAED,EACD,CAAC,CAACE,EAAG,UAAU,EAAGF,CAAC,EACnB,CACE,qCAED,EACD,CAACA,EAAG,CAACE,EAAGoM,EAAI,UAAU,CAAC,EACvB,CACE,6BAEA,cAEA,mGAEA,+FAEA,wBAEA,2CAGA,wHAEA,uBAEA,oBAED,EACD,CAACpM,EAAGF,CAAC,EACL,CACE,sBAED,EACD,CAACE,EAAG,CAACF,EAAG,eAAgB,EAAE,CAAC,CAC5B,EACD,IAAK,CACH,CACE,+CA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,36]}
\ No newline at end of file
diff --git a/public/assets/DevicesView-DqasecOn.js b/public/assets/DevicesView-DqasecOn.js
new file mode 100644
index 0000000..15fe568
--- /dev/null
+++ b/public/assets/DevicesView-DqasecOn.js
@@ -0,0 +1,1758 @@
+import { a as createVueComponent, _ as _export_sfc, c as createElementBlock, o as openBlock, s as createBlock, p as createCommentVNode, v as renderSlot, u as unref, q as normalizeClass, z as useDeviceStore, m as ref, r as reactive, b as onMounted, h as createVNode, f as createBaseVNode, w as withCtx, t as toDisplayString, i as createTextVNode, B as IconDevices, F as Fragment, g as renderList, d as axios, e as appUrl, n as onUpdated, j as withModifiers, x as withDirectives, y as vModelText, A as AuthCall, C as decryptAES, k as isLocal } from "./index-GNAKlyBz.js";
+import { _ as _sfc_main$4, a as _sfc_main$5 } from "./DialogComp-Ba5-BUTe.js";
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconAlertTriangle = createVueComponent("outline", "alert-triangle", "IconAlertTriangle", [["path", { "d": "M12 9v4", "key": "svg-0" }], ["path", { "d": "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconCheck = createVueComponent("outline", "check", "IconCheck", [["path", { "d": "M5 12l5 5l10 -10", "key": "svg-0" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDeviceDesktop = createVueComponent("outline", "device-desktop", "IconDeviceDesktop", [["path", { "d": "M3 5a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1v-10z", "key": "svg-0" }], ["path", { "d": "M7 20h10", "key": "svg-1" }], ["path", { "d": "M9 16v4", "key": "svg-2" }], ["path", { "d": "M15 16v4", "key": "svg-3" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDeviceMobile = createVueComponent("outline", "device-mobile", "IconDeviceMobile", [["path", { "d": "M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14z", "key": "svg-0" }], ["path", { "d": "M11 4h2", "key": "svg-1" }], ["path", { "d": "M12 17v.01", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDeviceTablet = createVueComponent("outline", "device-tablet", "IconDeviceTablet", [["path", { "d": "M5 4a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v16a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1v-16z", "key": "svg-0" }], ["path", { "d": "M11 17a1 1 0 1 0 2 0a1 1 0 0 0 -2 0", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDeviceUnknown = createVueComponent("outline", "device-unknown", "IconDeviceUnknown", [["path", { "d": "M5 5a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M12 16v.01", "key": "svg-1" }], ["path", { "d": "M12 13a2 2 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconExclamationCircle = createVueComponent("outline", "exclamation-circle", "IconExclamationCircle", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9v4", "key": "svg-1" }], ["path", { "d": "M12 16v.01", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconInfoCircle = createVueComponent("outline", "info-circle", "IconInfoCircle", [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9h.01", "key": "svg-1" }], ["path", { "d": "M11 12h1v4h1", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconKey = createVueComponent("outline", "key", "IconKey", [["path", { "d": "M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z", "key": "svg-0" }], ["path", { "d": "M15 9h.01", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconLinkOff = createVueComponent("outline", "link-off", "IconLinkOff", [["path", { "d": "M9 15l3 -3m2 -2l1 -1", "key": "svg-0" }], ["path", { "d": "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", "key": "svg-1" }], ["path", { "d": "M3 3l18 18", "key": "svg-2" }], ["path", { "d": "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", "key": "svg-3" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconLink = createVueComponent("outline", "link", "IconLink", [["path", { "d": "M9 15l6 -6", "key": "svg-0" }], ["path", { "d": "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", "key": "svg-1" }], ["path", { "d": "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconPlugConnectedX = createVueComponent("outline", "plug-connected-x", "IconPlugConnectedX", [["path", { "d": "M20 16l-4 4", "key": "svg-0" }], ["path", { "d": "M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z", "key": "svg-1" }], ["path", { "d": "M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z", "key": "svg-2" }], ["path", { "d": "M3 21l2.5 -2.5", "key": "svg-3" }], ["path", { "d": "M18.5 5.5l2.5 -2.5", "key": "svg-4" }], ["path", { "d": "M10 11l-2 2", "key": "svg-5" }], ["path", { "d": "M13 14l-2 2", "key": "svg-6" }], ["path", { "d": "M16 16l4 4", "key": "svg-7" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconReload = createVueComponent("outline", "reload", "IconReload", [["path", { "d": "M19.933 13.041a8 8 0 1 1 -9.925 -8.788c3.899 -1 7.935 1.007 9.425 4.747", "key": "svg-0" }], ["path", { "d": "M20 4v5h-5", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconServer = createVueComponent("outline", "server", "IconServer", [["path", { "d": "M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-0" }], ["path", { "d": "M3 12m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-1" }], ["path", { "d": "M7 8l0 .01", "key": "svg-2" }], ["path", { "d": "M7 16l0 .01", "key": "svg-3" }]]);
+const _sfc_main$3 = {
+ __name: "AlertComp",
+ props: {
+ type: String
+ // info, success, warning, error
+ },
+ setup(__props) {
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", {
+ class: normalizeClass(`alert alert__${__props.type}`)
+ }, [
+ __props.type === "info" ? (openBlock(), createBlock(unref(IconInfoCircle), { key: 0 })) : createCommentVNode("", true),
+ __props.type === "success" ? (openBlock(), createBlock(unref(IconCheck), { key: 1 })) : createCommentVNode("", true),
+ __props.type === "warning" ? (openBlock(), createBlock(unref(IconExclamationCircle), { key: 2 })) : createCommentVNode("", true),
+ __props.type === "error" ? (openBlock(), createBlock(unref(IconAlertTriangle), { key: 3 })) : createCommentVNode("", true),
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
+ ], 2);
+ };
+ }
+};
+const AlertComp = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-87f6de25"]]);
+const _hoisted_1$2 = { class: "device-overview" };
+const _hoisted_2$2 = { class: "grid" };
+const _hoisted_3$2 = { class: "mcrm-block block__light flex flex-wrap items-start gap-4" };
+const _hoisted_4$2 = { class: "w-full flex gap-4 items-center justify-between mb-4" };
+const _hoisted_5$1 = { class: "flex gap-4" };
+const _hoisted_6$1 = { class: "grid gap-2" };
+const _hoisted_7$1 = { class: "grid grid-cols-[auto_1fr] gap-2" };
+const _hoisted_8$1 = { class: "w-full truncate" };
+const _hoisted_9 = {
+ key: 1,
+ class: "grid w-full gap-4"
+};
+const _hoisted_10 = { class: "grid gap-4" };
+const _hoisted_11 = { class: "text-4xl font-mono tracking-wide" };
+const _sfc_main$2 = {
+ __name: "ServerView",
+ setup(__props) {
+ const device = useDeviceStore();
+ const pinDialog = ref();
+ const remote = reactive({ devices: [], pinlink: false });
+ onMounted(() => {
+ device.serverGetRemotes();
+ device.$subscribe((mutation, state) => {
+ if (Object.keys(state.remote).length) remote.devices = device.remote;
+ });
+ });
+ async function startLink(deviceUuid) {
+ const pin = await device.serverStartLink(deviceUuid);
+ remote.pinlink = { uuid: deviceUuid, pin };
+ pinDialog.value.toggleDialog(true);
+ pollLink();
+ setTimeout(() => {
+ resetPinLink();
+ }, 6e4);
+ }
+ function pollLink() {
+ const pollInterval = setInterval(() => {
+ axios.post(appUrl() + "/device/link/poll", { uuid: remote.pinlink.uuid }).then((data) => {
+ if (!data.data) {
+ clearInterval(pollInterval);
+ resetPinLink();
+ device.serverGetRemotes();
+ }
+ });
+ }, 1e3);
+ }
+ function resetPinLink() {
+ remote.pinlink = false;
+ if (pinDialog.value) pinDialog.value.toggleDialog(false);
+ }
+ function unlinkDevice(id) {
+ axios.post(appUrl() + "/device/link/remove", { uuid: id }).then((data) => {
+ if (data.data) device.serverGetRemotes();
+ });
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$2, [
+ createVNode(AlertComp, { type: "info" }, {
+ default: withCtx(() => [
+ createBaseVNode("div", _hoisted_2$2, [
+ _cache[1] || (_cache[1] = createBaseVNode("strong", null, "This is a server!", -1)),
+ createBaseVNode("em", null, "UUID: " + toDisplayString(unref(device).uuid()), 1)
+ ])
+ ]),
+ _: 1
+ }),
+ createBaseVNode("div", _hoisted_3$2, [
+ createBaseVNode("h4", _hoisted_4$2, [
+ createBaseVNode("span", _hoisted_5$1, [
+ createVNode(unref(IconDevices)),
+ _cache[2] || (_cache[2] = createTextVNode("Remote devices "))
+ ]),
+ createVNode(_sfc_main$4, {
+ variant: "primary",
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(device).serverGetRemotes())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconReload))
+ ]),
+ _: 1
+ })
+ ]),
+ Object.keys(remote.devices).length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(remote.devices, (remoteDevice, id) => {
+ return openBlock(), createElementBlock("div", {
+ class: "mcrm-block block__dark block-size__sm w-64 grid !gap-4 content-start",
+ key: id
+ }, [
+ createBaseVNode("div", _hoisted_6$1, [
+ createBaseVNode("h5", _hoisted_7$1, [
+ remoteDevice.settings.type == "unknown" ? (openBlock(), createBlock(unref(IconDeviceUnknown), { key: 0 })) : createCommentVNode("", true),
+ remoteDevice.settings.type == "mobile" ? (openBlock(), createBlock(unref(IconDeviceMobile), { key: 1 })) : createCommentVNode("", true),
+ remoteDevice.settings.type == "tablet" ? (openBlock(), createBlock(unref(IconDeviceTablet), { key: 2 })) : createCommentVNode("", true),
+ remoteDevice.settings.type == "desktop" ? (openBlock(), createBlock(unref(IconDeviceDesktop), { key: 3 })) : createCommentVNode("", true),
+ createBaseVNode("span", _hoisted_8$1, toDisplayString(remoteDevice.settings.name), 1)
+ ]),
+ createBaseVNode("em", null, toDisplayString(id), 1)
+ ]),
+ remoteDevice.key ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
+ createVNode(AlertComp, { type: "success" }, {
+ default: withCtx(() => _cache[3] || (_cache[3] = [
+ createTextVNode("Authorized")
+ ])),
+ _: 1
+ }),
+ createVNode(_sfc_main$4, {
+ variant: "danger",
+ onClick: ($event) => unlinkDevice(id)
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconLinkOff)),
+ _cache[4] || (_cache[4] = createTextVNode("Unlink device "))
+ ]),
+ _: 2
+ }, 1032, ["onClick"])
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
+ createVNode(AlertComp, { type: "warning" }, {
+ default: withCtx(() => _cache[5] || (_cache[5] = [
+ createTextVNode("Unauthorized")
+ ])),
+ _: 1
+ }),
+ createVNode(_sfc_main$4, {
+ variant: "primary",
+ onClick: ($event) => startLink(id)
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconLink)),
+ _cache[6] || (_cache[6] = createTextVNode("Link device "))
+ ]),
+ _: 2
+ }, 1032, ["onClick"])
+ ], 64)),
+ remote.pinlink.uuid == id ? (openBlock(), createBlock(AlertComp, {
+ key: 2,
+ type: "info"
+ }, {
+ default: withCtx(() => [
+ createTextVNode("One time pin: " + toDisplayString(remote.pinlink.pin), 1)
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ]);
+ }), 128)) : (openBlock(), createElementBlock("div", _hoisted_9, _cache[7] || (_cache[7] = [
+ createBaseVNode("em", { class: "text-slate-300" }, "No remote devices", -1)
+ ]))),
+ createVNode(_sfc_main$5, {
+ ref_key: "pinDialog",
+ ref: pinDialog
+ }, {
+ content: withCtx(() => [
+ createBaseVNode("div", _hoisted_10, [
+ _cache[8] || (_cache[8] = createBaseVNode("h3", null, "Pin code", -1)),
+ createBaseVNode("span", _hoisted_11, toDisplayString(remote.pinlink.pin), 1)
+ ])
+ ]),
+ _: 1
+ }, 512)
+ ])
+ ]);
+ };
+ }
+};
+const ServerView = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-f4165abd"]]);
+var Ni = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
+function Ci(E) {
+ return E && E.__esModule && Object.prototype.hasOwnProperty.call(E, "default") ? E.default : E;
+}
+var wi = { exports: {} };
+(function(E, q) {
+ (function(A, m) {
+ var F = "1.0.37", M = "", I = "?", R = "function", V = "undefined", ii = "object", j = "string", li = "major", e = "model", a = "name", i = "type", o = "vendor", t = "version", v = "architecture", B = "console", n = "mobile", b = "tablet", h = "smarttv", N = "wearable", ei = "embedded", oi = 500, G = "Amazon", D = "Apple", di = "ASUS", mi = "BlackBerry", T = "Browser", H = "Chrome", yi = "Edge", X = "Firefox", Y = "Google", ui = "Huawei", ai = "LG", ti = "Microsoft", pi = "Motorola", K = "Opera", Z = "Samsung", hi = "Sharp", J = "Sony", ri = "Xiaomi", si = "Zebra", fi = "Facebook", vi = "Chromium OS", gi = "Mac OS", Ti = function(c, l) {
+ var s = {};
+ for (var d in c)
+ l[d] && l[d].length % 2 === 0 ? s[d] = l[d].concat(c[d]) : s[d] = c[d];
+ return s;
+ }, Q = function(c) {
+ for (var l = {}, s = 0; s < c.length; s++)
+ l[c[s].toUpperCase()] = c[s];
+ return l;
+ }, Ei = function(c, l) {
+ return typeof c === j ? U(l).indexOf(U(c)) !== -1 : false;
+ }, U = function(c) {
+ return c.toLowerCase();
+ }, _i = function(c) {
+ return typeof c === j ? c.replace(/[^\d\.]/g, M).split(".")[0] : m;
+ }, ni = function(c, l) {
+ if (typeof c === j)
+ return c = c.replace(/^\s\s*/, M), typeof l === V ? c : c.substring(0, oi);
+ }, L = function(c, l) {
+ for (var s = 0, d, y, O, w, r, k; s < l.length && !r; ) {
+ var ci = l[s], xi = l[s + 1];
+ for (d = y = 0; d < ci.length && !r && ci[d]; )
+ if (r = ci[d++].exec(c), r)
+ for (O = 0; O < xi.length; O++)
+ k = r[++y], w = xi[O], typeof w === ii && w.length > 0 ? w.length === 2 ? typeof w[1] == R ? this[w[0]] = w[1].call(this, k) : this[w[0]] = w[1] : w.length === 3 ? typeof w[1] === R && !(w[1].exec && w[1].test) ? this[w[0]] = k ? w[1].call(this, k, w[2]) : m : this[w[0]] = k ? k.replace(w[1], w[2]) : m : w.length === 4 && (this[w[0]] = k ? w[3].call(this, k.replace(w[1], w[2])) : m) : this[w] = k || m;
+ s += 2;
+ }
+ }, bi = function(c, l) {
+ for (var s in l)
+ if (typeof l[s] === ii && l[s].length > 0) {
+ for (var d = 0; d < l[s].length; d++)
+ if (Ei(l[s][d], c))
+ return s === I ? m : s;
+ } else if (Ei(l[s], c))
+ return s === I ? m : s;
+ return c;
+ }, Mi = {
+ "1.0": "/8",
+ "1.2": "/1",
+ "1.3": "/3",
+ "2.0": "/412",
+ "2.0.2": "/416",
+ "2.0.3": "/417",
+ "2.0.4": "/419",
+ "?": "/"
+ }, Oi = {
+ ME: "4.90",
+ "NT 3.11": "NT3.51",
+ "NT 4.0": "NT4.0",
+ 2e3: "NT 5.0",
+ XP: ["NT 5.1", "NT 5.2"],
+ Vista: "NT 6.0",
+ 7: "NT 6.1",
+ 8: "NT 6.2",
+ "8.1": "NT 6.3",
+ 10: ["NT 6.4", "NT 10.0"],
+ RT: "ARM"
+ }, ki = {
+ browser: [
+ [
+ /\b(?:crmo|crios)\/([\w\.]+)/i
+ // Chrome for Android/iOS
+ ],
+ [t, [a, "Chrome"]],
+ [
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
+ // Microsoft Edge
+ ],
+ [t, [a, "Edge"]],
+ [
+ // Presto based
+ /(opera mini)\/([-\w\.]+)/i,
+ // Opera Mini
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
+ // Opera Mobi/Tablet
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
+ // Opera
+ ],
+ [a, t],
+ [
+ /opios[\/ ]+([\w\.]+)/i
+ // Opera mini on iphone >= 8.0
+ ],
+ [t, [a, K + " Mini"]],
+ [
+ /\bopr\/([\w\.]+)/i
+ // Opera Webkit
+ ],
+ [t, [a, K]],
+ [
+ // Mixed
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
+ // Baidu
+ ],
+ [t, [a, "Baidu"]],
+ [
+ /(kindle)\/([\w\.]+)/i,
+ // Kindle
+ /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer
+ // Trident based
+ /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,
+ // Avant/IEMobile/SlimBrowser
+ /(?:ms|\()(ie) ([\w\.]+)/i,
+ // Internet Explorer
+ // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
+ /(heytap|ovi)browser\/([\d\.]+)/i,
+ // Heytap/Ovi
+ /(weibo)__([\d\.]+)/i
+ // Weibo
+ ],
+ [a, t],
+ [
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
+ // UCBrowser
+ ],
+ [t, [a, "UC" + T]],
+ [
+ /microm.+\bqbcore\/([\w\.]+)/i,
+ // WeChat Desktop for Windows Built-in Browser
+ /\bqbcore\/([\w\.]+).+microm/i,
+ /micromessenger\/([\w\.]+)/i
+ // WeChat
+ ],
+ [t, [a, "WeChat"]],
+ [
+ /konqueror\/([\w\.]+)/i
+ // Konqueror
+ ],
+ [t, [a, "Konqueror"]],
+ [
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
+ // IE11
+ ],
+ [t, [a, "IE"]],
+ [
+ /ya(?:search)?browser\/([\w\.]+)/i
+ // Yandex
+ ],
+ [t, [a, "Yandex"]],
+ [
+ /slbrowser\/([\w\.]+)/i
+ // Smart Lenovo Browser
+ ],
+ [t, [a, "Smart Lenovo " + T]],
+ [
+ /(avast|avg)\/([\w\.]+)/i
+ // Avast/AVG Secure Browser
+ ],
+ [[a, /(.+)/, "$1 Secure " + T], t],
+ [
+ /\bfocus\/([\w\.]+)/i
+ // Firefox Focus
+ ],
+ [t, [a, X + " Focus"]],
+ [
+ /\bopt\/([\w\.]+)/i
+ // Opera Touch
+ ],
+ [t, [a, K + " Touch"]],
+ [
+ /coc_coc\w+\/([\w\.]+)/i
+ // Coc Coc Browser
+ ],
+ [t, [a, "Coc Coc"]],
+ [
+ /dolfin\/([\w\.]+)/i
+ // Dolphin
+ ],
+ [t, [a, "Dolphin"]],
+ [
+ /coast\/([\w\.]+)/i
+ // Opera Coast
+ ],
+ [t, [a, K + " Coast"]],
+ [
+ /miuibrowser\/([\w\.]+)/i
+ // MIUI Browser
+ ],
+ [t, [a, "MIUI " + T]],
+ [
+ /fxios\/([-\w\.]+)/i
+ // Firefox for iOS
+ ],
+ [t, [a, X]],
+ [
+ /\bqihu|(qi?ho?o?|360)browser/i
+ // 360
+ ],
+ [[a, "360 " + T]],
+ [
+ /(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i
+ ],
+ [[a, /(.+)/, "$1 " + T], t],
+ [
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser
+ /samsungbrowser\/([\w\.]+)/i
+ // Samsung Internet
+ ],
+ [t, [a, Z + " Internet"]],
+ [
+ /(comodo_dragon)\/([\w\.]+)/i
+ // Comodo Dragon
+ ],
+ [[a, /_/g, " "], t],
+ [
+ /metasr[\/ ]?([\d\.]+)/i
+ // Sogou Explorer
+ ],
+ [t, [a, "Sogou Explorer"]],
+ [
+ /(sogou)mo\w+\/([\d\.]+)/i
+ // Sogou Mobile
+ ],
+ [[a, "Sogou Mobile"], t],
+ [
+ /(electron)\/([\w\.]+) safari/i,
+ // Electron-based App
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
+ // Tesla
+ /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i
+ // QQBrowser/2345 Browser
+ ],
+ [a, t],
+ [
+ /(lbbrowser)/i,
+ // LieBao Browser
+ /\[(linkedin)app\]/i
+ // LinkedIn App for iOS & Android
+ ],
+ [a],
+ [
+ // WebView
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
+ // Facebook App for iOS & Android
+ ],
+ [[a, fi], t],
+ [
+ /(Klarna)\/([\w\.]+)/i,
+ // Klarna Shopping Browser for iOS & Android
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
+ // Kakao App
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
+ // Naver InApp
+ /safari (line)\/([\w\.]+)/i,
+ // Line App for iOS
+ /\b(line)\/([\w\.]+)\/iab/i,
+ // Line App for Android
+ /(alipay)client\/([\w\.]+)/i,
+ // Alipay
+ /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i
+ // Chromium/Instagram/Snapchat
+ ],
+ [a, t],
+ [
+ /\bgsa\/([\w\.]+) .*safari\//i
+ // Google Search Appliance on iOS
+ ],
+ [t, [a, "GSA"]],
+ [
+ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
+ // TikTok
+ ],
+ [t, [a, "TikTok"]],
+ [
+ /headlesschrome(?:\/([\w\.]+)| )/i
+ // Chrome Headless
+ ],
+ [t, [a, H + " Headless"]],
+ [
+ / wv\).+(chrome)\/([\w\.]+)/i
+ // Chrome WebView
+ ],
+ [[a, H + " WebView"], t],
+ [
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
+ // Android Browser
+ ],
+ [t, [a, "Android " + T]],
+ [
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
+ // Chrome/OmniWeb/Arora/Tizen/Nokia
+ ],
+ [a, t],
+ [
+ /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
+ // Mobile Safari
+ ],
+ [t, [a, "Mobile Safari"]],
+ [
+ /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
+ // Safari & Safari Mobile
+ ],
+ [t, a],
+ [
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
+ // Safari < 3.0
+ ],
+ [a, [t, bi, Mi]],
+ [
+ /(webkit|khtml)\/([\w\.]+)/i
+ ],
+ [a, t],
+ [
+ // Gecko based
+ /(navigator|netscape\d?)\/([-\w\.]+)/i
+ // Netscape
+ ],
+ [[a, "Netscape"], t],
+ [
+ /mobile vr; rv:([\w\.]+)\).+firefox/i
+ // Firefox Reality
+ ],
+ [t, [a, X + " Reality"]],
+ [
+ /ekiohf.+(flow)\/([\w\.]+)/i,
+ // Flow
+ /(swiftfox)/i,
+ // Swiftfox
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
+ /(firefox)\/([\w\.]+)/i,
+ // Other Firefox-based
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
+ // Mozilla
+ // Other
+ /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
+ /(links) \(([\w\.]+)/i,
+ // Links
+ /panasonic;(viera)/i
+ // Panasonic Viera
+ ],
+ [a, t],
+ [
+ /(cobalt)\/([\w\.]+)/i
+ // Cobalt
+ ],
+ [a, [t, /master.|lts./, ""]]
+ ],
+ cpu: [
+ [
+ /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
+ // AMD64 (x64)
+ ],
+ [[v, "amd64"]],
+ [
+ /(ia32(?=;))/i
+ // IA32 (quicktime)
+ ],
+ [[v, U]],
+ [
+ /((?:i[346]|x)86)[;\)]/i
+ // IA32 (x86)
+ ],
+ [[v, "ia32"]],
+ [
+ /\b(aarch64|arm(v?8e?l?|_?64))\b/i
+ // ARM64
+ ],
+ [[v, "arm64"]],
+ [
+ /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
+ // ARMHF
+ ],
+ [[v, "armhf"]],
+ [
+ // PocketPC mistakenly identified as PowerPC
+ /windows (ce|mobile); ppc;/i
+ ],
+ [[v, "arm"]],
+ [
+ /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
+ // PowerPC
+ ],
+ [[v, /ower/, M, U]],
+ [
+ /(sun4\w)[;\)]/i
+ // SPARC
+ ],
+ [[v, "sparc"]],
+ [
+ /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
+ ],
+ [[v, U]]
+ ],
+ device: [
+ [
+ //////////////////////////
+ // MOBILES & TABLETS
+ /////////////////////////
+ // Samsung
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
+ ],
+ [e, [o, Z], [i, b]],
+ [
+ /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
+ /samsung[- ]([-\w]+)/i,
+ /sec-(sgh\w+)/i
+ ],
+ [e, [o, Z], [i, n]],
+ [
+ // Apple
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
+ // iPod/iPhone
+ ],
+ [e, [o, D], [i, n]],
+ [
+ /\((ipad);[-\w\),; ]+apple/i,
+ // iPad
+ /applecoremedia\/[\w\.]+ \((ipad)/i,
+ /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
+ ],
+ [e, [o, D], [i, b]],
+ [
+ /(macintosh);/i
+ ],
+ [e, [o, D]],
+ [
+ // Sharp
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
+ ],
+ [e, [o, hi], [i, n]],
+ [
+ // Huawei
+ /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
+ ],
+ [e, [o, ui], [i, b]],
+ [
+ /(?:huawei|honor)([-\w ]+)[;\)]/i,
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
+ ],
+ [e, [o, ui], [i, n]],
+ [
+ // Xiaomi
+ /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
+ // Xiaomi POCO
+ /\b; (\w+) build\/hm\1/i,
+ // Xiaomi Hongmi 'numeric' models
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
+ // Xiaomi Hongmi
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
+ // Xiaomi Redmi
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
+ // Xiaomi Redmi 'numeric' models
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
+ // Xiaomi Mi
+ ],
+ [[e, /_/g, " "], [o, ri], [i, n]],
+ [
+ /oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,
+ // Redmi Pad
+ /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
+ // Mi Pad tablets
+ ],
+ [[e, /_/g, " "], [o, ri], [i, b]],
+ [
+ // OPPO
+ /; (\w+) bui.+ oppo/i,
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
+ ],
+ [e, [o, "OPPO"], [i, n]],
+ [
+ // Vivo
+ /vivo (\w+)(?: bui|\))/i,
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
+ ],
+ [e, [o, "Vivo"], [i, n]],
+ [
+ // Realme
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
+ ],
+ [e, [o, "Realme"], [i, n]],
+ [
+ // Motorola
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
+ /\bmot(?:orola)?[- ](\w*)/i,
+ /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
+ ],
+ [e, [o, pi], [i, n]],
+ [
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
+ ],
+ [e, [o, pi], [i, b]],
+ [
+ // LG
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
+ ],
+ [e, [o, ai], [i, b]],
+ [
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
+ /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
+ /\blg-?([\d\w]+) bui/i
+ ],
+ [e, [o, ai], [i, n]],
+ [
+ // Lenovo
+ /(ideatab[-\w ]+)/i,
+ /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
+ ],
+ [e, [o, "Lenovo"], [i, b]],
+ [
+ // Nokia
+ /(?:maemo|nokia).*(n900|lumia \d+)/i,
+ /nokia[-_ ]?([-\w\.]*)/i
+ ],
+ [[e, /_/g, " "], [o, "Nokia"], [i, n]],
+ [
+ // Google
+ /(pixel c)\b/i
+ // Google Pixel C
+ ],
+ [e, [o, Y], [i, b]],
+ [
+ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
+ // Google Pixel
+ ],
+ [e, [o, Y], [i, n]],
+ [
+ // Sony
+ /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
+ ],
+ [e, [o, J], [i, n]],
+ [
+ /sony tablet [ps]/i,
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
+ ],
+ [[e, "Xperia Tablet"], [o, J], [i, b]],
+ [
+ // OnePlus
+ / (kb2005|in20[12]5|be20[12][59])\b/i,
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
+ ],
+ [e, [o, "OnePlus"], [i, n]],
+ [
+ // Amazon
+ /(alexa)webm/i,
+ /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,
+ // Kindle Fire without Silk / Echo Show
+ /(kf[a-z]+)( bui|\)).+silk\//i
+ // Kindle Fire HD
+ ],
+ [e, [o, G], [i, b]],
+ [
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
+ // Fire Phone
+ ],
+ [[e, /(.+)/g, "Fire Phone $1"], [o, G], [i, n]],
+ [
+ // BlackBerry
+ /(playbook);[-\w\),; ]+(rim)/i
+ // BlackBerry PlayBook
+ ],
+ [e, o, [i, b]],
+ [
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
+ /\(bb10; (\w+)/i
+ // BlackBerry 10
+ ],
+ [e, [o, mi], [i, n]],
+ [
+ // Asus
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
+ ],
+ [e, [o, di], [i, b]],
+ [
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
+ ],
+ [e, [o, di], [i, n]],
+ [
+ // HTC
+ /(nexus 9)/i
+ // HTC Nexus 9
+ ],
+ [e, [o, "HTC"], [i, b]],
+ [
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
+ // HTC
+ // ZTE
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
+ // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
+ ],
+ [o, [e, /_/g, " "], [i, n]],
+ [
+ // Acer
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
+ ],
+ [e, [o, "Acer"], [i, b]],
+ [
+ // Meizu
+ /droid.+; (m[1-5] note) bui/i,
+ /\bmz-([-\w]{2,})/i
+ ],
+ [e, [o, "Meizu"], [i, n]],
+ [
+ // Ulefone
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
+ ],
+ [e, [o, "Ulefone"], [i, n]],
+ [
+ // MIXED
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
+ /(hp) ([\w ]+\w)/i,
+ // HP iPAQ
+ /(asus)-?(\w+)/i,
+ // Asus
+ /(microsoft); (lumia[\w ]+)/i,
+ // Microsoft Lumia
+ /(lenovo)[-_ ]?([-\w]+)/i,
+ // Lenovo
+ /(jolla)/i,
+ // Jolla
+ /(oppo) ?([\w ]+) bui/i
+ // OPPO
+ ],
+ [o, e, [i, n]],
+ [
+ /(kobo)\s(ereader|touch)/i,
+ // Kobo
+ /(archos) (gamepad2?)/i,
+ // Archos
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
+ // HP TouchPad
+ /(kindle)\/([\w\.]+)/i,
+ // Kindle
+ /(nook)[\w ]+build\/(\w+)/i,
+ // Nook
+ /(dell) (strea[kpr\d ]*[\dko])/i,
+ // Dell Streak
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
+ // Le Pan Tablets
+ /(trinity)[- ]*(t\d{3}) bui/i,
+ // Trinity Tablets
+ /(gigaset)[- ]+(q\w{1,9}) bui/i,
+ // Gigaset Tablets
+ /(vodafone) ([\w ]+)(?:\)| bui)/i
+ // Vodafone
+ ],
+ [o, e, [i, b]],
+ [
+ /(surface duo)/i
+ // Surface Duo
+ ],
+ [e, [o, ti], [i, b]],
+ [
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i
+ // Fairphone
+ ],
+ [e, [o, "Fairphone"], [i, n]],
+ [
+ /(u304aa)/i
+ // AT&T
+ ],
+ [e, [o, "AT&T"], [i, n]],
+ [
+ /\bsie-(\w*)/i
+ // Siemens
+ ],
+ [e, [o, "Siemens"], [i, n]],
+ [
+ /\b(rct\w+) b/i
+ // RCA Tablets
+ ],
+ [e, [o, "RCA"], [i, b]],
+ [
+ /\b(venue[\d ]{2,7}) b/i
+ // Dell Venue Tablets
+ ],
+ [e, [o, "Dell"], [i, b]],
+ [
+ /\b(q(?:mv|ta)\w+) b/i
+ // Verizon Tablet
+ ],
+ [e, [o, "Verizon"], [i, b]],
+ [
+ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
+ // Barnes & Noble Tablet
+ ],
+ [e, [o, "Barnes & Noble"], [i, b]],
+ [
+ /\b(tm\d{3}\w+) b/i
+ ],
+ [e, [o, "NuVision"], [i, b]],
+ [
+ /\b(k88) b/i
+ // ZTE K Series Tablet
+ ],
+ [e, [o, "ZTE"], [i, b]],
+ [
+ /\b(nx\d{3}j) b/i
+ // ZTE Nubia
+ ],
+ [e, [o, "ZTE"], [i, n]],
+ [
+ /\b(gen\d{3}) b.+49h/i
+ // Swiss GEN Mobile
+ ],
+ [e, [o, "Swiss"], [i, n]],
+ [
+ /\b(zur\d{3}) b/i
+ // Swiss ZUR Tablet
+ ],
+ [e, [o, "Swiss"], [i, b]],
+ [
+ /\b((zeki)?tb.*\b) b/i
+ // Zeki Tablets
+ ],
+ [e, [o, "Zeki"], [i, b]],
+ [
+ /\b([yr]\d{2}) b/i,
+ /\b(dragon[- ]+touch |dt)(\w{5}) b/i
+ // Dragon Touch Tablet
+ ],
+ [[o, "Dragon Touch"], e, [i, b]],
+ [
+ /\b(ns-?\w{0,9}) b/i
+ // Insignia Tablets
+ ],
+ [e, [o, "Insignia"], [i, b]],
+ [
+ /\b((nxa|next)-?\w{0,9}) b/i
+ // NextBook Tablets
+ ],
+ [e, [o, "NextBook"], [i, b]],
+ [
+ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
+ // Voice Xtreme Phones
+ ],
+ [[o, "Voice"], e, [i, n]],
+ [
+ /\b(lvtel\-)?(v1[12]) b/i
+ // LvTel Phones
+ ],
+ [[o, "LvTel"], e, [i, n]],
+ [
+ /\b(ph-1) /i
+ // Essential PH-1
+ ],
+ [e, [o, "Essential"], [i, n]],
+ [
+ /\b(v(100md|700na|7011|917g).*\b) b/i
+ // Envizen Tablets
+ ],
+ [e, [o, "Envizen"], [i, b]],
+ [
+ /\b(trio[-\w\. ]+) b/i
+ // MachSpeed Tablets
+ ],
+ [e, [o, "MachSpeed"], [i, b]],
+ [
+ /\btu_(1491) b/i
+ // Rotor Tablets
+ ],
+ [e, [o, "Rotor"], [i, b]],
+ [
+ /(shield[\w ]+) b/i
+ // Nvidia Shield Tablets
+ ],
+ [e, [o, "Nvidia"], [i, b]],
+ [
+ /(sprint) (\w+)/i
+ // Sprint Phones
+ ],
+ [o, e, [i, n]],
+ [
+ /(kin\.[onetw]{3})/i
+ // Microsoft Kin
+ ],
+ [[e, /\./g, " "], [o, ti], [i, n]],
+ [
+ /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
+ // Zebra
+ ],
+ [e, [o, si], [i, b]],
+ [
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
+ ],
+ [e, [o, si], [i, n]],
+ [
+ ///////////////////
+ // SMARTTVS
+ ///////////////////
+ /smart-tv.+(samsung)/i
+ // Samsung
+ ],
+ [o, [i, h]],
+ [
+ /hbbtv.+maple;(\d+)/i
+ ],
+ [[e, /^/, "SmartTV"], [o, Z], [i, h]],
+ [
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
+ // LG SmartTV
+ ],
+ [[o, ai], [i, h]],
+ [
+ /(apple) ?tv/i
+ // Apple TV
+ ],
+ [o, [e, D + " TV"], [i, h]],
+ [
+ /crkey/i
+ // Google Chromecast
+ ],
+ [[e, H + "cast"], [o, Y], [i, h]],
+ [
+ /droid.+aft(\w+)( bui|\))/i
+ // Fire TV
+ ],
+ [e, [o, G], [i, h]],
+ [
+ /\(dtv[\);].+(aquos)/i,
+ /(aquos-tv[\w ]+)\)/i
+ // Sharp
+ ],
+ [e, [o, hi], [i, h]],
+ [
+ /(bravia[\w ]+)( bui|\))/i
+ // Sony
+ ],
+ [e, [o, J], [i, h]],
+ [
+ /(mitv-\w{5}) bui/i
+ // Xiaomi
+ ],
+ [e, [o, ri], [i, h]],
+ [
+ /Hbbtv.*(technisat) (.*);/i
+ // TechniSAT
+ ],
+ [o, e, [i, h]],
+ [
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
+ // Roku
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
+ // HbbTV devices
+ ],
+ [[o, ni], [e, ni], [i, h]],
+ [
+ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
+ // SmartTV from Unidentified Vendors
+ ],
+ [[i, h]],
+ [
+ ///////////////////
+ // CONSOLES
+ ///////////////////
+ /(ouya)/i,
+ // Ouya
+ /(nintendo) ([wids3utch]+)/i
+ // Nintendo
+ ],
+ [o, e, [i, B]],
+ [
+ /droid.+; (shield) bui/i
+ // Nvidia
+ ],
+ [e, [o, "Nvidia"], [i, B]],
+ [
+ /(playstation [345portablevi]+)/i
+ // Playstation
+ ],
+ [e, [o, J], [i, B]],
+ [
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
+ // Microsoft Xbox
+ ],
+ [e, [o, ti], [i, B]],
+ [
+ ///////////////////
+ // WEARABLES
+ ///////////////////
+ /((pebble))app/i
+ // Pebble
+ ],
+ [o, e, [i, N]],
+ [
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
+ // Apple Watch
+ ],
+ [e, [o, D], [i, N]],
+ [
+ /droid.+; (glass) \d/i
+ // Google Glass
+ ],
+ [e, [o, Y], [i, N]],
+ [
+ /droid.+; (wt63?0{2,3})\)/i
+ ],
+ [e, [o, si], [i, N]],
+ [
+ /(quest( 2| pro)?)/i
+ // Oculus Quest
+ ],
+ [e, [o, fi], [i, N]],
+ [
+ ///////////////////
+ // EMBEDDED
+ ///////////////////
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
+ // Tesla
+ ],
+ [o, [i, ei]],
+ [
+ /(aeobc)\b/i
+ // Echo Dot
+ ],
+ [e, [o, G], [i, ei]],
+ [
+ ////////////////////
+ // MIXED (GENERIC)
+ ///////////////////
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i
+ // Android Phones from Unidentified Vendors
+ ],
+ [e, [i, n]],
+ [
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
+ // Android Tablets from Unidentified Vendors
+ ],
+ [e, [i, b]],
+ [
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
+ // Unidentifiable Tablet
+ ],
+ [[i, b]],
+ [
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
+ // Unidentifiable Mobile
+ ],
+ [[i, n]],
+ [
+ /(android[-\w\. ]{0,9});.+buil/i
+ // Generic Android Device
+ ],
+ [e, [o, "Generic"]]
+ ],
+ engine: [
+ [
+ /windows.+ edge\/([\w\.]+)/i
+ // EdgeHTML
+ ],
+ [t, [a, yi + "HTML"]],
+ [
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
+ // Blink
+ ],
+ [t, [a, "Blink"]],
+ [
+ /(presto)\/([\w\.]+)/i,
+ // Presto
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
+ /ekioh(flow)\/([\w\.]+)/i,
+ // Flow
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
+ // KHTML/Tasman/Links
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
+ // iCab
+ /\b(libweb)/i
+ ],
+ [a, t],
+ [
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i
+ // Gecko
+ ],
+ [t, a]
+ ],
+ os: [
+ [
+ // Windows
+ /microsoft (windows) (vista|xp)/i
+ // Windows (iTunes)
+ ],
+ [a, t],
+ [
+ /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i
+ // Windows Phone
+ ],
+ [a, [t, bi, Oi]],
+ [
+ /windows nt 6\.2; (arm)/i,
+ // Windows RT
+ /windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
+ /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
+ ],
+ [[t, bi, Oi], [a, "Windows"]],
+ [
+ // iOS/macOS
+ /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
+ // iOS
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
+ /cfnetwork\/.+darwin/i
+ ],
+ [[t, /_/g, "."], [a, "iOS"]],
+ [
+ /(mac os x) ?([\w\. ]*)/i,
+ /(macintosh|mac_powerpc\b)(?!.+haiku)/i
+ // Mac OS
+ ],
+ [[a, gi], [t, /_/g, "."]],
+ [
+ // Mobile OSes
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
+ // Android-x86/HarmonyOS
+ ],
+ [t, a],
+ [
+ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
+ /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
+ /(blackberry)\w*\/([\w\.]*)/i,
+ // Blackberry
+ /(tizen|kaios)[\/ ]([\w\.]+)/i,
+ // Tizen/KaiOS
+ /\((series40);/i
+ // Series 40
+ ],
+ [a, t],
+ [
+ /\(bb(10);/i
+ // BlackBerry 10
+ ],
+ [t, [a, mi]],
+ [
+ /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
+ // Symbian
+ ],
+ [t, [a, "Symbian"]],
+ [
+ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
+ // Firefox OS
+ ],
+ [t, [a, X + " OS"]],
+ [
+ /web0s;.+rt(tv)/i,
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
+ // WebOS
+ ],
+ [t, [a, "webOS"]],
+ [
+ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
+ // watchOS
+ ],
+ [t, [a, "watchOS"]],
+ [
+ // Google Chromecast
+ /crkey\/([\d\.]+)/i
+ // Google Chromecast
+ ],
+ [t, [a, H + "cast"]],
+ [
+ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
+ // Chromium OS
+ ],
+ [[a, vi], t],
+ [
+ // Smart TVs
+ /panasonic;(viera)/i,
+ // Panasonic Viera
+ /(netrange)mmh/i,
+ // Netrange
+ /(nettv)\/(\d+\.[\w\.]+)/i,
+ // NetTV
+ // Console
+ /(nintendo|playstation) ([wids345portablevuch]+)/i,
+ // Nintendo/Playstation
+ /(xbox); +xbox ([^\);]+)/i,
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
+ // Other
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
+ // Joli/Palm
+ /(mint)[\/\(\) ]?(\w*)/i,
+ // Mint
+ /(mageia|vectorlinux)[; ]/i,
+ // Mageia/VectorLinux
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
+ /(hurd|linux) ?([\w\.]*)/i,
+ // Hurd/Linux
+ /(gnu) ?([\w\.]*)/i,
+ // GNU
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
+ /(haiku) (\w+)/i
+ // Haiku
+ ],
+ [a, t],
+ [
+ /(sunos) ?([\w\.\d]*)/i
+ // Solaris
+ ],
+ [[a, "Solaris"], t],
+ [
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
+ // Solaris
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
+ // AIX
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
+ /(unix) ?([\w\.]*)/i
+ // UNIX
+ ],
+ [a, t]
+ ]
+ }, g = function(c, l) {
+ if (typeof c === ii && (l = c, c = m), !(this instanceof g))
+ return new g(c, l).getResult();
+ var s = typeof A !== V && A.navigator ? A.navigator : m, d = c || (s && s.userAgent ? s.userAgent : M), y = s && s.userAgentData ? s.userAgentData : m, O = l ? Ti(ki, l) : ki, w = s && s.userAgent == d;
+ return this.getBrowser = function() {
+ var r = {};
+ return r[a] = m, r[t] = m, L.call(r, d, O.browser), r[li] = _i(r[t]), w && s && s.brave && typeof s.brave.isBrave == R && (r[a] = "Brave"), r;
+ }, this.getCPU = function() {
+ var r = {};
+ return r[v] = m, L.call(r, d, O.cpu), r;
+ }, this.getDevice = function() {
+ var r = {};
+ return r[o] = m, r[e] = m, r[i] = m, L.call(r, d, O.device), w && !r[i] && y && y.mobile && (r[i] = n), w && r[e] == "Macintosh" && s && typeof s.standalone !== V && s.maxTouchPoints && s.maxTouchPoints > 2 && (r[e] = "iPad", r[i] = b), r;
+ }, this.getEngine = function() {
+ var r = {};
+ return r[a] = m, r[t] = m, L.call(r, d, O.engine), r;
+ }, this.getOS = function() {
+ var r = {};
+ return r[a] = m, r[t] = m, L.call(r, d, O.os), w && !r[a] && y && y.platform != "Unknown" && (r[a] = y.platform.replace(/chrome os/i, vi).replace(/macos/i, gi)), r;
+ }, this.getResult = function() {
+ return {
+ ua: this.getUA(),
+ browser: this.getBrowser(),
+ engine: this.getEngine(),
+ os: this.getOS(),
+ device: this.getDevice(),
+ cpu: this.getCPU()
+ };
+ }, this.getUA = function() {
+ return d;
+ }, this.setUA = function(r) {
+ return d = typeof r === j && r.length > oi ? ni(r, oi) : r, this;
+ }, this.setUA(d), this;
+ };
+ g.VERSION = F, g.BROWSER = Q([a, t, li]), g.CPU = Q([v]), g.DEVICE = Q([e, o, i, B, n, h, b, N, ei]), g.ENGINE = g.OS = Q([a, t]), E.exports && (q = E.exports = g), q.UAParser = g;
+ var C = typeof A !== V && (A.jQuery || A.Zepto);
+ if (C && !C.ua) {
+ var $ = new g();
+ C.ua = $.getResult(), C.ua.get = function() {
+ return $.getUA();
+ }, C.ua.set = function(c) {
+ $.setUA(c);
+ var l = $.getResult();
+ for (var s in l)
+ C.ua[s] = l[s];
+ };
+ }
+ })(typeof window == "object" ? window : Ni);
+})(wi, wi.exports);
+var Pi = wi.exports;
+const Bi = /* @__PURE__ */ Ci(Pi), S = {
+ CONSOLE: "console",
+ DESKTOP: void 0,
+ EMBEDDED: "embedded",
+ MOBILE: "mobile",
+ SMART_TV: "smarttv",
+ TABLET: "tablet",
+ WEARABLE: "wearable"
+}, _ = {
+ ANDROID: "Android",
+ IOS: "iOS",
+ LINUX: "Linux",
+ MAC_OS: "Mac OS",
+ WINDOWS_PHONE: "Windows Phone",
+ WINDOWS: "Windows"
+}, p = {
+ CHROME: "Chrome",
+ CHROMIUM: "Chromium",
+ EDGE: "Edge",
+ FIREFOX: "Firefox",
+ IE: "IE",
+ INTERNET_EXPLORER: "Internet Explorer",
+ MIUI: "MIUI Browser",
+ MOBILE_SAFARI: "Mobile Safari",
+ OPERA: "Opera",
+ SAFARI: "Safari",
+ SAMSUNG_BROWSER: "Samsung Browser",
+ YANDEX: "Yandex"
+}, z = new Bi(), f = z.getDevice(), x = z.getOS(), u = z.getBrowser();
+z.getEngine();
+const P = z.getUA(), W = () => /iPad/.test(P), Ai = () => x.name === _.WINDOWS && x.version === "10" && P.indexOf("Edg/") !== -1;
+x.name === _.ANDROID;
+u.name === p.CHROME;
+u.name === p.CHROMIUM;
+f.type === S.CONSOLE;
+f.type === S.DESKTOP;
+u.name === p.EDGE || Ai();
+Ai();
+u.name === p.EDGE;
+/electron/.test(P.toLowerCase());
+f.type === S.EMBEDDED;
+u.name === p.FIREFOX;
+u.name === p.INTERNET_EXPLORER || u.name === p.IE;
+x.name === _.IOS || W();
+x.name === _.LINUX;
+x.name === _.MAC_OS;
+u.name === p.MIUI;
+f.type === S.MOBILE || f.type === S.TABLET || W();
+f.type === S.MOBILE;
+u.name === p.MOBILE_SAFARI || W();
+u.name === p.OPERA;
+u.name === p.SAFARI || u.name === p.MOBILE_SAFARI;
+u.name === p.SAMSUNG_BROWSER;
+f.type === S.SMART_TV;
+f.type === S.TABLET || W();
+f.type === S.WEARABLE;
+x.name === _.WINDOWS;
+x.name === _.WINDOWS_PHONE;
+u.name === p.YANDEX;
+const fe = () => f.model, ve = () => f.type || "desktop", ge = () => f.vendor;
+const _hoisted_1$1 = { class: "server-overview" };
+const _hoisted_2$1 = { class: "grid" };
+const _hoisted_3$1 = { class: "mcrm-block block__light grid gap-4" };
+const _hoisted_4$1 = { class: "text-lg flex gap-4 items-center justify-between" };
+const _hoisted_5 = { class: "flex gap-4" };
+const _hoisted_6 = { class: "grid gap-2" };
+const _hoisted_7 = {
+ key: 0,
+ class: "grid grid-cols-[2rem_1fr] gap-2"
+};
+const _hoisted_8 = { class: "grid gap-4 w-64" };
+const _sfc_main$1 = {
+ __name: "RemoteView",
+ setup(__props) {
+ const device = useDeviceStore();
+ const linkPinDialog = ref();
+ const server = reactive({
+ host: "",
+ status: false,
+ link: false,
+ inputPin: "",
+ encryptedKey: "",
+ key: ""
+ });
+ onMounted(async () => {
+ server.host = window.location.host;
+ });
+ onUpdated(() => {
+ if (!server.status) checkServerStatus();
+ });
+ async function checkServerStatus(request = true) {
+ const status = await device.remoteCheckServerAccess();
+ server.status = status;
+ if (status === "unlinked" || status === "unauthorized") {
+ if (request) requestAccess();
+ return true;
+ }
+ if (!device.key()) {
+ server.status = "unauthorized";
+ return true;
+ }
+ const handshake = await device.remoteHandshake(device.key());
+ if (handshake) server.key = device.key();
+ else {
+ device.removeDeviceKey();
+ server.status = "unlinked";
+ if (request) requestAccess();
+ }
+ return true;
+ }
+ function requestAccess() {
+ let deviceName = `${ge() ? ge() : "Unknown"} ${ge() ? fe() : ve()}`;
+ device.remoteRequestServerAccess(deviceName, ve()).then((data) => {
+ if (data.data) server.status = data.data, pingLink();
+ });
+ }
+ function pingLink() {
+ server.link = "checking";
+ device.remotePingLink((encryptedKey) => {
+ server.link = true;
+ server.encryptedKey = encryptedKey;
+ linkPinDialog.value.toggleDialog(true);
+ });
+ }
+ async function decryptKey() {
+ const decryptedKey = decryptAES(server.inputPin, server.encryptedKey);
+ const handshake = await device.remoteHandshake(decryptedKey);
+ if (handshake) {
+ device.setDeviceKey(decryptedKey);
+ server.key = decryptedKey;
+ linkPinDialog.value.toggleDialog(false);
+ server.status = "authorized";
+ }
+ }
+ function disonnectFromServer() {
+ axios.post(appUrl() + "/device/link/remove", AuthCall({ uuid: device.uuid() })).then((data) => {
+ if (data.data) checkServerStatus(false);
+ });
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
+ createVNode(AlertComp, { type: "info" }, {
+ default: withCtx(() => [
+ createBaseVNode("div", _hoisted_2$1, [
+ _cache[6] || (_cache[6] = createBaseVNode("strong", null, "This is a remote device.", -1)),
+ createBaseVNode("em", null, "UUID: " + toDisplayString(unref(device).uuid()), 1)
+ ])
+ ]),
+ _: 1
+ }),
+ createBaseVNode("div", _hoisted_3$1, [
+ createBaseVNode("h4", _hoisted_4$1, [
+ createBaseVNode("span", _hoisted_5, [
+ createVNode(unref(IconServer)),
+ _cache[7] || (_cache[7] = createTextVNode("Server"))
+ ]),
+ createVNode(_sfc_main$4, {
+ variant: "primary",
+ onClick: _cache[0] || (_cache[0] = ($event) => checkServerStatus())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconReload))
+ ]),
+ _: 1
+ })
+ ]),
+ createBaseVNode("p", null, [
+ _cache[8] || (_cache[8] = createTextVNode(" Connected to: ")),
+ createBaseVNode("strong", null, toDisplayString(server.host), 1)
+ ]),
+ server.status === "authorized" ? (openBlock(), createBlock(AlertComp, {
+ key: 0,
+ type: "success"
+ }, {
+ default: withCtx(() => _cache[9] || (_cache[9] = [
+ createTextVNode("Authorized")
+ ])),
+ _: 1
+ })) : createCommentVNode("", true),
+ server.status === "unlinked" ? (openBlock(), createBlock(AlertComp, {
+ key: 1,
+ type: "warning"
+ }, {
+ default: withCtx(() => _cache[10] || (_cache[10] = [
+ createTextVNode("Not linked")
+ ])),
+ _: 1
+ })) : createCommentVNode("", true),
+ server.status === "unauthorized" ? (openBlock(), createBlock(AlertComp, {
+ key: 2,
+ type: "info"
+ }, {
+ default: withCtx(() => [
+ createBaseVNode("div", _hoisted_6, [
+ _cache[13] || (_cache[13] = createBaseVNode("strong", null, "Access requested", -1)),
+ _cache[14] || (_cache[14] = createBaseVNode("p", null, [
+ createTextVNode(" Navigate to "),
+ createBaseVNode("em", { class: "font-semibold" }, "http://localhost:6970/devices"),
+ createTextVNode(" on your pc to authorize. ")
+ ], -1)),
+ server.link == "checking" ? (openBlock(), createElementBlock("div", _hoisted_7, [
+ createVNode(unref(IconReload), { class: "animate-spin" }),
+ _cache[11] || (_cache[11] = createTextVNode(" Checking server for link... "))
+ ])) : createCommentVNode("", true),
+ server.link === false ? (openBlock(), createBlock(_sfc_main$4, {
+ key: 1,
+ variant: "subtle",
+ onClick: _cache[1] || (_cache[1] = ($event) => pingLink()),
+ class: "w-fit"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconReload)),
+ _cache[12] || (_cache[12] = createTextVNode("Check for server link "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ])
+ ]),
+ _: 1
+ })) : createCommentVNode("", true),
+ server.status === "unauthorized" ? (openBlock(), createBlock(_sfc_main$4, {
+ key: 3,
+ variant: "primary",
+ onClick: _cache[2] || (_cache[2] = ($event) => requestAccess())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconKey)),
+ _cache[15] || (_cache[15] = createTextVNode(" Request access "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true),
+ server.status === "authorized" ? (openBlock(), createBlock(_sfc_main$4, {
+ key: 4,
+ variant: "danger",
+ onClick: _cache[3] || (_cache[3] = ($event) => disonnectFromServer())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPlugConnectedX)),
+ _cache[16] || (_cache[16] = createTextVNode(" Disconnect "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ]),
+ createVNode(_sfc_main$5, {
+ ref_key: "linkPinDialog",
+ ref: linkPinDialog
+ }, {
+ content: withCtx(() => [
+ createBaseVNode("div", _hoisted_8, [
+ _cache[18] || (_cache[18] = createBaseVNode("h3", null, "Server link pin:", -1)),
+ createBaseVNode("form", {
+ class: "grid gap-4",
+ onSubmit: _cache[5] || (_cache[5] = withModifiers(($event) => decryptKey(), ["prevent"]))
+ }, [
+ withDirectives(createBaseVNode("input", {
+ class: "input",
+ id: "input-pin",
+ type: "text",
+ pattern: "[0-9]{4}",
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => server.inputPin = $event)
+ }, null, 512), [
+ [vModelText, server.inputPin]
+ ]),
+ createVNode(_sfc_main$4, { variant: "primary" }, {
+ default: withCtx(() => _cache[17] || (_cache[17] = [
+ createTextVNode("Enter")
+ ])),
+ _: 1
+ })
+ ], 32)
+ ])
+ ]),
+ _: 1
+ }, 512)
+ ]);
+ };
+ }
+};
+const RemoteView = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-3109048f"]]);
+const _hoisted_1 = {
+ id: "devices-view",
+ class: "panel"
+};
+const _hoisted_2 = { class: "panel__title" };
+const _hoisted_3 = { class: "text-sm" };
+const _hoisted_4 = { class: "panel__content grid gap-8" };
+const _sfc_main = {
+ __name: "DevicesView",
+ setup(__props) {
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1, [
+ createBaseVNode("h1", _hoisted_2, [
+ _cache[0] || (_cache[0] = createTextVNode(" Devices ")),
+ createBaseVNode("span", _hoisted_3, toDisplayString(unref(isLocal)() ? "remote" : "servers"), 1)
+ ]),
+ createBaseVNode("div", _hoisted_4, [
+ unref(isLocal)() ? (openBlock(), createBlock(ServerView, { key: 0 })) : (openBlock(), createBlock(RemoteView, { key: 1 }))
+ ])
+ ]);
+ };
+ }
+};
+const DevicesView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-97929e31"]]);
+export {
+ DevicesView as default
+};
diff --git a/public/assets/DevicesView-Dw_Mls3X.css b/public/assets/DevicesView-Dw_Mls3X.css
new file mode 100644
index 0000000..4735417
--- /dev/null
+++ b/public/assets/DevicesView-Dw_Mls3X.css
@@ -0,0 +1,87 @@
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.alert[data-v-87f6de25] {
+ align-items: flex-start;
+ gap: calc(var(--spacing, .25rem) * 4);
+ border-radius: var(--radius-md, .375rem);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent);
+ background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent);
+ padding: calc(var(--spacing, .25rem) * 4);
+ --tw-backdrop-blur: blur(var(--blur-md, 12px));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ grid-template-columns: 1rem 1fr;
+ display: grid;
+}
+.alert.alert__info[data-v-87f6de25] {
+ background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 40%, transparent);
+ color: var(--color-sky-100, oklch(.951 .026 236.824));
+}
+.alert.alert__success[data-v-87f6de25] {
+ background-color: color-mix(in oklab, var(--color-lime-400, oklch(.841 .238 128.85)) 10%, transparent);
+ color: var(--color-lime-400, oklch(.841 .238 128.85));
+}
+.alert.alert__warning[data-v-87f6de25] {
+ background-color: color-mix(in oklab, var(--color-amber-400, oklch(.828 .189 84.429)) 10%, transparent);
+ color: var(--color-amber-400, oklch(.828 .189 84.429));
+}
+.alert.alert__error[data-v-87f6de25] {
+ background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 10%, transparent);
+ color: var(--color-rose-400, oklch(.712 .194 13.428));
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-backdrop-blur {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-brightness {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-contrast {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-grayscale {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-invert {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-opacity {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-saturate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-sepia {
+ syntax: "*";
+ inherits: false
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.device-overview[data-v-f4165abd] {
+ align-content: flex-start;
+ gap: calc(var(--spacing, .25rem) * 4);
+ display: grid;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.server-overview[data-v-3109048f] {
+ align-content: flex-start;
+ gap: calc(var(--spacing, .25rem) * 4);
+ display: grid;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+
diff --git a/public/assets/DialogComp-Ba5-BUTe.js b/public/assets/DialogComp-Ba5-BUTe.js
new file mode 100644
index 0000000..70496d5
--- /dev/null
+++ b/public/assets/DialogComp-Ba5-BUTe.js
@@ -0,0 +1,106 @@
+import { D as computed, c as createElementBlock, o as openBlock, v as renderSlot, q as normalizeClass, m as ref, b as onMounted, n as onUpdated, f as createBaseVNode, h as createVNode, w as withCtx, u as unref, E as IconX } from "./index-GNAKlyBz.js";
+const _hoisted_1$1 = ["href"];
+const _sfc_main$1 = {
+ __name: "ButtonComp",
+ props: {
+ href: String,
+ variant: String,
+ size: String
+ },
+ setup(__props) {
+ const props = __props;
+ const classString = computed(() => {
+ let classes = "btn";
+ if (props.variant) classes += ` btn__${props.variant}`;
+ if (props.size) classes += ` btn__${props.size}`;
+ return classes;
+ });
+ return (_ctx, _cache) => {
+ return __props.href ? (openBlock(), createElementBlock("a", {
+ key: 0,
+ href: __props.href,
+ class: normalizeClass(classString.value)
+ }, [
+ renderSlot(_ctx.$slots, "default")
+ ], 10, _hoisted_1$1)) : (openBlock(), createElementBlock("button", {
+ key: 1,
+ class: normalizeClass(classString.value)
+ }, [
+ renderSlot(_ctx.$slots, "default")
+ ], 2));
+ };
+ }
+};
+const _hoisted_1 = { class: "dialog-container" };
+const _sfc_main = {
+ __name: "DialogComp",
+ props: {
+ open: Boolean
+ },
+ emits: ["onOpen", "onClose", "onToggle"],
+ setup(__props, { expose: __expose, emit: __emit }) {
+ const dialog = ref(null);
+ const openDialog = ref();
+ const emit = __emit;
+ __expose({ toggleDialog });
+ const props = __props;
+ onMounted(() => {
+ if (props.open === true) toggleDialog(props.open);
+ });
+ onUpdated(() => {
+ if (props.open === true) toggleDialog(props.open);
+ });
+ function toggleDialog(openToggle) {
+ if (openToggle) {
+ dialog.value.showModal();
+ emit("onOpen");
+ } else {
+ dialog.value.close();
+ emit("onClose");
+ }
+ openDialog.value = openToggle;
+ emit("onToggle");
+ }
+ onMounted(() => {
+ openDialog.value = props.open;
+ if (dialog.value.innerHTML.includes("form")) {
+ dialog.value.querySelector("form").addEventListener("submit", () => {
+ toggleDialog();
+ });
+ }
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1, [
+ createBaseVNode("div", {
+ class: "trigger",
+ onClick: _cache[0] || (_cache[0] = ($event) => toggleDialog(true))
+ }, [
+ renderSlot(_ctx.$slots, "trigger")
+ ]),
+ createBaseVNode("dialog", {
+ ref_key: "dialog",
+ ref: dialog,
+ class: "mcrm-block block__dark"
+ }, [
+ createVNode(_sfc_main$1, {
+ class: "dialog__close p-0",
+ variant: "ghost",
+ size: "sm",
+ tabindex: "-1",
+ onClick: _cache[1] || (_cache[1] = ($event) => toggleDialog(false))
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconX))
+ ]),
+ _: 1
+ }),
+ renderSlot(_ctx.$slots, "content")
+ ], 512)
+ ]);
+ };
+ }
+};
+export {
+ _sfc_main$1 as _,
+ _sfc_main as a
+};
diff --git a/public/assets/DialogComp-ByJn29_w.css b/public/assets/DialogComp-ByJn29_w.css
new file mode 100644
index 0000000..a8db749
--- /dev/null
+++ b/public/assets/DialogComp-ByJn29_w.css
@@ -0,0 +1,357 @@
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+button, .btn {
+ cursor: pointer;
+ align-items: center;
+ gap: calc(var(--spacing, .25rem) * 3);
+ border-radius: var(--radius-lg, .5rem);
+ border-style: var(--tw-border-style);
+ --tw-border-style: solid;
+ height: fit-content;
+ padding-inline: calc(var(--spacing, .25rem) * 4);
+ padding-block: calc(var(--spacing, .25rem) * 2);
+ --tw-font-weight: var(--font-weight-normal, 400);
+ font-weight: var(--font-weight-normal, 400);
+ --tw-tracking: var(--tracking-wide, .025em);
+ letter-spacing: var(--tracking-wide, .025em);
+ transition-property: all;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ border-style: solid;
+ border-width: 1px;
+ transition: border-color .1s ease-in-out, background-color .2s;
+ display: flex;
+}
+:is(button, .btn):not(.button__subtle, .button__ghost):hover {
+ --tw-shadow-color: var(--color-black, #000);
+}
+:is(button, .btn)[disabled], :is(button, .btn).disabled {
+ pointer-events: none;
+ cursor: not-allowed;
+ opacity: .5;
+}
+:is(button, .btn) svg {
+ width: calc(var(--spacing, .25rem) * 5);
+ height: calc(var(--spacing, .25rem) * 5);
+ transition-property: stroke;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ --tw-duration: .4s;
+ --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+ transition-duration: .4s;
+ transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+}
+:is(button, .btn).btn__sm svg {
+ width: calc(var(--spacing, .25rem) * 4);
+ height: calc(var(--spacing, .25rem) * 4);
+}
+:is(button, .btn).btn__lg svg {
+ width: calc(var(--spacing, .25rem) * 6);
+ height: calc(var(--spacing, .25rem) * 6);
+}
+:is(button, .btn):hover {
+ color: var(--color-white, #fff) !important;
+}
+:is(button, .btn):hover svg {
+ stroke: var(--color-white, #fff) !important;
+}
+:is(button, .btn).btn__primary {
+ border-color: var(--color-sky-100, oklch(.951 .026 236.824));
+ background-color: color-mix(in oklab, var(--color-sky-100, oklch(.951 .026 236.824)) 10%, transparent);
+ color: var(--color-sky-100, oklch(.951 .026 236.824));
+}
+:is(button, .btn).btn__primary svg {
+ stroke: var(--color-sky-200, oklch(.901 .058 230.902));
+}
+:is(button, .btn).btn__primary:hover {
+ border-color: var(--color-sky-300, oklch(.828 .111 230.318));
+ background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 40%, transparent);
+}
+:is(button, .btn).btn__secondary {
+ border-color: var(--color-amber-100, oklch(.962 .059 95.617));
+ background-color: color-mix(in oklab, var(--color-amber-100, oklch(.962 .059 95.617)) 10%, transparent);
+ color: var(--color-amber-100, oklch(.962 .059 95.617));
+}
+:is(button, .btn).btn__secondary svg {
+ stroke: var(--color-amber-300, oklch(.879 .169 91.605));
+}
+:is(button, .btn).btn__secondary:hover {
+ border-color: var(--color-amber-400, oklch(.828 .189 84.429));
+ background-color: color-mix(in oklab, var(--color-amber-400, oklch(.828 .189 84.429)) 40%, transparent);
+}
+:is(button, .btn).btn__danger {
+ border-color: var(--color-rose-100, oklch(.941 .03 12.58));
+ background-color: color-mix(in oklab, var(--color-rose-200, oklch(.892 .058 10.001)) 20%, transparent);
+ color: var(--color-rose-200, oklch(.892 .058 10.001));
+}
+:is(button, .btn).btn__danger svg {
+ stroke: var(--color-rose-400, oklch(.712 .194 13.428));
+}
+:is(button, .btn).btn__danger:hover {
+ border-color: var(--color-rose-500, oklch(.645 .246 16.439));
+ background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 40%, transparent);
+ color: var(--color-white, #fff);
+}
+:is(button, .btn).btn__dark {
+ border-color: var(--color-slate-400, oklch(.704 .04 256.788));
+ background-color: color-mix(in oklab, var(--color-slate-200, oklch(.929 .013 255.508)) 10%, transparent);
+ color: var(--color-slate-100, oklch(.968 .007 247.896));
+}
+:is(button, .btn).btn__dark svg {
+ stroke: var(--color-slate-300, oklch(.869 .022 252.894));
+}
+:is(button, .btn).btn__dark:hover {
+ border-color: var(--color-slate-200, oklch(.929 .013 255.508));
+ background-color: color-mix(in oklab, var(--color-slate-400, oklch(.704 .04 256.788)) 40%, transparent);
+ color: var(--color-white, #fff);
+}
+:is(button, .btn).btn__success {
+ border-color: var(--color-lime-100, oklch(.967 .067 122.328));
+ background-color: color-mix(in oklab, var(--color-lime-200, oklch(.938 .127 124.321)) 10%, transparent);
+ color: var(--color-lime-100, oklch(.967 .067 122.328));
+}
+:is(button, .btn).btn__success svg {
+ stroke: var(--color-lime-400, oklch(.841 .238 128.85));
+}
+:is(button, .btn).btn__success:hover {
+ border-color: var(--color-lime-500, oklch(.768 .233 130.85));
+ background-color: color-mix(in oklab, var(--color-lime-400, oklch(.841 .238 128.85)) 40%, transparent);
+ color: var(--color-white, #fff);
+}
+:is(button, .btn).btn__subtle {
+ color: var(--color-white, #fff);
+ background-color: #0000;
+ border-color: #0000;
+}
+@media (hover: hover) {
+:is(button, .btn).btn__subtle:hover {
+ background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent);
+}
+}
+:is(button, .btn).btn__subtle:hover {
+ border-color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent);
+ background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent);
+ --tw-gradient-to: color-mix(in oklab, var(--color-white, #fff) 30%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+:is(button, .btn).btn__ghost {
+ color: color-mix(in oklab, var(--color-white, #fff) 80%, transparent);
+ background-color: #0000;
+ border-color: #0000;
+}
+@media (hover: hover) {
+:is(button, .btn).btn__ghost:hover {
+ color: var(--color-white, #fff);
+}
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-tracking {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-ring-inset {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-offset-width {
+ syntax: "";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-ring-offset-color {
+ syntax: "*";
+ inherits: false;
+ initial-value: #fff;
+}
+@property --tw-ring-offset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-duration {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ease {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-gradient-position {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-gradient-from {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+@property --tw-gradient-via {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+@property --tw-gradient-to {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+@property --tw-gradient-stops {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-gradient-via-stops {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-gradient-from-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 0%;
+}
+@property --tw-gradient-via-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 50%;
+}
+@property --tw-gradient-to-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 100%;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.dialog-container {
+ position: relative;
+}
+.dialog-container dialog {
+ pointer-events: none;
+ z-index: 50;
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
+ max-width: calc(100vw - 2rem);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ color: var(--color-slate-200, oklch(.929 .013 255.508));
+ position: fixed;
+ top: 50%;
+ left: 50%;
+}
+.dialog-container dialog[open] {
+ pointer-events: auto;
+}
+.dialog-container dialog::backdrop {
+ background-color: color-mix(in oklab, var(--color-black, #000) 50%, transparent);
+ --tw-backdrop-blur: blur(var(--blur-xs, 4px));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+}
+.dialog-container dialog .dialog__close {
+ top: calc(var(--spacing, .25rem) * 4);
+ right: calc(var(--spacing, .25rem) * 4);
+ padding: calc(var(--spacing, .25rem) * 0);
+ color: var(--color-white, #fff);
+ position: absolute;
+}
+.dialog-container dialog .dialog__close svg {
+ width: calc(var(--spacing, .25rem) * 5);
+ height: calc(var(--spacing, .25rem) * 5);
+}
+.dialog__content > :first-child {
+ padding-right: calc(var(--spacing, .25rem) * 8);
+}
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-backdrop-blur {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-brightness {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-contrast {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-grayscale {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-invert {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-opacity {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-saturate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-sepia {
+ syntax: "*";
+ inherits: false
+}
diff --git a/public/assets/DialogComp-CyRyORDj.js b/public/assets/DialogComp-CyRyORDj.js
deleted file mode 100644
index 4e73f8d..0000000
--- a/public/assets/DialogComp-CyRyORDj.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{a as i,o as r,b as v,d as _,e as k,g as c,L as d,k as u,j as C,u as b,U as $,l as B}from"./index-oAtpp-VZ.js";const x={class:"dialog-container"},L={__name:"DialogComp",props:{open:Boolean},emits:["onOpen","onClose","onToggle"],setup(p,{expose:g,emit:f}){const o=i(null),l=i(),t=f;g({toggleDialog:e});const s=p;r(()=>{s.open===!0&&e(s.open)}),v(()=>{s.open===!0&&e(s.open)});function e(n){n?(o.value.showModal(),t("onOpen")):(o.value.close(),t("onClose")),l.value=n,t("onToggle")}return r(()=>{l.value=s.open,o.value.innerHTML.includes("form")&&o.value.querySelector("form").addEventListener("submit",()=>{e()})}),(n,a)=>(k(),_("div",x,[c("div",{class:"trigger",onClick:a[0]||(a[0]=m=>e(!0))},[d(n.$slots,"trigger")]),c("dialog",{ref_key:"dialog",ref:o,class:"mcrm-block block__dark"},[u(B,{class:"dialog__close p-0",variant:"ghost",size:"sm",tabindex:"-1",onClick:a[1]||(a[1]=m=>e(!1))},{default:C(()=>[u(b($))]),_:1}),d(n.$slots,"content")],512)]))}};export{L as _};
-//# sourceMappingURL=DialogComp-CyRyORDj.js.map
diff --git a/public/assets/DialogComp-CyRyORDj.js.map b/public/assets/DialogComp-CyRyORDj.js.map
deleted file mode 100644
index 17d1fea..0000000
--- a/public/assets/DialogComp-CyRyORDj.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"DialogComp-CyRyORDj.js","sources":["../../ui/src/components/base/DialogComp.vue"],"sourcesContent":["\n\n\n \n
\n \n
\n
\n \n \n \n \n \n
\n \n\n\n\n\n"],"names":["dialog","ref","openDialog","emit","__emit","__expose","toggleDialog","props","__props","onMounted","onUpdated","openToggle"],"mappings":"qQA8CA,MAAMA,EAASC,EAAI,IAAI,EACjBC,EAAaD,EAAG,EAEhBE,EAAOC,EAEbC,EAAa,CAAE,aAAAC,CAAc,CAAA,EAE7B,MAAMC,EAAQC,EAIdC,EAAU,IAAM,CACVF,EAAM,OAAS,IAAMD,EAAaC,EAAM,IAAI,CAClD,CAAC,EAEDG,EAAU,IAAM,CACVH,EAAM,OAAS,IAAMD,EAAaC,EAAM,IAAI,CAClD,CAAC,EAED,SAASD,EAAaK,EAAY,CAC5BA,GACFX,EAAO,MAAM,UAAS,EACtBG,EAAK,QAAQ,IAEbH,EAAO,MAAM,MAAK,EAClBG,EAAK,SAAS,GAGhBD,EAAW,MAAQS,EACnBR,EAAK,UAAU,CACjB,CAEA,OAAAM,EAAU,IAAM,CACdP,EAAW,MAAQK,EAAM,KAErBP,EAAO,MAAM,UAAU,SAAS,MAAM,GACxCA,EAAO,MAAM,cAAc,MAAM,EAAE,iBAAiB,SAAU,IAAM,CAClEM,EAAY,CACb,CAAA,CAEL,CAAC"}
\ No newline at end of file
diff --git a/public/assets/DialogComp-Dr-kHiJQ.css b/public/assets/DialogComp-Dr-kHiJQ.css
deleted file mode 100644
index d31fe84..0000000
--- a/public/assets/DialogComp-Dr-kHiJQ.css
+++ /dev/null
@@ -1 +0,0 @@
-/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}.dialog-container{position:relative}.dialog-container dialog{pointer-events:none;z-index:50;--tw-translate-x: -50% ;max-width:calc(100vw - 2rem);--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y);color:var(--color-slate-200,oklch(92.9% .013 255.508));position:fixed;top:50%;left:50%}.dialog-container dialog[open]{pointer-events:auto}.dialog-container dialog::backdrop{--tw-backdrop-blur:blur(var(--blur-xs,4px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.dialog-container dialog::backdrop{background-color:color-mix(in oklab,var(--color-black,#000)50%,transparent)}}.dialog-container dialog .dialog__close{top:calc(var(--spacing,.25rem)*4);right:calc(var(--spacing,.25rem)*4);padding:calc(var(--spacing,.25rem)*0);color:var(--color-white,#fff);position:absolute}.dialog-container dialog .dialog__close svg{width:calc(var(--spacing,.25rem)*5);height:calc(var(--spacing,.25rem)*5)}.dialog__content>:first-child{padding-right:calc(var(--spacing,.25rem)*8)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
diff --git a/public/assets/IconTrash-DtIpQ-M_.js b/public/assets/IconTrash-DtIpQ-M_.js
deleted file mode 100644
index 6e8c1cc..0000000
--- a/public/assets/IconTrash-DtIpQ-M_.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import{c as a}from"./index-oAtpp-VZ.js";/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var l=a("outline","device-floppy","IconDeviceFloppy",[["path",{d:"M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2",key:"svg-0"}],["path",{d:"M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-1"}],["path",{d:"M14 4l0 4l-6 0l0 -4",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var v=a("outline","pencil","IconPencil",[["path",{d:"M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4",key:"svg-0"}],["path",{d:"M13.5 6.5l4 4",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var p=a("outline","trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);export{p as I,l as a,v as b};
-//# sourceMappingURL=IconTrash-DtIpQ-M_.js.map
diff --git a/public/assets/IconTrash-DtIpQ-M_.js.map b/public/assets/IconTrash-DtIpQ-M_.js.map
deleted file mode 100644
index f65e4f6..0000000
--- a/public/assets/IconTrash-DtIpQ-M_.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"IconTrash-DtIpQ-M_.js","sources":["../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDeviceFloppy.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconPencil.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconTrash.mjs"],"sourcesContent":["/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconDeviceFloppy = createVueComponent(\"outline\", \"device-floppy\", \"IconDeviceFloppy\", [[\"path\", { \"d\": \"M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M14 4l0 4l-6 0l0 -4\", \"key\": \"svg-2\" }]]);\n\nexport { IconDeviceFloppy as default };\n//# sourceMappingURL=IconDeviceFloppy.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconPencil = createVueComponent(\"outline\", \"pencil\", \"IconPencil\", [[\"path\", { \"d\": \"M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M13.5 6.5l4 4\", \"key\": \"svg-1\" }]]);\n\nexport { IconPencil as default };\n//# sourceMappingURL=IconPencil.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconTrash = createVueComponent(\"outline\", \"trash\", \"IconTrash\", [[\"path\", { \"d\": \"M4 7l16 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M10 11l0 6\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M14 11l0 6\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3\", \"key\": \"svg-4\" }]]);\n\nexport { IconTrash as default };\n//# sourceMappingURL=IconTrash.mjs.map\n"],"names":["IconDeviceFloppy","createVueComponent","IconPencil","IconTrash"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASG,IAACA,EAAmBC,EAAmB,UAAW,gBAAiB,mBAAoB,CAAC,CAAC,OAAQ,CAAE,EAAK,uEAAwE,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,2CAA4C,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,sBAAuB,IAAO,OAAS,CAAA,CAAC,CAAC,ECT9U;AAAA;AAAA;AAAA;AAAA;AAAA,GASG,IAACC,EAAaD,EAAmB,UAAW,SAAU,aAAc,CAAC,CAAC,OAAQ,CAAE,EAAK,0DAA2D,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,gBAAiB,IAAO,OAAO,CAAE,CAAC,CAAC,ECTzN;AAAA;AAAA;AAAA;AAAA;AAAA,GASG,IAACE,EAAYF,EAAmB,UAAW,QAAS,YAAa,CAAC,CAAC,OAAQ,CAAE,EAAK,YAAa,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAO,CAAE,EAAG,CAAC,OAAQ,CAAE,EAAK,aAAc,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,iDAAkD,IAAO,OAAS,CAAA,EAAG,CAAC,OAAQ,CAAE,EAAK,2CAA4C,IAAO,OAAO,CAAE,CAAC,CAAC","x_google_ignoreList":[0,1,2]}
\ No newline at end of file
diff --git a/public/assets/MacrosView-B-ccNLSC.css b/public/assets/MacrosView-B-ccNLSC.css
new file mode 100644
index 0000000..fb3f526
--- /dev/null
+++ b/public/assets/MacrosView-B-ccNLSC.css
@@ -0,0 +1,624 @@
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-overview[data-v-f9a187e3] {
+ grid-template-rows: auto 1fr;
+ display: grid;
+ position: relative;
+}
+.macro-overview[data-v-f9a187e3]:after {
+ top: calc(var(--spacing, .25rem) * 0);
+ background-color: var(--color-slate-600, oklch(.446 .043 257.281));
+ --tw-content: "";
+ content: var(--tw-content);
+ width: 1px;
+ height: 100%;
+ position: absolute;
+ left: 100%;
+}
+.macro-overview .macro-overview__list[data-v-f9a187e3] {
+ align-content: flex-start;
+ gap: calc(var(--spacing, .25rem) * 1);
+ display: grid;
+}
+.macro-overview .macro-item[data-v-f9a187e3] {
+ align-items: center;
+ display: flex;
+}
+.macro-overview .macro-item button[data-v-f9a187e3] {
+ width: 100%;
+}
+@property --tw-content {
+ syntax: "*";
+ inherits: false;
+ initial-value: "";
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+kbd {
+ height: calc(var(--spacing, .25rem) * 9);
+ align-items: center;
+ gap: calc(var(--spacing, .25rem) * 2);
+ border-radius: var(--radius-md, .375rem);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-slate-500, oklch(.554 .046 257.417));
+ background-color: var(--color-slate-700, oklch(.372 .044 257.287));
+ padding-block: calc(var(--spacing, .25rem) * 1);
+ padding-right: calc(var(--spacing, .25rem) * 2);
+ padding-left: calc(var(--spacing, .25rem) * 4);
+ font-family: var(--font-mono, "Fira Code", monospace);
+ font-size: var(--text-lg, 1.125rem);
+ line-height: var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));
+ --tw-font-weight: var(--font-weight-bold, 700);
+ font-weight: var(--font-weight-bold, 700);
+ white-space: nowrap;
+ color: var(--color-white, #fff);
+ text-transform: uppercase;
+ --tw-shadow-color: var(--color-slate-500, oklch(.554 .046 257.417));
+ transition-property: all;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ box-shadow: 0 .2rem 0 .2rem var(--tw-shadow-color);
+ display: flex;
+}
+kbd:has(sup) {
+ padding-left: calc(var(--spacing, .25rem) * 2);
+}
+kbd sup {
+ margin-top: calc(var(--spacing, .25rem) * 1);
+ font-size: var(--text-xs, .75rem);
+ line-height: var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));
+ --tw-font-weight: var(--font-weight-light, 300);
+ font-weight: var(--font-weight-light, 300);
+ color: var(--color-slate-200, oklch(.929 .013 255.508));
+}
+kbd span.dir {
+ padding-left: calc(var(--spacing, .25rem) * 1);
+ color: var(--color-slate-200, oklch(.929 .013 255.508));
+}
+kbd.empty {
+ cursor: pointer;
+ border-color: var(--color-sky-300, oklch(.828 .111 230.318));
+ background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 50%, transparent);
+ padding-right: calc(var(--spacing, .25rem) * 3);
+ padding-left: calc(var(--spacing, .25rem) * 3);
+ --tw-tracking: var(--tracking-widest, .1em);
+ letter-spacing: var(--tracking-widest, .1em);
+ --tw-shadow-color: var(--color-sky-600, oklch(.588 .158 241.966));
+}
+kbd.insert {
+ cursor: pointer;
+ border-color: var(--color-yellow-300, oklch(.905 .182 98.111));
+ background-color: color-mix(in oklab, var(--color-yellow-500, oklch(.795 .184 86.047)) 50%, transparent);
+ --tw-shadow-color: var(--color-yellow-600, oklch(.681 .162 75.834));
+}
+:has(kdb):not(.edit) kbd {
+ pointer-events: none;
+ cursor: default;
+}
+.edit kbd {
+ pointer-events: auto;
+ cursor: pointer;
+}
+.edit kbd:hover, .edit kbd.active {
+ border-color: var(--color-sky-400, oklch(.746 .16 232.661));
+ background-color: var(--color-sky-900, oklch(.391 .09 240.876));
+ --tw-shadow-color: var(--color-sky-700, oklch(.5 .134 242.749));
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-ring-inset {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-offset-width {
+ syntax: "";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-ring-offset-color {
+ syntax: "*";
+ inherits: false;
+ initial-value: #fff;
+}
+@property --tw-ring-offset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-tracking {
+ syntax: "*";
+ inherits: false
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+span.delay[data-v-05e04cbb] {
+ cursor: default;
+ border-radius: var(--radius-sm, .25rem);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-slate-400, oklch(.704 .04 256.788));
+ background-color: var(--color-slate-500, oklch(.554 .046 257.417));
+ padding-inline: calc(var(--spacing, .25rem) * 2);
+ padding-block: calc(var(--spacing, .25rem) * 1);
+ font-family: var(--font-sans, "Roboto", sans-serif);
+ font-size: var(--text-sm, .875rem);
+ line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));
+ --tw-font-weight: var(--font-weight-semibold, 600);
+ font-weight: var(--font-weight-semibold, 600);
+ color: var(--color-slate-950, oklch(.129 .042 264.695));
+ align-items: center;
+ display: flex;
+}
+span.delay.preset[data-v-05e04cbb] {
+ border-color: color-mix(in oklab, var(--color-amber-300, oklch(.879 .169 91.605)) 80%, transparent);
+ background-color: color-mix(in oklab, var(--color-amber-100, oklch(.962 .059 95.617)) 60%, transparent);
+ color: var(--color-amber-400, oklch(.828 .189 84.429));
+}
+span.delay i[data-v-05e04cbb] {
+ padding-left: calc(var(--spacing, .25rem) * 1);
+ --tw-font-weight: var(--font-weight-normal, 400);
+ font-weight: var(--font-weight-normal, 400);
+ opacity: .8;
+ font-style: normal;
+}
+.edit span.delay[data-v-05e04cbb] {
+ cursor: pointer;
+}
+.edit span.delay[data-v-05e04cbb]:hover, .edit span.delay.active[data-v-05e04cbb] {
+ border-color: var(--color-lime-500, oklch(.768 .233 130.85));
+ background-color: var(--color-lime-700, oklch(.532 .157 131.589));
+ color: var(--color-lime-200, oklch(.938 .127 124.321));
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-recorder__output[data-v-33cbf1af] {
+ top: calc(var(--spacing, .25rem) * 0);
+ left: calc(var(--spacing, .25rem) * 0);
+ align-items: center;
+ row-gap: calc(var(--spacing, .25rem) * 4);
+ height: fit-content;
+ padding: calc(var(--spacing, .25rem) * 4);
+ flex-wrap: wrap;
+ display: flex;
+ position: absolute;
+}
+hr.spacer[data-v-33cbf1af]:last-of-type {
+ display: none;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.recorder-input__container[data-v-9a99c4ac], .macro-recorder__input[data-v-9a99c4ac] {
+ inset: calc(var(--spacing, .25rem) * 0);
+ opacity: 0;
+ width: 100%;
+ height: 100%;
+ display: none;
+ position: absolute;
+}
+:is(.recorder-input__container, .macro-recorder__input).record[data-v-9a99c4ac] {
+ display: block;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.context-menu {
+ position: relative;
+}
+.context-menu .context-menu__content {
+ pointer-events: none;
+ z-index: 50;
+ margin-top: calc(var(--spacing, .25rem) * 2);
+ --tw-translate-y: -100%;
+ min-width: 100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ border-radius: var(--radius-md, .375rem);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: color-mix(in oklab, var(--color-white, #fff) 50%, transparent);
+ background-color: color-mix(in oklab, var(--color-slate-100, oklch(.968 .007 247.896)) 60%, transparent);
+ color: var(--color-slate-800, oklch(.279 .041 260.031));
+ opacity: 0;
+ --tw-backdrop-blur: blur(var(--blur-3xl, 64px));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ transition-property: all;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ display: grid;
+ position: absolute;
+ top: 100%;
+}
+.context-menu .context-menu__content.open {
+ pointer-events: auto;
+ --tw-translate-y: calc(var(--spacing, .25rem) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ opacity: 1;
+}
+.context-menu ul {
+ color: var(--color-slate-800, oklch(.279 .041 260.031));
+}
+:where(.context-menu ul > :not(:last-child)) {
+ --tw-divide-y-reverse: 0;
+ border-bottom-style: var(--tw-border-style);
+ border-top-style: var(--tw-border-style);
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
+ border-color: var(--color-slate-300, oklch(.869 .022 252.894));
+}
+.context-menu ul li {
+ cursor: pointer;
+ align-items: center;
+ gap: calc(var(--spacing, .25rem) * 2);
+ padding: calc(var(--spacing, .25rem) * 2);
+ display: flex;
+}
+@media (hover: hover) {
+.context-menu ul li:hover {
+ background-color: color-mix(in oklab, var(--color-black, #000) 10%, transparent);
+}
+}
+.context-menu ul li svg {
+ width: calc(var(--spacing, .25rem) * 5);
+ height: calc(var(--spacing, .25rem) * 5);
+}
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-backdrop-blur {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-brightness {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-contrast {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-grayscale {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-invert {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-opacity {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-saturate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-sepia {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-divide-y-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+button.selected[data-v-601167b6] {
+ background-color: var(--color-sky-500, oklch(.685 .169 237.323));
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
+ --tw-ring-color: var(--color-sky-500, oklch(.685 .169 237.323));
+ --tw-ring-offset-width: 1px;
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+}
+@property --tw-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-ring-inset {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-offset-width {
+ syntax: "";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-ring-offset-color {
+ syntax: "*";
+ inherits: false;
+ initial-value: #fff;
+}
+@property --tw-ring-offset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.insert-output[data-v-d2aab140] {
+ margin-bottom: calc(var(--spacing, .25rem) * 4);
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ display: flex;
+}
+.insert-key__direction[data-v-d2aab140] {
+ margin-top: calc(var(--spacing, .25rem) * 6);
+ justify-content: center;
+ gap: calc(var(--spacing, .25rem) * 2);
+ display: flex;
+}
+button.selected[data-v-d2aab140] {
+ background-color: var(--color-sky-500, oklch(.685 .169 237.323));
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
+ --tw-ring-color: var(--color-sky-500, oklch(.685 .169 237.323));
+ --tw-ring-offset-width: 1px;
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+}
+@property --tw-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-inset-ring-color {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-inset-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+@property --tw-ring-inset {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ring-offset-width {
+ syntax: "";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-ring-offset-color {
+ syntax: "*";
+ inherits: false;
+ initial-value: #fff;
+}
+@property --tw-ring-offset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-edit__dialogs[data-v-bf9e32be] {
+ flex-grow: 1;
+ justify-content: flex-end;
+ display: flex;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-recorder__header[data-v-19251359] {
+ gap: calc(var(--spacing, .25rem) * 4);
+ width: 100%;
+ display: grid;
+}
+.macro-recorder__header .edit__buttons[data-v-19251359] {
+ justify-content: space-between;
+ gap: calc(var(--spacing, .25rem) * 2);
+ width: 100%;
+ display: flex;
+}
+.macro-recorder__header > div[data-v-19251359] {
+ align-items: flex-end;
+ gap: calc(var(--spacing, .25rem) * 2);
+ display: flex;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-recorder__footer[data-v-fec5e8b6] {
+ justify-content: space-between;
+ gap: calc(var(--spacing, .25rem) * 2);
+ display: flex;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-recorder {
+ height: 100%;
+}
+.recorder-interface {
+ gap: calc(var(--spacing, .25rem) * 4);
+ height: 100%;
+ transition-property: grid-template-rows;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ grid-template-rows: auto 1fr auto;
+ display: grid;
+}
+.recorder-interface__container {
+ border-radius: var(--radius-lg, .5rem);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-slate-600, oklch(.446 .043 257.281));
+ background-color: color-mix(in oklab, var(--color-slate-950, oklch(.129 .042 264.695)) 50%, transparent);
+ width: 100%;
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ position: relative;
+ overflow: auto;
+}
+.recorder-interface__container.record {
+ border-color: var(--color-rose-300, oklch(.81 .117 11.638));
+ background-color: color-mix(in oklab, var(--color-rose-400, oklch(.712 .194 13.428)) 10%, transparent);
+}
+.recorder-interface__container.edit {
+ border-color: var(--color-sky-300, oklch(.828 .111 230.318));
+ background-color: color-mix(in oklab, var(--color-sky-900, oklch(.391 .09 240.876)) 10%, transparent);
+}
+#macro-name {
+ border-color: #0000;
+ border-bottom-color: var(--color-slate-300, oklch(.869 .022 252.894));
+ width: 100%;
+ padding-block: calc(var(--spacing, .25rem) * 0);
+ font-size: var(--text-lg, 1.125rem);
+ line-height: var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));
+ outline-style: var(--tw-outline-style);
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ background-color: #0000;
+ border-radius: 0;
+ outline-width: 0;
+}
+#macro-name:focus {
+ border-color: #0000;
+ border-bottom-color: var(--color-sky-400, oklch(.746 .16 232.661));
+ background-color: color-mix(in oklab, var(--color-sky-400, oklch(.746 .16 232.661)) 10%, transparent);
+}
+.disabled {
+ pointer-events: none;
+ cursor: not-allowed;
+ opacity: .5;
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-outline-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.macro-panel__content[data-v-c7be9772] {
+ gap: calc(var(--spacing, .25rem) * 6);
+ padding-top: calc(var(--spacing, .25rem) * 2);
+ grid-template-columns: 25ch 1fr;
+ display: grid;
+}
diff --git a/public/assets/MacrosView-B-lS0uCi.css b/public/assets/MacrosView-B-lS0uCi.css
deleted file mode 100644
index c5a05ec..0000000
--- a/public/assets/MacrosView-B-lS0uCi.css
+++ /dev/null
@@ -1 +0,0 @@
-@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}:scope:has(.loading-component){position:relative}.loading-component{inset:calc(var(--spacing,.25rem)*0);justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem)*2);width:100%;height:100%;font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));--tw-backdrop-blur:blur(var(--blur-md,12px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);background-color:#00000080;flex-direction:column;display:flex;position:absolute}@supports (color:color-mix(in lab,red,red)){.loading-component{background-color:color-mix(in oklab,var(--color-black,#000)50%,transparent)}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-07eda649],[data-v-07eda649]:before,[data-v-07eda649]:after,[data-v-07eda649]::backdrop{--tw-content:"";--tw-duration:initial}}}.macro-overview[data-v-07eda649]{grid-template-rows:auto 1fr;display:grid;position:relative}.macro-overview[data-v-07eda649]:after{top:calc(var(--spacing,.25rem)*0);background-color:var(--color-slate-600,oklch(44.6% .043 257.281));--tw-content:"";content:var(--tw-content);width:1px;height:100%;position:absolute;left:100%}.macro-overview .macro-overview__list[data-v-07eda649]{margin-right:calc(var(--spacing,.25rem)*-1);gap:calc(var(--spacing,.25rem)*1);height:calc(100vh - 11.7rem);padding-right:calc(var(--spacing,.25rem)*1);flex-direction:column;display:flex;overflow:auto}.macro-overview .macro-item[data-v-07eda649]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;grid-template-columns:1fr 0fr;align-items:center;transition-duration:.3s;transition-delay:0s;display:grid}.macro-overview .macro-item[data-v-07eda649]:hover{grid-template-columns:1fr auto;transition-delay:.5s}.macro-overview .macro-item button.overview__macro-open[data-v-07eda649]{grid-template-columns:1rem 1fr;justify-items:start;width:100%;display:grid}.macro-overview .macro-item button.overview__macro-open span[data-v-07eda649]{text-overflow:ellipsis;white-space:nowrap;text-align:left;width:100%;overflow:hidden}.macro-overview .macro-item div.overview__macro-delete[data-v-07eda649]{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));display:grid;overflow:hidden}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-duration{syntax:"*";inherits:false}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-tracking:initial}}}kbd{height:calc(var(--spacing,.25rem)*9);align-items:center;gap:calc(var(--spacing,.25rem)*2);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-500,oklch(55.4% .046 257.417));background-color:var(--color-slate-700,oklch(37.2% .044 257.287));padding-block:calc(var(--spacing,.25rem)*1);padding-right:calc(var(--spacing,.25rem)*2);padding-left:calc(var(--spacing,.25rem)*4);font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75/1.125)));--tw-font-weight:var(--font-weight-bold,700);font-weight:var(--font-weight-bold,700);white-space:nowrap;color:var(--color-white,#fff);text-transform:uppercase;--tw-shadow-color:oklch(55.4% .046 257.417);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));box-shadow:0 .2rem 0 .2rem var(--tw-shadow-color);display:flex}@supports (color:color-mix(in lab,red,red)){kbd{--tw-shadow-color:color-mix(in oklab,var(--color-slate-500,oklch(55.4% .046 257.417))var(--tw-shadow-alpha),transparent)}}kbd:has(sup){padding-left:calc(var(--spacing,.25rem)*2)}kbd sup{margin-top:calc(var(--spacing,.25rem)*1);font-size:var(--text-xs,.75rem);line-height:var(--tw-leading,var(--text-xs--line-height,calc(1/.75)));--tw-font-weight:var(--font-weight-light,300);font-weight:var(--font-weight-light,300);color:var(--color-slate-200,oklch(92.9% .013 255.508))}kbd span.dir{padding-left:calc(var(--spacing,.25rem)*1);color:var(--color-slate-200,oklch(92.9% .013 255.508))}kbd.empty{cursor:pointer;border-color:var(--color-sky-300,oklch(82.8% .111 230.318));padding-right:calc(var(--spacing,.25rem)*3);padding-left:calc(var(--spacing,.25rem)*3);--tw-tracking:var(--tracking-widest,.1em);letter-spacing:var(--tracking-widest,.1em);--tw-shadow-color:oklch(58.8% .158 241.966);background-color:#00bcfe80}@supports (color:color-mix(in lab,red,red)){kbd.empty{background-color:color-mix(in oklab,var(--color-sky-400,oklch(74.6% .16 232.661))50%,transparent);--tw-shadow-color:color-mix(in oklab,var(--color-sky-600,oklch(58.8% .158 241.966))var(--tw-shadow-alpha),transparent)}}kbd.insert{cursor:pointer;border-color:var(--color-yellow-300,oklch(90.5% .182 98.111));--tw-shadow-color:oklch(68.1% .162 75.834);background-color:#edb20080}@supports (color:color-mix(in lab,red,red)){kbd.insert{background-color:color-mix(in oklab,var(--color-yellow-500,oklch(79.5% .184 86.047))50%,transparent);--tw-shadow-color:color-mix(in oklab,var(--color-yellow-600,oklch(68.1% .162 75.834))var(--tw-shadow-alpha),transparent)}}:has(kdb):not(.edit) kbd{pointer-events:none;cursor:default}.edit kbd{pointer-events:auto;cursor:pointer}.edit kbd:hover,.edit kbd.active{border-color:var(--color-sky-400,oklch(74.6% .16 232.661));background-color:var(--color-sky-900,oklch(39.1% .09 240.876));--tw-shadow-color:oklch(50% .134 242.749)}@supports (color:color-mix(in lab,red,red)){:is(.edit kbd:hover,.edit kbd.active){--tw-shadow-color:color-mix(in oklab,var(--color-sky-700,oklch(50% .134 242.749))var(--tw-shadow-alpha),transparent)}}@property --tw-tracking{syntax:"*";inherits:false}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-eb548d44],[data-v-eb548d44]:before,[data-v-eb548d44]:after,[data-v-eb548d44]::backdrop{--tw-border-style:solid;--tw-font-weight:initial}}}span.delay[data-v-eb548d44]{cursor:default;border-radius:var(--radius-sm,.25rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-400,oklch(70.4% .04 256.788));background-color:var(--color-slate-500,oklch(55.4% .046 257.417));padding-inline:calc(var(--spacing,.25rem)*2);padding-block:calc(var(--spacing,.25rem)*1);font-family:var(--font-sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);color:var(--color-slate-950,oklch(12.9% .042 264.695));align-items:center;display:flex}span.delay.preset[data-v-eb548d44]{color:var(--color-amber-400,oklch(82.8% .189 84.429));background-color:#fef3c699;border-color:#ffd236cc}@supports (color:color-mix(in lab,red,red)){span.delay.preset[data-v-eb548d44]{border-color:color-mix(in oklab,var(--color-amber-300,oklch(87.9% .169 91.605))80%,transparent);background-color:color-mix(in oklab,var(--color-amber-100,oklch(96.2% .059 95.617))60%,transparent)}}span.delay i[data-v-eb548d44]{padding-left:calc(var(--spacing,.25rem)*1);--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);opacity:.8;font-style:normal}.edit span.delay[data-v-eb548d44]{cursor:pointer}.edit span.delay[data-v-eb548d44]:hover,.edit span.delay.active[data-v-eb548d44]{border-color:var(--color-lime-500,oklch(76.8% .233 130.85));background-color:var(--color-lime-700,oklch(53.2% .157 131.589));color:var(--color-lime-200,oklch(93.8% .127 124.321))}@property --tw-font-weight{syntax:"*";inherits:false}.macro-recorder__output[data-v-bfb55e2e]{top:calc(var(--spacing,.25rem)*0);left:calc(var(--spacing,.25rem)*0);align-items:center;row-gap:calc(var(--spacing,.25rem)*4);height:fit-content;padding:calc(var(--spacing,.25rem)*4);flex-wrap:wrap;display:flex;position:absolute}hr.spacer[data-v-bfb55e2e]:last-of-type{display:none}.recorder-input__container[data-v-f1475559],.macro-recorder__input[data-v-f1475559]{inset:calc(var(--spacing,.25rem)*0);opacity:0;width:100%;height:100%;display:none;position:absolute}:is(.recorder-input__container,.macro-recorder__input).record[data-v-f1475559]{display:block}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-divide-y-reverse:0}}}.context-menu{position:relative}.context-menu .context-menu__content{pointer-events:none;z-index:50;margin-top:calc(var(--spacing,.25rem)*2);--tw-translate-y:-100%;min-width:100%;translate:var(--tw-translate-x)var(--tw-translate-y);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);color:var(--color-slate-800,oklch(27.9% .041 260.031));opacity:0;--tw-backdrop-blur:blur(var(--blur-3xl,64px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#f1f5f999;border-width:1px;border-color:#ffffff80;display:grid;position:absolute;top:100%}@supports (color:color-mix(in lab,red,red)){.context-menu .context-menu__content{border-color:color-mix(in oklab,var(--color-white,#fff)50%,transparent);background-color:color-mix(in oklab,var(--color-slate-100,oklch(96.8% .007 247.896))60%,transparent)}}.context-menu .context-menu__content.open{pointer-events:auto;--tw-translate-y:calc(var(--spacing,.25rem)*0);translate:var(--tw-translate-x)var(--tw-translate-y);opacity:1}.context-menu ul{color:var(--color-slate-800,oklch(27.9% .041 260.031))}:where(.context-menu ul>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-color:var(--color-slate-300,oklch(86.9% .022 252.894))}.context-menu ul li{cursor:pointer;align-items:center;gap:calc(var(--spacing,.25rem)*2);padding:calc(var(--spacing,.25rem)*2);display:flex}@media (hover:hover){.context-menu ul li:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.context-menu ul li:hover{background-color:color-mix(in oklab,var(--color-black,#000)10%,transparent)}}}.context-menu ul li svg{width:calc(var(--spacing,.25rem)*5);height:calc(var(--spacing,.25rem)*5)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-ba580ef2],[data-v-ba580ef2]:before,[data-v-ba580ef2]:after,[data-v-ba580ef2]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}button.selected[data-v-ba580ef2]{background-color:var(--color-sky-500,oklch(68.5% .169 237.323));--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-sky-500,oklch(68.5% .169 237.323));--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-046a1063],[data-v-046a1063]:before,[data-v-046a1063]:after,[data-v-046a1063]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}.insert-output[data-v-046a1063]{margin-bottom:calc(var(--spacing,.25rem)*4);justify-content:center;align-items:center;width:100%;display:flex}.insert-key__direction[data-v-046a1063]{margin-top:calc(var(--spacing,.25rem)*6);justify-content:center;gap:calc(var(--spacing,.25rem)*2);display:flex}button.selected[data-v-046a1063]{background-color:var(--color-sky-500,oklch(68.5% .169 237.323));--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-ring-color:var(--color-sky-500,oklch(68.5% .169 237.323));--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}.macro-edit__dialogs[data-v-2ff36c22]{flex-grow:1;justify-content:flex-end;display:flex}.macro-recorder__header[data-v-f2d09e68]{gap:calc(var(--spacing,.25rem)*4);width:100%;display:grid}.macro-recorder__header .edit__buttons[data-v-f2d09e68]{justify-content:space-between;gap:calc(var(--spacing,.25rem)*2);width:100%;display:flex}.macro-recorder__header>div[data-v-f2d09e68]{align-items:flex-end;gap:calc(var(--spacing,.25rem)*2);display:flex}.macro-recorder__footer[data-v-0a809300]{justify-content:space-between;gap:calc(var(--spacing,.25rem)*2);display:flex}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-outline-style:solid}}}.macro-recorder{height:100%}.recorder-interface{gap:calc(var(--spacing,.25rem)*4);height:100%;transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));grid-template-rows:auto 1fr auto;display:grid}.recorder-interface__container{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-600,oklch(44.6% .043 257.281));width:100%;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#02061880;position:relative;overflow:auto}@supports (color:color-mix(in lab,red,red)){.recorder-interface__container{background-color:color-mix(in oklab,var(--color-slate-950,oklch(12.9% .042 264.695))50%,transparent)}}.recorder-interface__container.record{border-color:var(--color-rose-300,oklch(81% .117 11.638));background-color:#ff667f1a}@supports (color:color-mix(in lab,red,red)){.recorder-interface__container.record{background-color:color-mix(in oklab,var(--color-rose-400,oklch(71.2% .194 13.428))10%,transparent)}}.recorder-interface__container.edit{border-color:var(--color-sky-300,oklch(82.8% .111 230.318));background-color:#024a701a}@supports (color:color-mix(in lab,red,red)){.recorder-interface__container.edit{background-color:color-mix(in oklab,var(--color-sky-900,oklch(39.1% .09 240.876))10%,transparent)}}#macro-name{border-color:#0000;border-bottom-color:var(--color-slate-300,oklch(86.9% .022 252.894));width:100%;padding-block:calc(var(--spacing,.25rem)*0);font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75/1.125)));outline-style:var(--tw-outline-style);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0000;border-radius:0;outline-width:0}#macro-name:focus{border-color:#0000;border-bottom-color:var(--color-sky-400,oklch(74.6% .16 232.661));background-color:#00bcfe1a}@supports (color:color-mix(in lab,red,red)){#macro-name:focus{background-color:color-mix(in oklab,var(--color-sky-400,oklch(74.6% .16 232.661))10%,transparent)}}.disabled{pointer-events:none;cursor:not-allowed;opacity:.5}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */.macro-panel__content[data-v-fc7e8117]{gap:calc(var(--spacing,.25rem)*6);padding-top:calc(var(--spacing,.25rem)*2);grid-template-columns:25ch 1fr;display:grid}
diff --git a/public/assets/MacrosView-Bf1eb3go.js b/public/assets/MacrosView-Bf1eb3go.js
new file mode 100644
index 0000000..5028ea7
--- /dev/null
+++ b/public/assets/MacrosView-Bf1eb3go.js
@@ -0,0 +1,1419 @@
+import { a as createVueComponent, _ as _export_sfc, r as reactive, b as onMounted, d as axios, e as appUrl, c as createElementBlock, f as createBaseVNode, F as Fragment, g as renderList, o as openBlock, h as createVNode, w as withCtx, i as createTextVNode, u as unref, I as IconKeyboard, t as toDisplayString, j as withModifiers, k as isLocal, A as AuthCall, l as defineStore, m as ref, n as onUpdated, p as createCommentVNode, q as normalizeClass, s as createBlock, v as renderSlot, x as withDirectives, y as vModelText } from "./index-GNAKlyBz.js";
+import { _ as _sfc_main$h, a as _sfc_main$i } from "./DialogComp-Ba5-BUTe.js";
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconAlarm = createVueComponent("outline", "alarm", "IconAlarm", [["path", { "d": "M12 13m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0", "key": "svg-0" }], ["path", { "d": "M12 10l0 3l2 0", "key": "svg-1" }], ["path", { "d": "M7 4l-2.75 2", "key": "svg-2" }], ["path", { "d": "M17 4l2.75 2", "key": "svg-3" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconArrowLeftCircle = createVueComponent("outline", "arrow-left-circle", "IconArrowLeftCircle", [["path", { "d": "M17 12h-14", "key": "svg-0" }], ["path", { "d": "M6 9l-3 3l3 3", "key": "svg-1" }], ["path", { "d": "M19 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconArrowRightCircle = createVueComponent("outline", "arrow-right-circle", "IconArrowRightCircle", [["path", { "d": "M18 15l3 -3l-3 -3", "key": "svg-0" }], ["path", { "d": "M5 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M7 12h14", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDeviceFloppy = createVueComponent("outline", "device-floppy", "IconDeviceFloppy", [["path", { "d": "M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2", "key": "svg-0" }], ["path", { "d": "M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M14 4l0 4l-6 0l0 -4", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconPencil = createVueComponent("outline", "pencil", "IconPencil", [["path", { "d": "M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4", "key": "svg-0" }], ["path", { "d": "M13.5 6.5l4 4", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconPlus = createVueComponent("outline", "plus", "IconPlus", [["path", { "d": "M12 5l0 14", "key": "svg-0" }], ["path", { "d": "M5 12l14 0", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconRestore = createVueComponent("outline", "restore", "IconRestore", [["path", { "d": "M3.06 13a9 9 0 1 0 .49 -4.087", "key": "svg-0" }], ["path", { "d": "M3 4.001v5h5", "key": "svg-1" }], ["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconTimeDuration15 = createVueComponent("outline", "time-duration-15", "IconTimeDuration15", [["path", { "d": "M12 15h2a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-2v-3h3", "key": "svg-0" }], ["path", { "d": "M9 9v6", "key": "svg-1" }], ["path", { "d": "M3 12v.01", "key": "svg-2" }], ["path", { "d": "M12 21v.01", "key": "svg-3" }], ["path", { "d": "M7.5 4.2v.01", "key": "svg-4" }], ["path", { "d": "M16.5 19.8v.01", "key": "svg-5" }], ["path", { "d": "M7.5 19.8v.01", "key": "svg-6" }], ["path", { "d": "M4.2 16.5v.01", "key": "svg-7" }], ["path", { "d": "M19.8 16.5v.01", "key": "svg-8" }], ["path", { "d": "M4.2 7.5v.01", "key": "svg-9" }], ["path", { "d": "M21 12a9 9 0 0 0 -9 -9", "key": "svg-10" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconTrash = createVueComponent("outline", "trash", "IconTrash", [["path", { "d": "M4 7l16 0", "key": "svg-0" }], ["path", { "d": "M10 11l0 6", "key": "svg-1" }], ["path", { "d": "M14 11l0 6", "key": "svg-2" }], ["path", { "d": "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12", "key": "svg-3" }], ["path", { "d": "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3", "key": "svg-4" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconPlayerRecordFilled = createVueComponent("filled", "player-record-filled", "IconPlayerRecordFilled", [["path", { "d": "M8 5.072a8 8 0 1 1 -3.995 7.213l-.005 -.285l.005 -.285a8 8 0 0 1 3.995 -6.643z", "key": "svg-0" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconPlayerStopFilled = createVueComponent("filled", "player-stop-filled", "IconPlayerStopFilled", [["path", { "d": "M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z", "key": "svg-0" }]]);
+const _hoisted_1$d = { class: "macro-overview mcrm-block block__dark" };
+const _hoisted_2$b = { class: "macro-overview__list" };
+const _sfc_main$g = {
+ __name: "MacroOverview",
+ setup(__props) {
+ const macros = reactive({
+ list: []
+ });
+ onMounted(() => {
+ axios.post(appUrl() + "/macro/list").then((data) => {
+ if (data.data.length > 0) macros.list = data.data;
+ });
+ });
+ function runMacro(macro) {
+ const data = isLocal() ? { macro } : AuthCall({ macro });
+ axios.post(appUrl() + "/macro/play", data).then((data2) => {
+ console.log(data2);
+ });
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$d, [
+ _cache[0] || (_cache[0] = createBaseVNode("h4", { class: "border-b-2 border-transparent" }, "Saved Macros", -1)),
+ createBaseVNode("div", _hoisted_2$b, [
+ (openBlock(true), createElementBlock(Fragment, null, renderList(macros.list, (macro, i) => {
+ return openBlock(), createElementBlock("div", {
+ class: "macro-item",
+ key: i
+ }, [
+ createVNode(_sfc_main$h, {
+ variant: "dark",
+ class: "w-full",
+ size: "sm",
+ onClick: withModifiers(($event) => runMacro(macro), ["prevent"])
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconKeyboard)),
+ createTextVNode(" " + toDisplayString(macro), 1)
+ ]),
+ _: 2
+ }, 1032, ["onClick"])
+ ]);
+ }), 128))
+ ])
+ ]);
+ };
+ }
+};
+const MacroOverview = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-f9a187e3"]]);
+const keyMap = {
+ // Modifier keys
+ Control: "Ctrl",
+ Shift: "Shift",
+ Alt: "Alt",
+ Meta: "Win",
+ CapsLock: "Caps",
+ // Special keys
+ PageUp: "PgUp",
+ PageDown: "PgDn",
+ ScrollLock: "Scr Lk",
+ Insert: "Ins",
+ Delete: "Del",
+ Escape: "Esc",
+ Space: "Space",
+ // Symbol keys
+ Backquote: "`",
+ Backslash: "\\",
+ BracketLeft: "[",
+ BracketRight: "]",
+ Comma: ",",
+ Equal: "=",
+ Minus: "-",
+ Period: ".",
+ Quote: "'",
+ Semicolon: ";",
+ Slash: "/",
+ // Arrow keys
+ ArrowUp: "▲",
+ ArrowRight: "▶",
+ ArrowDown: "▼",
+ ArrowLeft: "◀",
+ // Media keys
+ MediaPlayPause: "Play",
+ MediaStop: "Stop",
+ MediaTrackNext: "Next",
+ MediaTrackPrevious: "Prev",
+ MediaVolumeDown: "Down",
+ MediaVolumeUp: "Up",
+ AudioVolumeMute: "Mute",
+ AudioVolumeDown: "Down",
+ AudioVolumeUp: "Up"
+};
+const filterKey = (e) => {
+ const k = {};
+ if (e.location === 1) k.loc = "left";
+ if (e.location === 2) k.loc = "right";
+ if (e.location === 3) k.loc = "num";
+ if (e.key.includes("Media") || e.key.includes("Audio")) k.loc = mediaPrefix(e);
+ if (keyMap[e.code] || keyMap[e.key]) {
+ k.str = keyMap[e.code] || keyMap[e.key];
+ } else {
+ k.str = e.key.toLowerCase();
+ }
+ return k;
+};
+const mediaPrefix = (e) => {
+ switch (e.key) {
+ case "MediaPlayPause":
+ case "MediaStop":
+ case "MediaTrackNext":
+ case "MediaTrackPrevious":
+ return "Media";
+ case "MediaVolumeDown":
+ case "MediaVolumeUp":
+ case "AudioVolumeDown":
+ case "AudioVolumeUp":
+ case "AudioVolumeMute":
+ return "Volume";
+ }
+};
+const isRepeat = (lastStep, e, direction) => {
+ return lastStep && lastStep.type === "key" && lastStep.code === e.code && lastStep.direction === direction;
+};
+const invalidMacro = (steps) => {
+ const downKeys = [];
+ const upKeys = [];
+ Object.keys(steps).forEach((stepKey) => {
+ const step = steps[stepKey];
+ if (step.type !== "key") return;
+ if (step.direction == "down") downKeys.push(step.key);
+ if (step.direction == "up") {
+ if (!downKeys.includes(step.key)) upKeys.push(step.key);
+ else downKeys.splice(downKeys.indexOf(step.key), 1);
+ }
+ });
+ if (upKeys.length === 0 && downKeys.length === 0) return false;
+ return { down: downKeys, up: upKeys };
+};
+const useMacroRecorderStore = defineStore("macrorecorder", () => {
+ const state = ref({
+ record: false,
+ edit: false,
+ editKey: false,
+ editDelay: false,
+ validationErrors: false
+ });
+ const macroName = ref("");
+ const steps = ref([]);
+ const delay = ref({
+ start: 0,
+ fixed: false
+ });
+ const getEditKey = () => steps.value[state.value.editKey];
+ const getAdjacentKey = (pos, includeDelay = false) => {
+ let returnVal = false;
+ const mod = pos == "before" ? -1 : 1;
+ const keyIndex = state.value.editKey + 2 * mod;
+ const delayIndex = includeDelay ? state.value.editKey + 1 * mod : false;
+ if (steps.value[keyIndex]) returnVal = steps.value[keyIndex];
+ if (delayIndex && steps.value[delayIndex])
+ returnVal = {
+ delay: steps.value[delayIndex],
+ key: steps.value[keyIndex],
+ delayIndex
+ };
+ return returnVal;
+ };
+ const getEditDelay = () => steps.value[state.value.editDelay];
+ const recordStep = (e, direction = false, key = false) => {
+ const lastStep = steps.value[steps.value.length - 1];
+ let stepVal = {};
+ if (typeof e === "object" && !isRepeat(lastStep, e, direction)) {
+ if (key === false) recordDelay();
+ stepVal = {
+ type: "key",
+ key: e.key,
+ code: e.code,
+ location: e.location,
+ direction,
+ keyObj: filterKey(e)
+ };
+ } else if (direction && key !== false) {
+ stepVal = steps.value[key];
+ stepVal.direction = direction;
+ } else if (typeof e === "number") {
+ stepVal = { type: "delay", value: parseFloat(e.toFixed()) };
+ }
+ if (key !== false) steps.value[key] = stepVal;
+ else steps.value.push(stepVal);
+ };
+ const recordDelay = () => {
+ if (delay.value.fixed !== false)
+ recordStep(delay.value.fixed);
+ else if (delay.value.start == 0)
+ delay.value.start = performance.now();
+ else {
+ recordStep(performance.now() - delay.value.start);
+ delay.value.start = performance.now();
+ }
+ };
+ const insertKey = (e, direction, adjacentDelayIndex) => {
+ let min, max, newKeyIndex, newDelayIndex;
+ if (adjacentDelayIndex === null) {
+ min = state.value.editKey == 0 ? 0 : state.value.editKey;
+ max = state.value.editKey == 0 ? 1 : false;
+ newKeyIndex = max === false ? min + 2 : min;
+ newDelayIndex = min + 1;
+ } else if (state.value.editKey < adjacentDelayIndex) {
+ min = state.value.editKey;
+ max = adjacentDelayIndex;
+ newKeyIndex = min + 2;
+ newDelayIndex = min + 1;
+ } else {
+ min = adjacentDelayIndex;
+ max = state.value.editKey;
+ newKeyIndex = min + 1;
+ newDelayIndex = min + 2;
+ }
+ if (max !== false) {
+ for (let i = Object.keys(steps.value).length - 1; i >= max; i--) {
+ steps.value[i + 2] = steps.value[i];
+ }
+ }
+ recordStep(e, direction, newKeyIndex);
+ recordStep(10, false, newDelayIndex);
+ state.value.editKey = false;
+ };
+ const deleteEditKey = () => {
+ if (state.value.editKey === 0) steps.value.splice(state.value.editKey, 2);
+ else steps.value.splice(state.value.editKey - 1, 2);
+ state.value.editKey = false;
+ };
+ const restartDelay = () => {
+ delay.value.start = performance.now();
+ };
+ const changeName = (name) => {
+ macroName.value = name;
+ console.log(macroName.value);
+ };
+ const changeDelay = (fixed) => {
+ delay.value.fixed = fixed;
+ formatDelays();
+ };
+ const formatDelays = () => {
+ steps.value = steps.value.map((step) => {
+ if (step.type === "delay" && delay.value.fixed !== false) step.value = delay.value.fixed;
+ return step;
+ });
+ };
+ const toggleEdit = (type, key) => {
+ if (type === "key") {
+ state.value.editKey = key;
+ state.value.editDelay = false;
+ }
+ if (type === "delay") {
+ state.value.editKey = false;
+ state.value.editDelay = key;
+ }
+ };
+ const resetEdit = () => {
+ state.value.edit = false;
+ state.value.editKey = false;
+ state.value.editDelay = false;
+ };
+ const reset = () => {
+ state.value.record = false;
+ delay.value.start = 0;
+ steps.value = [];
+ if (state.value.edit) resetEdit();
+ };
+ const save = () => {
+ state.value.validationErrors = invalidMacro(steps.value);
+ if (state.value.validationErrors) return false;
+ axios.post(appUrl() + "/macro/record", { name: macroName.value, steps: steps.value }).then((data) => {
+ console.log(data);
+ });
+ return true;
+ };
+ return {
+ state,
+ steps,
+ delay,
+ getEditKey,
+ getAdjacentKey,
+ getEditDelay,
+ recordStep,
+ insertKey,
+ deleteEditKey,
+ restartDelay,
+ changeName,
+ changeDelay,
+ toggleEdit,
+ resetEdit,
+ reset,
+ save
+ };
+});
+const _hoisted_1$c = { key: 0 };
+const _hoisted_2$a = ["innerHTML"];
+const _hoisted_3$6 = { class: "dir" };
+const _hoisted_4$4 = { key: 1 };
+const _sfc_main$f = {
+ __name: "MacroKey",
+ props: {
+ keyObj: Object,
+ direction: String,
+ active: Boolean,
+ empty: Boolean
+ },
+ setup(__props) {
+ const props = __props;
+ const dir = reactive({
+ value: false
+ });
+ onMounted(() => {
+ if (props.empty) return;
+ setDirection();
+ });
+ onUpdated(() => {
+ setDirection();
+ });
+ const setDirection = () => {
+ if (props.direction) dir.value = props.direction;
+ else dir.value = props.keyObj.direction;
+ };
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("kbd", {
+ class: normalizeClass(`${__props.active ? "active" : ""} ${__props.empty ? "empty" : ""}`)
+ }, [
+ __props.keyObj ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
+ __props.keyObj.loc ? (openBlock(), createElementBlock("sup", _hoisted_1$c, toDisplayString(__props.keyObj.loc), 1)) : createCommentVNode("", true),
+ createBaseVNode("span", {
+ innerHTML: __props.keyObj.str
+ }, null, 8, _hoisted_2$a),
+ createBaseVNode("span", _hoisted_3$6, toDisplayString(dir.value === "down" ? "↓" : "↑"), 1)
+ ], 64)) : __props.empty ? (openBlock(), createElementBlock("span", _hoisted_4$4, "[ ]")) : createCommentVNode("", true)
+ ], 2);
+ };
+ }
+};
+const _sfc_main$e = {
+ __name: "DelaySpan",
+ props: {
+ value: Number,
+ active: Boolean,
+ preset: Boolean
+ },
+ setup(__props) {
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("span", {
+ class: normalizeClass(`delay ${__props.active ? "active" : ""} ${__props.preset ? "preset" : ""}`)
+ }, [
+ __props.value < 1e4 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
+ createTextVNode(toDisplayString(__props.value) + " ", 1),
+ _cache[0] || (_cache[0] = createBaseVNode("i", null, "ms", -1))
+ ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
+ _cache[1] || (_cache[1] = createTextVNode(" >10 ")),
+ _cache[2] || (_cache[2] = createBaseVNode("i", null, "s", -1))
+ ], 64))
+ ], 2);
+ };
+ }
+};
+const DelaySpan = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-05e04cbb"]]);
+const _sfc_main$d = {
+ __name: "RecorderOutput",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", {
+ class: normalizeClass(`macro-recorder__output ${unref(macroRecorder).state.record && "record"} ${unref(macroRecorder).state.edit && "edit"}`)
+ }, [
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(macroRecorder).steps, (step, key) => {
+ return openBlock(), createElementBlock(Fragment, null, [
+ step.type === "key" ? (openBlock(), createBlock(_sfc_main$f, {
+ key,
+ "key-obj": step.keyObj,
+ direction: step.direction,
+ active: unref(macroRecorder).state.editKey === key,
+ onClick: ($event) => unref(macroRecorder).state.edit ? unref(macroRecorder).toggleEdit("key", key) : false
+ }, null, 8, ["key-obj", "direction", "active", "onClick"])) : step.type === "delay" ? (openBlock(), createBlock(DelaySpan, {
+ key,
+ value: step.value,
+ active: unref(macroRecorder).state.editDelay === key,
+ onClick: ($event) => unref(macroRecorder).toggleEdit("delay", key)
+ }, null, 8, ["value", "active", "onClick"])) : createCommentVNode("", true),
+ _cache[0] || (_cache[0] = createBaseVNode("hr", { class: "spacer" }, null, -1))
+ ], 64);
+ }), 256))
+ ], 2);
+ };
+ }
+};
+const RecorderOutput = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-33cbf1af"]]);
+const _sfc_main$c = {
+ __name: "RecorderInput",
+ setup(__props) {
+ const macroInput = ref(null);
+ const macroRecorder = useMacroRecorderStore();
+ onUpdated(() => {
+ if (macroRecorder.state.record) {
+ macroInput.value.focus();
+ if (macroRecorder.delay.start !== 0) macroRecorder.restartDelay();
+ }
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", {
+ class: normalizeClass(`recorder-input__container ${unref(macroRecorder).state.record && "record"}`)
+ }, [
+ unref(macroRecorder).state.record ? (openBlock(), createElementBlock("input", {
+ key: 0,
+ class: normalizeClass(`macro-recorder__input ${unref(macroRecorder).state.record && "record"}`),
+ type: "text",
+ ref_key: "macroInput",
+ ref: macroInput,
+ onFocus: _cache[0] || (_cache[0] = ($event) => console.log("focus")),
+ onKeydown: _cache[1] || (_cache[1] = withModifiers(($event) => unref(macroRecorder).recordStep($event, "down"), ["prevent"])),
+ onKeyup: _cache[2] || (_cache[2] = withModifiers(($event) => unref(macroRecorder).recordStep($event, "up"), ["prevent"]))
+ }, null, 34)) : createCommentVNode("", true)
+ ], 2);
+ };
+ }
+};
+const RecorderInput = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-9a99c4ac"]]);
+const _hoisted_1$b = { class: "context-menu" };
+const _sfc_main$b = {
+ __name: "ContextMenu",
+ props: {
+ open: Boolean
+ },
+ setup(__props, { expose: __expose }) {
+ __expose({ toggle });
+ const props = __props;
+ const menuOpen = ref(false);
+ onMounted(() => {
+ menuOpen.value = props.open;
+ });
+ function toggle() {
+ console.log("toggle");
+ menuOpen.value = !menuOpen.value;
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$b, [
+ createBaseVNode("div", {
+ class: "context-menu__trigger",
+ onClick: toggle
+ }, [
+ renderSlot(_ctx.$slots, "trigger")
+ ]),
+ createBaseVNode("div", {
+ class: normalizeClass(`context-menu__content ${menuOpen.value ? "open" : ""}`)
+ }, [
+ renderSlot(_ctx.$slots, "content")
+ ], 2)
+ ]);
+ };
+ }
+};
+const _hoisted_1$a = {
+ type: "number",
+ step: "10",
+ min: "0",
+ max: "3600000",
+ ref: "customDelayInput",
+ placeholder: "100"
+};
+const _hoisted_2$9 = { class: "flex justify-end" };
+const _sfc_main$a = {
+ __name: "FixedDelayMenu",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const ctxtMenu = ref();
+ function changeDelay(num) {
+ macroRecorder.changeDelay(num);
+ ctxtMenu.value.toggle();
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createBlock(_sfc_main$b, {
+ ref_key: "ctxtMenu",
+ ref: ctxtMenu
+ }, {
+ trigger: withCtx(() => [
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ size: "sm"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconTimeDuration15)),
+ _cache[5] || (_cache[5] = createTextVNode("Fixed delay "))
+ ]),
+ _: 1
+ })
+ ]),
+ content: withCtx(() => [
+ createBaseVNode("ul", null, [
+ createBaseVNode("li", {
+ onClick: _cache[0] || (_cache[0] = ($event) => changeDelay(0))
+ }, "0ms"),
+ createBaseVNode("li", {
+ onClick: _cache[1] || (_cache[1] = ($event) => changeDelay(15))
+ }, "15ms"),
+ createBaseVNode("li", {
+ onClick: _cache[2] || (_cache[2] = ($event) => changeDelay(50))
+ }, "50ms"),
+ createBaseVNode("li", {
+ onClick: _cache[3] || (_cache[3] = ($event) => changeDelay(100))
+ }, "100ms"),
+ createBaseVNode("li", null, [
+ createVNode(_sfc_main$i, null, {
+ trigger: withCtx(() => _cache[6] || (_cache[6] = [
+ createBaseVNode("span", null, "Custom delay", -1)
+ ])),
+ content: withCtx(() => [
+ _cache[9] || (_cache[9] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Custom delay", -1)),
+ createBaseVNode("form", {
+ class: "grid gap-4 w-44",
+ onSubmit: _cache[4] || (_cache[4] = withModifiers(($event) => changeDelay(parseInt(_ctx.$refs.customDelayInput.value)), ["prevent"]))
+ }, [
+ createBaseVNode("div", null, [
+ createBaseVNode("input", _hoisted_1$a, null, 512),
+ _cache[7] || (_cache[7] = createBaseVNode("span", null, "ms", -1))
+ ]),
+ createBaseVNode("div", _hoisted_2$9, [
+ createVNode(_sfc_main$h, {
+ variant: "primary",
+ size: "sm"
+ }, {
+ default: withCtx(() => _cache[8] || (_cache[8] = [
+ createTextVNode("Set custom delay")
+ ])),
+ _: 1
+ })
+ ])
+ ], 32)
+ ]),
+ _: 1
+ })
+ ])
+ ])
+ ]),
+ _: 1
+ }, 512);
+ };
+ }
+};
+const FixedDelayMenu = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-597b5d4a"]]);
+const _hoisted_1$9 = {
+ id: "edit-key-dialog",
+ class: "dialog__content"
+};
+const _hoisted_2$8 = {
+ class: "grid gap-4",
+ "submit.prevent": ""
+};
+const _hoisted_3$5 = { class: "flex gap-2 justify-center" };
+const _hoisted_4$3 = { class: "flex justify-end" };
+const _sfc_main$9 = {
+ __name: "EditKeyDialog",
+ setup(__props) {
+ const editable = reactive({
+ key: {},
+ newKey: {}
+ });
+ const macroRecorder = useMacroRecorderStore();
+ const newKeyInput = ref(null);
+ onMounted(() => {
+ editable.key = macroRecorder.getEditKey();
+ editable.newKey.direction = editable.key.direction;
+ });
+ const handleNewKey = (e) => {
+ editable.newKey.e = e;
+ editable.newKey.keyObj = filterKey(e);
+ };
+ const handleNewDirection = (direction) => {
+ editable.newKey.direction = direction;
+ editable.newKey.keyObj = filterKey(editable.key);
+ };
+ const changeKey = () => {
+ macroRecorder.recordStep(
+ editable.newKey.e,
+ editable.newKey.direction,
+ macroRecorder.state.editKey
+ );
+ macroRecorder.state.editKey = false;
+ };
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
+ _cache[9] || (_cache[9] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Press a key", -1)),
+ createBaseVNode("div", {
+ class: "flex justify-center",
+ onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.newKeyInput.focus())
+ }, [
+ editable.key.keyObj ? (openBlock(), createBlock(_sfc_main$f, {
+ key: 0,
+ "key-obj": editable.key.keyObj,
+ direction: editable.key.direction
+ }, null, 8, ["key-obj", "direction"])) : createCommentVNode("", true),
+ typeof editable.newKey.keyObj === "object" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
+ _cache[5] || (_cache[5] = createBaseVNode("span", { class: "px-4 flex items-center text-white" }, " >>> ", -1)),
+ createVNode(_sfc_main$f, {
+ "key-obj": editable.newKey.keyObj,
+ direction: editable.newKey.direction
+ }, null, 8, ["key-obj", "direction"])
+ ], 64)) : createCommentVNode("", true)
+ ]),
+ createBaseVNode("form", _hoisted_2$8, [
+ createBaseVNode("input", {
+ class: "size-0 opacity-0",
+ type: "text",
+ min: "0",
+ max: "1",
+ ref_key: "newKeyInput",
+ ref: newKeyInput,
+ placeholder: "New key",
+ autofocus: "",
+ onKeydown: _cache[1] || (_cache[1] = withModifiers(($event) => handleNewKey($event), ["prevent"]))
+ }, null, 544),
+ createBaseVNode("div", _hoisted_3$5, [
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ class: normalizeClass(editable.newKey.direction === "down" ? "selected" : ""),
+ size: "sm",
+ onClick: _cache[2] || (_cache[2] = withModifiers(($event) => handleNewDirection("down"), ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[6] || (_cache[6] = [
+ createTextVNode(" ↓ Down ")
+ ])),
+ _: 1
+ }, 8, ["class"]),
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ class: normalizeClass(editable.newKey.direction === "up" ? "selected" : ""),
+ size: "sm",
+ onClick: _cache[3] || (_cache[3] = withModifiers(($event) => handleNewDirection("up"), ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[7] || (_cache[7] = [
+ createTextVNode(" ↑ Up ")
+ ])),
+ _: 1
+ }, 8, ["class"])
+ ]),
+ createBaseVNode("div", _hoisted_4$3, [
+ createVNode(_sfc_main$h, {
+ variant: "primary",
+ size: "sm",
+ onClick: _cache[4] || (_cache[4] = withModifiers(($event) => changeKey(), ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[8] || (_cache[8] = [
+ createTextVNode(" Change key ")
+ ])),
+ _: 1
+ })
+ ])
+ ])
+ ]);
+ };
+ }
+};
+const EditKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-601167b6"]]);
+const _hoisted_1$8 = {
+ id: "edit-delay-dialog",
+ class: "dialog__content"
+};
+const _hoisted_2$7 = {
+ key: 0,
+ class: "flex justify-center"
+};
+const _hoisted_3$4 = {
+ class: "grid gap-4 mt-6",
+ "submit.prevent": ""
+};
+const _hoisted_4$2 = { key: 0 };
+const _hoisted_5$2 = { class: "flex justify-end" };
+const _sfc_main$8 = {
+ __name: "EditDelayDialog",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const editable = reactive({
+ delay: {},
+ newDelay: { value: 0 }
+ });
+ onMounted(() => {
+ editable.delay = macroRecorder.getEditDelay();
+ editable.newDelay.value = editable.delay.value;
+ console.log(editable);
+ });
+ const changeDelay = () => {
+ if (!editable.newDelay.value) return;
+ macroRecorder.recordStep(editable.newDelay.value, false, macroRecorder.state.editDelay);
+ macroRecorder.state.editDelay = false;
+ };
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$8, [
+ _cache[4] || (_cache[4] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Edit delay", -1)),
+ editable.delay.value ? (openBlock(), createElementBlock("div", _hoisted_2$7, [
+ createVNode(DelaySpan, {
+ class: "!text-lg",
+ value: editable.delay.value
+ }, null, 8, ["value"])
+ ])) : createCommentVNode("", true),
+ createBaseVNode("form", _hoisted_3$4, [
+ editable.newDelay.value ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
+ withDirectives(createBaseVNode("input", {
+ type: "number",
+ min: "0",
+ max: "3600000",
+ step: "10",
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => editable.newDelay.value = $event),
+ autofocus: ""
+ }, null, 512), [
+ [vModelText, editable.newDelay.value]
+ ]),
+ _cache[2] || (_cache[2] = createBaseVNode("span", null, "ms", -1))
+ ])) : createCommentVNode("", true),
+ createBaseVNode("div", _hoisted_5$2, [
+ createVNode(_sfc_main$h, {
+ variant: "primary",
+ size: "sm",
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => changeDelay(), ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[3] || (_cache[3] = [
+ createTextVNode(" Change delay ")
+ ])),
+ _: 1
+ })
+ ])
+ ])
+ ]);
+ };
+ }
+};
+const EditDelayDialog = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-d4c82ec9"]]);
+const _hoisted_1$7 = {
+ id: "delete-key-dialog",
+ class: "dialog__content"
+};
+const _hoisted_2$6 = { class: "flex justify-center w-full mb-4" };
+const _hoisted_3$3 = { class: "flex justify-end gap-2 mt-6" };
+const _sfc_main$7 = {
+ __name: "DeleteKeyDialog",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const keyObj = ref(null);
+ onMounted(() => {
+ keyObj.value = filterKey(macroRecorder.getEditKey());
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [
+ _cache[2] || (_cache[2] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "Delete key", -1)),
+ createBaseVNode("div", _hoisted_2$6, [
+ keyObj.value ? (openBlock(), createBlock(_sfc_main$f, {
+ key: 0,
+ "key-obj": keyObj.value
+ }, null, 8, ["key-obj"])) : createCommentVNode("", true)
+ ]),
+ _cache[3] || (_cache[3] = createBaseVNode("p", { class: "text-sm text-slate-300" }, "Are you sure you want to delete this key?", -1)),
+ createBaseVNode("div", _hoisted_3$3, [
+ createVNode(_sfc_main$h, {
+ variant: "danger",
+ size: "sm",
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).deleteEditKey())
+ }, {
+ default: withCtx(() => _cache[1] || (_cache[1] = [
+ createTextVNode(" Delete key ")
+ ])),
+ _: 1
+ })
+ ])
+ ]);
+ };
+ }
+};
+const DeleteKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-7dc19ba4"]]);
+const _hoisted_1$6 = {
+ id: "insert-key-dialog",
+ class: "dialog__content w-96"
+};
+const _hoisted_2$5 = { class: "text-slate-50 mb-4" };
+const _hoisted_3$2 = {
+ key: 0,
+ class: "text-center"
+};
+const _hoisted_4$1 = { class: "insert-key__direction" };
+const _hoisted_5$1 = { class: "flex justify-end" };
+const _sfc_main$6 = {
+ __name: "InsertKeyDialog",
+ props: {
+ position: String
+ },
+ setup(__props) {
+ const props = __props;
+ const macroRecorder = useMacroRecorderStore();
+ const keyObjs = reactive({
+ selected: null,
+ insert: null,
+ insertEvent: null,
+ insertDirection: "down",
+ adjacent: null,
+ adjacentDelay: null,
+ adjacentDelayIndex: null
+ });
+ const insertKeyInput = ref(null);
+ const inputFocus = ref(false);
+ onMounted(() => {
+ keyObjs.selected = filterKey(macroRecorder.getEditKey());
+ const adjacentKey = macroRecorder.getAdjacentKey(props.position, true);
+ if (adjacentKey) keyObjs.adjacent = filterKey(adjacentKey.key);
+ if (adjacentKey.delay) {
+ keyObjs.adjacentDelay = adjacentKey.delay;
+ keyObjs.adjacentDelayIndex = adjacentKey.delayIndex;
+ }
+ });
+ const handleInsertKey = (e) => {
+ keyObjs.insert = filterKey(e);
+ keyObjs.insertEvent = e;
+ };
+ const insertKey = () => {
+ macroRecorder.insertKey(keyObjs.insertEvent, keyObjs.insertDirection, keyObjs.adjacentDelayIndex);
+ };
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
+ createBaseVNode("h4", _hoisted_2$5, "Insert key " + toDisplayString(__props.position), 1),
+ inputFocus.value ? (openBlock(), createElementBlock("p", _hoisted_3$2, "[Press a key]")) : createCommentVNode("", true),
+ createBaseVNode("input", {
+ class: "size-0 opacity-0",
+ type: "text",
+ min: "0",
+ max: "1",
+ ref_key: "insertKeyInput",
+ ref: insertKeyInput,
+ placeholder: "New key",
+ onFocusin: _cache[0] || (_cache[0] = ($event) => inputFocus.value = true),
+ onFocusout: _cache[1] || (_cache[1] = ($event) => inputFocus.value = false),
+ onKeydown: _cache[2] || (_cache[2] = withModifiers(($event) => handleInsertKey($event), ["prevent"])),
+ autofocus: ""
+ }, null, 544),
+ createBaseVNode("div", {
+ class: normalizeClass(["insert-output", __props.position == "before" ? "flex-row-reverse" : ""])
+ }, [
+ keyObjs.selected ? (openBlock(), createBlock(_sfc_main$f, {
+ key: 0,
+ "key-obj": keyObjs.selected
+ }, null, 8, ["key-obj"])) : createCommentVNode("", true),
+ _cache[10] || (_cache[10] = createBaseVNode("hr", { class: "spacer" }, null, -1)),
+ createVNode(DelaySpan, {
+ preset: true,
+ value: 10
+ }),
+ _cache[11] || (_cache[11] = createBaseVNode("hr", { class: "spacer" }, null, -1)),
+ keyObjs.insert ? (openBlock(), createBlock(_sfc_main$f, {
+ key: 1,
+ class: "insert",
+ "key-obj": keyObjs.insert,
+ direction: keyObjs.insertDirection,
+ onClick: _cache[3] || (_cache[3] = ($event) => insertKeyInput.value.focus())
+ }, null, 8, ["key-obj", "direction"])) : createCommentVNode("", true),
+ !keyObjs.insert ? (openBlock(), createBlock(_sfc_main$f, {
+ key: 2,
+ empty: true,
+ onClick: _cache[4] || (_cache[4] = ($event) => insertKeyInput.value.focus())
+ })) : createCommentVNode("", true),
+ keyObjs.adjacentDelay ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
+ _cache[8] || (_cache[8] = createBaseVNode("hr", { class: "spacer" }, null, -1)),
+ createVNode(DelaySpan, {
+ value: keyObjs.adjacentDelay.value
+ }, null, 8, ["value"])
+ ], 64)) : createCommentVNode("", true),
+ keyObjs.adjacent ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
+ _cache[9] || (_cache[9] = createBaseVNode("hr", { class: "spacer" }, null, -1)),
+ createVNode(_sfc_main$f, {
+ "key-obj": keyObjs.adjacent
+ }, null, 8, ["key-obj"])
+ ], 64)) : createCommentVNode("", true)
+ ], 2),
+ createBaseVNode("div", _hoisted_4$1, [
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ class: normalizeClass(keyObjs.insertDirection === "down" ? "selected" : ""),
+ size: "sm",
+ onClick: _cache[5] || (_cache[5] = withModifiers(($event) => keyObjs.insertDirection = "down", ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[12] || (_cache[12] = [
+ createTextVNode(" ↓ Down ")
+ ])),
+ _: 1
+ }, 8, ["class"]),
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ class: normalizeClass(keyObjs.insertDirection === "up" ? "selected" : ""),
+ size: "sm",
+ onClick: _cache[6] || (_cache[6] = withModifiers(($event) => keyObjs.insertDirection = "up", ["prevent"]))
+ }, {
+ default: withCtx(() => _cache[13] || (_cache[13] = [
+ createTextVNode(" ↑ Up ")
+ ])),
+ _: 1
+ }, 8, ["class"])
+ ]),
+ createBaseVNode("div", _hoisted_5$1, [
+ createVNode(_sfc_main$h, {
+ variant: "primary",
+ size: "sm",
+ onClick: _cache[7] || (_cache[7] = ($event) => insertKey())
+ }, {
+ default: withCtx(() => _cache[14] || (_cache[14] = [
+ createTextVNode("Insert key")
+ ])),
+ _: 1
+ })
+ ])
+ ]);
+ };
+ }
+};
+const InsertKeyDialog = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-d2aab140"]]);
+const _hoisted_1$5 = {
+ key: 0,
+ class: "macro-edit__dialogs"
+};
+const _hoisted_2$4 = {
+ key: 0,
+ class: "flex gap-2"
+};
+const _sfc_main$5 = {
+ __name: "EditDialogs",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const insert = reactive({ position: null });
+ const ctxtMenu = ref();
+ onMounted(() => {
+ macroRecorder.$subscribe((mutation) => {
+ if (mutation.events && mutation.events.key == "editKey" && mutation.events.newValue === false) {
+ insert.position = null;
+ }
+ });
+ });
+ function onOpenDialog() {
+ if (insert.position !== null) ctxtMenu.value.toggle();
+ }
+ function onCloseDialog() {
+ macroRecorder.state.editKey = false;
+ macroRecorder.state.editDelay = false;
+ insert.position = null;
+ }
+ return (_ctx, _cache) => {
+ return unref(macroRecorder).state.edit !== false ? (openBlock(), createElementBlock("div", _hoisted_1$5, [
+ unref(macroRecorder).state.editKey !== false && typeof unref(macroRecorder).getEditKey() === "object" ? (openBlock(), createElementBlock("div", _hoisted_2$4, [
+ createVNode(_sfc_main$b, {
+ ref_key: "ctxtMenu",
+ ref: ctxtMenu
+ }, {
+ trigger: withCtx(() => [
+ createVNode(_sfc_main$h, {
+ variant: "dark",
+ size: "sm"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPlus)),
+ _cache[2] || (_cache[2] = createTextVNode(" Insert "))
+ ]),
+ _: 1
+ })
+ ]),
+ content: withCtx(() => [
+ createBaseVNode("ul", null, [
+ createBaseVNode("li", {
+ onClick: _cache[0] || (_cache[0] = ($event) => insert.position = "before")
+ }, [
+ createVNode(unref(IconArrowLeftCircle)),
+ _cache[3] || (_cache[3] = createTextVNode(" Before"))
+ ]),
+ createBaseVNode("li", {
+ onClick: _cache[1] || (_cache[1] = ($event) => insert.position = "after")
+ }, [
+ createVNode(unref(IconArrowRightCircle)),
+ _cache[4] || (_cache[4] = createTextVNode(" After"))
+ ])
+ ])
+ ]),
+ _: 1
+ }, 512),
+ insert.position !== null ? (openBlock(), createBlock(_sfc_main$i, {
+ key: 0,
+ open: insert.position !== null,
+ onOnOpen: onOpenDialog,
+ onOnClose: onCloseDialog
+ }, {
+ content: withCtx(() => [
+ createVNode(InsertKeyDialog, {
+ position: insert.position
+ }, null, 8, ["position"])
+ ]),
+ _: 1
+ }, 8, ["open"])) : createCommentVNode("", true),
+ createVNode(_sfc_main$i, {
+ id: `edit-key-${unref(macroRecorder).state.editKey}`,
+ onOnOpen: onOpenDialog,
+ onOnClose: onCloseDialog
+ }, {
+ trigger: withCtx(() => [
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ size: "sm"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPencil)),
+ _cache[5] || (_cache[5] = createTextVNode("Edit "))
+ ]),
+ _: 1
+ })
+ ]),
+ content: withCtx(() => [
+ createVNode(EditKeyDialog)
+ ]),
+ _: 1
+ }, 8, ["id"]),
+ createVNode(_sfc_main$i, {
+ onOnOpen: onOpenDialog,
+ onOnClose: onCloseDialog
+ }, {
+ trigger: withCtx(() => [
+ createVNode(_sfc_main$h, {
+ size: "sm",
+ variant: "danger"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconTrash)),
+ _cache[6] || (_cache[6] = createTextVNode("Delete "))
+ ]),
+ _: 1
+ })
+ ]),
+ content: withCtx(() => [
+ createVNode(DeleteKeyDialog)
+ ]),
+ _: 1
+ })
+ ])) : createCommentVNode("", true),
+ unref(macroRecorder).state.editDelay !== false && typeof unref(macroRecorder).getEditDelay() === "object" ? (openBlock(), createBlock(_sfc_main$i, {
+ key: 1,
+ onOnOpen: onOpenDialog,
+ onOnClose: onCloseDialog
+ }, {
+ trigger: withCtx(() => [
+ createVNode(_sfc_main$h, {
+ variant: "secondary",
+ size: "sm"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconAlarm)),
+ _cache[7] || (_cache[7] = createTextVNode("Edit "))
+ ]),
+ _: 1
+ })
+ ]),
+ content: withCtx(() => [
+ createVNode(EditDelayDialog)
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ])) : createCommentVNode("", true);
+ };
+ }
+};
+const EditDialogs = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-bf9e32be"]]);
+const _hoisted_1$4 = { class: "macro-recorder__header" };
+const _hoisted_2$3 = { class: "w-full grid grid-cols-[auto_1fr_auto] gap-2" };
+const _sfc_main$4 = {
+ __name: "RecorderHeader",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const nameSet = ref(false);
+ function changeName(name) {
+ macroRecorder.changeName(name);
+ nameSet.value = name.length > 0;
+ }
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$4, [
+ createBaseVNode("div", _hoisted_2$3, [
+ _cache[7] || (_cache[7] = createBaseVNode("h4", { class: "" }, "Name:", -1)),
+ createBaseVNode("input", {
+ id: "macro-name",
+ type: "text",
+ onInput: _cache[0] || (_cache[0] = withModifiers(($event) => changeName($event.target.value), ["prevent"])),
+ placeholder: "New macro"
+ }, null, 32),
+ createBaseVNode("div", {
+ class: normalizeClass(`recording__buttons ${!nameSet.value || unref(macroRecorder).state.edit ? "disabled" : ""}`)
+ }, [
+ createTextVNode(toDisplayString(unref(macroRecorder).name) + " ", 1),
+ !unref(macroRecorder).state.record ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 0,
+ variant: "primary",
+ size: "sm",
+ onClick: _cache[1] || (_cache[1] = ($event) => unref(macroRecorder).state.record = true)
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPlayerRecordFilled), { class: "text-red-500" }),
+ _cache[5] || (_cache[5] = createTextVNode("Record "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true),
+ unref(macroRecorder).state.record ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 1,
+ variant: "danger",
+ size: "sm",
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(macroRecorder).state.record = false)
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPlayerStopFilled), { class: "text-white" }),
+ _cache[6] || (_cache[6] = createTextVNode("Stop "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ], 2)
+ ]),
+ unref(macroRecorder).steps.length > 0 ? (openBlock(), createElementBlock("div", {
+ key: 0,
+ class: normalizeClass(`edit__buttons ${unref(macroRecorder).state.record ? "disabled" : ""}`)
+ }, [
+ createBaseVNode("div", null, [
+ !unref(macroRecorder).state.edit ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 0,
+ variant: "secondary",
+ size: "sm",
+ onClick: _cache[3] || (_cache[3] = ($event) => unref(macroRecorder).state.edit = true)
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPencil)),
+ _cache[8] || (_cache[8] = createTextVNode("Edit "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true),
+ unref(macroRecorder).state.edit ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 1,
+ variant: "danger",
+ size: "sm",
+ onClick: _cache[4] || (_cache[4] = ($event) => unref(macroRecorder).resetEdit())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconPlayerStopFilled)),
+ _cache[9] || (_cache[9] = createTextVNode("Stop "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true)
+ ]),
+ unref(macroRecorder).state.edit ? (openBlock(), createBlock(FixedDelayMenu, { key: 0 })) : createCommentVNode("", true),
+ createVNode(EditDialogs)
+ ], 2)) : createCommentVNode("", true)
+ ]);
+ };
+ }
+};
+const RecorderHeader = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-19251359"]]);
+const _hoisted_1$3 = {
+ id: "validation-error__dialog",
+ class: "dialog__content"
+};
+const _hoisted_2$2 = {
+ key: 0,
+ class: "grid gap-4"
+};
+const _hoisted_3$1 = { key: 0 };
+const _hoisted_4 = { key: 1 };
+const _hoisted_5 = { class: "flex justify-end mt-4" };
+const _sfc_main$3 = {
+ __name: "ValidationErrorDialog",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const errors = reactive({
+ up: [],
+ down: []
+ });
+ onMounted(() => {
+ macroRecorder.$subscribe((mutation) => {
+ if (mutation.events && mutation.events.key == "validationErrors") {
+ errors.up = mutation.events.newValue !== false ? macroRecorder.state.validationErrors.up : [];
+ errors.down = mutation.events.newValue !== false ? macroRecorder.state.validationErrors.down : [];
+ }
+ console.log(mutation);
+ });
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
+ _cache[4] || (_cache[4] = createBaseVNode("h4", { class: "text-slate-50 mb-4" }, "There's an error in your macro", -1)),
+ errors && errors.up.length > 0 || errors.down.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
+ errors.down.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_3$1, [
+ _cache[1] || (_cache[1] = createBaseVNode("p", null, [
+ createTextVNode(" The following keys have been "),
+ createBaseVNode("strong", null, "pressed"),
+ createTextVNode(" down, but "),
+ createBaseVNode("strong", null, "not released"),
+ createTextVNode(". ")
+ ], -1)),
+ createBaseVNode("ul", null, [
+ (openBlock(true), createElementBlock(Fragment, null, renderList(errors.down, (key) => {
+ return openBlock(), createElementBlock("li", { key }, toDisplayString(key.toUpperCase()), 1);
+ }), 128))
+ ])
+ ])) : createCommentVNode("", true),
+ errors.up.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_4, [
+ _cache[2] || (_cache[2] = createBaseVNode("p", null, [
+ createTextVNode(" The following keys have been "),
+ createBaseVNode("strong", null, "released"),
+ createTextVNode(", but "),
+ createBaseVNode("strong", null, "not pressed"),
+ createTextVNode(" down. ")
+ ], -1)),
+ createBaseVNode("ul", null, [
+ (openBlock(true), createElementBlock(Fragment, null, renderList(errors.up, (key) => {
+ return openBlock(), createElementBlock("li", { key }, toDisplayString(key.toUpperCase()), 1);
+ }), 128))
+ ])
+ ])) : createCommentVNode("", true)
+ ])) : createCommentVNode("", true),
+ createBaseVNode("div", _hoisted_5, [
+ createVNode(_sfc_main$h, {
+ size: "sm",
+ variant: "danger",
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).state.validationErrors = false)
+ }, {
+ default: withCtx(() => _cache[3] || (_cache[3] = [
+ createTextVNode(" Close ")
+ ])),
+ _: 1
+ })
+ ])
+ ]);
+ };
+ }
+};
+const ValidationErrorDialog = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-ff532573"]]);
+const _hoisted_1$2 = { class: "macro-recorder__footer" };
+const _sfc_main$2 = {
+ __name: "RecorderFooter",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ const errorDialog = ref();
+ onMounted(() => {
+ macroRecorder.$subscribe((mutation) => {
+ if (mutation.events && mutation.events.key == "validationErrors") {
+ errorDialog.value.toggleDialog(mutation.events.newValue !== false);
+ }
+ });
+ });
+ const toggleSave = () => {
+ if (!macroRecorder.save()) errorDialog.value.toggleDialog(true);
+ };
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$2, [
+ unref(macroRecorder).steps.length > 0 ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 0,
+ variant: "danger",
+ size: "sm",
+ onClick: _cache[0] || (_cache[0] = ($event) => unref(macroRecorder).reset())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconRestore)),
+ _cache[2] || (_cache[2] = createTextVNode(" Reset "))
+ ]),
+ _: 1
+ })) : createCommentVNode("", true),
+ createVNode(_sfc_main$i, {
+ ref_key: "errorDialog",
+ ref: errorDialog
+ }, {
+ content: withCtx(() => [
+ createVNode(ValidationErrorDialog)
+ ]),
+ _: 1
+ }, 512),
+ unref(macroRecorder).steps.length > 0 ? (openBlock(), createBlock(_sfc_main$h, {
+ key: 1,
+ disabled: unref(macroRecorder).state.record || unref(macroRecorder).state.edit,
+ variant: "success",
+ size: "sm",
+ onClick: _cache[1] || (_cache[1] = ($event) => toggleSave())
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconDeviceFloppy)),
+ _cache[3] || (_cache[3] = createTextVNode(" Save "))
+ ]),
+ _: 1
+ }, 8, ["disabled"])) : createCommentVNode("", true)
+ ]);
+ };
+ }
+};
+const RecorderFooter = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-fec5e8b6"]]);
+const _hoisted_1$1 = { class: "macro-recorder mcrm-block block__light" };
+const _hoisted_2$1 = { class: "recorder-interface" };
+const _sfc_main$1 = {
+ __name: "MacroRecorder",
+ setup(__props) {
+ const macroRecorder = useMacroRecorderStore();
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
+ createBaseVNode("div", _hoisted_2$1, [
+ createVNode(RecorderHeader),
+ createBaseVNode("div", {
+ class: normalizeClass(`recorder-interface__container ${unref(macroRecorder).state.record && "record"} ${unref(macroRecorder).state.edit && "edit"}`)
+ }, [
+ createVNode(RecorderOutput),
+ createVNode(RecorderInput)
+ ], 2),
+ createVNode(RecorderFooter)
+ ])
+ ]);
+ };
+ }
+};
+const _hoisted_1 = {
+ id: "macros",
+ class: "panel"
+};
+const _hoisted_2 = { class: "panel__content !p-0" };
+const _hoisted_3 = { class: "macro-panel__content" };
+const _sfc_main = {
+ __name: "MacrosView",
+ setup(__props) {
+ ref(false);
+ ref(null);
+ onMounted(() => {
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("div", _hoisted_1, [
+ _cache[0] || (_cache[0] = createBaseVNode("h1", { class: "panel__title" }, "Macros", -1)),
+ createBaseVNode("div", _hoisted_2, [
+ createBaseVNode("div", _hoisted_3, [
+ createVNode(MacroOverview),
+ createVNode(_sfc_main$1)
+ ])
+ ])
+ ]);
+ };
+ }
+};
+const MacrosView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-c7be9772"]]);
+export {
+ MacrosView as default
+};
diff --git a/public/assets/MacrosView-CE74eyGa.js b/public/assets/MacrosView-CE74eyGa.js
deleted file mode 100644
index a90218d..0000000
--- a/public/assets/MacrosView-CE74eyGa.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import{c as V,d as f,f as g,e as d,k as r,t as O,u as i,H as ae,a as x,s as B,x as T,_ as j,r as h,o as S,G as le,g as a,F as R,i as H,j as p,l as _,q as m,J as re,b as Y,E as C,h as b,K as E,L as W,w as ie,v as de,M as ue}from"./index-oAtpp-VZ.js";import{I as Z,b as ee,a as ce}from"./IconTrash-DtIpQ-M_.js";import{_ as z}from"./DialogComp-CyRyORDj.js";/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var ve=V("outline","alarm","IconAlarm",[["path",{d:"M12 13m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M12 10l0 3l2 0",key:"svg-1"}],["path",{d:"M7 4l-2.75 2",key:"svg-2"}],["path",{d:"M17 4l2.75 2",key:"svg-3"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var ye=V("outline","arrow-left-circle","IconArrowLeftCircle",[["path",{d:"M17 12h-14",key:"svg-0"}],["path",{d:"M6 9l-3 3l3 3",key:"svg-1"}],["path",{d:"M19 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var pe=V("outline","arrow-right-circle","IconArrowRightCircle",[["path",{d:"M18 15l3 -3l-3 -3",key:"svg-0"}],["path",{d:"M5 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-1"}],["path",{d:"M7 12h14",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var fe=V("outline","loader-3","IconLoader3",[["path",{d:"M3 12a9 9 0 0 0 9 9a9 9 0 0 0 9 -9a9 9 0 0 0 -9 -9",key:"svg-0"}],["path",{d:"M17 12a5 5 0 1 0 -5 5",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var me=V("outline","plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var ke=V("outline","restore","IconRestore",[["path",{d:"M3.06 13a9 9 0 1 0 .49 -4.087",key:"svg-0"}],["path",{d:"M3 4.001v5h5",key:"svg-1"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var ge=V("outline","time-duration-15","IconTimeDuration15",[["path",{d:"M12 15h2a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-2v-3h3",key:"svg-0"}],["path",{d:"M9 9v6",key:"svg-1"}],["path",{d:"M3 12v.01",key:"svg-2"}],["path",{d:"M12 21v.01",key:"svg-3"}],["path",{d:"M7.5 4.2v.01",key:"svg-4"}],["path",{d:"M16.5 19.8v.01",key:"svg-5"}],["path",{d:"M7.5 19.8v.01",key:"svg-6"}],["path",{d:"M4.2 16.5v.01",key:"svg-7"}],["path",{d:"M19.8 16.5v.01",key:"svg-8"}],["path",{d:"M4.2 7.5v.01",key:"svg-9"}],["path",{d:"M21 12a9 9 0 0 0 -9 -9",key:"svg-10"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var _e=V("filled","player-record-filled","IconPlayerRecordFilled",[["path",{d:"M8 5.072a8 8 0 1 1 -3.995 7.213l-.005 -.285l.005 -.285a8 8 0 0 1 3.995 -6.643z",key:"svg-0"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var X=V("filled","player-stop-filled","IconPlayerStopFilled",[["path",{d:"M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z",key:"svg-0"}]]);const we={key:0,class:"loading-component"},$e={key:0},De={__name:"LoadComp",props:{loading:Boolean,text:String},setup(s){return(e,t)=>s.loading?(d(),f("div",we,[s.text?(d(),f("span",$e,O(s.text),1)):g("",!0),r(i(fe),{class:"duration-1000 animate-spin"})])):g("",!0)}},U={Control:"Ctrl",Shift:"Shift",Alt:"Alt",Meta:"Win",CapsLock:"Caps",PageUp:"PgUp",PageDown:"PgDn",ScrollLock:"Scr Lk",Insert:"Ins",Delete:"Del",Escape:"Esc",Space:"Space",Backquote:"`",Backslash:"\\",BracketLeft:"[",BracketRight:"]",Comma:",",Equal:"=",Minus:"-",Period:".",Quote:"'",Semicolon:";",Slash:"/",ArrowUp:"▲",ArrowRight:"▶",ArrowDown:"▼",ArrowLeft:"◀",MediaPlayPause:"Play",MediaStop:"Stop",MediaTrackNext:"Next",MediaTrackPrevious:"Prev",MediaVolumeDown:"Down",MediaVolumeUp:"Up",AudioVolumeMute:"Mute",AudioVolumeDown:"Down",AudioVolumeUp:"Up"},P=s=>{const e={};return s.location===1&&(e.loc="left"),s.location===2&&(e.loc="right"),s.location===3&&(e.loc="num"),(s.key.includes("Media")||s.key.includes("Audio"))&&(e.loc=be(s)),U[s.code]||U[s.key]?e.str=U[s.code]||U[s.key]:e.str=s.key.toLowerCase(),e},be=s=>{switch(s.key){case"MediaPlayPause":case"MediaStop":case"MediaTrackNext":case"MediaTrackPrevious":return"Media";case"MediaVolumeDown":case"MediaVolumeUp":case"AudioVolumeDown":case"AudioVolumeUp":case"AudioVolumeMute":return"Volume"}},xe=(s,e,t)=>s&&s.type==="key"&&s.code===e.code&&s.direction===t,Me=s=>{const e=[],t=[];return Object.keys(s).forEach(n=>{const l=s[n];l.type==="key"&&(l.direction=="down"&&e.push(l.key),l.direction=="up"&&(e.includes(l.key)?e.splice(e.indexOf(l.key),1):t.push(l.key)))}),t.length===0&&e.length===0?!1:{down:e,up:t}},Ke=s=>{const e=[];return s.forEach(t=>{t.type==="delay"&&e.push(t),t.type==="key"&&e.push(Ce(t.code,t.direction))}),e},Ce=(s,e)=>{let t="",n=0,l=s;s.includes("Left")&&(t=s.replace("Left",""),n=1),s.includes("Right")&&(t=s.replace("Right",""),n=2),s.includes("Numpad")&&(t=s.replace("Numpad",""),n=3),s.includes("Media")&&(l=""),t===""&&(t=s);const o={type:"key",code:l,key:t,location:n,direction:e};return{...o,keyObj:P(o)}},I=ae("macrorecorder",()=>{const s=x({record:!1,edit:!1,editKey:!1,editDelay:!1,validationErrors:!1}),e=x(""),t=x([]),n=x({start:0,fixed:!1}),l=()=>t.value[s.value.editKey],o=(k,M=!1)=>{let $=!1;const K=k=="before"?-1:1,D=s.value.editKey+2*K,N=M?s.value.editKey+1*K:!1;return t.value[D]&&($=t.value[D]),N&&t.value[N]&&($={delay:t.value[N],key:t.value[D],delayIndex:N}),$},v=()=>t.value[s.value.editDelay],u=(k,M=!1,$=!1)=>{k.ctrlKey,k.shiftKey,k.altKey,k.metaKey&&k.preventDefault();const K=t.value[t.value.length-1];let D={};typeof k=="object"&&!xe(K,k,M)?($===!1&&y(),D={type:"key",key:k.key,code:k.code,location:k.location,direction:M,keyObj:P(k)}):M&&$!==!1?(D=t.value[$],D.direction=M):typeof k=="number"&&(D={type:"delay",value:parseFloat(k.toFixed())}),$!==!1?t.value[$]=D:t.value.push(D)},y=()=>{n.value.fixed!==!1?u(n.value.fixed):(n.value.start==0||u(performance.now()-n.value.start),n.value.start=performance.now())},c=(k,M,$)=>{let K,D,N,L;if($===null?(K=s.value.editKey==0?0:s.value.editKey,D=s.value.editKey==0?1:!1,N=D===!1?K+2:K,L=K+1):s.value.editKey<$?(K=s.value.editKey,D=$,N=K+2,L=K+1):(K=$,D=s.value.editKey,N=K+1,L=K+2),D!==!1)for(let F=Object.keys(t.value).length-1;F>=D;F--)t.value[F+2]=t.value[F];u(k,M,N),u(10,!1,L),s.value.editKey=!1},w=()=>{s.value.editKey===0?t.value.splice(s.value.editKey,2):t.value.splice(s.value.editKey-1,2),s.value.editKey=!1},G=()=>{n.value.start=performance.now()},J=k=>{e.value=k},se=k=>{n.value.fixed=k,ne()},ne=()=>{t.value=t.value.map(k=>(k.type==="delay"&&n.value.fixed!==!1&&(k.value=n.value.fixed),k))},oe=(k,M)=>{k==="key"&&(s.value.editKey=M,s.value.editDelay=!1),k==="delay"&&(s.value.editKey=!1,s.value.editDelay=M)},Q=()=>{s.value.edit=!1,s.value.editKey=!1,s.value.editDelay=!1};return{state:s,macroName:e,steps:t,delay:n,getEditKey:l,getAdjacentKey:o,getEditDelay:v,recordStep:u,insertKey:c,deleteEditKey:w,restartDelay:G,changeName:J,changeDelay:se,toggleEdit:oe,resetEdit:Q,resetMacro:()=>{s.value.record=!1,n.value.start=0,e.value="",t.value=[],s.value.edit&&Q()},checkMacro:async()=>(await B.post(T()+"/macro/check",{macro:e.value})).data,saveMacro:async()=>(s.value.validationErrors=Me(t.value),s.value.validationErrors?!1:(await B.post(T()+"/macro/record",{name:e.value,steps:t.value})).status==200),deleteMacro:async k=>{const M=await B.post(T()+"/macro/delete",{macro:k});return M.status==200?M.data:!1},openMacro:async(k,M)=>{const $=await B.post(T()+"/macro/open",{macro:k});$.data&&(t.value=Ke($.data)),e.value=M}}}),je={class:"macro-overview mcrm-block block__dark"},Ie={class:"macro-overview__list"},Ee={class:"overview__macro-delete"},Oe={class:"grid gap-2"},Re={class:"mb-2 text-center text-sky-500"},Se={class:"flex justify-between"},Ne={__name:"MacroOverview",setup(s){const e=h({loading:!0,list:[]}),t=I(),n=x(""),l=x();S(()=>{o()});const o=async()=>{const y=await le();e.list=y,e.loading=!1},v=y=>{n.value=y,l.value.toggleDialog(!0)},u=async()=>{await t.deleteMacro(n.value)&&(l.value.toggleDialog(!1),n.value===t.macroName&&t.resetMacro(),n.value="",o())};return(y,c)=>(d(),f("div",je,[c[6]||(c[6]=a("h4",{class:"border-b-2 border-transparent"},"Saved Macros",-1)),a("div",Ie,[r(De,{loading:e.loading,text:"Loading macros..."},null,8,["loading"]),(d(!0),f(R,null,H(e.list,(w,G)=>(d(),f("div",{class:"macro-item",key:G},[r(_,{variant:i(t).macroName===w.name?"secondary":"dark",class:"overview__macro-open",size:"sm",onClick:J=>i(t).openMacro(w.macroname,w.name)},{default:p(()=>[r(i(re)),c[2]||(c[2]=m()),a("span",null,O(w.name),1)]),_:2},1032,["variant","onClick"]),a("div",Ee,[r(_,{class:"!text-red-500 hover:!text-red-300",variant:"ghost",size:"sm",onClick:J=>v(w.name)},{default:p(()=>[r(i(Z))]),_:2},1032,["onClick"])])]))),128))]),r(z,{ref_key:"deleteDialog",ref:l},{content:p(()=>[a("div",Oe,[c[5]||(c[5]=a("h4",{class:"pr-4"},"Are you sure you want to delete:",-1)),a("h3",Re,O(n.value),1),a("div",Se,[r(_,{size:"sm",variant:"subtle",onClick:c[0]||(c[0]=w=>l.value.toggleDialog(!1))},{default:p(()=>c[3]||(c[3]=[m(" No ")])),_:1}),r(_,{size:"sm",variant:"danger",onClick:c[1]||(c[1]=w=>u())},{default:p(()=>c[4]||(c[4]=[m("Yes")])),_:1})])])]),_:1},512)]))}},Ve=j(Ne,[["__scopeId","data-v-07eda649"]]),ze={key:0},Ae=["innerHTML"],Pe={class:"dir"},he={key:1},A={__name:"MacroKey",props:{keyObj:Object,direction:String,active:Boolean,empty:Boolean},setup(s){const e=s,t=h({value:!1});S(()=>{e.empty||n()}),Y(()=>{n()});const n=()=>{e.direction?t.value=e.direction:t.value=e.keyObj.direction};return(l,o)=>(d(),f("kbd",{class:C(`${s.active?"active":""} ${s.empty?"empty":""}`)},[s.keyObj?(d(),f(R,{key:0},[s.keyObj.loc?(d(),f("sup",ze,O(s.keyObj.loc),1)):g("",!0),a("span",{innerHTML:s.keyObj.str},null,8,Ae),a("span",Pe,O(t.value==="down"?"↓":"↑"),1)],64)):s.empty?(d(),f("span",he,"[ ]")):g("",!0)],2))}},Le={__name:"DelaySpan",props:{value:Number,active:Boolean,preset:Boolean},setup(s){return(e,t)=>(d(),f("span",{class:C(`delay ${s.active?"active":""} ${s.preset?"preset":""}`)},[s.value<1e4?(d(),f(R,{key:0},[m(O(s.value)+" ",1),t[0]||(t[0]=a("i",null,"ms",-1))],64)):(d(),f(R,{key:1},[t[1]||(t[1]=m(" >10 ")),t[2]||(t[2]=a("i",null,"s",-1))],64))],2))}},q=j(Le,[["__scopeId","data-v-eb548d44"]]),Fe={__name:"RecorderOutput",setup(s){const e=I();return(t,n)=>(d(),f("div",{class:C(`macro-recorder__output ${i(e).state.record&&"record"} ${i(e).state.edit&&"edit"}`)},[(d(!0),f(R,null,H(i(e).steps,(l,o)=>(d(),f(R,null,[l.type==="key"?(d(),b(A,{key:o,"key-obj":l.keyObj,direction:l.direction,active:i(e).state.editKey===o,onClick:v=>i(e).state.edit?i(e).toggleEdit("key",o):!1},null,8,["key-obj","direction","active","onClick"])):l.type==="delay"?(d(),b(q,{key:o,value:l.value,active:i(e).state.editDelay===o,onClick:v=>i(e).toggleEdit("delay",o)},null,8,["value","active","onClick"])):g("",!0),n[0]||(n[0]=a("hr",{class:"spacer"},null,-1))],64))),256))],2))}},Be=j(Fe,[["__scopeId","data-v-bfb55e2e"]]),Te={__name:"RecorderInput",setup(s){const e=x(null),t=I();return Y(()=>{t.state.record&&(e.value.focus(),t.delay.start!==0&&t.restartDelay())}),(n,l)=>(d(),f("div",{class:C(`recorder-input__container ${i(t).state.record&&"record"}`)},[i(t).state.record?(d(),f("input",{key:0,class:C(`macro-recorder__input ${i(t).state.record&&"record"}`),type:"text",ref_key:"macroInput",ref:e,onKeydown:l[0]||(l[0]=E(o=>i(t).recordStep(o,"down"),["prevent"])),onKeyup:l[1]||(l[1]=E(o=>i(t).recordStep(o,"up"),["prevent"]))},null,34)):g("",!0)],2))}},Ue=j(Te,[["__scopeId","data-v-f1475559"]]),He={class:"context-menu"},te={__name:"ContextMenu",props:{open:Boolean},setup(s,{expose:e}){e({toggle:l});const t=s,n=x(!1);S(()=>{n.value=t.open});function l(){n.value=!n.value}return(o,v)=>(d(),f("div",He,[a("div",{class:"context-menu__trigger",onClick:l},[W(o.$slots,"trigger")]),a("div",{class:C(`context-menu__content ${n.value?"open":""}`)},[W(o.$slots,"content")],2)]))}},qe={type:"number",step:"10",min:"0",max:"3600000",ref:"customDelayInput",placeholder:"100"},Ge={class:"flex justify-end"},Je={__name:"FixedDelayMenu",setup(s){const e=I(),t=x();function n(l){e.changeDelay(l),t.value.toggle()}return(l,o)=>(d(),b(te,{ref_key:"ctxtMenu",ref:t},{trigger:p(()=>[r(_,{variant:"secondary",size:"sm"},{default:p(()=>[r(i(ge)),o[5]||(o[5]=m("Fixed delay "))]),_:1})]),content:p(()=>[a("ul",null,[a("li",{onClick:o[0]||(o[0]=v=>n(0))},"0ms"),a("li",{onClick:o[1]||(o[1]=v=>n(15))},"15ms"),a("li",{onClick:o[2]||(o[2]=v=>n(50))},"50ms"),a("li",{onClick:o[3]||(o[3]=v=>n(100))},"100ms"),a("li",null,[r(z,null,{trigger:p(()=>o[6]||(o[6]=[a("span",null,"Custom delay",-1)])),content:p(()=>[o[9]||(o[9]=a("h4",{class:"text-slate-50 mb-4"},"Custom delay",-1)),a("form",{class:"grid gap-4 w-44",onSubmit:o[4]||(o[4]=E(v=>n(parseInt(l.$refs.customDelayInput.value)),["prevent"]))},[a("div",null,[a("input",qe,null,512),o[7]||(o[7]=a("span",null,"ms",-1))]),a("div",Ge,[r(_,{variant:"primary",size:"sm"},{default:p(()=>o[8]||(o[8]=[m("Set custom delay")])),_:1})])],32)]),_:1})])])]),_:1},512))}},Ye=j(Je,[["__scopeId","data-v-de355396"]]),Qe={id:"edit-key-dialog",class:"dialog__content"},We={class:"grid gap-4","submit.prevent":""},Xe={class:"flex gap-2 justify-center"},Ze={class:"flex justify-end"},et={__name:"EditKeyDialog",setup(s){const e=h({key:{},newKey:{}}),t=I(),n=x(null);S(()=>{e.key=t.getEditKey(),e.newKey.direction=e.key.direction});const l=u=>{e.newKey.e=u,e.newKey.keyObj=P(u)},o=u=>{e.newKey.direction=u,e.newKey.keyObj=P(e.key)},v=()=>{t.recordStep(e.newKey.e,e.newKey.direction,t.state.editKey),t.state.editKey=!1};return(u,y)=>(d(),f("div",Qe,[y[9]||(y[9]=a("h4",{class:"text-slate-50 mb-4"},"Press a key",-1)),a("div",{class:"flex justify-center",onClick:y[0]||(y[0]=c=>u.$refs.newKeyInput.focus())},[e.key.keyObj?(d(),b(A,{key:0,"key-obj":e.key.keyObj,direction:e.key.direction},null,8,["key-obj","direction"])):g("",!0),typeof e.newKey.keyObj=="object"?(d(),f(R,{key:1},[y[5]||(y[5]=a("span",{class:"px-4 flex items-center text-white"}," >>> ",-1)),r(A,{"key-obj":e.newKey.keyObj,direction:e.newKey.direction},null,8,["key-obj","direction"])],64)):g("",!0)]),a("form",We,[a("input",{class:"size-0 opacity-0",type:"text",min:"0",max:"1",ref_key:"newKeyInput",ref:n,placeholder:"New key",autofocus:"",onKeydown:y[1]||(y[1]=E(c=>l(c),["prevent"]))},null,544),a("div",Xe,[r(_,{variant:"secondary",class:C(e.newKey.direction==="down"?"selected":""),size:"sm",onClick:y[2]||(y[2]=E(c=>o("down"),["prevent"]))},{default:p(()=>y[6]||(y[6]=[m(" ↓ Down ")])),_:1},8,["class"]),r(_,{variant:"secondary",class:C(e.newKey.direction==="up"?"selected":""),size:"sm",onClick:y[3]||(y[3]=E(c=>o("up"),["prevent"]))},{default:p(()=>y[7]||(y[7]=[m(" ↑ Up ")])),_:1},8,["class"])]),a("div",Ze,[r(_,{variant:"primary",size:"sm",onClick:y[4]||(y[4]=E(c=>v(),["prevent"]))},{default:p(()=>y[8]||(y[8]=[m(" Change key ")])),_:1})])])]))}},tt=j(et,[["__scopeId","data-v-ba580ef2"]]),st={id:"edit-delay-dialog",class:"dialog__content"},nt={key:0,class:"flex justify-center"},ot={class:"grid gap-4 mt-6","submit.prevent":""},at={key:0},lt={class:"flex justify-end"},rt={__name:"EditDelayDialog",setup(s){const e=I(),t=h({delay:{},newDelay:{value:0}});S(()=>{t.delay=e.getEditDelay(),t.newDelay.value=t.delay.value});const n=()=>{t.newDelay.value&&(e.recordStep(t.newDelay.value,!1,e.state.editDelay),e.state.editDelay=!1)};return(l,o)=>(d(),f("div",st,[o[4]||(o[4]=a("h4",{class:"mb-4 text-slate-50"},"Edit delay",-1)),t.delay.value?(d(),f("div",nt,[r(q,{class:"!text-lg",value:t.delay.value},null,8,["value"])])):g("",!0),a("form",ot,[t.newDelay.value?(d(),f("div",at,[ie(a("input",{type:"number",min:"0",max:"3600000",step:"10","onUpdate:modelValue":o[0]||(o[0]=v=>t.newDelay.value=v),autofocus:""},null,512),[[de,t.newDelay.value]]),o[2]||(o[2]=a("span",null,"ms",-1))])):g("",!0),a("div",lt,[r(_,{variant:"primary",size:"sm",onClick:o[1]||(o[1]=E(v=>n(),["prevent"]))},{default:p(()=>o[3]||(o[3]=[m(" Change delay ")])),_:1})])])]))}},it=j(rt,[["__scopeId","data-v-a988f674"]]),dt={id:"delete-key-dialog",class:"dialog__content"},ut={class:"flex justify-center w-full mb-4"},ct={class:"flex justify-end gap-2 mt-6"},vt={__name:"DeleteKeyDialog",setup(s){const e=I(),t=x(null);return S(()=>{t.value=P(e.getEditKey())}),(n,l)=>(d(),f("div",dt,[l[2]||(l[2]=a("h4",{class:"mb-4 text-slate-50"},"Delete key",-1)),a("div",ut,[t.value?(d(),b(A,{key:0,"key-obj":t.value},null,8,["key-obj"])):g("",!0)]),l[3]||(l[3]=a("p",{class:"text-sm text-slate-300"},"Are you sure you want to delete this key?",-1)),a("div",ct,[r(_,{variant:"danger",size:"sm",onClick:l[0]||(l[0]=o=>i(e).deleteEditKey())},{default:p(()=>l[1]||(l[1]=[m(" Delete key ")])),_:1})])]))}},yt=j(vt,[["__scopeId","data-v-a48b7cc7"]]),pt={id:"insert-key-dialog",class:"dialog__content w-96"},ft={class:"text-slate-50 mb-4"},mt={key:0,class:"text-center"},kt={class:"insert-key__direction"},gt={class:"flex justify-end"},_t={__name:"InsertKeyDialog",props:{position:String},setup(s){const e=s,t=I(),n=h({selected:null,insert:null,insertEvent:null,insertDirection:"down",adjacent:null,adjacentDelay:null,adjacentDelayIndex:null}),l=x(null),o=x(!1);S(()=>{n.selected=P(t.getEditKey());const y=t.getAdjacentKey(e.position,!0);y&&(n.adjacent=P(y.key)),y.delay&&(n.adjacentDelay=y.delay,n.adjacentDelayIndex=y.delayIndex)});const v=y=>{n.insert=P(y),n.insertEvent=y},u=()=>{t.insertKey(n.insertEvent,n.insertDirection,n.adjacentDelayIndex)};return(y,c)=>(d(),f("div",pt,[a("h4",ft,"Insert key "+O(s.position),1),o.value?(d(),f("p",mt,"[Press a key]")):g("",!0),a("input",{class:"size-0 opacity-0",type:"text",min:"0",max:"1",ref_key:"insertKeyInput",ref:l,placeholder:"New key",onFocusin:c[0]||(c[0]=w=>o.value=!0),onFocusout:c[1]||(c[1]=w=>o.value=!1),onKeydown:c[2]||(c[2]=E(w=>v(w),["prevent"])),autofocus:""},null,544),a("div",{class:C(["insert-output",s.position=="before"?"flex-row-reverse":""])},[n.selected?(d(),b(A,{key:0,"key-obj":n.selected},null,8,["key-obj"])):g("",!0),c[10]||(c[10]=a("hr",{class:"spacer"},null,-1)),r(q,{preset:!0,value:10}),c[11]||(c[11]=a("hr",{class:"spacer"},null,-1)),n.insert?(d(),b(A,{key:1,class:"insert","key-obj":n.insert,direction:n.insertDirection,onClick:c[3]||(c[3]=w=>l.value.focus())},null,8,["key-obj","direction"])):g("",!0),n.insert?g("",!0):(d(),b(A,{key:2,empty:!0,onClick:c[4]||(c[4]=w=>l.value.focus())})),n.adjacentDelay?(d(),f(R,{key:3},[c[8]||(c[8]=a("hr",{class:"spacer"},null,-1)),r(q,{value:n.adjacentDelay.value},null,8,["value"])],64)):g("",!0),n.adjacent?(d(),f(R,{key:4},[c[9]||(c[9]=a("hr",{class:"spacer"},null,-1)),r(A,{"key-obj":n.adjacent},null,8,["key-obj"])],64)):g("",!0)],2),a("div",kt,[r(_,{variant:"secondary",class:C(n.insertDirection==="down"?"selected":""),size:"sm",onClick:c[5]||(c[5]=E(w=>n.insertDirection="down",["prevent"]))},{default:p(()=>c[12]||(c[12]=[m(" ↓ Down ")])),_:1},8,["class"]),r(_,{variant:"secondary",class:C(n.insertDirection==="up"?"selected":""),size:"sm",onClick:c[6]||(c[6]=E(w=>n.insertDirection="up",["prevent"]))},{default:p(()=>c[13]||(c[13]=[m(" ↑ Up ")])),_:1},8,["class"])]),a("div",gt,[r(_,{variant:"primary",size:"sm",onClick:c[7]||(c[7]=w=>u())},{default:p(()=>c[14]||(c[14]=[m("Insert key")])),_:1})])]))}},wt=j(_t,[["__scopeId","data-v-046a1063"]]),$t={key:0,class:"macro-edit__dialogs"},Dt={key:0,class:"flex gap-2"},bt={__name:"EditDialogs",setup(s){const e=I(),t=h({position:null}),n=x();S(()=>{e.$subscribe(v=>{v.events&&v.events.key=="editKey"&&v.events.newValue===!1&&(t.position=null)})});function l(){t.position!==null&&n.value.toggle()}function o(){e.state.editKey=!1,e.state.editDelay=!1,t.position=null}return(v,u)=>i(e).state.edit!==!1?(d(),f("div",$t,[i(e).state.editKey!==!1&&typeof i(e).getEditKey()=="object"?(d(),f("div",Dt,[r(te,{ref_key:"ctxtMenu",ref:n},{trigger:p(()=>[r(_,{variant:"dark",size:"sm"},{default:p(()=>[r(i(me)),u[2]||(u[2]=m(" Insert "))]),_:1})]),content:p(()=>[a("ul",null,[a("li",{onClick:u[0]||(u[0]=y=>t.position="before")},[r(i(ye)),u[3]||(u[3]=m(" Before"))]),a("li",{onClick:u[1]||(u[1]=y=>t.position="after")},[r(i(pe)),u[4]||(u[4]=m(" After"))])])]),_:1},512),t.position!==null?(d(),b(z,{key:0,open:t.position!==null,onOnOpen:l,onOnClose:o},{content:p(()=>[r(wt,{position:t.position},null,8,["position"])]),_:1},8,["open"])):g("",!0),r(z,{id:`edit-key-${i(e).state.editKey}`,onOnOpen:l,onOnClose:o},{trigger:p(()=>[r(_,{variant:"secondary",size:"sm"},{default:p(()=>[r(i(ee)),u[5]||(u[5]=m("Edit "))]),_:1})]),content:p(()=>[r(tt)]),_:1},8,["id"]),r(z,{onOnOpen:l,onOnClose:o},{trigger:p(()=>[r(_,{size:"sm",variant:"danger"},{default:p(()=>[r(i(Z)),u[6]||(u[6]=m("Delete "))]),_:1})]),content:p(()=>[r(yt)]),_:1})])):g("",!0),i(e).state.editDelay!==!1&&typeof i(e).getEditDelay()=="object"?(d(),b(z,{key:1,onOnOpen:l,onOnClose:o},{trigger:p(()=>[r(_,{variant:"secondary",size:"sm"},{default:p(()=>[r(i(ve)),u[7]||(u[7]=m("Edit "))]),_:1})]),content:p(()=>[r(it)]),_:1})):g("",!0)])):g("",!0)}},xt=j(bt,[["__scopeId","data-v-2ff36c22"]]),Mt={class:"macro-recorder__header"},Kt={class:"w-full grid grid-cols-[auto_1fr_auto] gap-2"},Ct=["value"],jt={__name:"RecorderHeader",setup(s){const e=I(),t=ue(()=>e.macroName),n=x(!1);Y(()=>{n.value=t.value&&t.value.length>0});function l(o){e.changeName(o),n.value=o.length>0}return(o,v)=>(d(),f("div",Mt,[a("div",Kt,[v[7]||(v[7]=a("h4",{class:""},"Name:",-1)),a("input",{id:"macro-name",type:"text",onInput:v[0]||(v[0]=E(u=>l(u.target.value),["prevent"])),value:t.value,placeholder:"New macro"},null,40,Ct),a("div",{class:C(`recording__buttons ${!n.value||i(e).state.edit?"disabled":""}`)},[m(O(i(e).name)+" ",1),i(e).state.record?g("",!0):(d(),b(_,{key:0,variant:"primary",onClick:v[1]||(v[1]=u=>i(e).state.record=!0)},{default:p(()=>[r(i(_e),{class:"text-red-500"}),v[5]||(v[5]=m("Record "))]),_:1})),i(e).state.record?(d(),b(_,{key:1,variant:"danger",onClick:v[2]||(v[2]=u=>i(e).state.record=!1)},{default:p(()=>[r(i(X),{class:"text-white"}),v[6]||(v[6]=m("Stop "))]),_:1})):g("",!0)],2)]),i(e).steps.length>0?(d(),f("div",{key:0,class:C(`edit__buttons ${i(e).state.record?"disabled":""}`)},[a("div",null,[i(e).state.edit?g("",!0):(d(),b(_,{key:0,variant:"secondary",onClick:v[3]||(v[3]=u=>i(e).state.edit=!0)},{default:p(()=>[r(i(ee)),v[8]||(v[8]=m("Edit "))]),_:1})),i(e).state.edit?(d(),b(_,{key:1,variant:"danger",onClick:v[4]||(v[4]=u=>i(e).resetEdit())},{default:p(()=>[r(i(X)),v[9]||(v[9]=m("Stop "))]),_:1})):g("",!0)]),i(e).state.edit?(d(),b(Ye,{key:0})):g("",!0),r(xt)],2)):g("",!0)]))}},It=j(jt,[["__scopeId","data-v-f2d09e68"]]),Et={id:"validation-error__dialog",class:"dialog__content"},Ot={key:0,class:"grid gap-4"},Rt={key:0},St={key:1},Nt={class:"flex justify-end mt-4"},Vt={__name:"ValidationErrorDialog",setup(s){const e=I(),t=h({up:[],down:[]});return S(()=>{e.$subscribe(n=>{n.events&&n.events.key=="validationErrors"&&(t.up=n.events.newValue!==!1?e.state.validationErrors.up:[],t.down=n.events.newValue!==!1?e.state.validationErrors.down:[])})}),(n,l)=>(d(),f("div",Et,[l[4]||(l[4]=a("h4",{class:"mb-4 text-slate-50"},"There's an error in your macro",-1)),t&&t.up.length>0||t.down.length>0?(d(),f("div",Ot,[t.down.length>0?(d(),f("div",Rt,[l[1]||(l[1]=a("p",null,[m(" The following keys have been "),a("strong",null,"pressed"),m(" down, but "),a("strong",null,"not released"),m(". ")],-1)),a("ul",null,[(d(!0),f(R,null,H(t.down,o=>(d(),f("li",{key:o},O(o.toUpperCase()),1))),128))])])):g("",!0),t.up.length>0?(d(),f("div",St,[l[2]||(l[2]=a("p",null,[m(" The following keys have been "),a("strong",null,"released"),m(", but "),a("strong",null,"not pressed"),m(" down. ")],-1)),a("ul",null,[(d(!0),f(R,null,H(t.up,o=>(d(),f("li",{key:o},O(o.toUpperCase()),1))),128))])])):g("",!0)])):g("",!0),a("div",Nt,[r(_,{size:"sm",variant:"danger",onClick:l[0]||(l[0]=o=>i(e).state.validationErrors=!1)},{default:p(()=>l[3]||(l[3]=[m(" Close ")])),_:1})])]))}},zt=j(Vt,[["__scopeId","data-v-d58db43f"]]),At={class:"macro-recorder__footer"},Pt={class:"grid gap-2"},ht={class:"mb-2 text-center text-sky-500"},Lt={class:"flex justify-between"},Ft={__name:"RecorderFooter",setup(s){const e=I(),t=x(),n=x();S(()=>{e.$subscribe(v=>{v.events&&v.events.key=="validationErrors"&&t.value.toggleDialog(v.events.newValue!==!1)})});const l=async()=>{await e.checkMacro()?n.value.toggleDialog(!0):o()},o=async()=>{n.value.toggleDialog(!1),await e.saveMacro()?window.location.reload():t.value.toggleDialog(!0)};return(v,u)=>(d(),f("div",At,[i(e).steps.length>0?(d(),b(_,{key:0,variant:"danger",onClick:u[0]||(u[0]=y=>i(e).reset())},{default:p(()=>[r(i(ke)),u[4]||(u[4]=m(" Reset "))]),_:1})):g("",!0),r(z,{ref_key:"errorDialog",ref:t},{content:p(()=>[r(zt)]),_:1},512),r(z,{ref_key:"overwriteDialog",ref:n},{content:p(()=>[a("div",Pt,[u[7]||(u[7]=a("h4",{class:"pr-4"},"Are you sure you want to overwrite:",-1)),a("h3",ht,O(i(e).macroName),1),a("div",Lt,[r(_,{size:"sm",variant:"subtle",onClick:u[1]||(u[1]=y=>n.value.toggleDialog(!1))},{default:p(()=>u[5]||(u[5]=[m("No")])),_:1}),r(_,{size:"sm",variant:"primary",onClick:u[2]||(u[2]=y=>o())},{default:p(()=>u[6]||(u[6]=[m("Yes")])),_:1})])])]),_:1},512),i(e).steps.length>0?(d(),b(_,{key:1,disabled:i(e).state.record||i(e).state.edit,variant:"success",onClick:u[3]||(u[3]=y=>l())},{default:p(()=>[r(i(ce)),u[8]||(u[8]=m(" Save "))]),_:1},8,["disabled"])):g("",!0)]))}},Bt=j(Ft,[["__scopeId","data-v-0a809300"]]),Tt={class:"macro-recorder mcrm-block block__light"},Ut={class:"recorder-interface"},Ht={__name:"MacroRecorder",setup(s){const e=I();return(t,n)=>(d(),f("div",Tt,[a("div",Ut,[r(It),a("div",{class:C(`recorder-interface__container ${i(e).state.record&&"record"} ${i(e).state.edit&&"edit"}`)},[r(Be),r(Ue)],2),r(Bt)])]))}},qt={id:"macros",class:"panel"},Gt={class:"panel__content !p-0 !overflow-hidden"},Jt={class:"macro-panel__content"},Yt={__name:"MacrosView",setup(s){return(e,t)=>(d(),f("div",qt,[t[0]||(t[0]=a("h1",{class:"panel__title"},"Macros",-1)),a("div",Gt,[a("div",Jt,[r(Ve),r(Ht)])])]))}},os=j(Yt,[["__scopeId","data-v-fc7e8117"]]);export{os as default};
-//# sourceMappingURL=MacrosView-CE74eyGa.js.map
diff --git a/public/assets/MacrosView-CE74eyGa.js.map b/public/assets/MacrosView-CE74eyGa.js.map
deleted file mode 100644
index 98538cd..0000000
--- a/public/assets/MacrosView-CE74eyGa.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"MacrosView-CE74eyGa.js","sources":["../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconAlarm.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconArrowLeftCircle.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconArrowRightCircle.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconLoader3.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconPlus.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconRestore.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconTimeDuration15.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconPlayerRecordFilled.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconPlayerStopFilled.mjs","../../ui/src/services/MacroRecordService.js","../../ui/src/stores/macrorecorder.js","../../ui/src/components/macros/MacroOverview.vue","../../ui/src/components/macros/components/MacroKey.vue","../../ui/src/components/macros/parts/RecorderOutput.vue","../../ui/src/components/macros/parts/RecorderInput.vue","../../ui/src/components/base/ContextMenu.vue","../../ui/src/components/macros/components/FixedDelayMenu.vue","../../ui/src/components/macros/components/EditKeyDialog.vue","../../ui/src/components/macros/components/EditDelayDialog.vue","../../ui/src/components/macros/components/DeleteKeyDialog.vue","../../ui/src/components/macros/components/InsertKeyDialog.vue","../../ui/src/components/macros/parts/EditDialogs.vue","../../ui/src/components/macros/parts/RecorderHeader.vue","../../ui/src/components/macros/components/ValidationErrorDialog.vue","../../ui/src/components/macros/parts/RecorderFooter.vue","../../ui/src/components/macros/MacroRecorder.vue"],"sourcesContent":["/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconAlarm = createVueComponent(\"outline\", \"alarm\", \"IconAlarm\", [[\"path\", { \"d\": \"M12 13m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 10l0 3l2 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M7 4l-2.75 2\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M17 4l2.75 2\", \"key\": \"svg-3\" }]]);\n\nexport { IconAlarm as default };\n//# sourceMappingURL=IconAlarm.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconArrowLeftCircle = createVueComponent(\"outline\", \"arrow-left-circle\", \"IconArrowLeftCircle\", [[\"path\", { \"d\": \"M17 12h-14\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M6 9l-3 3l3 3\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M19 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0\", \"key\": \"svg-2\" }]]);\n\nexport { IconArrowLeftCircle as default };\n//# sourceMappingURL=IconArrowLeftCircle.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconArrowRightCircle = createVueComponent(\"outline\", \"arrow-right-circle\", \"IconArrowRightCircle\", [[\"path\", { \"d\": \"M18 15l3 -3l-3 -3\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M5 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M7 12h14\", \"key\": \"svg-2\" }]]);\n\nexport { IconArrowRightCircle as default };\n//# sourceMappingURL=IconArrowRightCircle.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconLoader3 = createVueComponent(\"outline\", \"loader-3\", \"IconLoader3\", [[\"path\", { \"d\": \"M3 12a9 9 0 0 0 9 9a9 9 0 0 0 9 -9a9 9 0 0 0 -9 -9\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M17 12a5 5 0 1 0 -5 5\", \"key\": \"svg-1\" }]]);\n\nexport { IconLoader3 as default };\n//# sourceMappingURL=IconLoader3.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconPlus = createVueComponent(\"outline\", \"plus\", \"IconPlus\", [[\"path\", { \"d\": \"M12 5l0 14\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M5 12l14 0\", \"key\": \"svg-1\" }]]);\n\nexport { IconPlus as default };\n//# sourceMappingURL=IconPlus.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconRestore = createVueComponent(\"outline\", \"restore\", \"IconRestore\", [[\"path\", { \"d\": \"M3.06 13a9 9 0 1 0 .49 -4.087\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M3 4.001v5h5\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\", \"key\": \"svg-2\" }]]);\n\nexport { IconRestore as default };\n//# sourceMappingURL=IconRestore.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconTimeDuration15 = createVueComponent(\"outline\", \"time-duration-15\", \"IconTimeDuration15\", [[\"path\", { \"d\": \"M12 15h2a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-2v-3h3\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M9 9v6\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M3 12v.01\", \"key\": \"svg-2\" }], [\"path\", { \"d\": \"M12 21v.01\", \"key\": \"svg-3\" }], [\"path\", { \"d\": \"M7.5 4.2v.01\", \"key\": \"svg-4\" }], [\"path\", { \"d\": \"M16.5 19.8v.01\", \"key\": \"svg-5\" }], [\"path\", { \"d\": \"M7.5 19.8v.01\", \"key\": \"svg-6\" }], [\"path\", { \"d\": \"M4.2 16.5v.01\", \"key\": \"svg-7\" }], [\"path\", { \"d\": \"M19.8 16.5v.01\", \"key\": \"svg-8\" }], [\"path\", { \"d\": \"M4.2 7.5v.01\", \"key\": \"svg-9\" }], [\"path\", { \"d\": \"M21 12a9 9 0 0 0 -9 -9\", \"key\": \"svg-10\" }]]);\n\nexport { IconTimeDuration15 as default };\n//# sourceMappingURL=IconTimeDuration15.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconPlayerRecordFilled = createVueComponent(\"filled\", \"player-record-filled\", \"IconPlayerRecordFilled\", [[\"path\", { \"d\": \"M8 5.072a8 8 0 1 1 -3.995 7.213l-.005 -.285l.005 -.285a8 8 0 0 1 3.995 -6.643z\", \"key\": \"svg-0\" }]]);\n\nexport { IconPlayerRecordFilled as default };\n//# sourceMappingURL=IconPlayerRecordFilled.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconPlayerStopFilled = createVueComponent(\"filled\", \"player-stop-filled\", \"IconPlayerStopFilled\", [[\"path\", { \"d\": \"M17 4h-10a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3z\", \"key\": \"svg-0\" }]]);\n\nexport { IconPlayerStopFilled as default };\n//# sourceMappingURL=IconPlayerStopFilled.mjs.map\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nconst keyMap = {\n // Modifier keys\n Control: 'Ctrl',\n Shift: 'Shift',\n Alt: 'Alt',\n Meta: 'Win',\n CapsLock: 'Caps',\n // Special keys\n PageUp: 'PgUp',\n PageDown: 'PgDn',\n ScrollLock: 'Scr Lk',\n Insert: 'Ins',\n Delete: 'Del',\n Escape: 'Esc',\n Space: 'Space',\n // Symbol keys\n Backquote: '`',\n Backslash: '\\\\',\n BracketLeft: '[',\n BracketRight: ']',\n Comma: ',',\n Equal: '=',\n Minus: '-',\n Period: '.',\n Quote: \"'\",\n Semicolon: ';',\n Slash: '/',\n // Arrow keys\n ArrowUp: '▲',\n ArrowRight: '▶',\n ArrowDown: '▼',\n ArrowLeft: '◀',\n // Media keys\n MediaPlayPause: 'Play',\n MediaStop: 'Stop',\n MediaTrackNext: 'Next',\n MediaTrackPrevious: 'Prev',\n MediaVolumeDown: 'Down',\n MediaVolumeUp: 'Up',\n AudioVolumeMute: 'Mute',\n AudioVolumeDown: 'Down',\n AudioVolumeUp: 'Up',\n}\n\n/**\n * Filters a keyboard event and returns an object with two properties:\n * loc (optional) and str.\n * loc is the location of the key (either 'left', 'right', or 'num').\n * str is the string representation of the key (e.g. 'a', 'A', 'Enter', etc.).\n * If the key is a modifier key, it is represented by its name (e.g. 'Ctrl', 'Shift', etc.).\n * If the key is not a modifier key, it is represented by its character (e.g. 'a', 'A', etc.).\n * If the key is not a character key, it is represented by its symbol (e.g. ',', '.', etc.).\n * @param {KeyboardEvent} e - The keyboard event to filter.\n * @return {Object} An object with two properties: loc (optional) and str.\n */\nexport const filterKey = (e) => {\n const k = {} // Object k (key)\n\n // If location is set, set loc (location)\n if (e.location === 1) k.loc = 'left'\n if (e.location === 2) k.loc = 'right'\n if (e.location === 3) k.loc = 'num'\n\n if (e.key.includes('Media') || e.key.includes('Audio')) k.loc = mediaPrefix(e)\n\n // If code is in keyMap, set str by code\n if (keyMap[e.code] || keyMap[e.key]) {\n k.str = keyMap[e.code] || keyMap[e.key]\n } else {\n // If code is not in keyMap, set str by e.key\n k.str = e.key.toLowerCase()\n }\n\n // return k object\n return k\n}\n\n/**\n * Returns a string prefix for the given media key.\n * @param {KeyboardEvent} e - The keyboard event to get the prefix for.\n * @return {string} The prefix for the key (either 'Media' or 'Volume').\n */\nconst mediaPrefix = (e) => {\n switch (e.key) {\n case 'MediaPlayPause':\n case 'MediaStop':\n case 'MediaTrackNext':\n case 'MediaTrackPrevious':\n return 'Media'\n case 'MediaVolumeDown':\n case 'MediaVolumeUp':\n case 'AudioVolumeDown':\n case 'AudioVolumeUp':\n case 'AudioVolumeMute':\n return 'Volume'\n }\n}\n\nexport const isRepeat = (lastStep, e, direction) => {\n return (\n lastStep &&\n lastStep.type === 'key' &&\n lastStep.code === e.code &&\n lastStep.direction === direction\n )\n}\n\nexport const invalidMacro = (steps) => {\n const downKeys = []\n const upKeys = []\n\n Object.keys(steps).forEach((stepKey) => {\n const step = steps[stepKey]\n\n if (step.type !== 'key') return\n\n if (step.direction == 'down') downKeys.push(step.key)\n if (step.direction == 'up') {\n if (!downKeys.includes(step.key)) upKeys.push(step.key)\n else downKeys.splice(downKeys.indexOf(step.key), 1)\n }\n })\n\n if (upKeys.length === 0 && downKeys.length === 0) return false\n\n return { down: downKeys, up: upKeys }\n}\n\nexport const translateJSON = (json) => {\n const steps = []\n\n json.forEach((step) => {\n if (step.type === 'delay') steps.push(step)\n if (step.type === 'key') steps.push(codeToStep(step.code, step.direction))\n })\n\n return steps\n}\n\nexport const codeToStep = (code, direction) => {\n let key = ''\n let location = 0\n let codeStr = code\n\n if (code.includes('Left')) {\n key = code.replace('Left', '')\n location = 1\n }\n if (code.includes('Right')) {\n key = code.replace('Right', '')\n location = 2\n }\n if (code.includes('Numpad')) {\n key = code.replace('Numpad', '')\n location = 3\n }\n\n if (code.includes('Media')) codeStr = ''\n\n if (key === '') key = code\n\n const stepObj = {\n type: 'key',\n code: codeStr,\n key: key,\n location: location,\n direction: direction,\n }\n\n return { ...stepObj, keyObj: filterKey(stepObj) }\n}\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nimport { ref } from 'vue'\nimport { defineStore } from 'pinia'\n\nimport { filterKey, isRepeat, invalidMacro, translateJSON } from '../services/MacroRecordService'\nimport axios from 'axios'\nimport { appUrl } from '@/services/ApiService'\n\nexport const useMacroRecorderStore = defineStore('macrorecorder', () => {\n // Properties - State values\n const state = ref({\n record: false,\n edit: false,\n editKey: false,\n editDelay: false,\n validationErrors: false,\n })\n\n const macroName = ref('')\n\n const steps = ref([])\n\n const delay = ref({\n start: 0,\n fixed: false,\n })\n\n // Getters - Computed values\n const getEditKey = () => steps.value[state.value.editKey]\n const getAdjacentKey = (pos, includeDelay = false) => {\n let returnVal = false\n\n const mod = pos == 'before' ? -1 : 1\n const keyIndex = state.value.editKey + 2 * mod\n const delayIndex = includeDelay ? state.value.editKey + 1 * mod : false\n\n if (steps.value[keyIndex]) returnVal = steps.value[keyIndex]\n if (delayIndex && steps.value[delayIndex])\n returnVal = {\n delay: steps.value[delayIndex],\n key: steps.value[keyIndex],\n delayIndex: delayIndex,\n }\n\n return returnVal\n }\n\n const getEditDelay = () => steps.value[state.value.editDelay]\n\n // Setters - Actions\n const recordStep = (e, direction = false, key = false) => {\n if ((e.ctrlKey, e.shiftKey, e.altKey, e.metaKey)) e.preventDefault()\n\n const lastStep = steps.value[steps.value.length - 1]\n\n let stepVal = {}\n\n if (typeof e === 'object' && !isRepeat(lastStep, e, direction)) {\n if (key === false) recordDelay()\n\n stepVal = {\n type: 'key',\n key: e.key,\n code: e.code,\n location: e.location,\n direction: direction,\n keyObj: filterKey(e),\n }\n } else if (direction && key !== false) {\n stepVal = steps.value[key]\n stepVal.direction = direction\n } else if (typeof e === 'number') {\n stepVal = { type: 'delay', value: parseFloat(e.toFixed()) }\n }\n\n if (key !== false) steps.value[key] = stepVal\n else steps.value.push(stepVal)\n }\n\n const recordDelay = () => {\n if (delay.value.fixed !== false)\n recordStep(delay.value.fixed) // Record fixed delay\n else if (delay.value.start == 0)\n delay.value.start = performance.now() // Record start of delay\n else {\n recordStep(performance.now() - delay.value.start) // Record end of delay\n delay.value.start = performance.now() // Reset start\n }\n }\n\n const insertKey = (e, direction, adjacentDelayIndex) => {\n let min, max, newKeyIndex, newDelayIndex\n\n if (adjacentDelayIndex === null) {\n min = state.value.editKey == 0 ? 0 : state.value.editKey\n max = state.value.editKey == 0 ? 1 : false\n\n newKeyIndex = max === false ? min + 2 : min\n newDelayIndex = min + 1\n } else if (state.value.editKey < adjacentDelayIndex) {\n min = state.value.editKey\n max = adjacentDelayIndex\n newKeyIndex = min + 2\n newDelayIndex = min + 1\n } else {\n min = adjacentDelayIndex\n max = state.value.editKey\n newKeyIndex = min + 1\n newDelayIndex = min + 2\n }\n\n if (max !== false) {\n for (let i = Object.keys(steps.value).length - 1; i >= max; i--) {\n steps.value[i + 2] = steps.value[i]\n }\n }\n\n recordStep(e, direction, newKeyIndex)\n recordStep(10, false, newDelayIndex)\n\n state.value.editKey = false\n }\n\n const deleteEditKey = () => {\n if (state.value.editKey === 0) steps.value.splice(state.value.editKey, 2)\n else steps.value.splice(state.value.editKey - 1, 2)\n state.value.editKey = false\n }\n\n const restartDelay = () => {\n delay.value.start = performance.now()\n }\n\n const changeName = (name) => {\n macroName.value = name\n }\n\n const changeDelay = (fixed) => {\n delay.value.fixed = fixed\n\n formatDelays()\n }\n\n const formatDelays = () => {\n steps.value = steps.value.map((step) => {\n if (step.type === 'delay' && delay.value.fixed !== false) step.value = delay.value.fixed\n return step\n })\n }\n\n const toggleEdit = (type, key) => {\n if (type === 'key') {\n state.value.editKey = key\n state.value.editDelay = false\n }\n\n if (type === 'delay') {\n state.value.editKey = false\n state.value.editDelay = key\n }\n }\n\n const resetEdit = () => {\n state.value.edit = false\n state.value.editKey = false\n state.value.editDelay = false\n }\n\n const resetMacro = () => {\n state.value.record = false\n delay.value.start = 0\n macroName.value = ''\n steps.value = []\n\n if (state.value.edit) resetEdit()\n }\n\n const checkMacro = async () => {\n const resp = await axios.post(appUrl() + '/macro/check', {\n macro: macroName.value,\n })\n\n return resp.data\n }\n\n const saveMacro = async () => {\n state.value.validationErrors = invalidMacro(steps.value)\n\n if (state.value.validationErrors) return false\n\n const resp = await axios.post(appUrl() + '/macro/record', {\n name: macroName.value,\n steps: steps.value,\n })\n\n return resp.status == 200\n }\n\n const deleteMacro = async (macroFilename) => {\n const resp = await axios.post(appUrl() + '/macro/delete', {\n macro: macroFilename,\n })\n\n if (resp.status == 200) return resp.data\n else return false\n }\n\n const openMacro = async (macroFileName, name) => {\n const openResp = await axios.post(appUrl() + '/macro/open', {\n macro: macroFileName,\n })\n\n if (openResp.data) steps.value = translateJSON(openResp.data)\n\n macroName.value = name\n }\n\n return {\n state,\n macroName,\n steps,\n delay,\n getEditKey,\n getAdjacentKey,\n getEditDelay,\n recordStep,\n insertKey,\n deleteEditKey,\n restartDelay,\n changeName,\n changeDelay,\n toggleEdit,\n resetEdit,\n resetMacro,\n checkMacro,\n saveMacro,\n deleteMacro,\n openMacro,\n }\n})\n","\n\n\n \n
Saved Macros \n
\n
\n
\n
\n {{ macro.name }} \n \n
\n \n \n \n
\n
\n
\n
\n \n \n
Are you sure you want to delete: \n
{{ macroToBeDeleted }} \n
\n \n No\n \n Yes \n
\n
\n \n \n
\n \n\n\n\n\n","\n\n\n \n \n \n {{ keyObj.loc }}\n \n \n {{ dir.value === 'down' ? '↓' : '↑' }} \n \n\n \n [ ] \n \n \n \n\n\n\n\n","\n\n\n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n
\n \n\n\n\n\n","\n\n\n \n \n
\n \n\n\n\n\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n \n Fixed delay \n \n \n \n 0ms \n 15ms \n 50ms \n 100ms \n \n \n \n Custom delay \n \n\n \n Custom delay \n \n \n \n \n \n \n \n \n\n\n\n\n","\n\n\n \n
Press a key \n
\n \n\n \n >>> \n \n \n
\n
\n
\n \n\n\n\n\n","\n\n\n \n
Edit delay \n
\n \n
\n
\n
\n \n\n\n\n\n","\n\n\n \n
Delete key \n
\n \n
\n
Are you sure you want to delete this key?
\n
\n \n Delete key\n \n
\n
\n \n\n\n\n\n'\n","\n\n\n \n
Insert key {{ position }} \n
[Press a key]
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n ↓ Down\n \n \n ↑ Up\n \n
\n
\n Insert key \n
\n
\n \n\n\n\n\n","\n\n\n \n
\n
\n \n Insert \n \n \n \n \n \n\n
\n \n \n \n \n\n
\n \n Edit \n \n \n \n \n \n\n
\n \n Delete \n \n \n \n \n \n
\n
\n \n Edit \n \n \n \n \n \n
\n \n\n\n\n\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n
There's an error in your macro \n\n
0) || errors.down.length > 0\">\n
0\">\n
\n The following keys have been pressed down, but\n not released .\n
\n
\n {{ key.toUpperCase() }} \n \n
\n\n
0\">\n
\n The following keys have been released , but\n not pressed down.\n
\n
\n {{ key.toUpperCase() }} \n \n
\n
\n
\n \n Close\n \n
\n
\n \n\n\n\n\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n
\n \n
\n\n \n
\n \n \n \n \n
\n\n
\n
\n
\n \n\n\n\n\n"],"names":["IconAlarm","createVueComponent","IconArrowLeftCircle","IconArrowRightCircle","IconLoader3","IconPlus","IconRestore","IconTimeDuration15","IconPlayerRecordFilled","IconPlayerStopFilled","keyMap","filterKey","e","k","mediaPrefix","isRepeat","lastStep","direction","invalidMacro","steps","downKeys","upKeys","stepKey","step","translateJSON","json","codeToStep","code","key","location","codeStr","stepObj","useMacroRecorderStore","defineStore","state","ref","macroName","delay","getEditKey","getAdjacentKey","pos","includeDelay","returnVal","mod","keyIndex","delayIndex","getEditDelay","recordStep","stepVal","recordDelay","insertKey","adjacentDelayIndex","min","max","newKeyIndex","newDelayIndex","i","deleteEditKey","restartDelay","changeName","name","changeDelay","fixed","formatDelays","toggleEdit","type","resetEdit","axios","appUrl","macroFilename","resp","macroFileName","openResp","macros","reactive","macroRecorder","macroToBeDeleted","deleteDialog","onMounted","loadMacroList","list","GetMacroList","startDelete","deleteMacro","props","__props","dir","setDirection","onUpdated","macroInput","__expose","toggle","menuOpen","ctxtMenu","num","editable","newKeyInput","handleNewKey","handleNewDirection","changeKey","keyObj","keyObjs","insertKeyInput","inputFocus","adjacentKey","handleInsertKey","insert","mutation","onOpenDialog","onCloseDialog","computed","nameSet","errors","errorDialog","overwriteDialog","startCheck","saveMacro"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
\ No newline at end of file
diff --git a/public/assets/PanelsView-Bnnsxhnr.js b/public/assets/PanelsView-Bnnsxhnr.js
deleted file mode 100644
index 2548c9c..0000000
--- a/public/assets/PanelsView-Bnnsxhnr.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import{c as x,_ as B,r as E,a as y,o as I,b as z,d as v,e as l,f as _,g as s,t as b,w as R,h as g,v as Y,F as C,i as O,j as k,k as f,u as h,l as L,m as Z,n as j,G as ee,p as D,q as M,I as te,C as H,s as se,x as ne,R as ae,y as N,A as oe,z as le,B as T,D as ie,E as re}from"./index-oAtpp-VZ.js";import{A as q}from"./AccordionComp-D0eDAM6d.js";import{I as ce,a as ue,b as de}from"./IconTrash-DtIpQ-M_.js";/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var ve=x("outline","arrow-left","IconArrowLeft",[["path",{d:"M5 12l14 0",key:"svg-0"}],["path",{d:"M5 12l6 6",key:"svg-1"}],["path",{d:"M5 12l6 -6",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var pe=x("outline","eye","IconEye",[["path",{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0",key:"svg-0"}],["path",{d:"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var me=x("outline","search-off","IconSearchOff",[["path",{d:"M5.039 5.062a7 7 0 0 0 9.91 9.89m1.584 -2.434a7 7 0 0 0 -9.038 -9.057",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var _e=x("outline","search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);const F=a=>{const n=document.createElement("style");n.setAttribute("custom_panel_style",!0),n.innerHTML=a,document.head.appendChild(n)},U=()=>{const a=document.querySelector("style[custom_panel_style]");a&&a.remove()},G=(a,n)=>{const t=new DOMParser().parseFromString(a,"text/html");let e=[];if(t.querySelectorAll("script").length>0){const S=fe(t);t.body=S.body,e=S.scripts}const r=t.body.innerHTML,c=document.createElement("div");return c.id="panel-html__body",c.style=`aspect-ratio: ${n}`,c.innerHTML=r,e.length>0&&he(e),c.outerHTML},fe=a=>{const n=a.querySelectorAll("script"),i=[];return n.forEach(t=>{t.getAttribute("no-compile")!=""&&i.push(t.innerHTML),t.remove()}),{body:a.body,scripts:i}},he=a=>{a.forEach(n=>{const i=document.createElement("script");i.setAttribute("custom_panel_script",!0),i.innerHTML=n,document.body.appendChild(i)})},ge=()=>{document.querySelectorAll("script[custom_panel_script]").forEach(n=>{n.remove()})},J=(a,n)=>{a.querySelectorAll("[mcrm__button]").forEach(i=>{i.addEventListener("click",()=>{n(i)})})},K=a=>{a.querySelectorAll("[mcrm__dialog-trigger]").forEach(n=>{const i=document.querySelector(n.getAttribute("dialog-trigger"));i&&n.addEventListener("click",()=>{i.show()})}),document.querySelectorAll("dialog, dialog .dialog__close").forEach(n=>{n.addEventListener("click",i=>{(i.target.classList.contains("dialog__close")||i.target.closest(".dialog__close")||i.target.tagName=="DIALOG")&&n.closest("dialog").close()})})},ye={class:"input-group form-select"},ke={key:0},be={class:"select__container"},we={key:0,class:"select__search-bar"},Se=["list","disabled"],$e=["id"],Le=["value"],Me=["name"],Ae={value:"",disabled:""},Pe=["value"],Ee={__name:"FormSelect",props:{label:String,name:String,options:[Array,Object],search:Boolean,value:String},emits:["change"],setup(a,{emit:n}){const i=n,t=a,e=E({options:[],search:"",searchActive:!1,changed:!1,value:""}),d=y(null),r=y(null);I(()=>{c(),typeof t.options=="object"&&(e.options=Object.values(t.options))}),z(()=>{c()});const c=()=>{(e.value==""&&t.value||!e.changed&&t.value!=e.value)&&(e.value=t.value),e.changed=!1},S=()=>{e.searchActive=!0,e.search="",d.value.classList="search__is-active",setTimeout(()=>{r.value.focus()},50)},P=()=>{e.search="",e.searchActive=!1,d.value.classList=""},V=A=>{u(A),P()},u=A=>{e.changed=!0,e.value=A.target.value,i("change",e.value)};return(A,w)=>(l(),v("div",ye,[a.label?(l(),v("label",ke,b(a.label),1)):_("",!0),s("div",be,[a.search?(l(),v("div",we,[R(s("input",{type:"search",ref_key:"selectSearch",ref:r,list:`${a.name}-search__options`,"onUpdate:modelValue":w[0]||(w[0]=p=>e.search=p),onChange:w[1]||(w[1]=p=>V(p)),disabled:!e.searchActive,autocomplete:"on"},null,40,Se),[[Y,e.search]]),s("datalist",{id:`${a.name}-search__options`},[(l(!0),v(C,null,O(e.options,p=>(l(),v("option",{key:p.value,value:p.value},b(p.label),9,Le))),128))],8,$e),e.searchActive?(l(),g(L,{key:1,variant:"ghost",size:"sm",onClick:P},{default:k(()=>[f(h(me))]),_:1})):(l(),g(L,{key:0,variant:"ghost",size:"sm",onClick:S},{default:k(()=>[f(h(_e))]),_:1}))])):_("",!0),R(s("select",{name:a.name,ref_key:"selectEl",ref:d,"onUpdate:modelValue":w[2]||(w[2]=p=>e.value=p),onChange:w[3]||(w[3]=p=>u(p))},[s("option",Ae,"- Select "+b(a.label.toLocaleLowerCase())+" -",1),(l(!0),v(C,null,O(e.options,p=>(l(),v("option",{key:p.value,value:p.value},b(p.label),9,Pe))),128))],40,Me),[[Z,e.value]])])]))}},Ce=B(Ee,[["__scopeId","data-v-a2e76de3"]]),Ie={key:0,id:"panel-edit",class:"mcrm-block block__dark !p-0 !gap-0"},xe={class:"panel-preview"},Be=["innerHTML"],Ve={class:"panel-settings"},Te={class:"grid grid-cols-[auto_1fr] gap-2 p-4"},Oe={class:"text-right"},je={class:"text-right"},Re={class:"text-right"},He={class:"grid gap-4 p-4"},qe={class:"grid grid-cols-[auto_1fr] gap-2"},ze={class:"text-right"},De={class:"grid"},Ne={class:"grid grid-cols-2 mt-4"},Fe={class:"flex items-end justify-end h-full p-4"},Ue={__name:"PanelEdit",props:{dirname:String},setup(a){const n=a,i=j(),t=y(!1),e=y({}),d=E({old:{},changed:!1}),r=y({}),c=y(!1),S=y(!1),P=y(null),V=y(null),u=E({id:"",macro:"",newMacro:"",changed:!1});I(async()=>{const m=await i.get(n.dirname);e.value=m,e.value.dir=n.dirname,e.value.html=G(e.value.html,e.value.aspectRatio),d.old=JSON.stringify(m.macros),c.value.toggleAccordion(!0);const o=await ee();r.value=Object.assign({},...Object.keys(o).map($=>({[$]:{value:o[$].macroname,label:o[$].name}}))),F(e.value.style),A()}),D(()=>{U()});function A(){const m=o=>{c.value.toggleAccordion(!1),w(o.id)};J(t.value,m),K(t.value)}function w(m){u.id=m,u.macro=e.value.macros[m]?e.value.macros[m]:""}function p(m,o){u.changed=e.value.macros[m]!=o,u.newMacro=o}function Q(m){e.value.macros[m]=u.newMacro,u.macro=u.newMacro,u.newMacro="",d.changed=H(d.old,e.value.macros)}function W(m){delete e.value.macros[m],S.value.toggleAccordion(!1),d.changed=H(d.old,e.value.macros)}function X(){const m={dir:e.value.dir,name:e.value.name,description:e.value.description,aspectRatio:e.value.aspectRatio,macros:e.value.macros};se.post(ne()+"/panel/save/json",m)}return(m,o)=>e.value?(l(),v("div",Ie,[s("div",xe,[s("div",{class:"panel-preview__content",ref_key:"panelPreview",ref:t,innerHTML:e.value.html},null,8,Be)]),s("div",Ve,[f(q,{title:"Panel info",ref_key:"infoAccordion",ref:c},{default:k(()=>[s("div",Te,[o[5]||(o[5]=s("span",null,"Name:",-1)),s("strong",Oe,b(e.value.name),1),o[6]||(o[6]=s("span",null,"Aspect ratio:",-1)),s("strong",je,b(e.value.aspectRatio),1),e.value.macros?(l(),v(C,{key:0},[o[4]||(o[4]=s("span",null,"Linked Macros:",-1)),s("strong",Re,b(Object.keys(e.value.macros).length),1)],64)):_("",!0)])]),_:1},512),s("div",null,[u.id?(l(),g(q,{key:0,title:"Button",ref_key:"buttonAccordion",ref:S,open:u.id!=""},{default:k(()=>[s("div",He,[s("div",qe,[o[7]||(o[7]=s("span",null,"Button ID:",-1)),s("strong",ze,b(u.id),1)]),s("div",De,[f(Ce,{name:"button_macro",label:"Button macro",search:!0,options:r.value,value:u.macro,onChange:o[0]||(o[0]=$=>p(u.id,$))},null,8,["options","value"]),s("div",Ne,[u.macro!=""?(l(),g(L,{key:0,class:"col-start-1 w-fit",size:"sm",variant:"danger",onClick:o[1]||(o[1]=$=>W(u.id)),ref_key:"unlinkButton",ref:P},{default:k(()=>[f(h(ce)),o[8]||(o[8]=M(" Unlink "))]),_:1},512)):_("",!0),u.changed?(l(),g(L,{key:1,class:"col-start-2 w-fit justify-self-end",size:"sm",variant:"primary",onClick:o[2]||(o[2]=$=>Q(u.id)),ref_key:"linkButton",ref:V},{default:k(()=>[f(h(te)),o[9]||(o[9]=M(" Link "))]),_:1},512)):_("",!0)])])])]),_:1},8,["open"])):_("",!0)]),s("footer",Fe,[d.changed?(l(),g(L,{key:0,variant:"success",onClick:o[3]||(o[3]=$=>X())},{default:k(()=>[f(h(ue)),o[10]||(o[10]=M(" Save changes "))]),_:1})):_("",!0)])])])):_("",!0)}},Ge={id:"panel-view"},Je=["innerHTML"],Ke={__name:"PanelView",props:{dirname:String},setup(a){const n=j(),i=a,t=y(null),e=y({});I(async()=>{const r=await n.get(i.dirname);e.value=r,e.value.html=G(e.value.html,e.value.aspectRatio),F(e.value.style),setTimeout(()=>{d(),typeof window.onPanelLoaded=="function"&&window.onPanelLoaded()},50)}),D(()=>{U(),ge()});const d=()=>{const r=c=>{ae(e.value.macros[c.id])};J(t.value,r),K(t.value)};return(r,c)=>(l(),v("div",Ge,[s("div",{class:"panel-preview__content",ref_key:"panelView",ref:t,innerHTML:e.value.html},null,8,Je)]))}},Qe=B(Ke,[["__scopeId","data-v-30e319d1"]]),We={id:"panels-overview"},Xe={class:"panel-list"},Ye=["onClick"],Ze={class:"thumb"},et=["src"],tt={key:0,class:"description"},st={class:"content"},nt={class:"block mb-1 text-slate-400"},at={key:0,class:"text-slate-200"},ot={__name:"PanelsOverview",setup(a){const n=j(),i=E({list:{}}),t=N();I(async()=>{const d=await n.getList();i.list=d});function e(d){T()||t.push(`/panel/view/${d}`)}return(d,r)=>(l(),v("div",We,[Object.keys(i.list).length==0?(l(),g(oe,{key:0,variant:"info"},{default:k(()=>r[0]||(r[0]=[M(" No panels found ")])),_:1})):_("",!0),s("div",Xe,[(l(!0),v(C,null,O(i.list,(c,S)=>(l(),v("div",{class:"panel-item mcrm-block block__dark",key:S},[s("div",{class:"panel-item__content",onClick:P=>e(c.dir)},[s("div",Ze,[c.thumb?(l(),v("img",{key:0,src:`data:image/jpeg;base64,${c.thumb}`,alt:""},null,8,et)):(l(),g(h(le),{key:1}))]),s("h4",null,b(c.name),1),h(T)()?(l(),v("div",tt,[s("div",st,[s("strong",nt,b(c.name),1),r[1]||(r[1]=s("hr",{class:"mb-2 border-slate-600"},null,-1)),c.description!="null"?(l(),v("p",at,b(c.description),1)):_("",!0)]),s("footer",null,[f(L,{variant:"subtle",size:"sm",href:`/panel/view/${c.dir}`},{default:k(()=>[f(h(pe)),r[2]||(r[2]=M(" Preview "))]),_:2},1032,["href"]),f(L,{variant:"primary",size:"sm",href:`/panel/edit/${c.dir}`},{default:k(()=>[f(h(de)),r[3]||(r[3]=M(" Edit "))]),_:2},1032,["href"])])])):_("",!0)],8,Ye),h(T)()?_("",!0):(l(),v(C,{key:0},[],64))]))),128))])]))}},lt=B(ot,[["__scopeId","data-v-a6f4d943"]]),it={id:"panels",class:"panel"},rt={class:"flex items-end justify-between !w-full panel__title"},ct={__name:"PanelsView",setup(a){const n=ie(),i=N(),t=E({function:"",dirname:""});I(()=>{e()}),z(()=>{e()});const e=()=>{n.name.includes("panel-")?t.function=n.name=="panel-edit"?"edit":"preview":t.function="overview",t.dirname=n.params.dirname};return(d,r)=>(l(),v("div",it,[s("h1",rt,[r[2]||(r[2]=s("div",null,"Panels",-1)),t.function!="overview"?(l(),g(L,{key:0,variant:"subtle",size:"sm",onClick:r[0]||(r[0]=c=>h(i).push("/panels"))},{default:k(()=>[f(h(ve)),r[1]||(r[1]=M(" Overview "))]),_:1})):_("",!0)]),s("div",{class:re(`panel__content !p-0 !pt-4 ${t.function=="overview"}`)},[t.function=="overview"?(l(),g(lt,{key:0})):_("",!0),t.function=="edit"?(l(),g(Ue,{key:1,dirname:t.dirname},null,8,["dirname"])):_("",!0),t.function=="preview"?(l(),g(Qe,{key:2,dirname:t.dirname},null,8,["dirname"])):_("",!0)],2)]))}},pt=B(ct,[["__scopeId","data-v-4fa76eeb"]]);export{pt as default};
-//# sourceMappingURL=PanelsView-Bnnsxhnr.js.map
diff --git a/public/assets/PanelsView-Bnnsxhnr.js.map b/public/assets/PanelsView-Bnnsxhnr.js.map
deleted file mode 100644
index bda384c..0000000
--- a/public/assets/PanelsView-Bnnsxhnr.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"PanelsView-Bnnsxhnr.js","sources":["../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconArrowLeft.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconEye.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconSearchOff.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconSearch.mjs","../../ui/src/services/PanelService.js","../../ui/src/components/form/FormSelect.vue","../../ui/src/components/panels/PanelEdit.vue","../../ui/src/components/panels/PanelView.vue","../../ui/src/components/panels/PanelsOverview.vue","../../ui/src/views/PanelsView.vue"],"sourcesContent":["/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconArrowLeft = createVueComponent(\"outline\", \"arrow-left\", \"IconArrowLeft\", [[\"path\", { \"d\": \"M5 12l14 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M5 12l6 6\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M5 12l6 -6\", \"key\": \"svg-2\" }]]);\n\nexport { IconArrowLeft as default };\n//# sourceMappingURL=IconArrowLeft.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconEye = createVueComponent(\"outline\", \"eye\", \"IconEye\", [[\"path\", { \"d\": \"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6\", \"key\": \"svg-1\" }]]);\n\nexport { IconEye as default };\n//# sourceMappingURL=IconEye.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconSearchOff = createVueComponent(\"outline\", \"search-off\", \"IconSearchOff\", [[\"path\", { \"d\": \"M5.039 5.062a7 7 0 0 0 9.91 9.89m1.584 -2.434a7 7 0 0 0 -9.038 -9.057\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M3 3l18 18\", \"key\": \"svg-1\" }]]);\n\nexport { IconSearchOff as default };\n//# sourceMappingURL=IconSearchOff.mjs.map\n","/**\n * @license @tabler/icons-vue v3.31.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createVueComponent from '../createVueComponent.mjs';\n\nvar IconSearch = createVueComponent(\"outline\", \"search\", \"IconSearch\", [[\"path\", { \"d\": \"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M21 21l-6 -6\", \"key\": \"svg-1\" }]]);\n\nexport { IconSearch as default };\n//# sourceMappingURL=IconSearch.mjs.map\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nexport const SetPanelStyle = (styleStr) => {\n const styleEl = document.createElement('style')\n styleEl.setAttribute('custom_panel_style', true)\n styleEl.innerHTML = styleStr\n document.head.appendChild(styleEl)\n}\n\nexport const RemovePanelStyle = () => {\n const styleEl = document.querySelector('style[custom_panel_style]')\n if (styleEl) {\n styleEl.remove()\n }\n}\n\nexport const StripPanelHTML = (html, aspectRatio) => {\n const parser = new DOMParser()\n const doc = parser.parseFromString(html, 'text/html')\n let scripts = []\n\n if (doc.querySelectorAll('script').length > 0) {\n const stripped = StripPanelScripts(doc)\n doc.body = stripped.body\n scripts = stripped.scripts\n }\n\n const body = doc.body\n const bodyContents = body.innerHTML\n\n const panelBody = document.createElement('div')\n panelBody.id = 'panel-html__body'\n panelBody.style = `aspect-ratio: ${aspectRatio}`\n panelBody.innerHTML = bodyContents\n\n if (scripts.length > 0) {\n SetPanelScripts(scripts)\n }\n\n return panelBody.outerHTML\n}\n\nexport const StripPanelScripts = (doc) => {\n const scriptEls = doc.querySelectorAll('script')\n const scripts = []\n\n scriptEls.forEach((script) => {\n if (script.getAttribute('no-compile') != '') scripts.push(script.innerHTML)\n script.remove()\n })\n\n return { body: doc.body, scripts }\n}\n\nexport const SetPanelScripts = (scripts) => {\n scripts.forEach((script) => {\n const scriptEl = document.createElement('script')\n scriptEl.setAttribute('custom_panel_script', true)\n scriptEl.innerHTML = script\n document.body.appendChild(scriptEl)\n })\n}\n\nexport const RemovePanelScripts = () => {\n const scripts = document.querySelectorAll('script[custom_panel_script]')\n scripts.forEach((script) => {\n script.remove()\n })\n}\n\nexport const PanelButtonListeners = (panelEl, callback) => {\n panelEl.querySelectorAll('[mcrm__button]').forEach((button) => {\n button.addEventListener('click', () => {\n callback(button)\n })\n })\n}\n\nexport const PanelDialogListeners = (panelEl) => {\n panelEl.querySelectorAll('[mcrm__dialog-trigger]').forEach((dialogTrigger) => {\n const dialogEl = document.querySelector(dialogTrigger.getAttribute('dialog-trigger'))\n\n if (dialogEl) {\n dialogTrigger.addEventListener('click', () => {\n dialogEl.show()\n })\n }\n })\n\n document.querySelectorAll('dialog, dialog .dialog__close').forEach((dialogClose) => {\n dialogClose.addEventListener('click', (e) => {\n if (\n e.target.classList.contains('dialog__close') ||\n e.target.closest('.dialog__close') ||\n e.target.tagName == 'DIALOG'\n ) {\n dialogClose.closest('dialog').close()\n }\n })\n })\n}\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n
\n
\n
\n \n Name: {{ editPanel.name }} \n\n Aspect ratio: {{ editPanel.aspectRatio }} \n\n \n Linked Macros: \n {{ Object.keys(editPanel.macros).length }} \n \n
\n \n
\n
\n \n
\n Button ID: \n {{ editButton.id }} \n
\n
\n
\n
\n \n Unlink\n \n \n Link\n \n
\n
\n
\n \n
\n
\n
\n
\n \n\n\n\n\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n
\n No panels found\n \n
\n
\n
\n
\n
\n
\n
\n
{{ panel.name }} \n
\n
\n
{{ panel.name }} \n
\n
\n {{ panel.description }}\n
\n
\n
\n \n Preview\n \n \n Edit\n \n \n
\n
\n
\n
\n
\n
\n \n\n\n\n\n","\n\n\n \n
\n Panels
\n \n Overview\n \n \n
\n
\n \n\n\n\n\n"],"names":["IconArrowLeft","createVueComponent","IconEye","IconSearchOff","IconSearch","SetPanelStyle","styleStr","styleEl","RemovePanelStyle","StripPanelHTML","html","aspectRatio","doc","scripts","stripped","StripPanelScripts","bodyContents","panelBody","SetPanelScripts","scriptEls","script","scriptEl","RemovePanelScripts","PanelButtonListeners","panelEl","callback","button","PanelDialogListeners","dialogTrigger","dialogEl","dialogClose","e","emit","__emit","props","__props","select","reactive","selectEl","ref","selectSearch","onMounted","setValue","onUpdated","initSearch","resetSearch","selectSearchValue","event","changeSelect","panel","usePanelStore","panelPreview","editPanel","panelMacros","macroList","infoAccordion","buttonAccordion","unlinkButton","linkButton","editButton","currentPanel","macros","GetMacroList","key","EditButtonListeners","onUnmounted","setEditButton","id","checkNewMacro","macro","linkMacro","CheckMacroListChange","unlinkMacro","savePanelChanges","panelData","axios","appUrl","panelView","viewPanel","viewPanelListeners","RunMacro","panels","router","useRouter","panelList","panelItemClick","dir","isLocal","route","useRoute","setVarsByRoute"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
\ No newline at end of file
diff --git a/public/assets/PanelsView-DHxhdGwy.js b/public/assets/PanelsView-DHxhdGwy.js
new file mode 100644
index 0000000..f8d47ff
--- /dev/null
+++ b/public/assets/PanelsView-DHxhdGwy.js
@@ -0,0 +1,9 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock } from "./index-GNAKlyBz.js";
+const _sfc_main = {};
+function _sfc_render(_ctx, _cache) {
+ return openBlock(), createElementBlock("div");
+}
+const PanelsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ PanelsView as default
+};
diff --git a/public/assets/PanelsView-DtMSunDc.css b/public/assets/PanelsView-DtMSunDc.css
deleted file mode 100644
index 90cfb3e..0000000
--- a/public/assets/PanelsView-DtMSunDc.css
+++ /dev/null
@@ -1 +0,0 @@
-@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-a2e76de3],[data-v-a2e76de3]:before,[data-v-a2e76de3]:after,[data-v-a2e76de3]::backdrop{--tw-border-style:solid;--tw-outline-style:solid}}}.select__container[data-v-a2e76de3]{height:calc(var(--spacing,.25rem)*8);position:relative}.select__container select[data-v-a2e76de3],.select__container .select__search-bar[data-v-a2e76de3]{top:calc(var(--spacing,.25rem)*0);height:calc(var(--spacing,.25rem)*8);position:absolute}.select__search-bar[data-v-a2e76de3]{pointer-events:none;right:calc(var(--spacing,.25rem)*0);z-index:10;width:100%;padding-right:calc(var(--spacing,.25rem)*4);grid-template-columns:1fr auto;align-items:center;display:grid}.select__search-bar button[data-v-a2e76de3]{pointer-events:auto}.select__search-bar input[data-v-a2e76de3]{pointer-events:auto;border-style:var(--tw-border-style);padding-inline:calc(var(--spacing,.25rem)*2);padding-block:calc(var(--spacing,.25rem)*0);background-color:#0000;border-width:0}.select__search-bar input[data-v-a2e76de3]:focus{outline-style:var(--tw-outline-style);outline-width:0}.select__search-bar input[disabled][data-v-a2e76de3]{pointer-events:none}.select__search-bar datalist[data-v-a2e76de3]{top:100%;left:calc(var(--spacing,.25rem)*0);position:absolute}select.search__is-active[data-v-a2e76de3]{color:#0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}[mcrm__button]{cursor:pointer}#panel-edit{grid-template-columns:1fr 30ch;width:100%;height:100%;display:grid;overflow:hidden}#panel-edit .panel-preview{border-right-style:var(--tw-border-style);border-right-width:1px;border-color:var(--color-slate-700,oklch(37.2% .044 257.287))}#panel-edit .panel-preview .panel-preview__content{width:100%;height:100%;padding:calc(var(--spacing,.25rem)*8);justify-content:center;display:grid;position:relative}#panel-edit .panel-preview .panel-preview__content #panel-html__body{width:100%;max-width:100%;height:100%;max-height:100%}#panel-edit .panel-settings{background-color:#0000004d;grid-template-rows:auto auto 1fr;display:grid}@supports (color:color-mix(in lab,red,red)){#panel-edit .panel-settings{background-color:color-mix(in oklab,var(--color-black,#000)30%,transparent)}}#panel-view[data-v-30e319d1]{inset:calc(var(--spacing,.25rem)*0);background-color:var(--color-black,#000);width:100%;height:100%;position:fixed}#panel-view .panel-preview__content[data-v-30e319d1]{justify-content:center;width:100%;height:100%;display:grid;position:relative}#panel-view .panel-preview__content #panel-html__body[data-v-30e319d1]{width:100%;max-width:100%;height:100%;max-height:100%}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-a6f4d943],[data-v-a6f4d943]:before,[data-v-a6f4d943]:after,[data-v-a6f4d943]::backdrop{--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-border-style:solid}}}.panel-list[data-v-a6f4d943]{gap:calc(var(--spacing,.25rem)*4);grid-template-columns:repeat(2,minmax(0,1fr));width:100%;height:fit-content;display:grid}@media (min-width:48rem){.panel-list[data-v-a6f4d943]{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:64rem){.panel-list[data-v-a6f4d943]{grid-template-columns:repeat(6,minmax(0,1fr))}}.panel-item[data-v-a6f4d943]{padding:1px;overflow:hidden}.panel-item .thumb[data-v-a6f4d943]{aspect-ratio:4/3;justify-content:center;align-items:center;width:100%;display:flex}.panel-item .thumb img[data-v-a6f4d943]{object-fit:cover;width:100%;height:100%}.panel-item .thumb[data-v-a6f4d943]:not(:has(img)){background-color:var(--color-sky-950,oklch(29.3% .066 243.157))}.panel-item .thumb svg[data-v-a6f4d943]{width:calc(var(--spacing,.25rem)*12);height:calc(var(--spacing,.25rem)*12)}.panel-item h4[data-v-a6f4d943]{height:calc(var(--spacing,.25rem)*12);text-overflow:ellipsis;white-space:nowrap;padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);overflow:hidden}.panel-item:hover .description[data-v-a6f4d943]{opacity:1}.panel-item .description[data-v-a6f4d943]{inset:calc(var(--spacing,.25rem)*0);z-index:10;cursor:default;width:100%;height:100%;padding-top:calc(var(--spacing,.25rem)*2);padding-right:calc(var(--spacing,.25rem)*1);padding-bottom:calc(var(--spacing,.25rem)*13);color:var(--color-slate-100,oklch(96.8% .007 247.896));opacity:0;--tw-backdrop-blur:blur(var(--blur-md,12px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#0f172b99;position:absolute}@supports (color:color-mix(in lab,red,red)){.panel-item .description[data-v-a6f4d943]{background-color:color-mix(in oklab,var(--color-slate-900,oklch(20.8% .042 265.755))60%,transparent)}}.panel-item .description .content[data-v-a6f4d943]{height:100%;padding:calc(var(--spacing,.25rem)*4);padding-top:calc(var(--spacing,.25rem)*2);overflow-y:auto}.panel-item .description footer[data-v-a6f4d943]{bottom:calc(var(--spacing,.25rem)*0);left:calc(var(--spacing,.25rem)*0);height:calc(var(--spacing,.25rem)*12);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-slate-600,oklch(44.6% .043 257.281));background-color:var(--color-slate-900,oklch(20.8% .042 265.755));grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid;position:absolute}.panel-item .description footer .btn[data-v-a6f4d943]{border-style:var(--tw-border-style);border-width:0;border-radius:0;justify-content:center;width:100%;height:100%}.panel-item .description footer .btn[data-v-a6f4d943]:last-child{border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--color-slate-600,oklch(44.6% .043 257.281))}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */
diff --git a/public/assets/SettingsView-CVQl1jsc.js b/public/assets/SettingsView-CVQl1jsc.js
new file mode 100644
index 0000000..03a013a
--- /dev/null
+++ b/public/assets/SettingsView-CVQl1jsc.js
@@ -0,0 +1,9 @@
+import { _ as _export_sfc, c as createElementBlock, o as openBlock } from "./index-GNAKlyBz.js";
+const _sfc_main = {};
+function _sfc_render(_ctx, _cache) {
+ return openBlock(), createElementBlock("div");
+}
+const SettingsView = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+export {
+ SettingsView as default
+};
diff --git a/public/assets/index-BwE95Wut.css b/public/assets/index-BwE95Wut.css
deleted file mode 100644
index 1b4c039..0000000
--- a/public/assets/index-BwE95Wut.css
+++ /dev/null
@@ -1 +0,0 @@
-@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-tracking:initial;--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-content:"";--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}body{background-color:var(--color-slate-900);font-family:var(--font-sans);--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light);--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-slate-50)}h1,h2{font-family:var(--font-mono);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}h3,h4,h5,h6{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}h1{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}h2{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}h3{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}h4{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}h5{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}ul{list-style-type:disc;list-style-position:inside}strong{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}a{color:var(--color-amber-400);text-decoration-line:underline}@media (hover:hover){a:hover{color:var(--color-amber-300)}}.input-group{gap:calc(var(--spacing)*2);display:grid}input,select{border-radius:var(--radius-md);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-slate-400);width:100%;padding-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1);color:var(--color-white);background-color:#0003}@supports (color:color-mix(in lab,red,red)){:is(input,select){background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}:has(>input+span){display:flex}:has(>input+span) input{border-top-right-radius:0;border-bottom-right-radius:0}:has(>input+span) span{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);background-color:var(--color-slate-400);padding-inline:calc(var(--spacing)*2);color:var(--color-white);align-items:center;display:flex}select option{background-color:var(--color-slate-700)}select option:not([disabled]){cursor:pointer}::-webkit-scrollbar{width:calc(var(--spacing)*2)}::-moz-scrollbar{width:calc(var(--spacing)*2)}::-webkit-scrollbar-thumb{background-color:#90a1b9cc;border-radius:.25rem}@supports (color:color-mix(in lab,red,red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklab,var(--color-slate-400)80%,transparent)}}::-moz-scrollbar-thumb{background-color:#90a1b9cc;border-radius:.25rem}@supports (color:color-mix(in lab,red,red)){::-moz-scrollbar-thumb{background-color:color-mix(in oklab,var(--color-slate-400)80%,transparent)}}::-webkit-scrollbar-track{margin-right:calc(var(--spacing)*1);background-color:#f1f5f91a;border-radius:.25rem}@supports (color:color-mix(in lab,red,red)){::-webkit-scrollbar-track{background-color:color-mix(in oklab,var(--color-slate-100)10%,transparent)}}::-moz-scrollbar-track{margin-right:calc(var(--spacing)*1);background-color:#f1f5f91a;border-radius:.25rem}@supports (color:color-mix(in lab,red,red)){::-moz-scrollbar-track{background-color:color-mix(in oklab,var(--color-slate-100)10%,transparent)}}hr.spacer{width:calc(var(--spacing)*6);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);opacity:.8;position:relative;overflow:visible}hr.spacer:before,hr.spacer:after{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2);--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y);background-color:var(--color-gray-300);--tw-content:"";content:var(--tw-content);border-radius:3.40282e38px;position:absolute;top:50%}hr.spacer:before{left:calc(var(--spacing)*-1)}hr.spacer:after{right:calc(var(--spacing)*-1)}.mcrm-block{column-gap:calc(var(--spacing)*6);row-gap:calc(var(--spacing)*2);border-radius:var(--radius-2xl);padding:calc(var(--spacing)*6);--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);position:relative;overflow:hidden}.mcrm-block:before{pointer-events:none;inset:calc(var(--spacing)*0);z-index:10;border-radius:var(--radius-2xl);--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-content:"";content:var(--tw-content);width:100%;height:100%;padding:1px;position:absolute;-webkit-mask:linear-gradient(#000 0 0),linear-gradient(#000 0 0) content-box;-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) exclude,linear-gradient(#000 0 0) content-box}.mcrm-block.block__light{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__light{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.mcrm-block.block__light:before{--tw-gradient-from:#fff3;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__light:before{--tw-gradient-from:color-mix(in oklab,var(--color-white)20%,transparent)}}.mcrm-block.block__dark{background-color:#0f172bb3}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__dark{background-color:color-mix(in oklab,var(--color-slate-900)70%,transparent)}}.mcrm-block.block__dark:before{--tw-gradient-from:#90a1b966;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__dark:before{--tw-gradient-from:color-mix(in oklab,var(--color-slate-400)40%,transparent)}}.mcrm-block.block__primary{background-color:#77d4ff33}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__primary{background-color:color-mix(in oklab,var(--color-sky-300)20%,transparent)}}.mcrm-block.block__primary:before{--tw-gradient-from:#dff2fe33;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__primary:before{--tw-gradient-from:color-mix(in oklab,var(--color-sky-100)20%,transparent)}}.mcrm-block.block__secondary{background-color:#ffd23633}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__secondary{background-color:color-mix(in oklab,var(--color-amber-300)20%,transparent)}}.mcrm-block.block__secondary:before{--tw-gradient-from:#fef3c633;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__secondary:before{--tw-gradient-from:color-mix(in oklab,var(--color-amber-100)20%,transparent)}}.mcrm-block.block__success{background-color:#5ee9b566}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__success{background-color:color-mix(in oklab,var(--color-emerald-300)40%,transparent)}}.mcrm-block.block__success:before{--tw-gradient-from:#d0fae566;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__success:before{--tw-gradient-from:color-mix(in oklab,var(--color-emerald-100)40%,transparent)}}.mcrm-block.block__warning{background-color:#ffb96d66}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__warning{background-color:color-mix(in oklab,var(--color-orange-300)40%,transparent)}}.mcrm-block.block__warning:before{--tw-gradient-from:#ffedd566;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__warning:before{--tw-gradient-from:color-mix(in oklab,var(--color-orange-100)40%,transparent)}}.mcrm-block.block__danger{background-color:#ffa2ae66}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__danger{background-color:color-mix(in oklab,var(--color-rose-300)40%,transparent)}}.mcrm-block.block__danger:before{--tw-gradient-from:#ffe4e666;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.mcrm-block.block__danger:before{--tw-gradient-from:color-mix(in oklab,var(--color-rose-100)40%,transparent)}}.mcrm-block.block-spacing__sm,.mcrm-block.block-size__sm{column-gap:calc(var(--spacing)*4);row-gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*4)}.mcrm-block.block-size__sm,.mcrm-block.block-size__sm:before{border-radius:var(--radius-lg)}.mcrm-block.block-spacing__lg,.mcrm-block.block-size__lg{column-gap:calc(var(--spacing)*8);row-gap:calc(var(--spacing)*4);padding:calc(var(--spacing)*8)}.mcrm-block.block-size__lg,.mcrm-block.block-size__lg:before{border-radius:var(--radius-3xl)}.panel{top:calc(var(--spacing)*2);right:calc(var(--spacing)*4);bottom:calc(var(--spacing)*2);left:calc(var(--spacing)*4);grid-template-rows:auto 1fr;display:grid;position:fixed;overflow:hidden}@media (min-width:40rem){.panel{right:calc(var(--spacing)*16);left:calc(var(--spacing)*16)}}.panel>.panel__header,.panel>.panel__title{padding-inline:calc(var(--spacing)*4);padding-block:calc(var(--spacing)*2)}.panel .panel__title{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from:var(--color-amber-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));--tw-gradient-to:#ffffff80;width:fit-content;padding-top:calc(var(--spacing)*3);padding-left:calc(var(--spacing)*16);color:#0000;-webkit-background-clip:text;background-clip:text}@supports (color:color-mix(in lab,red,red)){.panel .panel__title{--tw-gradient-to:color-mix(in oklab,var(--color-white)50%,transparent)}}@media (min-width:40rem){.panel .panel__title{padding-left:calc(var(--spacing)*4)}}.panel .panel__content{height:calc(100% - 1rem);padding-top:calc(var(--spacing)*4);padding-left:calc(var(--spacing)*0);display:grid;overflow:auto}@media (min-width:40rem){.panel .panel__content{padding-top:calc(var(--spacing)*0);padding-left:calc(var(--spacing)*4)}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-300:oklch(83.7% .128 66.29);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-lime-100:oklch(96.7% .067 122.328);--color-lime-200:oklch(93.8% .127 124.321);--color-lime-400:oklch(84.1% .238 128.85);--color-lime-500:oklch(76.8% .233 130.85);--color-lime-700:oklch(53.2% .157 131.589);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-300:oklch(84.5% .143 164.978);--color-sky-100:oklch(95.1% .026 236.824);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-900:oklch(39.1% .09 240.876);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-300:oklch(87.2% .01 258.338);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-light:300;--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-widest:.1em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--blur-xs:4px;--blur-md:12px;--blur-lg:16px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-1\/2{top:50%;right:50%;bottom:50%;left:50%}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-20{top:calc(var(--spacing)*20)}.top-\[10\%\]{top:10%}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing)*4)}.left-\[10\%\]{left:10%}.left-full{left:100%}.z-10{z-index:10}.z-50{z-index:50}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.size-0{width:calc(var(--spacing)*0);height:calc(var(--spacing)*0)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-12{width:calc(var(--spacing)*12);height:calc(var(--spacing)*12)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.size-full{width:100%;height:100%}.\!h-fit{height:fit-content!important}.h-9{height:calc(var(--spacing)*9)}.h-12{height:calc(var(--spacing)*12)}.h-\[calc\(100vh-11\.7rem\)\]{height:calc(100vh - 11.7rem)}.h-fit{height:fit-content}.h-full{height:100%}.\!w-full{width:100%!important}.w-42{width:calc(var(--spacing)*42)}.w-44{width:calc(var(--spacing)*44)}.w-64{width:calc(var(--spacing)*64)}.w-96{width:calc(var(--spacing)*96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.min-w-full{min-width:100%}.flex-grow{flex-grow:1}.-translate-1\/2{--tw-translate-x: -50% ;--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-\[1\.8\]{scale:1.8}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[1fr_0fr\]{grid-template-columns:1fr 0fr}.grid-cols-\[1fr_30ch\]{grid-template-columns:1fr 30ch}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[1rem_1fr\]{grid-template-columns:1rem 1fr}.grid-cols-\[2rem_1fr\]{grid-template-columns:2rem 1fr}.grid-cols-\[25ch_1fr\]{grid-template-columns:25ch 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.grid-rows-\[auto_auto_1fr\]{grid-template-rows:auto auto 1fr}.flex-col{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-items-center{justify-items:center}.\!gap-0{gap:calc(var(--spacing)*0)!important}.\!gap-4{gap:calc(var(--spacing)*4)!important}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.\!gap-y-16{row-gap:calc(var(--spacing)*16)!important}.gap-y-4{row-gap:calc(var(--spacing)*4)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-600>:not(:last-child)){border-color:var(--color-slate-600)}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\!overflow-hidden{overflow:hidden!important}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-solid{--tw-border-style:solid;border-style:solid}.border-amber-100{border-color:var(--color-amber-100)}.border-amber-300\/80{border-color:#ffd236cc}@supports (color:color-mix(in lab,red,red)){.border-amber-300\/80{border-color:color-mix(in oklab,var(--color-amber-300)80%,transparent)}}.border-lime-100{border-color:var(--color-lime-100)}.border-lime-500{border-color:var(--color-lime-500)}.border-rose-100{border-color:var(--color-rose-100)}.border-rose-300{border-color:var(--color-rose-300)}.border-rose-500{border-color:var(--color-rose-500)}.border-sky-100{border-color:var(--color-sky-100)}.border-sky-300{border-color:var(--color-sky-300)}.border-sky-400{border-color:var(--color-sky-400)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-400{border-color:var(--color-slate-400)}.border-slate-500{border-color:var(--color-slate-500)}.border-slate-600{border-color:var(--color-slate-600)}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-white\/50{border-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-white\/50{border-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.border-yellow-300{border-color:var(--color-yellow-300)}.border-t-transparent{border-top-color:#0000}.border-t-white\/50{border-top-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.border-t-white\/50{border-top-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.border-b-slate-300{border-bottom-color:var(--color-slate-300)}.border-b-white\/60{border-bottom-color:#fff9}@supports (color:color-mix(in lab,red,red)){.border-b-white\/60{border-bottom-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-amber-100\/10{background-color:#fef3c61a}@supports (color:color-mix(in lab,red,red)){.bg-amber-100\/10{background-color:color-mix(in oklab,var(--color-amber-100)10%,transparent)}}.bg-amber-300\/30{background-color:#ffd2364d}@supports (color:color-mix(in lab,red,red)){.bg-amber-300\/30{background-color:color-mix(in oklab,var(--color-amber-300)30%,transparent)}}.bg-amber-400\/40{background-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){.bg-amber-400\/40{background-color:color-mix(in oklab,var(--color-amber-400)40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-lime-200\/10{background-color:#d8f9991a}@supports (color:color-mix(in lab,red,red)){.bg-lime-200\/10{background-color:color-mix(in oklab,var(--color-lime-200)10%,transparent)}}.bg-lime-400\/40{background-color:#9de50066}@supports (color:color-mix(in lab,red,red)){.bg-lime-400\/40{background-color:color-mix(in oklab,var(--color-lime-400)40%,transparent)}}.bg-lime-500\/80{background-color:#80cd00cc}@supports (color:color-mix(in lab,red,red)){.bg-lime-500\/80{background-color:color-mix(in oklab,var(--color-lime-500)80%,transparent)}}.bg-lime-700{background-color:var(--color-lime-700)}.bg-rose-200\/20{background-color:#ffccd333}@supports (color:color-mix(in lab,red,red)){.bg-rose-200\/20{background-color:color-mix(in oklab,var(--color-rose-200)20%,transparent)}}.bg-rose-300\/30{background-color:#ffa2ae4d}@supports (color:color-mix(in lab,red,red)){.bg-rose-300\/30{background-color:color-mix(in oklab,var(--color-rose-300)30%,transparent)}}.bg-rose-400\/40{background-color:#ff667f66}@supports (color:color-mix(in lab,red,red)){.bg-rose-400\/40{background-color:color-mix(in oklab,var(--color-rose-400)40%,transparent)}}.bg-sky-100\/10{background-color:#dff2fe1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-100\/10{background-color:color-mix(in oklab,var(--color-sky-100)10%,transparent)}}.bg-sky-300\/30{background-color:#77d4ff4d}@supports (color:color-mix(in lab,red,red)){.bg-sky-300\/30{background-color:color-mix(in oklab,var(--color-sky-300)30%,transparent)}}.bg-sky-400\/40{background-color:#00bcfe66}@supports (color:color-mix(in lab,red,red)){.bg-sky-400\/40{background-color:color-mix(in oklab,var(--color-sky-400)40%,transparent)}}.bg-sky-400\/50{background-color:#00bcfe80}@supports (color:color-mix(in lab,red,red)){.bg-sky-400\/50{background-color:color-mix(in oklab,var(--color-sky-400)50%,transparent)}}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-900{background-color:var(--color-sky-900)}.bg-slate-100\/60{background-color:#f1f5f999}@supports (color:color-mix(in lab,red,red)){.bg-slate-100\/60{background-color:color-mix(in oklab,var(--color-slate-100)60%,transparent)}}.bg-slate-200\/10{background-color:#e2e8f01a}@supports (color:color-mix(in lab,red,red)){.bg-slate-200\/10{background-color:color-mix(in oklab,var(--color-slate-200)10%,transparent)}}.bg-slate-400\/40{background-color:#90a1b966}@supports (color:color-mix(in lab,red,red)){.bg-slate-400\/40{background-color:color-mix(in oklab,var(--color-slate-400)40%,transparent)}}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-700\/80{background-color:#314158cc}@supports (color:color-mix(in lab,red,red)){.bg-slate-700\/80{background-color:color-mix(in oklab,var(--color-slate-700)80%,transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/60{background-color:#0f172b99}@supports (color:color-mix(in lab,red,red)){.bg-slate-900\/60{background-color:color-mix(in oklab,var(--color-slate-900)60%,transparent)}}.bg-slate-950\/50{background-color:#02061880}@supports (color:color-mix(in lab,red,red)){.bg-slate-950\/50{background-color:color-mix(in oklab,var(--color-slate-950)50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-white\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-yellow-500\/50{background-color:#edb20080}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/50{background-color:color-mix(in oklab,var(--color-yellow-500)50%,transparent)}}.to-white\/30{--tw-gradient-to:#ffffff4d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-white\/30{--tw-gradient-to:color-mix(in oklab,var(--color-white)30%,transparent)}}.\!p-0{padding:calc(var(--spacing)*0)!important}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-px{padding:1px}.\!px-1{padding-inline:calc(var(--spacing)*1)!important}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.\!pt-4{padding-top:calc(var(--spacing)*4)!important}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-8{padding-top:calc(var(--spacing)*8)}.\!pr-4{padding-right:calc(var(--spacing)*4)!important}.pr-1{padding-right:calc(var(--spacing)*1)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-4{padding-right:calc(var(--spacing)*4)}.pb-13{padding-bottom:calc(var(--spacing)*13)}.pl-1{padding-left:calc(var(--spacing)*1)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\!text-lg{font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.\!text-red-500{color:var(--color-red-500)!important}.text-amber-400{color:var(--color-amber-400)}.text-lime-400{color:var(--color-lime-400)}.text-red-500{color:var(--color-red-500)}.text-rose-400{color:var(--color-rose-400)}.text-sky-100{color:var(--color-sky-100)}.text-sky-300{color:var(--color-sky-300)}.text-sky-400{color:var(--color-sky-400)}.text-sky-500{color:var(--color-sky-500)}.text-slate-50{color:var(--color-slate-50)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-800{color:var(--color-slate-800)}.text-slate-950{color:var(--color-slate-950)}.text-white{color:var(--color-white)}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.uppercase{text-transform:uppercase}.not-italic{font-style:normal}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-100{opacity:1}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-black{--tw-shadow-color:#000}@supports (color:color-mix(in lab,red,red)){.shadow-black{--tw-shadow-color:color-mix(in oklab,var(--color-black)var(--tw-shadow-alpha),transparent)}}.shadow-sky-600{--tw-shadow-color:oklch(58.8% .158 241.966)}@supports (color:color-mix(in lab,red,red)){.shadow-sky-600{--tw-shadow-color:color-mix(in oklab,var(--color-sky-600)var(--tw-shadow-alpha),transparent)}}.shadow-yellow-600{--tw-shadow-color:oklch(68.1% .162 75.834)}@supports (color:color-mix(in lab,red,red)){.shadow-yellow-600{--tw-shadow-color:color-mix(in oklab,var(--color-yellow-600)var(--tw-shadow-alpha),transparent)}}.ring-sky-500{--tw-ring-color:var(--color-sky-500)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.outline-0{outline-style:var(--tw-outline-style);outline-width:0}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-3xl{--tw-backdrop-blur:blur(var(--blur-3xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-columns\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke\]{transition-property:stroke;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-0{transition-delay:0s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.duration-1000{--tw-duration:1s;transition-duration:1s}.content-\[\'\'\]{--tw-content:"";content:var(--tw-content)}@media (hover:hover){.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-lime-500:hover{background-color:var(--color-lime-500)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:bg-white\/40:hover{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/40:hover{background-color:color-mix(in oklab,var(--color-white)40%,transparent)}}.hover\:\!text-red-300:hover{color:var(--color-red-300)!important}}.focus\:border-transparent:focus{border-color:#0000}.focus\:border-b-sky-400:focus{border-bottom-color:var(--color-sky-400)}.focus\:bg-sky-400\/10:focus{background-color:#00bcfe1a}@supports (color:color-mix(in lab,red,red)){.focus\:bg-sky-400\/10:focus{background-color:color-mix(in oklab,var(--color-sky-400)10%,transparent)}}@media (min-width:48rem){.md\:\!row-start-1{grid-row-start:1!important}.md\:w-fit{width:fit-content}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}}@media (min-width:64rem){.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}}html,body,:not(#panel-html__body){--font-sans:"Roboto",sans-serif;--font-mono:"Fira Code",monospace}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-duration:initial;--tw-ease:initial;--tw-divide-y-reverse:0}}}nav{z-index:50;display:flex;position:relative}nav button{top:calc(var(--spacing,.25rem)*4);left:calc(var(--spacing,.25rem)*4);aspect-ratio:1;width:calc(var(--spacing,.25rem)*12);height:calc(var(--spacing,.25rem)*12);cursor:pointer;border-style:var(--tw-border-style);--tw-backdrop-blur:blur(var(--blur-md,12px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));background-color:#fff3;border-width:0;border-radius:3.40282e38px;position:absolute}@supports (color:color-mix(in lab,red,red)){nav button{background-color:color-mix(in oklab,var(--color-white,#fff)20%,transparent)}}@media (hover:hover){nav button:hover{background-color:#fff6}@supports (color:color-mix(in lab,red,red)){nav button:hover{background-color:color-mix(in oklab,var(--color-white,#fff)40%,transparent)}}}nav button .logo,nav button svg{--tw-translate-x: -50% ;--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.4s;--tw-ease:var(--ease-in-out,cubic-bezier(.4,0,.2,1));transition-duration:.4s;transition-timing-function:var(--ease-in-out,cubic-bezier(.4,0,.2,1));position:absolute;top:50%;right:50%;bottom:50%;left:50%}nav button .logo{width:100%}nav ul{top:calc(var(--spacing,.25rem)*20);left:calc(var(--spacing,.25rem)*0);--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y);border-radius:var(--radius-xl,.75rem);--tw-backdrop-blur:blur(var(--blur-md,12px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;--tw-ease:var(--ease-in-out,cubic-bezier(.4,0,.2,1));transition-duration:.3s;transition-timing-function:var(--ease-in-out,cubic-bezier(.4,0,.2,1));background-color:#ffffff1a;list-style-type:none;display:grid;position:absolute;overflow:hidden}:where(nav ul>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-color:var(--color-slate-600,oklch(44.6% .043 257.281))}@supports (color:color-mix(in lab,red,red)){nav ul{background-color:color-mix(in oklab,var(--color-white,#fff)10%,transparent)}}nav ul.open{left:calc(var(--spacing,.25rem)*4);--tw-translate-x:calc(var(--spacing,.25rem)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}nav ul li a{align-items:center;gap:calc(var(--spacing,.25rem)*2);padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);color:var(--color-white,#fff);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-color:#0000;text-decoration-line:none;display:flex}nav ul li a svg{color:#fff6;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))}@supports (color:color-mix(in lab,red,red)){nav ul li a svg{color:color-mix(in oklab,var(--color-white,#fff)40%,transparent)}}nav ul li a:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){nav ul li a:hover{background-color:color-mix(in oklab,var(--color-white,#fff)20%,transparent)}}nav ul li a:hover svg{color:var(--color-white,#fff)}nav ul li a.router-link-active{color:var(--color-sky-300,oklch(82.8% .111 230.318));background-color:#b8e6fe33}@supports (color:color-mix(in lab,red,red)){nav ul li a.router-link-active{background-color:color-mix(in oklab,var(--color-sky-200,oklch(90.1% .058 230.902))20%,transparent)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-c788cb13],[data-v-c788cb13]:before,[data-v-c788cb13]:after,[data-v-c788cb13]::backdrop{--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}.alert[data-v-c788cb13]{align-items:flex-start;gap:calc(var(--spacing,.25rem)*4);border-radius:var(--radius-md,.375rem);border-style:var(--tw-border-style);padding:calc(var(--spacing,.25rem)*4);--tw-backdrop-blur:blur(var(--blur-md,12px));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);background-color:#ffffff1a;border-width:1px;border-color:#ffffff1a;grid-template-columns:1rem 1fr;display:grid}@supports (color:color-mix(in lab,red,red)){.alert[data-v-c788cb13]{border-color:color-mix(in oklab,var(--color-white,#fff)10%,transparent);background-color:color-mix(in oklab,var(--color-white,#fff)10%,transparent)}}.alert.alert__info[data-v-c788cb13]{color:var(--color-sky-100,oklch(95.1% .026 236.824));background-color:#00bcfe66}@supports (color:color-mix(in lab,red,red)){.alert.alert__info[data-v-c788cb13]{background-color:color-mix(in oklab,var(--color-sky-400,oklch(74.6% .16 232.661))40%,transparent)}}.alert.alert__success[data-v-c788cb13]{color:var(--color-lime-400,oklch(84.1% .238 128.85));background-color:#9de5001a}@supports (color:color-mix(in lab,red,red)){.alert.alert__success[data-v-c788cb13]{background-color:color-mix(in oklab,var(--color-lime-400,oklch(84.1% .238 128.85))10%,transparent)}}.alert.alert__warning[data-v-c788cb13]{color:var(--color-amber-400,oklch(82.8% .189 84.429));background-color:#fcbb001a}@supports (color:color-mix(in lab,red,red)){.alert.alert__warning[data-v-c788cb13]{background-color:color-mix(in oklab,var(--color-amber-400,oklch(82.8% .189 84.429))10%,transparent)}}.alert.alert__error[data-v-c788cb13]{color:var(--color-rose-400,oklch(71.2% .194 13.428));background-color:#ff667f1a}@supports (color:color-mix(in lab,red,red)){.alert.alert__error[data-v-c788cb13]{background-color:color-mix(in oklab,var(--color-rose-400,oklch(71.2% .194 13.428))10%,transparent)}}.alert.page-wide[data-v-c788cb13]{bottom:calc(var(--spacing,.25rem)*0);left:calc(var(--spacing,.25rem)*0);width:100%;position:fixed}.alert[href][data-v-c788cb13]{cursor:pointer}.alert .alert__content[data-v-c788cb13]{gap:calc(var(--spacing,.25rem)*2);display:grid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}.app-background[data-v-ec0604e4]{pointer-events:none;inset:calc(var(--spacing,.25rem)*0);z-index:-1;opacity:.4;width:100%;height:100%;position:fixed;overflow:hidden}.app-background img[data-v-ec0604e4]{object-fit:cover;width:100%;height:100%;position:absolute}.app-background .logo[data-v-ec0604e4]{opacity:.35;mix-blend-mode:overlay;position:absolute;top:10%;left:10%;scale:1.8}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial;--tw-ease:initial;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%}}}button,.btn{cursor:pointer;align-items:center;gap:calc(var(--spacing,.25rem)*3);border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);--tw-border-style:solid;height:fit-content;padding-inline:calc(var(--spacing,.25rem)*4);padding-block:calc(var(--spacing,.25rem)*2);--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);--tw-tracking:var(--tracking-wide,.025em);letter-spacing:var(--tracking-wide,.025em);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));border-style:solid;border-width:1px;text-decoration-line:none;transition:border-color .1s ease-in-out,background-color .2s;display:flex}:is(button,.btn):not(.button__subtle,.button__ghost):hover{--tw-shadow-color:#000}@supports (color:color-mix(in lab,red,red)){:is(button,.btn):not(.button__subtle,.button__ghost):hover{--tw-shadow-color:color-mix(in oklab,var(--color-black,#000)var(--tw-shadow-alpha),transparent)}}:is(button,.btn)[disabled],:is(button,.btn).disabled{pointer-events:none;cursor:not-allowed;opacity:.5}:is(button,.btn) svg{width:calc(var(--spacing,.25rem)*5);height:calc(var(--spacing,.25rem)*5);transition-property:stroke;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.4s;--tw-ease:var(--ease-in-out,cubic-bezier(.4,0,.2,1));transition-duration:.4s;transition-timing-function:var(--ease-in-out,cubic-bezier(.4,0,.2,1))}:is(button,.btn).btn__sm{padding-inline:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*1);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)))}:is(button,.btn).btn__sm svg{width:calc(var(--spacing,.25rem)*4);height:calc(var(--spacing,.25rem)*4)}:is(button,.btn).btn__lg{padding-inline:calc(var(--spacing,.25rem)*6);padding-block:calc(var(--spacing,.25rem)*3);font-size:var(--text-lg,1.125rem);line-height:var(--tw-leading,var(--text-lg--line-height,calc(1.75/1.125)))}:is(button,.btn).btn__lg svg{width:calc(var(--spacing,.25rem)*6);height:calc(var(--spacing,.25rem)*6)}:is(button,.btn):hover{color:var(--color-white,#fff)}:is(button,.btn):hover svg{stroke:currentColor}:is(button,.btn).btn__primary{border-color:var(--color-sky-100,oklch(95.1% .026 236.824));color:var(--color-sky-100,oklch(95.1% .026 236.824));background-color:#dff2fe1a}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__primary{background-color:color-mix(in oklab,var(--color-sky-100,oklch(95.1% .026 236.824))10%,transparent)}}:is(button,.btn).btn__primary svg{stroke:var(--color-sky-200,oklch(90.1% .058 230.902))}:is(button,.btn).btn__primary:hover{border-color:var(--color-sky-300,oklch(82.8% .111 230.318));background-color:#00bcfe66}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__primary:hover{background-color:color-mix(in oklab,var(--color-sky-400,oklch(74.6% .16 232.661))40%,transparent)}}:is(button,.btn).btn__secondary{border-color:var(--color-amber-100,oklch(96.2% .059 95.617));color:var(--color-amber-100,oklch(96.2% .059 95.617));background-color:#fef3c61a}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__secondary{background-color:color-mix(in oklab,var(--color-amber-100,oklch(96.2% .059 95.617))10%,transparent)}}:is(button,.btn).btn__secondary svg{stroke:var(--color-amber-300,oklch(87.9% .169 91.605))}:is(button,.btn).btn__secondary:hover{border-color:var(--color-amber-400,oklch(82.8% .189 84.429));background-color:#fcbb0066}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__secondary:hover{background-color:color-mix(in oklab,var(--color-amber-400,oklch(82.8% .189 84.429))40%,transparent)}}:is(button,.btn).btn__danger{border-color:var(--color-rose-100,oklch(94.1% .03 12.58));color:var(--color-rose-200,oklch(89.2% .058 10.001));background-color:#ffccd333}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__danger{background-color:color-mix(in oklab,var(--color-rose-200,oklch(89.2% .058 10.001))20%,transparent)}}:is(button,.btn).btn__danger svg{stroke:var(--color-rose-400,oklch(71.2% .194 13.428))}:is(button,.btn).btn__danger:hover{border-color:var(--color-rose-500,oklch(64.5% .246 16.439));color:var(--color-white,#fff);background-color:#ff667f66}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__danger:hover{background-color:color-mix(in oklab,var(--color-rose-400,oklch(71.2% .194 13.428))40%,transparent)}}:is(button,.btn).btn__dark{border-color:var(--color-slate-400,oklch(70.4% .04 256.788));color:var(--color-slate-100,oklch(96.8% .007 247.896));background-color:#e2e8f01a}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__dark{background-color:color-mix(in oklab,var(--color-slate-200,oklch(92.9% .013 255.508))10%,transparent)}}:is(button,.btn).btn__dark svg{stroke:var(--color-slate-300,oklch(86.9% .022 252.894))}:is(button,.btn).btn__dark:hover{border-color:var(--color-slate-200,oklch(92.9% .013 255.508));color:var(--color-white,#fff);background-color:#90a1b966}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__dark:hover{background-color:color-mix(in oklab,var(--color-slate-400,oklch(70.4% .04 256.788))40%,transparent)}}:is(button,.btn).btn__success{border-color:var(--color-lime-100,oklch(96.7% .067 122.328));color:var(--color-lime-100,oklch(96.7% .067 122.328));background-color:#d8f9991a}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__success{background-color:color-mix(in oklab,var(--color-lime-200,oklch(93.8% .127 124.321))10%,transparent)}}:is(button,.btn).btn__success svg{stroke:var(--color-lime-400,oklch(84.1% .238 128.85))}:is(button,.btn).btn__success:hover{border-color:var(--color-lime-500,oklch(76.8% .233 130.85));color:var(--color-white,#fff);background-color:#9de50066}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__success:hover{background-color:color-mix(in oklab,var(--color-lime-400,oklch(84.1% .238 128.85))40%,transparent)}}:is(button,.btn).btn__subtle{color:var(--color-white,#fff);background-color:#0000;border-color:#0000}@media (hover:hover){:is(button,.btn).btn__subtle:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__subtle:hover{background-color:color-mix(in oklab,var(--color-white,#fff)10%,transparent)}}}:is(button,.btn).btn__subtle:hover{--tw-gradient-to:#ffffff4d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position));background-color:#fff3;border-color:#fff6}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__subtle:hover{border-color:color-mix(in oklab,var(--color-white,#fff)40%,transparent);background-color:color-mix(in oklab,var(--color-white,#fff)20%,transparent);--tw-gradient-to:color-mix(in oklab,var(--color-white,#fff)30%,transparent)}}:is(button,.btn).btn__ghost{color:#fffc;background-color:#0000;border-color:#0000}@supports (color:color-mix(in lab,red,red)){:is(button,.btn).btn__ghost{color:color-mix(in oklab,var(--color-white,#fff)80%,transparent)}}@media (hover:hover){:is(button,.btn).btn__ghost:hover{color:var(--color-white,#fff)}}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}#server-dashboard[data-v-1ac3bac6]{gap:calc(var(--spacing,.25rem)*4);width:fit-content;height:fit-content;padding-top:calc(var(--spacing,.25rem)*8);grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));display:grid}@media (min-width:48rem){#server-dashboard[data-v-1ac3bac6]{grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr))}}#server-dashboard.no__devices #devices[data-v-1ac3bac6]{grid-row-start:1}@media (min-width:48rem){#server-dashboard.no__devices #devices[data-v-1ac3bac6]{grid-column-start:1}}#server-dashboard.no__macros.devices__found #devices[data-v-1ac3bac6]{grid-row-start:3}@media (min-width:48rem){#server-dashboard.no__macros.devices__found #devices[data-v-1ac3bac6]{grid-column-start:3}}#server-dashboard.devices__found #devices[data-v-1ac3bac6]{grid-row-start:3}@media (min-width:48rem){#server-dashboard.devices__found #devices[data-v-1ac3bac6]{grid-column-start:3}}#server-dashboard.no__devices.no__macros #macros[data-v-1ac3bac6]{grid-row-start:2}@media (min-width:48rem){#server-dashboard.no__devices.no__macros #macros[data-v-1ac3bac6]{grid-column-start:2}}#server-dashboard.no__macros #macros[data-v-1ac3bac6]{grid-row-start:1}@media (min-width:48rem){#server-dashboard.no__macros #macros[data-v-1ac3bac6]{grid-column-start:1}}#server-dashboard.macros__found #macros[data-v-1ac3bac6]{grid-row-start:2}@media (min-width:48rem){#server-dashboard.macros__found #macros[data-v-1ac3bac6]{grid-column-start:2}}#server-dashboard.no__devices.macros__found #macros[data-v-1ac3bac6]{grid-row-start:3}@media (min-width:48rem){#server-dashboard.no__devices.macros__found #macros[data-v-1ac3bac6]{grid-column-start:3}}#remote-dashboard[data-v-9e6b5589]{align-content:flex-start;gap:calc(var(--spacing,.25rem)*4);height:fit-content;padding-top:calc(var(--spacing,.25rem)*8);display:grid}@media (min-width:48rem){#remote-dashboard[data-v-9e6b5589]{width:fit-content}}#remote-dashboard.not__linked #server[data-v-9e6b5589]{grid-row-start:1}@media (min-width:48rem){#remote-dashboard.not__linked #server[data-v-9e6b5589]{grid-column-start:1}}/*! tailwindcss v4.1.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}.dashboard-block{justify-items:center;gap:calc(var(--spacing,.25rem)*4);display:grid}@media (min-width:48rem){.dashboard-block{grid-row-start:1!important}}.dashboard-block#devices .icon__container,.dashboard-block#server .icon__container{color:var(--color-sky-400,oklch(74.6% .16 232.661));background-color:#77d4ff4d;border-color:#77d4ff99}@supports (color:color-mix(in lab,red,red)){:is(.dashboard-block#devices .icon__container,.dashboard-block#server .icon__container){border-color:color-mix(in oklab,var(--color-sky-300,oklch(82.8% .111 230.318))60%,transparent);background-color:color-mix(in oklab,var(--color-sky-300,oklch(82.8% .111 230.318))30%,transparent)}}.dashboard-block#macros .icon__container{color:var(--color-amber-400,oklch(82.8% .189 84.429));background-color:#ffd2364d;border-color:#ffd23699}@supports (color:color-mix(in lab,red,red)){.dashboard-block#macros .icon__container{border-color:color-mix(in oklab,var(--color-amber-300,oklch(87.9% .169 91.605))60%,transparent);background-color:color-mix(in oklab,var(--color-amber-300,oklch(87.9% .169 91.605))30%,transparent)}}.dashboard-block#panels .icon__container{color:var(--color-rose-400,oklch(71.2% .194 13.428));background-color:#ffa2ae4d;border-color:#ffa2ae99}@supports (color:color-mix(in lab,red,red)){.dashboard-block#panels .icon__container{border-color:color-mix(in oklab,var(--color-rose-300,oklch(81% .117 11.638))60%,transparent);background-color:color-mix(in oklab,var(--color-rose-300,oklch(81% .117 11.638))30%,transparent)}}.dashboard-block .icon__container{aspect-ratio:1;width:calc(var(--spacing,.25rem)*16);height:calc(var(--spacing,.25rem)*16);border-style:var(--tw-border-style);border-width:1px;border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.dashboard-block .icon__container svg{width:calc(var(--spacing,.25rem)*8);height:calc(var(--spacing,.25rem)*8)}.dashboard-block p{width:calc(var(--spacing,.25rem)*42);text-align:center;opacity:.5}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
diff --git a/public/assets/index-DjeOPht9.css b/public/assets/index-DjeOPht9.css
new file mode 100644
index 0000000..34c8025
--- /dev/null
+++ b/public/assets/index-DjeOPht9.css
@@ -0,0 +1,2256 @@
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+hr.spacer {
+ width: calc(var(--spacing) * 6);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-gray-300);
+ opacity: .8;
+ position: relative;
+ overflow: visible;
+}
+
+hr.spacer:before, hr.spacer:after {
+ width: calc(var(--spacing) * 2);
+ height: calc(var(--spacing) * 2);
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ background-color: var(--color-gray-300);
+ --tw-content: "";
+ content: var(--tw-content);
+ border-radius: 3.40282e38px;
+ position: absolute;
+ top: 50%;
+}
+
+hr.spacer:before {
+ left: calc(var(--spacing) * -1);
+}
+
+hr.spacer:after {
+ right: calc(var(--spacing) * -1);
+}
+
+.mcrm-block {
+ column-gap: calc(var(--spacing) * 6);
+ row-gap: calc(var(--spacing) * 2);
+ border-radius: var(--radius-2xl);
+ padding: calc(var(--spacing) * 6);
+ --tw-backdrop-blur: blur(var(--blur-lg));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ position: relative;
+ overflow: hidden;
+}
+
+.mcrm-block:before {
+ inset: calc(var(--spacing) * 0);
+ z-index: -1;
+ border-radius: var(--radius-2xl);
+ --tw-gradient-position: to bottom right in oklab;
+ background-image: linear-gradient(var(--tw-gradient-stops));
+ --tw-gradient-to: transparent;
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+ --tw-content: "";
+ content: var(--tw-content);
+ -webkit-mask-composite: xor, source-over;
+ width: 100%;
+ height: 100%;
+ padding: 1px;
+ position: absolute;
+ -webkit-mask: linear-gradient(#000 0 0), linear-gradient(#000 0 0) content-box;
+ -webkit-mask-composite: xor, source-over;
+ mask: linear-gradient(#000 0 0) exclude, linear-gradient(#000 0 0) content-box;
+}
+
+.mcrm-block.block__light {
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
+}
+
+.mcrm-block.block__light:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-white) 20%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__dark {
+ background-color: color-mix(in oklab, var(--color-slate-900) 70%, transparent);
+}
+
+.mcrm-block.block__dark:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-slate-400) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__primary {
+ background-color: color-mix(in oklab, var(--color-sky-300) 40%, transparent);
+}
+
+.mcrm-block.block__primary:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-sky-100) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__secondary {
+ background-color: color-mix(in oklab, var(--color-amber-300) 40%, transparent);
+}
+
+.mcrm-block.block__secondary:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-amber-100) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__success {
+ background-color: color-mix(in oklab, var(--color-emerald-300) 40%, transparent);
+}
+
+.mcrm-block.block__success:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-emerald-100) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__warning {
+ background-color: color-mix(in oklab, var(--color-orange-300) 40%, transparent);
+}
+
+.mcrm-block.block__warning:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-orange-100) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block__danger {
+ background-color: color-mix(in oklab, var(--color-rose-300) 40%, transparent);
+}
+
+.mcrm-block.block__danger:before {
+ --tw-gradient-from: color-mix(in oklab, var(--color-rose-100) 40%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+}
+
+.mcrm-block.block-spacing__sm, .mcrm-block.block-size__sm {
+ column-gap: calc(var(--spacing) * 4);
+ row-gap: calc(var(--spacing) * 2);
+ padding: calc(var(--spacing) * 4);
+}
+
+.mcrm-block.block-size__sm, .mcrm-block.block-size__sm:before {
+ border-radius: var(--radius-lg);
+}
+
+.mcrm-block.block-spacing__lg, .mcrm-block.block-size__lg {
+ column-gap: calc(var(--spacing) * 8);
+ row-gap: calc(var(--spacing) * 4);
+ padding: calc(var(--spacing) * 8);
+}
+
+.mcrm-block.block-size__lg, .mcrm-block.block-size__lg:before {
+ border-radius: var(--radius-3xl);
+}
+
+.panel {
+ top: calc(var(--spacing) * 2);
+ right: calc(var(--spacing) * 4);
+ bottom: calc(var(--spacing) * 2);
+ left: calc(var(--spacing) * 4);
+ grid-template-rows: auto 1fr;
+ display: grid;
+ position: fixed;
+ overflow: hidden;
+}
+
+@media (width >= 40rem) {
+ .panel {
+ right: calc(var(--spacing) * 16);
+ left: calc(var(--spacing) * 16);
+ }
+}
+
+.panel > .panel__header, .panel > .panel__title {
+ padding-inline: calc(var(--spacing) * 4);
+ padding-block: calc(var(--spacing) * 2);
+}
+
+.panel .panel__title {
+ --tw-gradient-position: to right in oklab;
+ background-image: linear-gradient(var(--tw-gradient-stops));
+ --tw-gradient-from: var(--color-amber-300);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+ --tw-gradient-to: color-mix(in oklab, var(--color-white) 50%, transparent);
+ width: fit-content;
+ padding-top: calc(var(--spacing) * 3);
+ padding-left: calc(var(--spacing) * 16);
+ color: #0000;
+ -webkit-background-clip: text;
+ background-clip: text;
+}
+
+@media (width >= 40rem) {
+ .panel .panel__title {
+ padding-left: calc(var(--spacing) * 4);
+ }
+}
+
+.panel .panel__content {
+ height: 100%;
+ padding-top: calc(var(--spacing) * 4);
+ padding-left: calc(var(--spacing) * 0);
+ display: grid;
+ overflow: auto;
+}
+
+@media (width >= 40rem) {
+ .panel .panel__content {
+ padding-top: calc(var(--spacing) * 0);
+ padding-left: calc(var(--spacing) * 4);
+ }
+}
+
+@layer theme {
+ :root, :host {
+ --font-sans: "Roboto", sans-serif;
+ --font-mono: "Fira Code", monospace;
+ --color-red-500: oklch(.637 .237 25.331);
+ --color-orange-100: oklch(.954 .038 75.164);
+ --color-orange-300: oklch(.837 .128 66.29);
+ --color-amber-100: oklch(.962 .059 95.617);
+ --color-amber-300: oklch(.879 .169 91.605);
+ --color-amber-400: oklch(.828 .189 84.429);
+ --color-yellow-300: oklch(.905 .182 98.111);
+ --color-yellow-500: oklch(.795 .184 86.047);
+ --color-yellow-600: oklch(.681 .162 75.834);
+ --color-lime-100: oklch(.967 .067 122.328);
+ --color-lime-200: oklch(.938 .127 124.321);
+ --color-lime-400: oklch(.841 .238 128.85);
+ --color-lime-500: oklch(.768 .233 130.85);
+ --color-lime-600: oklch(.648 .2 131.684);
+ --color-lime-700: oklch(.532 .157 131.589);
+ --color-emerald-100: oklch(.95 .052 163.051);
+ --color-emerald-300: oklch(.845 .143 164.978);
+ --color-sky-100: oklch(.951 .026 236.824);
+ --color-sky-200: oklch(.901 .058 230.902);
+ --color-sky-300: oklch(.828 .111 230.318);
+ --color-sky-400: oklch(.746 .16 232.661);
+ --color-sky-500: oklch(.685 .169 237.323);
+ --color-sky-600: oklch(.588 .158 241.966);
+ --color-sky-700: oklch(.5 .134 242.749);
+ --color-sky-900: oklch(.391 .09 240.876);
+ --color-rose-100: oklch(.941 .03 12.58);
+ --color-rose-200: oklch(.892 .058 10.001);
+ --color-rose-300: oklch(.81 .117 11.638);
+ --color-rose-400: oklch(.712 .194 13.428);
+ --color-rose-500: oklch(.645 .246 16.439);
+ --color-slate-50: oklch(.984 .003 247.858);
+ --color-slate-100: oklch(.968 .007 247.896);
+ --color-slate-200: oklch(.929 .013 255.508);
+ --color-slate-300: oklch(.869 .022 252.894);
+ --color-slate-400: oklch(.704 .04 256.788);
+ --color-slate-500: oklch(.554 .046 257.417);
+ --color-slate-600: oklch(.446 .043 257.281);
+ --color-slate-700: oklch(.372 .044 257.287);
+ --color-slate-800: oklch(.279 .041 260.031);
+ --color-slate-900: oklch(.208 .042 265.755);
+ --color-slate-950: oklch(.129 .042 264.695);
+ --color-gray-300: oklch(.872 .01 258.338);
+ --color-black: #000;
+ --color-white: #fff;
+ --spacing: .25rem;
+ --text-xs: .75rem;
+ --text-xs--line-height: calc(1 / .75);
+ --text-sm: .875rem;
+ --text-sm--line-height: calc(1.25 / .875);
+ --text-lg: 1.125rem;
+ --text-lg--line-height: calc(1.75 / 1.125);
+ --text-xl: 1.25rem;
+ --text-xl--line-height: calc(1.75 / 1.25);
+ --text-2xl: 1.5rem;
+ --text-2xl--line-height: calc(2 / 1.5);
+ --text-3xl: 1.875rem;
+ --text-3xl--line-height: calc(2.25 / 1.875);
+ --text-4xl: 2.25rem;
+ --text-4xl--line-height: calc(2.5 / 2.25);
+ --font-weight-light: 300;
+ --font-weight-normal: 400;
+ --font-weight-semibold: 600;
+ --font-weight-bold: 700;
+ --tracking-wide: .025em;
+ --tracking-widest: .1em;
+ --radius-sm: .25rem;
+ --radius-md: .375rem;
+ --radius-lg: .5rem;
+ --radius-xl: .75rem;
+ --radius-2xl: 1rem;
+ --radius-3xl: 1.5rem;
+ --ease-in-out: cubic-bezier(.4, 0, .2, 1);
+ --animate-spin: spin 1s linear infinite;
+ --blur-xs: 4px;
+ --blur-md: 12px;
+ --blur-lg: 16px;
+ --blur-3xl: 64px;
+ --default-transition-duration: .15s;
+ --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
+ --default-font-family: var(--font-sans);
+ --default-font-feature-settings: var(--font-sans--font-feature-settings);
+ --default-font-variation-settings: var(--font-sans--font-variation-settings);
+ --default-mono-font-family: var(--font-mono);
+ --default-mono-font-feature-settings: var(--font-mono--font-feature-settings);
+ --default-mono-font-variation-settings: var(--font-mono--font-variation-settings);
+ }
+}
+
+@layer base {
+ *, :after, :before, ::backdrop {
+ box-sizing: border-box;
+ border: 0 solid;
+ margin: 0;
+ padding: 0;
+ }
+
+ ::file-selector-button {
+ box-sizing: border-box;
+ border: 0 solid;
+ margin: 0;
+ padding: 0;
+ }
+
+ html, :host {
+ -webkit-text-size-adjust: 100%;
+ tab-size: 4;
+ line-height: 1.5;
+ font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");
+ font-feature-settings: var(--default-font-feature-settings, normal);
+ font-variation-settings: var(--default-font-variation-settings, normal);
+ -webkit-tap-highlight-color: transparent;
+ }
+
+ body {
+ line-height: inherit;
+ }
+
+ hr {
+ height: 0;
+ color: inherit;
+ border-top-width: 1px;
+ }
+
+ abbr:where([title]) {
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ font-size: inherit;
+ font-weight: inherit;
+ }
+
+ a {
+ color: inherit;
+ -webkit-text-decoration: inherit;
+ -webkit-text-decoration: inherit;
+ -webkit-text-decoration: inherit;
+ text-decoration: inherit;
+ }
+
+ b, strong {
+ font-weight: bolder;
+ }
+
+ code, kbd, samp, pre {
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
+ font-size: 1em;
+ }
+
+ small {
+ font-size: 80%;
+ }
+
+ sub, sup {
+ vertical-align: baseline;
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ }
+
+ sub {
+ bottom: -.25em;
+ }
+
+ sup {
+ top: -.5em;
+ }
+
+ table {
+ text-indent: 0;
+ border-color: inherit;
+ border-collapse: collapse;
+ }
+
+ :-moz-focusring {
+ outline: auto;
+ }
+
+ progress {
+ vertical-align: baseline;
+ }
+
+ summary {
+ display: list-item;
+ }
+
+ ol, ul, menu {
+ list-style: none;
+ }
+
+ img, svg, video, canvas, audio, iframe, embed, object {
+ vertical-align: middle;
+ display: block;
+ }
+
+ img, video {
+ max-width: 100%;
+ height: auto;
+ }
+
+ button, input, select, optgroup, textarea {
+ font: inherit;
+ font-feature-settings: inherit;
+ font-variation-settings: inherit;
+ letter-spacing: inherit;
+ color: inherit;
+ opacity: 1;
+ background-color: #0000;
+ border-radius: 0;
+ }
+
+ ::file-selector-button {
+ font: inherit;
+ font-feature-settings: inherit;
+ font-variation-settings: inherit;
+ letter-spacing: inherit;
+ color: inherit;
+ opacity: 1;
+ background-color: #0000;
+ border-radius: 0;
+ }
+
+ :where(select:is([multiple], [size])) optgroup {
+ font-weight: bolder;
+ }
+
+ :where(select:is([multiple], [size])) optgroup option {
+ padding-inline-start: 20px;
+ }
+
+ ::file-selector-button {
+ margin-inline-end: 4px;
+ }
+
+ ::placeholder {
+ opacity: 1;
+ color: color-mix(in oklab, currentColor 50%, transparent);
+ }
+
+ textarea {
+ resize: vertical;
+ }
+
+ ::-webkit-search-decoration {
+ -webkit-appearance: none;
+ }
+
+ ::-webkit-date-and-time-value {
+ min-height: 1lh;
+ text-align: inherit;
+ }
+
+ ::-webkit-datetime-edit {
+ display: inline-flex;
+ }
+
+ ::-webkit-datetime-edit-fields-wrapper {
+ padding: 0;
+ }
+
+ ::-webkit-datetime-edit {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-year-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-month-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-day-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-hour-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-minute-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-second-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-millisecond-field {
+ padding-block: 0;
+ }
+
+ ::-webkit-datetime-edit-meridiem-field {
+ padding-block: 0;
+ }
+
+ :-moz-ui-invalid {
+ box-shadow: none;
+ }
+
+ button, input:where([type="button"], [type="reset"], [type="submit"]) {
+ appearance: button;
+ }
+
+ ::file-selector-button {
+ appearance: button;
+ }
+
+ ::-webkit-inner-spin-button {
+ height: auto;
+ }
+
+ ::-webkit-outer-spin-button {
+ height: auto;
+ }
+
+ [hidden]:where(:not([hidden="until-found"])) {
+ display: none !important;
+ }
+}
+
+@layer components;
+
+@layer utilities {
+ .pointer-events-auto {
+ pointer-events: auto;
+ }
+
+ .pointer-events-none {
+ pointer-events: none;
+ }
+
+ .absolute {
+ position: absolute;
+ }
+
+ .fixed {
+ position: fixed;
+ }
+
+ .relative {
+ position: relative;
+ }
+
+ .inset-0 {
+ inset: calc(var(--spacing) * 0);
+ }
+
+ .inset-1\/2 {
+ inset: 50%;
+ }
+
+ .top-0 {
+ top: calc(var(--spacing) * 0);
+ }
+
+ .top-1\/2 {
+ top: 50%;
+ }
+
+ .top-4 {
+ top: calc(var(--spacing) * 4);
+ }
+
+ .top-20 {
+ top: calc(var(--spacing) * 20);
+ }
+
+ .top-\[10\%\] {
+ top: 10%;
+ }
+
+ .top-full {
+ top: 100%;
+ }
+
+ .right-4 {
+ right: calc(var(--spacing) * 4);
+ }
+
+ .left-0 {
+ left: calc(var(--spacing) * 0);
+ }
+
+ .left-1\/2 {
+ left: 50%;
+ }
+
+ .left-4 {
+ left: calc(var(--spacing) * 4);
+ }
+
+ .left-\[10\%\] {
+ left: 10%;
+ }
+
+ .left-full {
+ left: 100%;
+ }
+
+ .z-50 {
+ z-index: 50;
+ }
+
+ .z-\[-1\] {
+ z-index: -1;
+ }
+
+ .container {
+ width: 100%;
+ }
+
+ @media (width >= 40rem) {
+ .container {
+ max-width: 40rem;
+ }
+ }
+
+ @media (width >= 48rem) {
+ .container {
+ max-width: 48rem;
+ }
+ }
+
+ @media (width >= 64rem) {
+ .container {
+ max-width: 64rem;
+ }
+ }
+
+ @media (width >= 80rem) {
+ .container {
+ max-width: 80rem;
+ }
+ }
+
+ @media (width >= 96rem) {
+ .container {
+ max-width: 96rem;
+ }
+ }
+
+ .mt-1 {
+ margin-top: calc(var(--spacing) * 1);
+ }
+
+ .mt-2 {
+ margin-top: calc(var(--spacing) * 2);
+ }
+
+ .mt-4 {
+ margin-top: calc(var(--spacing) * 4);
+ }
+
+ .mt-6 {
+ margin-top: calc(var(--spacing) * 6);
+ }
+
+ .mb-4 {
+ margin-bottom: calc(var(--spacing) * 4);
+ }
+
+ .block {
+ display: block;
+ }
+
+ .flex {
+ display: flex;
+ }
+
+ .grid {
+ display: grid;
+ }
+
+ .hidden {
+ display: none;
+ }
+
+ .aspect-square {
+ aspect-ratio: 1;
+ }
+
+ .size-0 {
+ width: calc(var(--spacing) * 0);
+ height: calc(var(--spacing) * 0);
+ }
+
+ .size-4 {
+ width: calc(var(--spacing) * 4);
+ height: calc(var(--spacing) * 4);
+ }
+
+ .size-5 {
+ width: calc(var(--spacing) * 5);
+ height: calc(var(--spacing) * 5);
+ }
+
+ .size-6 {
+ width: calc(var(--spacing) * 6);
+ height: calc(var(--spacing) * 6);
+ }
+
+ .size-12 {
+ width: calc(var(--spacing) * 12);
+ height: calc(var(--spacing) * 12);
+ }
+
+ .size-full {
+ width: 100%;
+ height: 100%;
+ }
+
+ .h-9 {
+ height: calc(var(--spacing) * 9);
+ }
+
+ .h-fit {
+ height: fit-content;
+ }
+
+ .h-full {
+ height: 100%;
+ }
+
+ .w-44 {
+ width: calc(var(--spacing) * 44);
+ }
+
+ .w-64 {
+ width: calc(var(--spacing) * 64);
+ }
+
+ .w-96 {
+ width: calc(var(--spacing) * 96);
+ }
+
+ .w-fit {
+ width: fit-content;
+ }
+
+ .w-full {
+ width: 100%;
+ }
+
+ .w-px {
+ width: 1px;
+ }
+
+ .max-w-\[calc\(100vw-2rem\)\] {
+ max-width: calc(100vw - 2rem);
+ }
+
+ .min-w-full {
+ min-width: 100%;
+ }
+
+ .flex-grow {
+ flex-grow: 1;
+ }
+
+ .-translate-1\/2 {
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .-translate-x-1\/2 {
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .-translate-x-full {
+ --tw-translate-x: -100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .translate-x-0 {
+ --tw-translate-x: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .-translate-y-1\/2 {
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .-translate-y-full {
+ --tw-translate-y: -100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .translate-y-0 {
+ --tw-translate-y: calc(var(--spacing) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ }
+
+ .scale-\[1\.8\] {
+ scale: 1.8;
+ }
+
+ .animate-spin {
+ animation: var(--animate-spin);
+ }
+
+ .cursor-default {
+ cursor: default;
+ }
+
+ .cursor-not-allowed {
+ cursor: not-allowed;
+ }
+
+ .cursor-pointer {
+ cursor: pointer;
+ }
+
+ .list-none {
+ list-style-type: none;
+ }
+
+ .grid-cols-\[1rem_1fr\] {
+ grid-template-columns: 1rem 1fr;
+ }
+
+ .grid-cols-\[2rem_1fr\] {
+ grid-template-columns: 2rem 1fr;
+ }
+
+ .grid-cols-\[25ch_1fr\] {
+ grid-template-columns: 25ch 1fr;
+ }
+
+ .grid-cols-\[auto_1fr\] {
+ grid-template-columns: auto 1fr;
+ }
+
+ .grid-cols-\[auto_1fr_auto\] {
+ grid-template-columns: auto 1fr auto;
+ }
+
+ .grid-rows-\[0fr\] {
+ grid-template-rows: 0fr;
+ }
+
+ .grid-rows-\[auto_1fr\] {
+ grid-template-rows: auto 1fr;
+ }
+
+ .grid-rows-\[auto_1fr_auto\] {
+ grid-template-rows: auto 1fr auto;
+ }
+
+ .flex-row-reverse {
+ flex-direction: row-reverse;
+ }
+
+ .flex-wrap {
+ flex-wrap: wrap;
+ }
+
+ .content-start {
+ align-content: flex-start;
+ }
+
+ .items-center {
+ align-items: center;
+ }
+
+ .items-end {
+ align-items: flex-end;
+ }
+
+ .items-start {
+ align-items: flex-start;
+ }
+
+ .justify-between {
+ justify-content: space-between;
+ }
+
+ .justify-center {
+ justify-content: center;
+ }
+
+ .justify-end {
+ justify-content: flex-end;
+ }
+
+ .\!gap-4 {
+ gap: calc(var(--spacing) * 4) !important;
+ }
+
+ .gap-1 {
+ gap: calc(var(--spacing) * 1);
+ }
+
+ .gap-2 {
+ gap: calc(var(--spacing) * 2);
+ }
+
+ .gap-3 {
+ gap: calc(var(--spacing) * 3);
+ }
+
+ .gap-4 {
+ gap: calc(var(--spacing) * 4);
+ }
+
+ .gap-6 {
+ gap: calc(var(--spacing) * 6);
+ }
+
+ .gap-8 {
+ gap: calc(var(--spacing) * 8);
+ }
+
+ .gap-y-4 {
+ row-gap: calc(var(--spacing) * 4);
+ }
+
+ :where(.divide-y > :not(:last-child)) {
+ --tw-divide-y-reverse: 0;
+ border-bottom-style: var(--tw-border-style);
+ border-top-style: var(--tw-border-style);
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
+ }
+
+ :where(.divide-slate-300 > :not(:last-child)) {
+ border-color: var(--color-slate-300);
+ }
+
+ :where(.divide-slate-600 > :not(:last-child)) {
+ border-color: var(--color-slate-600);
+ }
+
+ .truncate {
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ }
+
+ .overflow-auto {
+ overflow: auto;
+ }
+
+ .overflow-hidden {
+ overflow: hidden;
+ }
+
+ .rounded-full {
+ border-radius: 3.40282e38px;
+ }
+
+ .rounded-lg {
+ border-radius: var(--radius-lg);
+ }
+
+ .rounded-md {
+ border-radius: var(--radius-md);
+ }
+
+ .rounded-none {
+ border-radius: 0;
+ }
+
+ .rounded-sm {
+ border-radius: var(--radius-sm);
+ }
+
+ .rounded-xl {
+ border-radius: var(--radius-xl);
+ }
+
+ .border {
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ }
+
+ .border-0 {
+ border-style: var(--tw-border-style);
+ border-width: 0;
+ }
+
+ .border-b-2 {
+ border-bottom-style: var(--tw-border-style);
+ border-bottom-width: 2px;
+ }
+
+ .border-solid {
+ --tw-border-style: solid;
+ border-style: solid;
+ }
+
+ .border-amber-100 {
+ border-color: var(--color-amber-100);
+ }
+
+ .border-amber-300\/80 {
+ border-color: color-mix(in oklab, var(--color-amber-300) 80%, transparent);
+ }
+
+ .border-amber-400 {
+ border-color: var(--color-amber-400);
+ }
+
+ .border-lime-100 {
+ border-color: var(--color-lime-100);
+ }
+
+ .border-lime-500 {
+ border-color: var(--color-lime-500);
+ }
+
+ .border-lime-600 {
+ border-color: var(--color-lime-600);
+ }
+
+ .border-rose-100 {
+ border-color: var(--color-rose-100);
+ }
+
+ .border-rose-300 {
+ border-color: var(--color-rose-300);
+ }
+
+ .border-rose-500 {
+ border-color: var(--color-rose-500);
+ }
+
+ .border-sky-100 {
+ border-color: var(--color-sky-100);
+ }
+
+ .border-sky-300 {
+ border-color: var(--color-sky-300);
+ }
+
+ .border-sky-400 {
+ border-color: var(--color-sky-400);
+ }
+
+ .border-slate-200 {
+ border-color: var(--color-slate-200);
+ }
+
+ .border-slate-400 {
+ border-color: var(--color-slate-400);
+ }
+
+ .border-slate-500 {
+ border-color: var(--color-slate-500);
+ }
+
+ .border-slate-600 {
+ border-color: var(--color-slate-600);
+ }
+
+ .border-transparent {
+ border-color: #0000;
+ }
+
+ .border-white\/10 {
+ border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
+ }
+
+ .border-white\/40 {
+ border-color: color-mix(in oklab, var(--color-white) 40%, transparent);
+ }
+
+ .border-white\/50 {
+ border-color: color-mix(in oklab, var(--color-white) 50%, transparent);
+ }
+
+ .border-yellow-300 {
+ border-color: var(--color-yellow-300);
+ }
+
+ .border-b-slate-300 {
+ border-bottom-color: var(--color-slate-300);
+ }
+
+ .bg-amber-100\/10 {
+ background-color: color-mix(in oklab, var(--color-amber-100) 10%, transparent);
+ }
+
+ .bg-amber-100\/60 {
+ background-color: color-mix(in oklab, var(--color-amber-100) 60%, transparent);
+ }
+
+ .bg-amber-400\/10 {
+ background-color: color-mix(in oklab, var(--color-amber-400) 10%, transparent);
+ }
+
+ .bg-amber-400\/40 {
+ background-color: color-mix(in oklab, var(--color-amber-400) 40%, transparent);
+ }
+
+ .bg-black\/50 {
+ background-color: color-mix(in oklab, var(--color-black) 50%, transparent);
+ }
+
+ .bg-lime-200\/10 {
+ background-color: color-mix(in oklab, var(--color-lime-200) 10%, transparent);
+ }
+
+ .bg-lime-400\/10 {
+ background-color: color-mix(in oklab, var(--color-lime-400) 10%, transparent);
+ }
+
+ .bg-lime-400\/40 {
+ background-color: color-mix(in oklab, var(--color-lime-400) 40%, transparent);
+ }
+
+ .bg-lime-500\/80 {
+ background-color: color-mix(in oklab, var(--color-lime-500) 80%, transparent);
+ }
+
+ .bg-lime-700 {
+ background-color: var(--color-lime-700);
+ }
+
+ .bg-rose-200\/20 {
+ background-color: color-mix(in oklab, var(--color-rose-200) 20%, transparent);
+ }
+
+ .bg-rose-400\/10 {
+ background-color: color-mix(in oklab, var(--color-rose-400) 10%, transparent);
+ }
+
+ .bg-rose-400\/40 {
+ background-color: color-mix(in oklab, var(--color-rose-400) 40%, transparent);
+ }
+
+ .bg-sky-100\/10 {
+ background-color: color-mix(in oklab, var(--color-sky-100) 10%, transparent);
+ }
+
+ .bg-sky-200\/20 {
+ background-color: color-mix(in oklab, var(--color-sky-200) 20%, transparent);
+ }
+
+ .bg-sky-400\/40 {
+ background-color: color-mix(in oklab, var(--color-sky-400) 40%, transparent);
+ }
+
+ .bg-sky-400\/50 {
+ background-color: color-mix(in oklab, var(--color-sky-400) 50%, transparent);
+ }
+
+ .bg-sky-500 {
+ background-color: var(--color-sky-500);
+ }
+
+ .bg-sky-900 {
+ background-color: var(--color-sky-900);
+ }
+
+ .bg-sky-900\/10 {
+ background-color: color-mix(in oklab, var(--color-sky-900) 10%, transparent);
+ }
+
+ .bg-slate-100\/60 {
+ background-color: color-mix(in oklab, var(--color-slate-100) 60%, transparent);
+ }
+
+ .bg-slate-200\/10 {
+ background-color: color-mix(in oklab, var(--color-slate-200) 10%, transparent);
+ }
+
+ .bg-slate-400\/40 {
+ background-color: color-mix(in oklab, var(--color-slate-400) 40%, transparent);
+ }
+
+ .bg-slate-500 {
+ background-color: var(--color-slate-500);
+ }
+
+ .bg-slate-600 {
+ background-color: var(--color-slate-600);
+ }
+
+ .bg-slate-700 {
+ background-color: var(--color-slate-700);
+ }
+
+ .bg-slate-700\/80 {
+ background-color: color-mix(in oklab, var(--color-slate-700) 80%, transparent);
+ }
+
+ .bg-slate-950\/50 {
+ background-color: color-mix(in oklab, var(--color-slate-950) 50%, transparent);
+ }
+
+ .bg-transparent {
+ background-color: #0000;
+ }
+
+ .bg-white\/10 {
+ background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
+ }
+
+ .bg-white\/20 {
+ background-color: color-mix(in oklab, var(--color-white) 20%, transparent);
+ }
+
+ .bg-yellow-500\/50 {
+ background-color: color-mix(in oklab, var(--color-yellow-500) 50%, transparent);
+ }
+
+ .to-white\/30 {
+ --tw-gradient-to: color-mix(in oklab, var(--color-white) 30%, transparent);
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
+ }
+
+ .\!stroke-white {
+ stroke: var(--color-white) !important;
+ }
+
+ .stroke-amber-300 {
+ stroke: var(--color-amber-300);
+ }
+
+ .stroke-lime-400 {
+ stroke: var(--color-lime-400);
+ }
+
+ .stroke-rose-400 {
+ stroke: var(--color-rose-400);
+ }
+
+ .stroke-sky-200 {
+ stroke: var(--color-sky-200);
+ }
+
+ .stroke-slate-300 {
+ stroke: var(--color-slate-300);
+ }
+
+ .object-cover {
+ object-fit: cover;
+ }
+
+ .\!p-0 {
+ padding: calc(var(--spacing) * 0) !important;
+ }
+
+ .p-0 {
+ padding: calc(var(--spacing) * 0);
+ }
+
+ .p-1 {
+ padding: calc(var(--spacing) * 1);
+ }
+
+ .p-2 {
+ padding: calc(var(--spacing) * 2);
+ }
+
+ .p-4 {
+ padding: calc(var(--spacing) * 4);
+ }
+
+ .p-28 {
+ padding: calc(var(--spacing) * 28);
+ }
+
+ .px-2 {
+ padding-inline: calc(var(--spacing) * 2);
+ }
+
+ .px-4 {
+ padding-inline: calc(var(--spacing) * 4);
+ }
+
+ .py-0 {
+ padding-block: calc(var(--spacing) * 0);
+ }
+
+ .py-1 {
+ padding-block: calc(var(--spacing) * 1);
+ }
+
+ .py-2 {
+ padding-block: calc(var(--spacing) * 2);
+ }
+
+ .pt-2 {
+ padding-top: calc(var(--spacing) * 2);
+ }
+
+ .pr-2 {
+ padding-right: calc(var(--spacing) * 2);
+ }
+
+ .pr-3 {
+ padding-right: calc(var(--spacing) * 3);
+ }
+
+ .pr-8 {
+ padding-right: calc(var(--spacing) * 8);
+ }
+
+ .pl-1 {
+ padding-left: calc(var(--spacing) * 1);
+ }
+
+ .pl-2 {
+ padding-left: calc(var(--spacing) * 2);
+ }
+
+ .pl-3 {
+ padding-left: calc(var(--spacing) * 3);
+ }
+
+ .pl-4 {
+ padding-left: calc(var(--spacing) * 4);
+ }
+
+ .text-center {
+ text-align: center;
+ }
+
+ .font-mono {
+ font-family: var(--font-mono);
+ }
+
+ .font-sans {
+ font-family: var(--font-sans);
+ }
+
+ .\!text-lg {
+ font-size: var(--text-lg) !important;
+ line-height: var(--tw-leading, var(--text-lg--line-height)) !important;
+ }
+
+ .text-4xl {
+ font-size: var(--text-4xl);
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
+ }
+
+ .text-lg {
+ font-size: var(--text-lg);
+ line-height: var(--tw-leading, var(--text-lg--line-height));
+ }
+
+ .text-sm {
+ font-size: var(--text-sm);
+ line-height: var(--tw-leading, var(--text-sm--line-height));
+ }
+
+ .text-xs {
+ font-size: var(--text-xs);
+ line-height: var(--tw-leading, var(--text-xs--line-height));
+ }
+
+ .font-bold {
+ --tw-font-weight: var(--font-weight-bold);
+ font-weight: var(--font-weight-bold);
+ }
+
+ .font-light {
+ --tw-font-weight: var(--font-weight-light);
+ font-weight: var(--font-weight-light);
+ }
+
+ .font-normal {
+ --tw-font-weight: var(--font-weight-normal);
+ font-weight: var(--font-weight-normal);
+ }
+
+ .font-semibold {
+ --tw-font-weight: var(--font-weight-semibold);
+ font-weight: var(--font-weight-semibold);
+ }
+
+ .tracking-wide {
+ --tw-tracking: var(--tracking-wide);
+ letter-spacing: var(--tracking-wide);
+ }
+
+ .tracking-widest {
+ --tw-tracking: var(--tracking-widest);
+ letter-spacing: var(--tracking-widest);
+ }
+
+ .whitespace-nowrap {
+ white-space: nowrap;
+ }
+
+ .\!text-white {
+ color: var(--color-white) !important;
+ }
+
+ .text-amber-100 {
+ color: var(--color-amber-100);
+ }
+
+ .text-amber-400 {
+ color: var(--color-amber-400);
+ }
+
+ .text-lime-100 {
+ color: var(--color-lime-100);
+ }
+
+ .text-lime-200 {
+ color: var(--color-lime-200);
+ }
+
+ .text-lime-400 {
+ color: var(--color-lime-400);
+ }
+
+ .text-red-500 {
+ color: var(--color-red-500);
+ }
+
+ .text-rose-200 {
+ color: var(--color-rose-200);
+ }
+
+ .text-rose-400 {
+ color: var(--color-rose-400);
+ }
+
+ .text-sky-100 {
+ color: var(--color-sky-100);
+ }
+
+ .text-sky-300 {
+ color: var(--color-sky-300);
+ }
+
+ .text-slate-50 {
+ color: var(--color-slate-50);
+ }
+
+ .text-slate-100 {
+ color: var(--color-slate-100);
+ }
+
+ .text-slate-200 {
+ color: var(--color-slate-200);
+ }
+
+ .text-slate-300 {
+ color: var(--color-slate-300);
+ }
+
+ .text-slate-800 {
+ color: var(--color-slate-800);
+ }
+
+ .text-slate-950 {
+ color: var(--color-slate-950);
+ }
+
+ .text-white {
+ color: var(--color-white);
+ }
+
+ .text-white\/40 {
+ color: color-mix(in oklab, var(--color-white) 40%, transparent);
+ }
+
+ .text-white\/80 {
+ color: color-mix(in oklab, var(--color-white) 80%, transparent);
+ }
+
+ .uppercase {
+ text-transform: uppercase;
+ }
+
+ .not-italic {
+ font-style: normal;
+ }
+
+ .opacity-0 {
+ opacity: 0;
+ }
+
+ .opacity-35 {
+ opacity: .35;
+ }
+
+ .opacity-40 {
+ opacity: .4;
+ }
+
+ .opacity-50 {
+ opacity: .5;
+ }
+
+ .opacity-80 {
+ opacity: .8;
+ }
+
+ .opacity-100 {
+ opacity: 1;
+ }
+
+ .mix-blend-overlay {
+ mix-blend-mode: overlay;
+ }
+
+ .shadow-md {
+ --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
+ }
+
+ .ring-2 {
+ --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
+ }
+
+ .shadow-black {
+ --tw-shadow-color: var(--color-black);
+ }
+
+ .shadow-sky-600 {
+ --tw-shadow-color: var(--color-sky-600);
+ }
+
+ .shadow-sky-700 {
+ --tw-shadow-color: var(--color-sky-700);
+ }
+
+ .shadow-slate-500 {
+ --tw-shadow-color: var(--color-slate-500);
+ }
+
+ .shadow-yellow-600 {
+ --tw-shadow-color: var(--color-yellow-600);
+ }
+
+ .ring-sky-500 {
+ --tw-ring-color: var(--color-sky-500);
+ }
+
+ .ring-offset-1 {
+ --tw-ring-offset-width: 1px;
+ --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
+ }
+
+ .outline-0 {
+ outline-style: var(--tw-outline-style);
+ outline-width: 0;
+ }
+
+ .filter {
+ filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );
+ }
+
+ .backdrop-blur-3xl {
+ --tw-backdrop-blur: blur(var(--blur-3xl));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ }
+
+ .backdrop-blur-md {
+ --tw-backdrop-blur: blur(var(--blur-md));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ }
+
+ .backdrop-blur-xs {
+ --tw-backdrop-blur: blur(var(--blur-xs));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ }
+
+ .transition {
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-\[grid-template-rows\] {
+ transition-property: grid-template-rows;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-\[stroke\] {
+ transition-property: stroke;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-all {
+ transition-property: all;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-colors {
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-opacity {
+ transition-property: opacity;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .transition-transform {
+ transition-property: transform, translate, scale, rotate;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
+ }
+
+ .duration-300 {
+ --tw-duration: .3s;
+ transition-duration: .3s;
+ }
+
+ .duration-400 {
+ --tw-duration: .4s;
+ transition-duration: .4s;
+ }
+
+ .ease-in-out {
+ --tw-ease: var(--ease-in-out);
+ transition-timing-function: var(--ease-in-out);
+ }
+
+ .content-\[\'\'\] {
+ --tw-content: "";
+ content: var(--tw-content);
+ }
+
+ @media (hover: hover) {
+ .hover\:bg-black\/10:hover {
+ background-color: color-mix(in oklab, var(--color-black) 10%, transparent);
+ }
+
+ .hover\:bg-lime-500:hover {
+ background-color: var(--color-lime-500);
+ }
+
+ .hover\:bg-slate-700:hover {
+ background-color: var(--color-slate-700);
+ }
+
+ .hover\:bg-white\/10:hover {
+ background-color: color-mix(in oklab, var(--color-white) 10%, transparent);
+ }
+
+ .hover\:bg-white\/40:hover {
+ background-color: color-mix(in oklab, var(--color-white) 40%, transparent);
+ }
+
+ .hover\:text-white:hover {
+ color: var(--color-white);
+ }
+ }
+
+ .focus\:border-transparent:focus {
+ border-color: #0000;
+ }
+
+ .focus\:border-b-sky-400:focus {
+ border-bottom-color: var(--color-sky-400);
+ }
+
+ .focus\:bg-sky-400\/10:focus {
+ background-color: color-mix(in oklab, var(--color-sky-400) 10%, transparent);
+ }
+}
+
+body {
+ background-color: var(--color-slate-900);
+ font-family: var(--font-sans);
+ --tw-font-weight: var(--font-weight-light);
+ font-weight: var(--font-weight-light);
+ --tw-tracking: var(--tracking-wide);
+ letter-spacing: var(--tracking-wide);
+ color: var(--color-slate-50);
+}
+
+h1, h2 {
+ font-family: var(--font-mono);
+ --tw-font-weight: var(--font-weight-bold);
+ font-weight: var(--font-weight-bold);
+}
+
+h3, h4, h5, h6 {
+ --tw-font-weight: var(--font-weight-semibold);
+ font-weight: var(--font-weight-semibold);
+}
+
+h1 {
+ font-size: var(--text-4xl);
+ line-height: var(--tw-leading, var(--text-4xl--line-height));
+}
+
+h2 {
+ font-size: var(--text-3xl);
+ line-height: var(--tw-leading, var(--text-3xl--line-height));
+}
+
+h3 {
+ font-size: var(--text-2xl);
+ line-height: var(--tw-leading, var(--text-2xl--line-height));
+}
+
+h4 {
+ font-size: var(--text-xl);
+ line-height: var(--tw-leading, var(--text-xl--line-height));
+}
+
+h5 {
+ font-size: var(--text-lg);
+ line-height: var(--tw-leading, var(--text-lg--line-height));
+}
+
+input {
+ border-radius: var(--radius-md);
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ border-color: var(--color-slate-400);
+ background-color: color-mix(in oklab, var(--color-black) 20%, transparent);
+ width: 100%;
+ padding-inline: calc(var(--spacing) * 2);
+ padding-block: calc(var(--spacing) * 1);
+ color: var(--color-white);
+}
+
+:has( > input + span) {
+ display: flex;
+}
+
+:has( > input + span) input {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+
+:has( > input + span) span {
+ border-top-right-radius: var(--radius-md);
+ border-bottom-right-radius: var(--radius-md);
+ background-color: var(--color-slate-400);
+ padding-inline: calc(var(--spacing) * 2);
+ color: var(--color-white);
+ align-items: center;
+ display: flex;
+}
+
+ul {
+ list-style-type: disc;
+ list-style-position: inside;
+}
+
+strong {
+ --tw-font-weight: var(--font-weight-bold);
+ font-weight: var(--font-weight-bold);
+}
+
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+
+@property --tw-content {
+ syntax: "*";
+ inherits: false;
+ initial-value: "";
+}
+
+@property --tw-backdrop-blur {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-brightness {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-contrast {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-grayscale {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-invert {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-opacity {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-saturate {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-backdrop-sepia {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-gradient-position {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-gradient-from {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+
+@property --tw-gradient-via {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+
+@property --tw-gradient-to {
+ syntax: "";
+ inherits: false;
+ initial-value: #0000;
+}
+
+@property --tw-gradient-stops {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-gradient-via-stops {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-gradient-from-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 0%;
+}
+
+@property --tw-gradient-via-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 50%;
+}
+
+@property --tw-gradient-to-position {
+ syntax: "";
+ inherits: false;
+ initial-value: 100%;
+}
+
+@property --tw-divide-y-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+
+@property --tw-font-weight {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-tracking {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+
+@property --tw-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-inset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+
+@property --tw-inset-shadow-color {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-ring-color {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+
+@property --tw-inset-ring-color {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-inset-ring-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+
+@property --tw-ring-inset {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-ring-offset-width {
+ syntax: "";
+ inherits: false;
+ initial-value: 0;
+}
+
+@property --tw-ring-offset-color {
+ syntax: "*";
+ inherits: false;
+ initial-value: #fff;
+}
+
+@property --tw-ring-offset-shadow {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0 0 #0000;
+}
+
+@property --tw-outline-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+
+@property --tw-blur {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-brightness {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-contrast {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-grayscale {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-invert {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-opacity {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-saturate {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-sepia {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-drop-shadow {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-duration {
+ syntax: "*";
+ inherits: false
+}
+
+@property --tw-ease {
+ syntax: "*";
+ inherits: false
+}
+
+@keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+nav {
+ z-index: 50;
+ display: flex;
+ position: relative;
+}
+nav button {
+ top: calc(var(--spacing, .25rem) * 4);
+ left: calc(var(--spacing, .25rem) * 4);
+ aspect-ratio: 1;
+ width: calc(var(--spacing, .25rem) * 12);
+ height: calc(var(--spacing, .25rem) * 12);
+ cursor: pointer;
+ border-style: var(--tw-border-style);
+ background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent);
+ --tw-backdrop-blur: blur(var(--blur-md, 12px));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ border-width: 0;
+ border-radius: 3.40282e38px;
+ position: absolute;
+}
+@media (hover: hover) {
+nav button:hover {
+ background-color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent);
+}
+}
+nav button .logo, nav button svg {
+ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
+ --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ transition-property: opacity;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ --tw-duration: .4s;
+ --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+ transition-duration: .4s;
+ transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+ position: absolute;
+ inset: 50%;
+}
+nav button .logo {
+ width: 100%;
+}
+nav ul {
+ top: calc(var(--spacing, .25rem) * 20);
+ left: calc(var(--spacing, .25rem) * 0);
+ --tw-translate-x: -100%;
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+ border-radius: var(--radius-xl, .75rem);
+ background-color: color-mix(in oklab, var(--color-white, #fff) 10%, transparent);
+ --tw-backdrop-blur: blur(var(--blur-md, 12px));
+ -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );
+ transition-property: transform, translate, scale, rotate;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ --tw-duration: .3s;
+ --tw-ease: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+ transition-duration: .3s;
+ transition-timing-function: var(--ease-in-out, cubic-bezier(.4, 0, .2, 1));
+ list-style-type: none;
+ display: grid;
+ position: absolute;
+ overflow: hidden;
+}
+:where(nav ul > :not(:last-child)) {
+ --tw-divide-y-reverse: 0;
+ border-bottom-style: var(--tw-border-style);
+ border-top-style: var(--tw-border-style);
+ border-top-width: calc(1px * var(--tw-divide-y-reverse));
+ border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
+ border-color: var(--color-slate-600, oklch(.446 .043 257.281));
+}
+nav ul.open {
+ left: calc(var(--spacing, .25rem) * 4);
+ --tw-translate-x: calc(var(--spacing, .25rem) * 0);
+ translate: var(--tw-translate-x) var(--tw-translate-y);
+}
+nav ul li a {
+ align-items: center;
+ gap: calc(var(--spacing, .25rem) * 2);
+ padding-inline: calc(var(--spacing, .25rem) * 4);
+ padding-block: calc(var(--spacing, .25rem) * 2);
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+ border-color: #0000;
+ display: flex;
+}
+nav ul li a svg {
+ color: color-mix(in oklab, var(--color-white, #fff) 40%, transparent);
+ transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function, cubic-bezier(.4, 0, .2, 1)));
+ transition-duration: var(--tw-duration, var(--default-transition-duration, .15s));
+}
+nav ul li a:hover {
+ background-color: color-mix(in oklab, var(--color-white, #fff) 20%, transparent);
+}
+nav ul li a:hover svg {
+ color: var(--color-white, #fff);
+}
+nav ul li a.router-link-active {
+ background-color: color-mix(in oklab, var(--color-sky-200, oklch(.901 .058 230.902)) 20%, transparent);
+ color: var(--color-sky-300, oklch(.828 .111 230.318));
+}
+@property --tw-border-style {
+ syntax: "*";
+ inherits: false;
+ initial-value: solid;
+}
+@property --tw-backdrop-blur {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-brightness {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-contrast {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-grayscale {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-hue-rotate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-invert {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-opacity {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-saturate {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-backdrop-sepia {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-translate-x {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-y {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-translate-z {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+@property --tw-duration {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-ease {
+ syntax: "*";
+ inherits: false
+}
+@property --tw-divide-y-reverse {
+ syntax: "*";
+ inherits: false;
+ initial-value: 0;
+}
+/*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */
+.app-background[data-v-bf34f349] {
+ pointer-events: none;
+ inset: calc(var(--spacing, .25rem) * 0);
+ z-index: -1;
+ opacity: .4;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ overflow: hidden;
+}
+.app-background img[data-v-bf34f349] {
+ object-fit: cover;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+}
+.app-background .logo[data-v-bf34f349] {
+ padding: calc(var(--spacing, .25rem) * 28);
+ opacity: .35;
+ mix-blend-mode: overlay;
+ position: absolute;
+ top: 10%;
+ left: 10%;
+ scale: 1.8;
+}
diff --git a/public/assets/index-GNAKlyBz.js b/public/assets/index-GNAKlyBz.js
new file mode 100644
index 0000000..e973032
--- /dev/null
+++ b/public/assets/index-GNAKlyBz.js
@@ -0,0 +1,18013 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MacrosView-Bf1eb3go.js","assets/DialogComp-Ba5-BUTe.js","assets/DialogComp-ByJn29_w.css","assets/MacrosView-B-ccNLSC.css","assets/DevicesView-DqasecOn.js","assets/DevicesView-Dw_Mls3X.css"])))=>i.map(i=>d[i]);
+(function polyfill() {
+ const relList = document.createElement("link").relList;
+ if (relList && relList.supports && relList.supports("modulepreload")) {
+ return;
+ }
+ for (const link of document.querySelectorAll('link[rel="modulepreload"]')) {
+ processPreload(link);
+ }
+ new MutationObserver((mutations) => {
+ for (const mutation of mutations) {
+ if (mutation.type !== "childList") {
+ continue;
+ }
+ for (const node of mutation.addedNodes) {
+ if (node.tagName === "LINK" && node.rel === "modulepreload")
+ processPreload(node);
+ }
+ }
+ }).observe(document, { childList: true, subtree: true });
+ function getFetchOpts(link) {
+ const fetchOpts = {};
+ if (link.integrity) fetchOpts.integrity = link.integrity;
+ if (link.referrerPolicy) fetchOpts.referrerPolicy = link.referrerPolicy;
+ if (link.crossOrigin === "use-credentials")
+ fetchOpts.credentials = "include";
+ else if (link.crossOrigin === "anonymous") fetchOpts.credentials = "omit";
+ else fetchOpts.credentials = "same-origin";
+ return fetchOpts;
+ }
+ function processPreload(link) {
+ if (link.ep)
+ return;
+ link.ep = true;
+ const fetchOpts = getFetchOpts(link);
+ fetch(link.href, fetchOpts);
+ }
+})();
+/**
+* @vue/shared v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+/*! #__NO_SIDE_EFFECTS__ */
+// @__NO_SIDE_EFFECTS__
+function makeMap(str) {
+ const map = /* @__PURE__ */ Object.create(null);
+ for (const key of str.split(",")) map[key] = 1;
+ return (val) => val in map;
+}
+const EMPTY_OBJ = {};
+const EMPTY_ARR = [];
+const NOOP = () => {
+};
+const NO = () => false;
+const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
+(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
+const isModelListener = (key) => key.startsWith("onUpdate:");
+const extend$1 = Object.assign;
+const remove = (arr, el) => {
+ const i = arr.indexOf(el);
+ if (i > -1) {
+ arr.splice(i, 1);
+ }
+};
+const hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+const hasOwn = (val, key) => hasOwnProperty$2.call(val, key);
+const isArray$2 = Array.isArray;
+const isMap = (val) => toTypeString(val) === "[object Map]";
+const isSet = (val) => toTypeString(val) === "[object Set]";
+const isFunction$1 = (val) => typeof val === "function";
+const isString$1 = (val) => typeof val === "string";
+const isSymbol = (val) => typeof val === "symbol";
+const isObject$1 = (val) => val !== null && typeof val === "object";
+const isPromise = (val) => {
+ return (isObject$1(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch);
+};
+const objectToString = Object.prototype.toString;
+const toTypeString = (value) => objectToString.call(value);
+const toRawType = (value) => {
+ return toTypeString(value).slice(8, -1);
+};
+const isPlainObject$2 = (val) => toTypeString(val) === "[object Object]";
+const isIntegerKey = (key) => isString$1(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
+const isReservedProp = /* @__PURE__ */ makeMap(
+ // the leading comma is intentional so empty string "" is also included
+ ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
+);
+const cacheStringFunction = (fn) => {
+ const cache = /* @__PURE__ */ Object.create(null);
+ return (str) => {
+ const hit = cache[str];
+ return hit || (cache[str] = fn(str));
+ };
+};
+const camelizeRE = /-(\w)/g;
+const camelize = cacheStringFunction(
+ (str) => {
+ return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
+ }
+);
+const hyphenateRE = /\B([A-Z])/g;
+const hyphenate = cacheStringFunction(
+ (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
+);
+const capitalize = cacheStringFunction((str) => {
+ return str.charAt(0).toUpperCase() + str.slice(1);
+});
+const toHandlerKey = cacheStringFunction(
+ (str) => {
+ const s = str ? `on${capitalize(str)}` : ``;
+ return s;
+ }
+);
+const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
+const invokeArrayFns = (fns, ...arg) => {
+ for (let i = 0; i < fns.length; i++) {
+ fns[i](...arg);
+ }
+};
+const def = (obj, key, value, writable = false) => {
+ Object.defineProperty(obj, key, {
+ configurable: true,
+ enumerable: false,
+ writable,
+ value
+ });
+};
+const looseToNumber = (val) => {
+ const n = parseFloat(val);
+ return isNaN(n) ? val : n;
+};
+let _globalThis;
+const getGlobalThis = () => {
+ return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
+};
+function normalizeStyle(value) {
+ if (isArray$2(value)) {
+ const res = {};
+ for (let i = 0; i < value.length; i++) {
+ const item = value[i];
+ const normalized = isString$1(item) ? parseStringStyle(item) : normalizeStyle(item);
+ if (normalized) {
+ for (const key in normalized) {
+ res[key] = normalized[key];
+ }
+ }
+ }
+ return res;
+ } else if (isString$1(value) || isObject$1(value)) {
+ return value;
+ }
+}
+const listDelimiterRE = /;(?![^(]*\))/g;
+const propertyDelimiterRE = /:([^]+)/;
+const styleCommentRE = /\/\*[^]*?\*\//g;
+function parseStringStyle(cssText) {
+ const ret = {};
+ cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
+ if (item) {
+ const tmp = item.split(propertyDelimiterRE);
+ tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
+ }
+ });
+ return ret;
+}
+function normalizeClass(value) {
+ let res = "";
+ if (isString$1(value)) {
+ res = value;
+ } else if (isArray$2(value)) {
+ for (let i = 0; i < value.length; i++) {
+ const normalized = normalizeClass(value[i]);
+ if (normalized) {
+ res += normalized + " ";
+ }
+ }
+ } else if (isObject$1(value)) {
+ for (const name in value) {
+ if (value[name]) {
+ res += name + " ";
+ }
+ }
+ }
+ return res.trim();
+}
+const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
+const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
+function includeBooleanAttr(value) {
+ return !!value || value === "";
+}
+const isRef$1 = (val) => {
+ return !!(val && val["__v_isRef"] === true);
+};
+const toDisplayString = (val) => {
+ return isString$1(val) ? val : val == null ? "" : isArray$2(val) || isObject$1(val) && (val.toString === objectToString || !isFunction$1(val.toString)) ? isRef$1(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);
+};
+const replacer = (_key, val) => {
+ if (isRef$1(val)) {
+ return replacer(_key, val.value);
+ } else if (isMap(val)) {
+ return {
+ [`Map(${val.size})`]: [...val.entries()].reduce(
+ (entries, [key, val2], i) => {
+ entries[stringifySymbol(key, i) + " =>"] = val2;
+ return entries;
+ },
+ {}
+ )
+ };
+ } else if (isSet(val)) {
+ return {
+ [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))
+ };
+ } else if (isSymbol(val)) {
+ return stringifySymbol(val);
+ } else if (isObject$1(val) && !isArray$2(val) && !isPlainObject$2(val)) {
+ return String(val);
+ }
+ return val;
+};
+const stringifySymbol = (v, i = "") => {
+ var _a;
+ return (
+ // Symbol.description in es2019+ so we need to cast here to pass
+ // the lib: es2016 check
+ isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v
+ );
+};
+/**
+* @vue/reactivity v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+let activeEffectScope;
+class EffectScope {
+ constructor(detached = false) {
+ this.detached = detached;
+ this._active = true;
+ this.effects = [];
+ this.cleanups = [];
+ this._isPaused = false;
+ this.parent = activeEffectScope;
+ if (!detached && activeEffectScope) {
+ this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
+ this
+ ) - 1;
+ }
+ }
+ get active() {
+ return this._active;
+ }
+ pause() {
+ if (this._active) {
+ this._isPaused = true;
+ let i, l;
+ if (this.scopes) {
+ for (i = 0, l = this.scopes.length; i < l; i++) {
+ this.scopes[i].pause();
+ }
+ }
+ for (i = 0, l = this.effects.length; i < l; i++) {
+ this.effects[i].pause();
+ }
+ }
+ }
+ /**
+ * Resumes the effect scope, including all child scopes and effects.
+ */
+ resume() {
+ if (this._active) {
+ if (this._isPaused) {
+ this._isPaused = false;
+ let i, l;
+ if (this.scopes) {
+ for (i = 0, l = this.scopes.length; i < l; i++) {
+ this.scopes[i].resume();
+ }
+ }
+ for (i = 0, l = this.effects.length; i < l; i++) {
+ this.effects[i].resume();
+ }
+ }
+ }
+ }
+ run(fn) {
+ if (this._active) {
+ const currentEffectScope = activeEffectScope;
+ try {
+ activeEffectScope = this;
+ return fn();
+ } finally {
+ activeEffectScope = currentEffectScope;
+ }
+ }
+ }
+ /**
+ * This should only be called on non-detached scopes
+ * @internal
+ */
+ on() {
+ activeEffectScope = this;
+ }
+ /**
+ * This should only be called on non-detached scopes
+ * @internal
+ */
+ off() {
+ activeEffectScope = this.parent;
+ }
+ stop(fromParent) {
+ if (this._active) {
+ this._active = false;
+ let i, l;
+ for (i = 0, l = this.effects.length; i < l; i++) {
+ this.effects[i].stop();
+ }
+ this.effects.length = 0;
+ for (i = 0, l = this.cleanups.length; i < l; i++) {
+ this.cleanups[i]();
+ }
+ this.cleanups.length = 0;
+ if (this.scopes) {
+ for (i = 0, l = this.scopes.length; i < l; i++) {
+ this.scopes[i].stop(true);
+ }
+ this.scopes.length = 0;
+ }
+ if (!this.detached && this.parent && !fromParent) {
+ const last = this.parent.scopes.pop();
+ if (last && last !== this) {
+ this.parent.scopes[this.index] = last;
+ last.index = this.index;
+ }
+ }
+ this.parent = void 0;
+ }
+ }
+}
+function effectScope(detached) {
+ return new EffectScope(detached);
+}
+function getCurrentScope() {
+ return activeEffectScope;
+}
+function onScopeDispose(fn, failSilently = false) {
+ if (activeEffectScope) {
+ activeEffectScope.cleanups.push(fn);
+ }
+}
+let activeSub;
+const pausedQueueEffects = /* @__PURE__ */ new WeakSet();
+class ReactiveEffect {
+ constructor(fn) {
+ this.fn = fn;
+ this.deps = void 0;
+ this.depsTail = void 0;
+ this.flags = 1 | 4;
+ this.next = void 0;
+ this.cleanup = void 0;
+ this.scheduler = void 0;
+ if (activeEffectScope && activeEffectScope.active) {
+ activeEffectScope.effects.push(this);
+ }
+ }
+ pause() {
+ this.flags |= 64;
+ }
+ resume() {
+ if (this.flags & 64) {
+ this.flags &= -65;
+ if (pausedQueueEffects.has(this)) {
+ pausedQueueEffects.delete(this);
+ this.trigger();
+ }
+ }
+ }
+ /**
+ * @internal
+ */
+ notify() {
+ if (this.flags & 2 && !(this.flags & 32)) {
+ return;
+ }
+ if (!(this.flags & 8)) {
+ batch(this);
+ }
+ }
+ run() {
+ if (!(this.flags & 1)) {
+ return this.fn();
+ }
+ this.flags |= 2;
+ cleanupEffect(this);
+ prepareDeps(this);
+ const prevEffect = activeSub;
+ const prevShouldTrack = shouldTrack;
+ activeSub = this;
+ shouldTrack = true;
+ try {
+ return this.fn();
+ } finally {
+ cleanupDeps(this);
+ activeSub = prevEffect;
+ shouldTrack = prevShouldTrack;
+ this.flags &= -3;
+ }
+ }
+ stop() {
+ if (this.flags & 1) {
+ for (let link = this.deps; link; link = link.nextDep) {
+ removeSub(link);
+ }
+ this.deps = this.depsTail = void 0;
+ cleanupEffect(this);
+ this.onStop && this.onStop();
+ this.flags &= -2;
+ }
+ }
+ trigger() {
+ if (this.flags & 64) {
+ pausedQueueEffects.add(this);
+ } else if (this.scheduler) {
+ this.scheduler();
+ } else {
+ this.runIfDirty();
+ }
+ }
+ /**
+ * @internal
+ */
+ runIfDirty() {
+ if (isDirty(this)) {
+ this.run();
+ }
+ }
+ get dirty() {
+ return isDirty(this);
+ }
+}
+let batchDepth = 0;
+let batchedSub;
+let batchedComputed;
+function batch(sub, isComputed2 = false) {
+ sub.flags |= 8;
+ if (isComputed2) {
+ sub.next = batchedComputed;
+ batchedComputed = sub;
+ return;
+ }
+ sub.next = batchedSub;
+ batchedSub = sub;
+}
+function startBatch() {
+ batchDepth++;
+}
+function endBatch() {
+ if (--batchDepth > 0) {
+ return;
+ }
+ if (batchedComputed) {
+ let e = batchedComputed;
+ batchedComputed = void 0;
+ while (e) {
+ const next = e.next;
+ e.next = void 0;
+ e.flags &= -9;
+ e = next;
+ }
+ }
+ let error;
+ while (batchedSub) {
+ let e = batchedSub;
+ batchedSub = void 0;
+ while (e) {
+ const next = e.next;
+ e.next = void 0;
+ e.flags &= -9;
+ if (e.flags & 1) {
+ try {
+ ;
+ e.trigger();
+ } catch (err) {
+ if (!error) error = err;
+ }
+ }
+ e = next;
+ }
+ }
+ if (error) throw error;
+}
+function prepareDeps(sub) {
+ for (let link = sub.deps; link; link = link.nextDep) {
+ link.version = -1;
+ link.prevActiveLink = link.dep.activeLink;
+ link.dep.activeLink = link;
+ }
+}
+function cleanupDeps(sub) {
+ let head;
+ let tail = sub.depsTail;
+ let link = tail;
+ while (link) {
+ const prev = link.prevDep;
+ if (link.version === -1) {
+ if (link === tail) tail = prev;
+ removeSub(link);
+ removeDep(link);
+ } else {
+ head = link;
+ }
+ link.dep.activeLink = link.prevActiveLink;
+ link.prevActiveLink = void 0;
+ link = prev;
+ }
+ sub.deps = head;
+ sub.depsTail = tail;
+}
+function isDirty(sub) {
+ for (let link = sub.deps; link; link = link.nextDep) {
+ if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {
+ return true;
+ }
+ }
+ if (sub._dirty) {
+ return true;
+ }
+ return false;
+}
+function refreshComputed(computed2) {
+ if (computed2.flags & 4 && !(computed2.flags & 16)) {
+ return;
+ }
+ computed2.flags &= -17;
+ if (computed2.globalVersion === globalVersion) {
+ return;
+ }
+ computed2.globalVersion = globalVersion;
+ const dep = computed2.dep;
+ computed2.flags |= 2;
+ if (dep.version > 0 && !computed2.isSSR && computed2.deps && !isDirty(computed2)) {
+ computed2.flags &= -3;
+ return;
+ }
+ const prevSub = activeSub;
+ const prevShouldTrack = shouldTrack;
+ activeSub = computed2;
+ shouldTrack = true;
+ try {
+ prepareDeps(computed2);
+ const value = computed2.fn(computed2._value);
+ if (dep.version === 0 || hasChanged(value, computed2._value)) {
+ computed2._value = value;
+ dep.version++;
+ }
+ } catch (err) {
+ dep.version++;
+ throw err;
+ } finally {
+ activeSub = prevSub;
+ shouldTrack = prevShouldTrack;
+ cleanupDeps(computed2);
+ computed2.flags &= -3;
+ }
+}
+function removeSub(link, soft = false) {
+ const { dep, prevSub, nextSub } = link;
+ if (prevSub) {
+ prevSub.nextSub = nextSub;
+ link.prevSub = void 0;
+ }
+ if (nextSub) {
+ nextSub.prevSub = prevSub;
+ link.nextSub = void 0;
+ }
+ if (dep.subs === link) {
+ dep.subs = prevSub;
+ if (!prevSub && dep.computed) {
+ dep.computed.flags &= -5;
+ for (let l = dep.computed.deps; l; l = l.nextDep) {
+ removeSub(l, true);
+ }
+ }
+ }
+ if (!soft && !--dep.sc && dep.map) {
+ dep.map.delete(dep.key);
+ }
+}
+function removeDep(link) {
+ const { prevDep, nextDep } = link;
+ if (prevDep) {
+ prevDep.nextDep = nextDep;
+ link.prevDep = void 0;
+ }
+ if (nextDep) {
+ nextDep.prevDep = prevDep;
+ link.nextDep = void 0;
+ }
+}
+let shouldTrack = true;
+const trackStack = [];
+function pauseTracking() {
+ trackStack.push(shouldTrack);
+ shouldTrack = false;
+}
+function resetTracking() {
+ const last = trackStack.pop();
+ shouldTrack = last === void 0 ? true : last;
+}
+function cleanupEffect(e) {
+ const { cleanup } = e;
+ e.cleanup = void 0;
+ if (cleanup) {
+ const prevSub = activeSub;
+ activeSub = void 0;
+ try {
+ cleanup();
+ } finally {
+ activeSub = prevSub;
+ }
+ }
+}
+let globalVersion = 0;
+class Link {
+ constructor(sub, dep) {
+ this.sub = sub;
+ this.dep = dep;
+ this.version = dep.version;
+ this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
+ }
+}
+class Dep {
+ constructor(computed2) {
+ this.computed = computed2;
+ this.version = 0;
+ this.activeLink = void 0;
+ this.subs = void 0;
+ this.map = void 0;
+ this.key = void 0;
+ this.sc = 0;
+ }
+ track(debugInfo) {
+ if (!activeSub || !shouldTrack || activeSub === this.computed) {
+ return;
+ }
+ let link = this.activeLink;
+ if (link === void 0 || link.sub !== activeSub) {
+ link = this.activeLink = new Link(activeSub, this);
+ if (!activeSub.deps) {
+ activeSub.deps = activeSub.depsTail = link;
+ } else {
+ link.prevDep = activeSub.depsTail;
+ activeSub.depsTail.nextDep = link;
+ activeSub.depsTail = link;
+ }
+ addSub(link);
+ } else if (link.version === -1) {
+ link.version = this.version;
+ if (link.nextDep) {
+ const next = link.nextDep;
+ next.prevDep = link.prevDep;
+ if (link.prevDep) {
+ link.prevDep.nextDep = next;
+ }
+ link.prevDep = activeSub.depsTail;
+ link.nextDep = void 0;
+ activeSub.depsTail.nextDep = link;
+ activeSub.depsTail = link;
+ if (activeSub.deps === link) {
+ activeSub.deps = next;
+ }
+ }
+ }
+ return link;
+ }
+ trigger(debugInfo) {
+ this.version++;
+ globalVersion++;
+ this.notify(debugInfo);
+ }
+ notify(debugInfo) {
+ startBatch();
+ try {
+ if (false) ;
+ for (let link = this.subs; link; link = link.prevSub) {
+ if (link.sub.notify()) {
+ ;
+ link.sub.dep.notify();
+ }
+ }
+ } finally {
+ endBatch();
+ }
+ }
+}
+function addSub(link) {
+ link.dep.sc++;
+ if (link.sub.flags & 4) {
+ const computed2 = link.dep.computed;
+ if (computed2 && !link.dep.subs) {
+ computed2.flags |= 4 | 16;
+ for (let l = computed2.deps; l; l = l.nextDep) {
+ addSub(l);
+ }
+ }
+ const currentTail = link.dep.subs;
+ if (currentTail !== link) {
+ link.prevSub = currentTail;
+ if (currentTail) currentTail.nextSub = link;
+ }
+ link.dep.subs = link;
+ }
+}
+const targetMap = /* @__PURE__ */ new WeakMap();
+const ITERATE_KEY = Symbol(
+ ""
+);
+const MAP_KEY_ITERATE_KEY = Symbol(
+ ""
+);
+const ARRAY_ITERATE_KEY = Symbol(
+ ""
+);
+function track(target, type, key) {
+ if (shouldTrack && activeSub) {
+ let depsMap = targetMap.get(target);
+ if (!depsMap) {
+ targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
+ }
+ let dep = depsMap.get(key);
+ if (!dep) {
+ depsMap.set(key, dep = new Dep());
+ dep.map = depsMap;
+ dep.key = key;
+ }
+ {
+ dep.track();
+ }
+ }
+}
+function trigger(target, type, key, newValue, oldValue, oldTarget) {
+ const depsMap = targetMap.get(target);
+ if (!depsMap) {
+ globalVersion++;
+ return;
+ }
+ const run = (dep) => {
+ if (dep) {
+ {
+ dep.trigger();
+ }
+ }
+ };
+ startBatch();
+ if (type === "clear") {
+ depsMap.forEach(run);
+ } else {
+ const targetIsArray = isArray$2(target);
+ const isArrayIndex = targetIsArray && isIntegerKey(key);
+ if (targetIsArray && key === "length") {
+ const newLength = Number(newValue);
+ depsMap.forEach((dep, key2) => {
+ if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {
+ run(dep);
+ }
+ });
+ } else {
+ if (key !== void 0 || depsMap.has(void 0)) {
+ run(depsMap.get(key));
+ }
+ if (isArrayIndex) {
+ run(depsMap.get(ARRAY_ITERATE_KEY));
+ }
+ switch (type) {
+ case "add":
+ if (!targetIsArray) {
+ run(depsMap.get(ITERATE_KEY));
+ if (isMap(target)) {
+ run(depsMap.get(MAP_KEY_ITERATE_KEY));
+ }
+ } else if (isArrayIndex) {
+ run(depsMap.get("length"));
+ }
+ break;
+ case "delete":
+ if (!targetIsArray) {
+ run(depsMap.get(ITERATE_KEY));
+ if (isMap(target)) {
+ run(depsMap.get(MAP_KEY_ITERATE_KEY));
+ }
+ }
+ break;
+ case "set":
+ if (isMap(target)) {
+ run(depsMap.get(ITERATE_KEY));
+ }
+ break;
+ }
+ }
+ }
+ endBatch();
+}
+function getDepFromReactive(object, key) {
+ const depMap = targetMap.get(object);
+ return depMap && depMap.get(key);
+}
+function reactiveReadArray(array) {
+ const raw = toRaw(array);
+ if (raw === array) return raw;
+ track(raw, "iterate", ARRAY_ITERATE_KEY);
+ return isShallow(array) ? raw : raw.map(toReactive);
+}
+function shallowReadArray(arr) {
+ track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
+ return arr;
+}
+const arrayInstrumentations = {
+ __proto__: null,
+ [Symbol.iterator]() {
+ return iterator(this, Symbol.iterator, toReactive);
+ },
+ concat(...args) {
+ return reactiveReadArray(this).concat(
+ ...args.map((x) => isArray$2(x) ? reactiveReadArray(x) : x)
+ );
+ },
+ entries() {
+ return iterator(this, "entries", (value) => {
+ value[1] = toReactive(value[1]);
+ return value;
+ });
+ },
+ every(fn, thisArg) {
+ return apply(this, "every", fn, thisArg, void 0, arguments);
+ },
+ filter(fn, thisArg) {
+ return apply(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments);
+ },
+ find(fn, thisArg) {
+ return apply(this, "find", fn, thisArg, toReactive, arguments);
+ },
+ findIndex(fn, thisArg) {
+ return apply(this, "findIndex", fn, thisArg, void 0, arguments);
+ },
+ findLast(fn, thisArg) {
+ return apply(this, "findLast", fn, thisArg, toReactive, arguments);
+ },
+ findLastIndex(fn, thisArg) {
+ return apply(this, "findLastIndex", fn, thisArg, void 0, arguments);
+ },
+ // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement
+ forEach(fn, thisArg) {
+ return apply(this, "forEach", fn, thisArg, void 0, arguments);
+ },
+ includes(...args) {
+ return searchProxy(this, "includes", args);
+ },
+ indexOf(...args) {
+ return searchProxy(this, "indexOf", args);
+ },
+ join(separator) {
+ return reactiveReadArray(this).join(separator);
+ },
+ // keys() iterator only reads `length`, no optimisation required
+ lastIndexOf(...args) {
+ return searchProxy(this, "lastIndexOf", args);
+ },
+ map(fn, thisArg) {
+ return apply(this, "map", fn, thisArg, void 0, arguments);
+ },
+ pop() {
+ return noTracking(this, "pop");
+ },
+ push(...args) {
+ return noTracking(this, "push", args);
+ },
+ reduce(fn, ...args) {
+ return reduce(this, "reduce", fn, args);
+ },
+ reduceRight(fn, ...args) {
+ return reduce(this, "reduceRight", fn, args);
+ },
+ shift() {
+ return noTracking(this, "shift");
+ },
+ // slice could use ARRAY_ITERATE but also seems to beg for range tracking
+ some(fn, thisArg) {
+ return apply(this, "some", fn, thisArg, void 0, arguments);
+ },
+ splice(...args) {
+ return noTracking(this, "splice", args);
+ },
+ toReversed() {
+ return reactiveReadArray(this).toReversed();
+ },
+ toSorted(comparer) {
+ return reactiveReadArray(this).toSorted(comparer);
+ },
+ toSpliced(...args) {
+ return reactiveReadArray(this).toSpliced(...args);
+ },
+ unshift(...args) {
+ return noTracking(this, "unshift", args);
+ },
+ values() {
+ return iterator(this, "values", toReactive);
+ }
+};
+function iterator(self2, method, wrapValue) {
+ const arr = shallowReadArray(self2);
+ const iter = arr[method]();
+ if (arr !== self2 && !isShallow(self2)) {
+ iter._next = iter.next;
+ iter.next = () => {
+ const result = iter._next();
+ if (result.value) {
+ result.value = wrapValue(result.value);
+ }
+ return result;
+ };
+ }
+ return iter;
+}
+const arrayProto = Array.prototype;
+function apply(self2, method, fn, thisArg, wrappedRetFn, args) {
+ const arr = shallowReadArray(self2);
+ const needsWrap = arr !== self2 && !isShallow(self2);
+ const methodFn = arr[method];
+ if (methodFn !== arrayProto[method]) {
+ const result2 = methodFn.apply(self2, args);
+ return needsWrap ? toReactive(result2) : result2;
+ }
+ let wrappedFn = fn;
+ if (arr !== self2) {
+ if (needsWrap) {
+ wrappedFn = function(item, index) {
+ return fn.call(this, toReactive(item), index, self2);
+ };
+ } else if (fn.length > 2) {
+ wrappedFn = function(item, index) {
+ return fn.call(this, item, index, self2);
+ };
+ }
+ }
+ const result = methodFn.call(arr, wrappedFn, thisArg);
+ return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
+}
+function reduce(self2, method, fn, args) {
+ const arr = shallowReadArray(self2);
+ let wrappedFn = fn;
+ if (arr !== self2) {
+ if (!isShallow(self2)) {
+ wrappedFn = function(acc, item, index) {
+ return fn.call(this, acc, toReactive(item), index, self2);
+ };
+ } else if (fn.length > 3) {
+ wrappedFn = function(acc, item, index) {
+ return fn.call(this, acc, item, index, self2);
+ };
+ }
+ }
+ return arr[method](wrappedFn, ...args);
+}
+function searchProxy(self2, method, args) {
+ const arr = toRaw(self2);
+ track(arr, "iterate", ARRAY_ITERATE_KEY);
+ const res = arr[method](...args);
+ if ((res === -1 || res === false) && isProxy(args[0])) {
+ args[0] = toRaw(args[0]);
+ return arr[method](...args);
+ }
+ return res;
+}
+function noTracking(self2, method, args = []) {
+ pauseTracking();
+ startBatch();
+ const res = toRaw(self2)[method].apply(self2, args);
+ endBatch();
+ resetTracking();
+ return res;
+}
+const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
+const builtInSymbols = new Set(
+ /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol)
+);
+function hasOwnProperty$1(key) {
+ if (!isSymbol(key)) key = String(key);
+ const obj = toRaw(this);
+ track(obj, "has", key);
+ return obj.hasOwnProperty(key);
+}
+class BaseReactiveHandler {
+ constructor(_isReadonly = false, _isShallow = false) {
+ this._isReadonly = _isReadonly;
+ this._isShallow = _isShallow;
+ }
+ get(target, key, receiver) {
+ if (key === "__v_skip") return target["__v_skip"];
+ const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;
+ if (key === "__v_isReactive") {
+ return !isReadonly2;
+ } else if (key === "__v_isReadonly") {
+ return isReadonly2;
+ } else if (key === "__v_isShallow") {
+ return isShallow2;
+ } else if (key === "__v_raw") {
+ if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
+ // this means the receiver is a user proxy of the reactive proxy
+ Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
+ return target;
+ }
+ return;
+ }
+ const targetIsArray = isArray$2(target);
+ if (!isReadonly2) {
+ let fn;
+ if (targetIsArray && (fn = arrayInstrumentations[key])) {
+ return fn;
+ }
+ if (key === "hasOwnProperty") {
+ return hasOwnProperty$1;
+ }
+ }
+ const res = Reflect.get(
+ target,
+ key,
+ // if this is a proxy wrapping a ref, return methods using the raw ref
+ // as receiver so that we don't have to call `toRaw` on the ref in all
+ // its class methods
+ isRef(target) ? target : receiver
+ );
+ if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
+ return res;
+ }
+ if (!isReadonly2) {
+ track(target, "get", key);
+ }
+ if (isShallow2) {
+ return res;
+ }
+ if (isRef(res)) {
+ return targetIsArray && isIntegerKey(key) ? res : res.value;
+ }
+ if (isObject$1(res)) {
+ return isReadonly2 ? readonly(res) : reactive(res);
+ }
+ return res;
+ }
+}
+class MutableReactiveHandler extends BaseReactiveHandler {
+ constructor(isShallow2 = false) {
+ super(false, isShallow2);
+ }
+ set(target, key, value, receiver) {
+ let oldValue = target[key];
+ if (!this._isShallow) {
+ const isOldValueReadonly = isReadonly(oldValue);
+ if (!isShallow(value) && !isReadonly(value)) {
+ oldValue = toRaw(oldValue);
+ value = toRaw(value);
+ }
+ if (!isArray$2(target) && isRef(oldValue) && !isRef(value)) {
+ if (isOldValueReadonly) {
+ return false;
+ } else {
+ oldValue.value = value;
+ return true;
+ }
+ }
+ }
+ const hadKey = isArray$2(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);
+ const result = Reflect.set(
+ target,
+ key,
+ value,
+ isRef(target) ? target : receiver
+ );
+ if (target === toRaw(receiver)) {
+ if (!hadKey) {
+ trigger(target, "add", key, value);
+ } else if (hasChanged(value, oldValue)) {
+ trigger(target, "set", key, value);
+ }
+ }
+ return result;
+ }
+ deleteProperty(target, key) {
+ const hadKey = hasOwn(target, key);
+ target[key];
+ const result = Reflect.deleteProperty(target, key);
+ if (result && hadKey) {
+ trigger(target, "delete", key, void 0);
+ }
+ return result;
+ }
+ has(target, key) {
+ const result = Reflect.has(target, key);
+ if (!isSymbol(key) || !builtInSymbols.has(key)) {
+ track(target, "has", key);
+ }
+ return result;
+ }
+ ownKeys(target) {
+ track(
+ target,
+ "iterate",
+ isArray$2(target) ? "length" : ITERATE_KEY
+ );
+ return Reflect.ownKeys(target);
+ }
+}
+class ReadonlyReactiveHandler extends BaseReactiveHandler {
+ constructor(isShallow2 = false) {
+ super(true, isShallow2);
+ }
+ set(target, key) {
+ return true;
+ }
+ deleteProperty(target, key) {
+ return true;
+ }
+}
+const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
+const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
+const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);
+const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
+const toShallow = (value) => value;
+const getProto = (v) => Reflect.getPrototypeOf(v);
+function createIterableMethod(method, isReadonly2, isShallow2) {
+ return function(...args) {
+ const target = this["__v_raw"];
+ const rawTarget = toRaw(target);
+ const targetIsMap = isMap(rawTarget);
+ const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
+ const isKeyOnly = method === "keys" && targetIsMap;
+ const innerIterator = target[method](...args);
+ const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
+ !isReadonly2 && track(
+ rawTarget,
+ "iterate",
+ isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
+ );
+ return {
+ // iterator protocol
+ next() {
+ const { value, done } = innerIterator.next();
+ return done ? { value, done } : {
+ value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
+ done
+ };
+ },
+ // iterable protocol
+ [Symbol.iterator]() {
+ return this;
+ }
+ };
+ };
+}
+function createReadonlyMethod(type) {
+ return function(...args) {
+ return type === "delete" ? false : type === "clear" ? void 0 : this;
+ };
+}
+function createInstrumentations(readonly2, shallow) {
+ const instrumentations = {
+ get(key) {
+ const target = this["__v_raw"];
+ const rawTarget = toRaw(target);
+ const rawKey = toRaw(key);
+ if (!readonly2) {
+ if (hasChanged(key, rawKey)) {
+ track(rawTarget, "get", key);
+ }
+ track(rawTarget, "get", rawKey);
+ }
+ const { has } = getProto(rawTarget);
+ const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive;
+ if (has.call(rawTarget, key)) {
+ return wrap(target.get(key));
+ } else if (has.call(rawTarget, rawKey)) {
+ return wrap(target.get(rawKey));
+ } else if (target !== rawTarget) {
+ target.get(key);
+ }
+ },
+ get size() {
+ const target = this["__v_raw"];
+ !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY);
+ return Reflect.get(target, "size", target);
+ },
+ has(key) {
+ const target = this["__v_raw"];
+ const rawTarget = toRaw(target);
+ const rawKey = toRaw(key);
+ if (!readonly2) {
+ if (hasChanged(key, rawKey)) {
+ track(rawTarget, "has", key);
+ }
+ track(rawTarget, "has", rawKey);
+ }
+ return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
+ },
+ forEach(callback, thisArg) {
+ const observed = this;
+ const target = observed["__v_raw"];
+ const rawTarget = toRaw(target);
+ const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive;
+ !readonly2 && track(rawTarget, "iterate", ITERATE_KEY);
+ return target.forEach((value, key) => {
+ return callback.call(thisArg, wrap(value), wrap(key), observed);
+ });
+ }
+ };
+ extend$1(
+ instrumentations,
+ readonly2 ? {
+ add: createReadonlyMethod("add"),
+ set: createReadonlyMethod("set"),
+ delete: createReadonlyMethod("delete"),
+ clear: createReadonlyMethod("clear")
+ } : {
+ add(value) {
+ if (!shallow && !isShallow(value) && !isReadonly(value)) {
+ value = toRaw(value);
+ }
+ const target = toRaw(this);
+ const proto = getProto(target);
+ const hadKey = proto.has.call(target, value);
+ if (!hadKey) {
+ target.add(value);
+ trigger(target, "add", value, value);
+ }
+ return this;
+ },
+ set(key, value) {
+ if (!shallow && !isShallow(value) && !isReadonly(value)) {
+ value = toRaw(value);
+ }
+ const target = toRaw(this);
+ const { has, get } = getProto(target);
+ let hadKey = has.call(target, key);
+ if (!hadKey) {
+ key = toRaw(key);
+ hadKey = has.call(target, key);
+ }
+ const oldValue = get.call(target, key);
+ target.set(key, value);
+ if (!hadKey) {
+ trigger(target, "add", key, value);
+ } else if (hasChanged(value, oldValue)) {
+ trigger(target, "set", key, value);
+ }
+ return this;
+ },
+ delete(key) {
+ const target = toRaw(this);
+ const { has, get } = getProto(target);
+ let hadKey = has.call(target, key);
+ if (!hadKey) {
+ key = toRaw(key);
+ hadKey = has.call(target, key);
+ }
+ get ? get.call(target, key) : void 0;
+ const result = target.delete(key);
+ if (hadKey) {
+ trigger(target, "delete", key, void 0);
+ }
+ return result;
+ },
+ clear() {
+ const target = toRaw(this);
+ const hadItems = target.size !== 0;
+ const result = target.clear();
+ if (hadItems) {
+ trigger(
+ target,
+ "clear",
+ void 0,
+ void 0
+ );
+ }
+ return result;
+ }
+ }
+ );
+ const iteratorMethods = [
+ "keys",
+ "values",
+ "entries",
+ Symbol.iterator
+ ];
+ iteratorMethods.forEach((method) => {
+ instrumentations[method] = createIterableMethod(method, readonly2, shallow);
+ });
+ return instrumentations;
+}
+function createInstrumentationGetter(isReadonly2, shallow) {
+ const instrumentations = createInstrumentations(isReadonly2, shallow);
+ return (target, key, receiver) => {
+ if (key === "__v_isReactive") {
+ return !isReadonly2;
+ } else if (key === "__v_isReadonly") {
+ return isReadonly2;
+ } else if (key === "__v_raw") {
+ return target;
+ }
+ return Reflect.get(
+ hasOwn(instrumentations, key) && key in target ? instrumentations : target,
+ key,
+ receiver
+ );
+ };
+}
+const mutableCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(false, false)
+};
+const shallowCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(false, true)
+};
+const readonlyCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(true, false)
+};
+const shallowReadonlyCollectionHandlers = {
+ get: /* @__PURE__ */ createInstrumentationGetter(true, true)
+};
+const reactiveMap = /* @__PURE__ */ new WeakMap();
+const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
+const readonlyMap = /* @__PURE__ */ new WeakMap();
+const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
+function targetTypeMap(rawType) {
+ switch (rawType) {
+ case "Object":
+ case "Array":
+ return 1;
+ case "Map":
+ case "Set":
+ case "WeakMap":
+ case "WeakSet":
+ return 2;
+ default:
+ return 0;
+ }
+}
+function getTargetType(value) {
+ return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
+}
+function reactive(target) {
+ if (isReadonly(target)) {
+ return target;
+ }
+ return createReactiveObject(
+ target,
+ false,
+ mutableHandlers,
+ mutableCollectionHandlers,
+ reactiveMap
+ );
+}
+function shallowReactive(target) {
+ return createReactiveObject(
+ target,
+ false,
+ shallowReactiveHandlers,
+ shallowCollectionHandlers,
+ shallowReactiveMap
+ );
+}
+function readonly(target) {
+ return createReactiveObject(
+ target,
+ true,
+ readonlyHandlers,
+ readonlyCollectionHandlers,
+ readonlyMap
+ );
+}
+function shallowReadonly(target) {
+ return createReactiveObject(
+ target,
+ true,
+ shallowReadonlyHandlers,
+ shallowReadonlyCollectionHandlers,
+ shallowReadonlyMap
+ );
+}
+function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
+ if (!isObject$1(target)) {
+ return target;
+ }
+ if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
+ return target;
+ }
+ const existingProxy = proxyMap.get(target);
+ if (existingProxy) {
+ return existingProxy;
+ }
+ const targetType = getTargetType(target);
+ if (targetType === 0) {
+ return target;
+ }
+ const proxy = new Proxy(
+ target,
+ targetType === 2 ? collectionHandlers : baseHandlers
+ );
+ proxyMap.set(target, proxy);
+ return proxy;
+}
+function isReactive(value) {
+ if (isReadonly(value)) {
+ return isReactive(value["__v_raw"]);
+ }
+ return !!(value && value["__v_isReactive"]);
+}
+function isReadonly(value) {
+ return !!(value && value["__v_isReadonly"]);
+}
+function isShallow(value) {
+ return !!(value && value["__v_isShallow"]);
+}
+function isProxy(value) {
+ return value ? !!value["__v_raw"] : false;
+}
+function toRaw(observed) {
+ const raw = observed && observed["__v_raw"];
+ return raw ? toRaw(raw) : observed;
+}
+function markRaw(value) {
+ if (!hasOwn(value, "__v_skip") && Object.isExtensible(value)) {
+ def(value, "__v_skip", true);
+ }
+ return value;
+}
+const toReactive = (value) => isObject$1(value) ? reactive(value) : value;
+const toReadonly = (value) => isObject$1(value) ? readonly(value) : value;
+function isRef(r) {
+ return r ? r["__v_isRef"] === true : false;
+}
+function ref(value) {
+ return createRef(value, false);
+}
+function shallowRef(value) {
+ return createRef(value, true);
+}
+function createRef(rawValue, shallow) {
+ if (isRef(rawValue)) {
+ return rawValue;
+ }
+ return new RefImpl(rawValue, shallow);
+}
+class RefImpl {
+ constructor(value, isShallow2) {
+ this.dep = new Dep();
+ this["__v_isRef"] = true;
+ this["__v_isShallow"] = false;
+ this._rawValue = isShallow2 ? value : toRaw(value);
+ this._value = isShallow2 ? value : toReactive(value);
+ this["__v_isShallow"] = isShallow2;
+ }
+ get value() {
+ {
+ this.dep.track();
+ }
+ return this._value;
+ }
+ set value(newValue) {
+ const oldValue = this._rawValue;
+ const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue);
+ newValue = useDirectValue ? newValue : toRaw(newValue);
+ if (hasChanged(newValue, oldValue)) {
+ this._rawValue = newValue;
+ this._value = useDirectValue ? newValue : toReactive(newValue);
+ {
+ this.dep.trigger();
+ }
+ }
+ }
+}
+function unref(ref2) {
+ return isRef(ref2) ? ref2.value : ref2;
+}
+const shallowUnwrapHandlers = {
+ get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)),
+ set: (target, key, value, receiver) => {
+ const oldValue = target[key];
+ if (isRef(oldValue) && !isRef(value)) {
+ oldValue.value = value;
+ return true;
+ } else {
+ return Reflect.set(target, key, value, receiver);
+ }
+ }
+};
+function proxyRefs(objectWithRefs) {
+ return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
+}
+function toRefs(object) {
+ const ret = isArray$2(object) ? new Array(object.length) : {};
+ for (const key in object) {
+ ret[key] = propertyToRef(object, key);
+ }
+ return ret;
+}
+class ObjectRefImpl {
+ constructor(_object, _key, _defaultValue) {
+ this._object = _object;
+ this._key = _key;
+ this._defaultValue = _defaultValue;
+ this["__v_isRef"] = true;
+ this._value = void 0;
+ }
+ get value() {
+ const val = this._object[this._key];
+ return this._value = val === void 0 ? this._defaultValue : val;
+ }
+ set value(newVal) {
+ this._object[this._key] = newVal;
+ }
+ get dep() {
+ return getDepFromReactive(toRaw(this._object), this._key);
+ }
+}
+function propertyToRef(source, key, defaultValue) {
+ const val = source[key];
+ return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);
+}
+class ComputedRefImpl {
+ constructor(fn, setter, isSSR) {
+ this.fn = fn;
+ this.setter = setter;
+ this._value = void 0;
+ this.dep = new Dep(this);
+ this.__v_isRef = true;
+ this.deps = void 0;
+ this.depsTail = void 0;
+ this.flags = 16;
+ this.globalVersion = globalVersion - 1;
+ this.next = void 0;
+ this.effect = this;
+ this["__v_isReadonly"] = !setter;
+ this.isSSR = isSSR;
+ }
+ /**
+ * @internal
+ */
+ notify() {
+ this.flags |= 16;
+ if (!(this.flags & 8) && // avoid infinite self recursion
+ activeSub !== this) {
+ batch(this, true);
+ return true;
+ }
+ }
+ get value() {
+ const link = this.dep.track();
+ refreshComputed(this);
+ if (link) {
+ link.version = this.dep.version;
+ }
+ return this._value;
+ }
+ set value(newValue) {
+ if (this.setter) {
+ this.setter(newValue);
+ }
+ }
+}
+function computed$1(getterOrOptions, debugOptions, isSSR = false) {
+ let getter;
+ let setter;
+ if (isFunction$1(getterOrOptions)) {
+ getter = getterOrOptions;
+ } else {
+ getter = getterOrOptions.get;
+ setter = getterOrOptions.set;
+ }
+ const cRef = new ComputedRefImpl(getter, setter, isSSR);
+ return cRef;
+}
+const INITIAL_WATCHER_VALUE = {};
+const cleanupMap = /* @__PURE__ */ new WeakMap();
+let activeWatcher = void 0;
+function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
+ if (owner) {
+ let cleanups = cleanupMap.get(owner);
+ if (!cleanups) cleanupMap.set(owner, cleanups = []);
+ cleanups.push(cleanupFn);
+ }
+}
+function watch$1(source, cb, options = EMPTY_OBJ) {
+ const { immediate, deep, once, scheduler, augmentJob, call } = options;
+ const reactiveGetter = (source2) => {
+ if (deep) return source2;
+ if (isShallow(source2) || deep === false || deep === 0)
+ return traverse(source2, 1);
+ return traverse(source2);
+ };
+ let effect2;
+ let getter;
+ let cleanup;
+ let boundCleanup;
+ let forceTrigger = false;
+ let isMultiSource = false;
+ if (isRef(source)) {
+ getter = () => source.value;
+ forceTrigger = isShallow(source);
+ } else if (isReactive(source)) {
+ getter = () => reactiveGetter(source);
+ forceTrigger = true;
+ } else if (isArray$2(source)) {
+ isMultiSource = true;
+ forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
+ getter = () => source.map((s) => {
+ if (isRef(s)) {
+ return s.value;
+ } else if (isReactive(s)) {
+ return reactiveGetter(s);
+ } else if (isFunction$1(s)) {
+ return call ? call(s, 2) : s();
+ } else ;
+ });
+ } else if (isFunction$1(source)) {
+ if (cb) {
+ getter = call ? () => call(source, 2) : source;
+ } else {
+ getter = () => {
+ if (cleanup) {
+ pauseTracking();
+ try {
+ cleanup();
+ } finally {
+ resetTracking();
+ }
+ }
+ const currentEffect = activeWatcher;
+ activeWatcher = effect2;
+ try {
+ return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);
+ } finally {
+ activeWatcher = currentEffect;
+ }
+ };
+ }
+ } else {
+ getter = NOOP;
+ }
+ if (cb && deep) {
+ const baseGetter = getter;
+ const depth = deep === true ? Infinity : deep;
+ getter = () => traverse(baseGetter(), depth);
+ }
+ const scope = getCurrentScope();
+ const watchHandle = () => {
+ effect2.stop();
+ if (scope && scope.active) {
+ remove(scope.effects, effect2);
+ }
+ };
+ if (once && cb) {
+ const _cb = cb;
+ cb = (...args) => {
+ _cb(...args);
+ watchHandle();
+ };
+ }
+ let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
+ const job = (immediateFirstRun) => {
+ if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) {
+ return;
+ }
+ if (cb) {
+ const newValue = effect2.run();
+ if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
+ if (cleanup) {
+ cleanup();
+ }
+ const currentWatcher = activeWatcher;
+ activeWatcher = effect2;
+ try {
+ const args = [
+ newValue,
+ // pass undefined as the old value when it's changed for the first time
+ oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
+ boundCleanup
+ ];
+ call ? call(cb, 3, args) : (
+ // @ts-expect-error
+ cb(...args)
+ );
+ oldValue = newValue;
+ } finally {
+ activeWatcher = currentWatcher;
+ }
+ }
+ } else {
+ effect2.run();
+ }
+ };
+ if (augmentJob) {
+ augmentJob(job);
+ }
+ effect2 = new ReactiveEffect(getter);
+ effect2.scheduler = scheduler ? () => scheduler(job, false) : job;
+ boundCleanup = (fn) => onWatcherCleanup(fn, false, effect2);
+ cleanup = effect2.onStop = () => {
+ const cleanups = cleanupMap.get(effect2);
+ if (cleanups) {
+ if (call) {
+ call(cleanups, 4);
+ } else {
+ for (const cleanup2 of cleanups) cleanup2();
+ }
+ cleanupMap.delete(effect2);
+ }
+ };
+ if (cb) {
+ if (immediate) {
+ job(true);
+ } else {
+ oldValue = effect2.run();
+ }
+ } else if (scheduler) {
+ scheduler(job.bind(null, true), true);
+ } else {
+ effect2.run();
+ }
+ watchHandle.pause = effect2.pause.bind(effect2);
+ watchHandle.resume = effect2.resume.bind(effect2);
+ watchHandle.stop = watchHandle;
+ return watchHandle;
+}
+function traverse(value, depth = Infinity, seen2) {
+ if (depth <= 0 || !isObject$1(value) || value["__v_skip"]) {
+ return value;
+ }
+ seen2 = seen2 || /* @__PURE__ */ new Set();
+ if (seen2.has(value)) {
+ return value;
+ }
+ seen2.add(value);
+ depth--;
+ if (isRef(value)) {
+ traverse(value.value, depth, seen2);
+ } else if (isArray$2(value)) {
+ for (let i = 0; i < value.length; i++) {
+ traverse(value[i], depth, seen2);
+ }
+ } else if (isSet(value) || isMap(value)) {
+ value.forEach((v) => {
+ traverse(v, depth, seen2);
+ });
+ } else if (isPlainObject$2(value)) {
+ for (const key in value) {
+ traverse(value[key], depth, seen2);
+ }
+ for (const key of Object.getOwnPropertySymbols(value)) {
+ if (Object.prototype.propertyIsEnumerable.call(value, key)) {
+ traverse(value[key], depth, seen2);
+ }
+ }
+ }
+ return value;
+}
+/**
+* @vue/runtime-core v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+const stack = [];
+let isWarning = false;
+function warn$1(msg, ...args) {
+ if (isWarning) return;
+ isWarning = true;
+ pauseTracking();
+ const instance = stack.length ? stack[stack.length - 1].component : null;
+ const appWarnHandler = instance && instance.appContext.config.warnHandler;
+ const trace = getComponentTrace();
+ if (appWarnHandler) {
+ callWithErrorHandling(
+ appWarnHandler,
+ instance,
+ 11,
+ [
+ // eslint-disable-next-line no-restricted-syntax
+ msg + args.map((a) => {
+ var _a, _b;
+ return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);
+ }).join(""),
+ instance && instance.proxy,
+ trace.map(
+ ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
+ ).join("\n"),
+ trace
+ ]
+ );
+ } else {
+ const warnArgs = [`[Vue warn]: ${msg}`, ...args];
+ if (trace.length && // avoid spamming console during tests
+ true) {
+ warnArgs.push(`
+`, ...formatTrace(trace));
+ }
+ console.warn(...warnArgs);
+ }
+ resetTracking();
+ isWarning = false;
+}
+function getComponentTrace() {
+ let currentVNode = stack[stack.length - 1];
+ if (!currentVNode) {
+ return [];
+ }
+ const normalizedStack = [];
+ while (currentVNode) {
+ const last = normalizedStack[0];
+ if (last && last.vnode === currentVNode) {
+ last.recurseCount++;
+ } else {
+ normalizedStack.push({
+ vnode: currentVNode,
+ recurseCount: 0
+ });
+ }
+ const parentInstance = currentVNode.component && currentVNode.component.parent;
+ currentVNode = parentInstance && parentInstance.vnode;
+ }
+ return normalizedStack;
+}
+function formatTrace(trace) {
+ const logs = [];
+ trace.forEach((entry, i) => {
+ logs.push(...i === 0 ? [] : [`
+`], ...formatTraceEntry(entry));
+ });
+ return logs;
+}
+function formatTraceEntry({ vnode, recurseCount }) {
+ const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
+ const isRoot = vnode.component ? vnode.component.parent == null : false;
+ const open = ` at <${formatComponentName(
+ vnode.component,
+ vnode.type,
+ isRoot
+ )}`;
+ const close = `>` + postfix;
+ return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
+}
+function formatProps(props) {
+ const res = [];
+ const keys = Object.keys(props);
+ keys.slice(0, 3).forEach((key) => {
+ res.push(...formatProp(key, props[key]));
+ });
+ if (keys.length > 3) {
+ res.push(` ...`);
+ }
+ return res;
+}
+function formatProp(key, value, raw) {
+ if (isString$1(value)) {
+ value = JSON.stringify(value);
+ return raw ? value : [`${key}=${value}`];
+ } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
+ return raw ? value : [`${key}=${value}`];
+ } else if (isRef(value)) {
+ value = formatProp(key, toRaw(value.value), true);
+ return raw ? value : [`${key}=Ref<`, value, `>`];
+ } else if (isFunction$1(value)) {
+ return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
+ } else {
+ value = toRaw(value);
+ return raw ? value : [`${key}=`, value];
+ }
+}
+function callWithErrorHandling(fn, instance, type, args) {
+ try {
+ return args ? fn(...args) : fn();
+ } catch (err) {
+ handleError(err, instance, type);
+ }
+}
+function callWithAsyncErrorHandling(fn, instance, type, args) {
+ if (isFunction$1(fn)) {
+ const res = callWithErrorHandling(fn, instance, type, args);
+ if (res && isPromise(res)) {
+ res.catch((err) => {
+ handleError(err, instance, type);
+ });
+ }
+ return res;
+ }
+ if (isArray$2(fn)) {
+ const values = [];
+ for (let i = 0; i < fn.length; i++) {
+ values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
+ }
+ return values;
+ }
+}
+function handleError(err, instance, type, throwInDev = true) {
+ const contextVNode = instance ? instance.vnode : null;
+ const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;
+ if (instance) {
+ let cur = instance.parent;
+ const exposedInstance = instance.proxy;
+ const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`;
+ while (cur) {
+ const errorCapturedHooks = cur.ec;
+ if (errorCapturedHooks) {
+ for (let i = 0; i < errorCapturedHooks.length; i++) {
+ if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
+ return;
+ }
+ }
+ }
+ cur = cur.parent;
+ }
+ if (errorHandler) {
+ pauseTracking();
+ callWithErrorHandling(errorHandler, null, 10, [
+ err,
+ exposedInstance,
+ errorInfo
+ ]);
+ resetTracking();
+ return;
+ }
+ }
+ logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);
+}
+function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {
+ if (throwInProd) {
+ throw err;
+ } else {
+ console.error(err);
+ }
+}
+const queue = [];
+let flushIndex = -1;
+const pendingPostFlushCbs = [];
+let activePostFlushCbs = null;
+let postFlushIndex = 0;
+const resolvedPromise = /* @__PURE__ */ Promise.resolve();
+let currentFlushPromise = null;
+function nextTick(fn) {
+ const p2 = currentFlushPromise || resolvedPromise;
+ return fn ? p2.then(this ? fn.bind(this) : fn) : p2;
+}
+function findInsertionIndex$1(id) {
+ let start = flushIndex + 1;
+ let end = queue.length;
+ while (start < end) {
+ const middle = start + end >>> 1;
+ const middleJob = queue[middle];
+ const middleJobId = getId(middleJob);
+ if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {
+ start = middle + 1;
+ } else {
+ end = middle;
+ }
+ }
+ return start;
+}
+function queueJob(job) {
+ if (!(job.flags & 1)) {
+ const jobId = getId(job);
+ const lastJob = queue[queue.length - 1];
+ if (!lastJob || // fast path when the job id is larger than the tail
+ !(job.flags & 2) && jobId >= getId(lastJob)) {
+ queue.push(job);
+ } else {
+ queue.splice(findInsertionIndex$1(jobId), 0, job);
+ }
+ job.flags |= 1;
+ queueFlush();
+ }
+}
+function queueFlush() {
+ if (!currentFlushPromise) {
+ currentFlushPromise = resolvedPromise.then(flushJobs);
+ }
+}
+function queuePostFlushCb(cb) {
+ if (!isArray$2(cb)) {
+ if (activePostFlushCbs && cb.id === -1) {
+ activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);
+ } else if (!(cb.flags & 1)) {
+ pendingPostFlushCbs.push(cb);
+ cb.flags |= 1;
+ }
+ } else {
+ pendingPostFlushCbs.push(...cb);
+ }
+ queueFlush();
+}
+function flushPreFlushCbs(instance, seen2, i = flushIndex + 1) {
+ for (; i < queue.length; i++) {
+ const cb = queue[i];
+ if (cb && cb.flags & 2) {
+ if (instance && cb.id !== instance.uid) {
+ continue;
+ }
+ queue.splice(i, 1);
+ i--;
+ if (cb.flags & 4) {
+ cb.flags &= -2;
+ }
+ cb();
+ if (!(cb.flags & 4)) {
+ cb.flags &= -2;
+ }
+ }
+ }
+}
+function flushPostFlushCbs(seen2) {
+ if (pendingPostFlushCbs.length) {
+ const deduped = [...new Set(pendingPostFlushCbs)].sort(
+ (a, b) => getId(a) - getId(b)
+ );
+ pendingPostFlushCbs.length = 0;
+ if (activePostFlushCbs) {
+ activePostFlushCbs.push(...deduped);
+ return;
+ }
+ activePostFlushCbs = deduped;
+ for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
+ const cb = activePostFlushCbs[postFlushIndex];
+ if (cb.flags & 4) {
+ cb.flags &= -2;
+ }
+ if (!(cb.flags & 8)) cb();
+ cb.flags &= -2;
+ }
+ activePostFlushCbs = null;
+ postFlushIndex = 0;
+ }
+}
+const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
+function flushJobs(seen2) {
+ try {
+ for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
+ const job = queue[flushIndex];
+ if (job && !(job.flags & 8)) {
+ if (false) ;
+ if (job.flags & 4) {
+ job.flags &= ~1;
+ }
+ callWithErrorHandling(
+ job,
+ job.i,
+ job.i ? 15 : 14
+ );
+ if (!(job.flags & 4)) {
+ job.flags &= ~1;
+ }
+ }
+ }
+ } finally {
+ for (; flushIndex < queue.length; flushIndex++) {
+ const job = queue[flushIndex];
+ if (job) {
+ job.flags &= -2;
+ }
+ }
+ flushIndex = -1;
+ queue.length = 0;
+ flushPostFlushCbs();
+ currentFlushPromise = null;
+ if (queue.length || pendingPostFlushCbs.length) {
+ flushJobs();
+ }
+ }
+}
+let currentRenderingInstance = null;
+let currentScopeId = null;
+function setCurrentRenderingInstance(instance) {
+ const prev = currentRenderingInstance;
+ currentRenderingInstance = instance;
+ currentScopeId = instance && instance.type.__scopeId || null;
+ return prev;
+}
+function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
+ if (!ctx) return fn;
+ if (fn._n) {
+ return fn;
+ }
+ const renderFnWithContext = (...args) => {
+ if (renderFnWithContext._d) {
+ setBlockTracking(-1);
+ }
+ const prevInstance = setCurrentRenderingInstance(ctx);
+ let res;
+ try {
+ res = fn(...args);
+ } finally {
+ setCurrentRenderingInstance(prevInstance);
+ if (renderFnWithContext._d) {
+ setBlockTracking(1);
+ }
+ }
+ return res;
+ };
+ renderFnWithContext._n = true;
+ renderFnWithContext._c = true;
+ renderFnWithContext._d = true;
+ return renderFnWithContext;
+}
+function withDirectives(vnode, directives) {
+ if (currentRenderingInstance === null) {
+ return vnode;
+ }
+ const instance = getComponentPublicInstance(currentRenderingInstance);
+ const bindings = vnode.dirs || (vnode.dirs = []);
+ for (let i = 0; i < directives.length; i++) {
+ let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
+ if (dir) {
+ if (isFunction$1(dir)) {
+ dir = {
+ mounted: dir,
+ updated: dir
+ };
+ }
+ if (dir.deep) {
+ traverse(value);
+ }
+ bindings.push({
+ dir,
+ instance,
+ value,
+ oldValue: void 0,
+ arg,
+ modifiers
+ });
+ }
+ }
+ return vnode;
+}
+function invokeDirectiveHook(vnode, prevVNode, instance, name) {
+ const bindings = vnode.dirs;
+ const oldBindings = prevVNode && prevVNode.dirs;
+ for (let i = 0; i < bindings.length; i++) {
+ const binding = bindings[i];
+ if (oldBindings) {
+ binding.oldValue = oldBindings[i].value;
+ }
+ let hook = binding.dir[name];
+ if (hook) {
+ pauseTracking();
+ callWithAsyncErrorHandling(hook, instance, 8, [
+ vnode.el,
+ binding,
+ vnode,
+ prevVNode
+ ]);
+ resetTracking();
+ }
+ }
+}
+const TeleportEndKey = Symbol("_vte");
+const isTeleport = (type) => type.__isTeleport;
+function setTransitionHooks(vnode, hooks) {
+ if (vnode.shapeFlag & 6 && vnode.component) {
+ vnode.transition = hooks;
+ setTransitionHooks(vnode.component.subTree, hooks);
+ } else if (vnode.shapeFlag & 128) {
+ vnode.ssContent.transition = hooks.clone(vnode.ssContent);
+ vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
+ } else {
+ vnode.transition = hooks;
+ }
+}
+/*! #__NO_SIDE_EFFECTS__ */
+// @__NO_SIDE_EFFECTS__
+function defineComponent(options, extraOptions) {
+ return isFunction$1(options) ? (
+ // #8236: extend call and options.name access are considered side-effects
+ // by Rollup, so we have to wrap it in a pure-annotated IIFE.
+ /* @__PURE__ */ (() => extend$1({ name: options.name }, extraOptions, { setup: options }))()
+ ) : options;
+}
+function markAsyncBoundary(instance) {
+ instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0];
+}
+function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
+ if (isArray$2(rawRef)) {
+ rawRef.forEach(
+ (r, i) => setRef(
+ r,
+ oldRawRef && (isArray$2(oldRawRef) ? oldRawRef[i] : oldRawRef),
+ parentSuspense,
+ vnode,
+ isUnmount
+ )
+ );
+ return;
+ }
+ if (isAsyncWrapper(vnode) && !isUnmount) {
+ if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {
+ setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);
+ }
+ return;
+ }
+ const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;
+ const value = isUnmount ? null : refValue;
+ const { i: owner, r: ref3 } = rawRef;
+ const oldRef = oldRawRef && oldRawRef.r;
+ const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
+ const setupState = owner.setupState;
+ const rawSetupState = toRaw(setupState);
+ const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
+ return hasOwn(rawSetupState, key);
+ };
+ if (oldRef != null && oldRef !== ref3) {
+ if (isString$1(oldRef)) {
+ refs[oldRef] = null;
+ if (canSetSetupRef(oldRef)) {
+ setupState[oldRef] = null;
+ }
+ } else if (isRef(oldRef)) {
+ oldRef.value = null;
+ }
+ }
+ if (isFunction$1(ref3)) {
+ callWithErrorHandling(ref3, owner, 12, [value, refs]);
+ } else {
+ const _isString = isString$1(ref3);
+ const _isRef = isRef(ref3);
+ if (_isString || _isRef) {
+ const doSet = () => {
+ if (rawRef.f) {
+ const existing = _isString ? canSetSetupRef(ref3) ? setupState[ref3] : refs[ref3] : ref3.value;
+ if (isUnmount) {
+ isArray$2(existing) && remove(existing, refValue);
+ } else {
+ if (!isArray$2(existing)) {
+ if (_isString) {
+ refs[ref3] = [refValue];
+ if (canSetSetupRef(ref3)) {
+ setupState[ref3] = refs[ref3];
+ }
+ } else {
+ ref3.value = [refValue];
+ if (rawRef.k) refs[rawRef.k] = ref3.value;
+ }
+ } else if (!existing.includes(refValue)) {
+ existing.push(refValue);
+ }
+ }
+ } else if (_isString) {
+ refs[ref3] = value;
+ if (canSetSetupRef(ref3)) {
+ setupState[ref3] = value;
+ }
+ } else if (_isRef) {
+ ref3.value = value;
+ if (rawRef.k) refs[rawRef.k] = value;
+ } else ;
+ };
+ if (value) {
+ doSet.id = -1;
+ queuePostRenderEffect(doSet, parentSuspense);
+ } else {
+ doSet();
+ }
+ }
+ }
+}
+getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));
+getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));
+const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
+const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
+function onActivated(hook, target) {
+ registerKeepAliveHook(hook, "a", target);
+}
+function onDeactivated(hook, target) {
+ registerKeepAliveHook(hook, "da", target);
+}
+function registerKeepAliveHook(hook, type, target = currentInstance) {
+ const wrappedHook = hook.__wdc || (hook.__wdc = () => {
+ let current = target;
+ while (current) {
+ if (current.isDeactivated) {
+ return;
+ }
+ current = current.parent;
+ }
+ return hook();
+ });
+ injectHook(type, wrappedHook, target);
+ if (target) {
+ let current = target.parent;
+ while (current && current.parent) {
+ if (isKeepAlive(current.parent.vnode)) {
+ injectToKeepAliveRoot(wrappedHook, type, target, current);
+ }
+ current = current.parent;
+ }
+ }
+}
+function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
+ const injected = injectHook(
+ type,
+ hook,
+ keepAliveRoot,
+ true
+ /* prepend */
+ );
+ onUnmounted(() => {
+ remove(keepAliveRoot[type], injected);
+ }, target);
+}
+function injectHook(type, hook, target = currentInstance, prepend = false) {
+ if (target) {
+ const hooks = target[type] || (target[type] = []);
+ const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
+ pauseTracking();
+ const reset = setCurrentInstance(target);
+ const res = callWithAsyncErrorHandling(hook, target, type, args);
+ reset();
+ resetTracking();
+ return res;
+ });
+ if (prepend) {
+ hooks.unshift(wrappedHook);
+ } else {
+ hooks.push(wrappedHook);
+ }
+ return wrappedHook;
+ }
+}
+const createHook = (lifecycle) => (hook, target = currentInstance) => {
+ if (!isInSSRComponentSetup || lifecycle === "sp") {
+ injectHook(lifecycle, (...args) => hook(...args), target);
+ }
+};
+const onBeforeMount = createHook("bm");
+const onMounted = createHook("m");
+const onBeforeUpdate = createHook(
+ "bu"
+);
+const onUpdated = createHook("u");
+const onBeforeUnmount = createHook(
+ "bum"
+);
+const onUnmounted = createHook("um");
+const onServerPrefetch = createHook(
+ "sp"
+);
+const onRenderTriggered = createHook("rtg");
+const onRenderTracked = createHook("rtc");
+function onErrorCaptured(hook, target = currentInstance) {
+ injectHook("ec", hook, target);
+}
+const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
+function renderList(source, renderItem, cache, index) {
+ let ret;
+ const cached = cache;
+ const sourceIsArray = isArray$2(source);
+ if (sourceIsArray || isString$1(source)) {
+ const sourceIsReactiveArray = sourceIsArray && isReactive(source);
+ let needsWrap = false;
+ if (sourceIsReactiveArray) {
+ needsWrap = !isShallow(source);
+ source = shallowReadArray(source);
+ }
+ ret = new Array(source.length);
+ for (let i = 0, l = source.length; i < l; i++) {
+ ret[i] = renderItem(
+ needsWrap ? toReactive(source[i]) : source[i],
+ i,
+ void 0,
+ cached
+ );
+ }
+ } else if (typeof source === "number") {
+ ret = new Array(source);
+ for (let i = 0; i < source; i++) {
+ ret[i] = renderItem(i + 1, i, void 0, cached);
+ }
+ } else if (isObject$1(source)) {
+ if (source[Symbol.iterator]) {
+ ret = Array.from(
+ source,
+ (item, i) => renderItem(item, i, void 0, cached)
+ );
+ } else {
+ const keys = Object.keys(source);
+ ret = new Array(keys.length);
+ for (let i = 0, l = keys.length; i < l; i++) {
+ const key = keys[i];
+ ret[i] = renderItem(source[key], key, i, cached);
+ }
+ }
+ } else {
+ ret = [];
+ }
+ return ret;
+}
+function renderSlot(slots, name, props = {}, fallback, noSlotted) {
+ if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {
+ if (name !== "default") props.name = name;
+ return openBlock(), createBlock(
+ Fragment,
+ null,
+ [createVNode("slot", props, fallback)],
+ 64
+ );
+ }
+ let slot = slots[name];
+ if (slot && slot._c) {
+ slot._d = false;
+ }
+ openBlock();
+ const validSlotContent = slot && ensureValidVNode(slot(props));
+ const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch
+ // key attached in the `createSlots` helper, respect that
+ validSlotContent && validSlotContent.key;
+ const rendered = createBlock(
+ Fragment,
+ {
+ key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content
+ ""
+ },
+ validSlotContent || [],
+ validSlotContent && slots._ === 1 ? 64 : -2
+ );
+ if (!noSlotted && rendered.scopeId) {
+ rendered.slotScopeIds = [rendered.scopeId + "-s"];
+ }
+ if (slot && slot._c) {
+ slot._d = true;
+ }
+ return rendered;
+}
+function ensureValidVNode(vnodes) {
+ return vnodes.some((child) => {
+ if (!isVNode(child)) return true;
+ if (child.type === Comment) return false;
+ if (child.type === Fragment && !ensureValidVNode(child.children))
+ return false;
+ return true;
+ }) ? vnodes : null;
+}
+const getPublicInstance = (i) => {
+ if (!i) return null;
+ if (isStatefulComponent(i)) return getComponentPublicInstance(i);
+ return getPublicInstance(i.parent);
+};
+const publicPropertiesMap = (
+ // Move PURE marker to new line to workaround compiler discarding it
+ // due to type annotation
+ /* @__PURE__ */ extend$1(/* @__PURE__ */ Object.create(null), {
+ $: (i) => i,
+ $el: (i) => i.vnode.el,
+ $data: (i) => i.data,
+ $props: (i) => i.props,
+ $attrs: (i) => i.attrs,
+ $slots: (i) => i.slots,
+ $refs: (i) => i.refs,
+ $parent: (i) => getPublicInstance(i.parent),
+ $root: (i) => getPublicInstance(i.root),
+ $host: (i) => i.ce,
+ $emit: (i) => i.emit,
+ $options: (i) => resolveMergedOptions(i),
+ $forceUpdate: (i) => i.f || (i.f = () => {
+ queueJob(i.update);
+ }),
+ $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),
+ $watch: (i) => instanceWatch.bind(i)
+ })
+);
+const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);
+const PublicInstanceProxyHandlers = {
+ get({ _: instance }, key) {
+ if (key === "__v_skip") {
+ return true;
+ }
+ const { ctx, setupState, data, props, accessCache, type, appContext } = instance;
+ let normalizedProps;
+ if (key[0] !== "$") {
+ const n = accessCache[key];
+ if (n !== void 0) {
+ switch (n) {
+ case 1:
+ return setupState[key];
+ case 2:
+ return data[key];
+ case 4:
+ return ctx[key];
+ case 3:
+ return props[key];
+ }
+ } else if (hasSetupBinding(setupState, key)) {
+ accessCache[key] = 1;
+ return setupState[key];
+ } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+ accessCache[key] = 2;
+ return data[key];
+ } else if (
+ // only cache other properties when instance has declared (thus stable)
+ // props
+ (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)
+ ) {
+ accessCache[key] = 3;
+ return props[key];
+ } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+ accessCache[key] = 4;
+ return ctx[key];
+ } else if (shouldCacheAccess) {
+ accessCache[key] = 0;
+ }
+ }
+ const publicGetter = publicPropertiesMap[key];
+ let cssModule, globalProperties;
+ if (publicGetter) {
+ if (key === "$attrs") {
+ track(instance.attrs, "get", "");
+ }
+ return publicGetter(instance);
+ } else if (
+ // css module (injected by vue-loader)
+ (cssModule = type.__cssModules) && (cssModule = cssModule[key])
+ ) {
+ return cssModule;
+ } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
+ accessCache[key] = 4;
+ return ctx[key];
+ } else if (
+ // global properties
+ globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)
+ ) {
+ {
+ return globalProperties[key];
+ }
+ } else ;
+ },
+ set({ _: instance }, key, value) {
+ const { data, setupState, ctx } = instance;
+ if (hasSetupBinding(setupState, key)) {
+ setupState[key] = value;
+ return true;
+ } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
+ data[key] = value;
+ return true;
+ } else if (hasOwn(instance.props, key)) {
+ return false;
+ }
+ if (key[0] === "$" && key.slice(1) in instance) {
+ return false;
+ } else {
+ {
+ ctx[key] = value;
+ }
+ }
+ return true;
+ },
+ has({
+ _: { data, setupState, accessCache, ctx, appContext, propsOptions }
+ }, key) {
+ let normalizedProps;
+ return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key) || hasOwn(ctx, key) || hasOwn(publicPropertiesMap, key) || hasOwn(appContext.config.globalProperties, key);
+ },
+ defineProperty(target, key, descriptor) {
+ if (descriptor.get != null) {
+ target._.accessCache[key] = 0;
+ } else if (hasOwn(descriptor, "value")) {
+ this.set(target, key, descriptor.value, null);
+ }
+ return Reflect.defineProperty(target, key, descriptor);
+ }
+};
+function normalizePropsOrEmits(props) {
+ return isArray$2(props) ? props.reduce(
+ (normalized, p2) => (normalized[p2] = null, normalized),
+ {}
+ ) : props;
+}
+let shouldCacheAccess = true;
+function applyOptions(instance) {
+ const options = resolveMergedOptions(instance);
+ const publicThis = instance.proxy;
+ const ctx = instance.ctx;
+ shouldCacheAccess = false;
+ if (options.beforeCreate) {
+ callHook(options.beforeCreate, instance, "bc");
+ }
+ const {
+ // state
+ data: dataOptions,
+ computed: computedOptions,
+ methods,
+ watch: watchOptions,
+ provide: provideOptions,
+ inject: injectOptions,
+ // lifecycle
+ created,
+ beforeMount,
+ mounted,
+ beforeUpdate,
+ updated,
+ activated,
+ deactivated,
+ beforeDestroy,
+ beforeUnmount,
+ destroyed,
+ unmounted,
+ render,
+ renderTracked,
+ renderTriggered,
+ errorCaptured,
+ serverPrefetch,
+ // public API
+ expose,
+ inheritAttrs,
+ // assets
+ components,
+ directives,
+ filters
+ } = options;
+ const checkDuplicateProperties = null;
+ if (injectOptions) {
+ resolveInjections(injectOptions, ctx, checkDuplicateProperties);
+ }
+ if (methods) {
+ for (const key in methods) {
+ const methodHandler = methods[key];
+ if (isFunction$1(methodHandler)) {
+ {
+ ctx[key] = methodHandler.bind(publicThis);
+ }
+ }
+ }
+ }
+ if (dataOptions) {
+ const data = dataOptions.call(publicThis, publicThis);
+ if (!isObject$1(data)) ;
+ else {
+ instance.data = reactive(data);
+ }
+ }
+ shouldCacheAccess = true;
+ if (computedOptions) {
+ for (const key in computedOptions) {
+ const opt = computedOptions[key];
+ const get = isFunction$1(opt) ? opt.bind(publicThis, publicThis) : isFunction$1(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
+ const set = !isFunction$1(opt) && isFunction$1(opt.set) ? opt.set.bind(publicThis) : NOOP;
+ const c = computed({
+ get,
+ set
+ });
+ Object.defineProperty(ctx, key, {
+ enumerable: true,
+ configurable: true,
+ get: () => c.value,
+ set: (v) => c.value = v
+ });
+ }
+ }
+ if (watchOptions) {
+ for (const key in watchOptions) {
+ createWatcher(watchOptions[key], ctx, publicThis, key);
+ }
+ }
+ if (provideOptions) {
+ const provides = isFunction$1(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
+ Reflect.ownKeys(provides).forEach((key) => {
+ provide(key, provides[key]);
+ });
+ }
+ if (created) {
+ callHook(created, instance, "c");
+ }
+ function registerLifecycleHook(register, hook) {
+ if (isArray$2(hook)) {
+ hook.forEach((_hook) => register(_hook.bind(publicThis)));
+ } else if (hook) {
+ register(hook.bind(publicThis));
+ }
+ }
+ registerLifecycleHook(onBeforeMount, beforeMount);
+ registerLifecycleHook(onMounted, mounted);
+ registerLifecycleHook(onBeforeUpdate, beforeUpdate);
+ registerLifecycleHook(onUpdated, updated);
+ registerLifecycleHook(onActivated, activated);
+ registerLifecycleHook(onDeactivated, deactivated);
+ registerLifecycleHook(onErrorCaptured, errorCaptured);
+ registerLifecycleHook(onRenderTracked, renderTracked);
+ registerLifecycleHook(onRenderTriggered, renderTriggered);
+ registerLifecycleHook(onBeforeUnmount, beforeUnmount);
+ registerLifecycleHook(onUnmounted, unmounted);
+ registerLifecycleHook(onServerPrefetch, serverPrefetch);
+ if (isArray$2(expose)) {
+ if (expose.length) {
+ const exposed = instance.exposed || (instance.exposed = {});
+ expose.forEach((key) => {
+ Object.defineProperty(exposed, key, {
+ get: () => publicThis[key],
+ set: (val) => publicThis[key] = val
+ });
+ });
+ } else if (!instance.exposed) {
+ instance.exposed = {};
+ }
+ }
+ if (render && instance.render === NOOP) {
+ instance.render = render;
+ }
+ if (inheritAttrs != null) {
+ instance.inheritAttrs = inheritAttrs;
+ }
+ if (components) instance.components = components;
+ if (directives) instance.directives = directives;
+ if (serverPrefetch) {
+ markAsyncBoundary(instance);
+ }
+}
+function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {
+ if (isArray$2(injectOptions)) {
+ injectOptions = normalizeInject(injectOptions);
+ }
+ for (const key in injectOptions) {
+ const opt = injectOptions[key];
+ let injected;
+ if (isObject$1(opt)) {
+ if ("default" in opt) {
+ injected = inject(
+ opt.from || key,
+ opt.default,
+ true
+ );
+ } else {
+ injected = inject(opt.from || key);
+ }
+ } else {
+ injected = inject(opt);
+ }
+ if (isRef(injected)) {
+ Object.defineProperty(ctx, key, {
+ enumerable: true,
+ configurable: true,
+ get: () => injected.value,
+ set: (v) => injected.value = v
+ });
+ } else {
+ ctx[key] = injected;
+ }
+ }
+}
+function callHook(hook, instance, type) {
+ callWithAsyncErrorHandling(
+ isArray$2(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy),
+ instance,
+ type
+ );
+}
+function createWatcher(raw, ctx, publicThis, key) {
+ let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
+ if (isString$1(raw)) {
+ const handler = ctx[raw];
+ if (isFunction$1(handler)) {
+ {
+ watch(getter, handler);
+ }
+ }
+ } else if (isFunction$1(raw)) {
+ {
+ watch(getter, raw.bind(publicThis));
+ }
+ } else if (isObject$1(raw)) {
+ if (isArray$2(raw)) {
+ raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
+ } else {
+ const handler = isFunction$1(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
+ if (isFunction$1(handler)) {
+ watch(getter, handler, raw);
+ }
+ }
+ } else ;
+}
+function resolveMergedOptions(instance) {
+ const base = instance.type;
+ const { mixins, extends: extendsOptions } = base;
+ const {
+ mixins: globalMixins,
+ optionsCache: cache,
+ config: { optionMergeStrategies }
+ } = instance.appContext;
+ const cached = cache.get(base);
+ let resolved;
+ if (cached) {
+ resolved = cached;
+ } else if (!globalMixins.length && !mixins && !extendsOptions) {
+ {
+ resolved = base;
+ }
+ } else {
+ resolved = {};
+ if (globalMixins.length) {
+ globalMixins.forEach(
+ (m) => mergeOptions$1(resolved, m, optionMergeStrategies, true)
+ );
+ }
+ mergeOptions$1(resolved, base, optionMergeStrategies);
+ }
+ if (isObject$1(base)) {
+ cache.set(base, resolved);
+ }
+ return resolved;
+}
+function mergeOptions$1(to, from, strats, asMixin = false) {
+ const { mixins, extends: extendsOptions } = from;
+ if (extendsOptions) {
+ mergeOptions$1(to, extendsOptions, strats, true);
+ }
+ if (mixins) {
+ mixins.forEach(
+ (m) => mergeOptions$1(to, m, strats, true)
+ );
+ }
+ for (const key in from) {
+ if (asMixin && key === "expose") ;
+ else {
+ const strat = internalOptionMergeStrats[key] || strats && strats[key];
+ to[key] = strat ? strat(to[key], from[key]) : from[key];
+ }
+ }
+ return to;
+}
+const internalOptionMergeStrats = {
+ data: mergeDataFn,
+ props: mergeEmitsOrPropsOptions,
+ emits: mergeEmitsOrPropsOptions,
+ // objects
+ methods: mergeObjectOptions,
+ computed: mergeObjectOptions,
+ // lifecycle
+ beforeCreate: mergeAsArray,
+ created: mergeAsArray,
+ beforeMount: mergeAsArray,
+ mounted: mergeAsArray,
+ beforeUpdate: mergeAsArray,
+ updated: mergeAsArray,
+ beforeDestroy: mergeAsArray,
+ beforeUnmount: mergeAsArray,
+ destroyed: mergeAsArray,
+ unmounted: mergeAsArray,
+ activated: mergeAsArray,
+ deactivated: mergeAsArray,
+ errorCaptured: mergeAsArray,
+ serverPrefetch: mergeAsArray,
+ // assets
+ components: mergeObjectOptions,
+ directives: mergeObjectOptions,
+ // watch
+ watch: mergeWatchOptions,
+ // provide / inject
+ provide: mergeDataFn,
+ inject: mergeInject
+};
+function mergeDataFn(to, from) {
+ if (!from) {
+ return to;
+ }
+ if (!to) {
+ return from;
+ }
+ return function mergedDataFn() {
+ return extend$1(
+ isFunction$1(to) ? to.call(this, this) : to,
+ isFunction$1(from) ? from.call(this, this) : from
+ );
+ };
+}
+function mergeInject(to, from) {
+ return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
+}
+function normalizeInject(raw) {
+ if (isArray$2(raw)) {
+ const res = {};
+ for (let i = 0; i < raw.length; i++) {
+ res[raw[i]] = raw[i];
+ }
+ return res;
+ }
+ return raw;
+}
+function mergeAsArray(to, from) {
+ return to ? [...new Set([].concat(to, from))] : from;
+}
+function mergeObjectOptions(to, from) {
+ return to ? extend$1(/* @__PURE__ */ Object.create(null), to, from) : from;
+}
+function mergeEmitsOrPropsOptions(to, from) {
+ if (to) {
+ if (isArray$2(to) && isArray$2(from)) {
+ return [.../* @__PURE__ */ new Set([...to, ...from])];
+ }
+ return extend$1(
+ /* @__PURE__ */ Object.create(null),
+ normalizePropsOrEmits(to),
+ normalizePropsOrEmits(from != null ? from : {})
+ );
+ } else {
+ return from;
+ }
+}
+function mergeWatchOptions(to, from) {
+ if (!to) return from;
+ if (!from) return to;
+ const merged = extend$1(/* @__PURE__ */ Object.create(null), to);
+ for (const key in from) {
+ merged[key] = mergeAsArray(to[key], from[key]);
+ }
+ return merged;
+}
+function createAppContext() {
+ return {
+ app: null,
+ config: {
+ isNativeTag: NO,
+ performance: false,
+ globalProperties: {},
+ optionMergeStrategies: {},
+ errorHandler: void 0,
+ warnHandler: void 0,
+ compilerOptions: {}
+ },
+ mixins: [],
+ components: {},
+ directives: {},
+ provides: /* @__PURE__ */ Object.create(null),
+ optionsCache: /* @__PURE__ */ new WeakMap(),
+ propsCache: /* @__PURE__ */ new WeakMap(),
+ emitsCache: /* @__PURE__ */ new WeakMap()
+ };
+}
+let uid$1 = 0;
+function createAppAPI(render, hydrate) {
+ return function createApp2(rootComponent, rootProps = null) {
+ if (!isFunction$1(rootComponent)) {
+ rootComponent = extend$1({}, rootComponent);
+ }
+ if (rootProps != null && !isObject$1(rootProps)) {
+ rootProps = null;
+ }
+ const context = createAppContext();
+ const installedPlugins = /* @__PURE__ */ new WeakSet();
+ const pluginCleanupFns = [];
+ let isMounted = false;
+ const app2 = context.app = {
+ _uid: uid$1++,
+ _component: rootComponent,
+ _props: rootProps,
+ _container: null,
+ _context: context,
+ _instance: null,
+ version,
+ get config() {
+ return context.config;
+ },
+ set config(v) {
+ },
+ use(plugin, ...options) {
+ if (installedPlugins.has(plugin)) ;
+ else if (plugin && isFunction$1(plugin.install)) {
+ installedPlugins.add(plugin);
+ plugin.install(app2, ...options);
+ } else if (isFunction$1(plugin)) {
+ installedPlugins.add(plugin);
+ plugin(app2, ...options);
+ } else ;
+ return app2;
+ },
+ mixin(mixin) {
+ {
+ if (!context.mixins.includes(mixin)) {
+ context.mixins.push(mixin);
+ }
+ }
+ return app2;
+ },
+ component(name, component) {
+ if (!component) {
+ return context.components[name];
+ }
+ context.components[name] = component;
+ return app2;
+ },
+ directive(name, directive) {
+ if (!directive) {
+ return context.directives[name];
+ }
+ context.directives[name] = directive;
+ return app2;
+ },
+ mount(rootContainer, isHydrate, namespace) {
+ if (!isMounted) {
+ const vnode = app2._ceVNode || createVNode(rootComponent, rootProps);
+ vnode.appContext = context;
+ if (namespace === true) {
+ namespace = "svg";
+ } else if (namespace === false) {
+ namespace = void 0;
+ }
+ {
+ render(vnode, rootContainer, namespace);
+ }
+ isMounted = true;
+ app2._container = rootContainer;
+ rootContainer.__vue_app__ = app2;
+ return getComponentPublicInstance(vnode.component);
+ }
+ },
+ onUnmount(cleanupFn) {
+ pluginCleanupFns.push(cleanupFn);
+ },
+ unmount() {
+ if (isMounted) {
+ callWithAsyncErrorHandling(
+ pluginCleanupFns,
+ app2._instance,
+ 16
+ );
+ render(null, app2._container);
+ delete app2._container.__vue_app__;
+ }
+ },
+ provide(key, value) {
+ context.provides[key] = value;
+ return app2;
+ },
+ runWithContext(fn) {
+ const lastApp = currentApp;
+ currentApp = app2;
+ try {
+ return fn();
+ } finally {
+ currentApp = lastApp;
+ }
+ }
+ };
+ return app2;
+ };
+}
+let currentApp = null;
+function provide(key, value) {
+ if (!currentInstance) ;
+ else {
+ let provides = currentInstance.provides;
+ const parentProvides = currentInstance.parent && currentInstance.parent.provides;
+ if (parentProvides === provides) {
+ provides = currentInstance.provides = Object.create(parentProvides);
+ }
+ provides[key] = value;
+ }
+}
+function inject(key, defaultValue, treatDefaultAsFactory = false) {
+ const instance = currentInstance || currentRenderingInstance;
+ if (instance || currentApp) {
+ const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
+ if (provides && key in provides) {
+ return provides[key];
+ } else if (arguments.length > 1) {
+ return treatDefaultAsFactory && isFunction$1(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
+ } else ;
+ }
+}
+function hasInjectionContext() {
+ return !!(currentInstance || currentRenderingInstance || currentApp);
+}
+const internalObjectProto = {};
+const createInternalObject = () => Object.create(internalObjectProto);
+const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
+function initProps(instance, rawProps, isStateful, isSSR = false) {
+ const props = {};
+ const attrs = createInternalObject();
+ instance.propsDefaults = /* @__PURE__ */ Object.create(null);
+ setFullProps(instance, rawProps, props, attrs);
+ for (const key in instance.propsOptions[0]) {
+ if (!(key in props)) {
+ props[key] = void 0;
+ }
+ }
+ if (isStateful) {
+ instance.props = isSSR ? props : shallowReactive(props);
+ } else {
+ if (!instance.type.props) {
+ instance.props = attrs;
+ } else {
+ instance.props = props;
+ }
+ }
+ instance.attrs = attrs;
+}
+function updateProps(instance, rawProps, rawPrevProps, optimized) {
+ const {
+ props,
+ attrs,
+ vnode: { patchFlag }
+ } = instance;
+ const rawCurrentProps = toRaw(props);
+ const [options] = instance.propsOptions;
+ let hasAttrsChanged = false;
+ if (
+ // always force full diff in dev
+ // - #1942 if hmr is enabled with sfc component
+ // - vite#872 non-sfc component used by sfc component
+ (optimized || patchFlag > 0) && !(patchFlag & 16)
+ ) {
+ if (patchFlag & 8) {
+ const propsToUpdate = instance.vnode.dynamicProps;
+ for (let i = 0; i < propsToUpdate.length; i++) {
+ let key = propsToUpdate[i];
+ if (isEmitListener(instance.emitsOptions, key)) {
+ continue;
+ }
+ const value = rawProps[key];
+ if (options) {
+ if (hasOwn(attrs, key)) {
+ if (value !== attrs[key]) {
+ attrs[key] = value;
+ hasAttrsChanged = true;
+ }
+ } else {
+ const camelizedKey = camelize(key);
+ props[camelizedKey] = resolvePropValue(
+ options,
+ rawCurrentProps,
+ camelizedKey,
+ value,
+ instance,
+ false
+ );
+ }
+ } else {
+ if (value !== attrs[key]) {
+ attrs[key] = value;
+ hasAttrsChanged = true;
+ }
+ }
+ }
+ }
+ } else {
+ if (setFullProps(instance, rawProps, props, attrs)) {
+ hasAttrsChanged = true;
+ }
+ let kebabKey;
+ for (const key in rawCurrentProps) {
+ if (!rawProps || // for camelCase
+ !hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case
+ // and converted to camelCase (#955)
+ ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey))) {
+ if (options) {
+ if (rawPrevProps && // for camelCase
+ (rawPrevProps[key] !== void 0 || // for kebab-case
+ rawPrevProps[kebabKey] !== void 0)) {
+ props[key] = resolvePropValue(
+ options,
+ rawCurrentProps,
+ key,
+ void 0,
+ instance,
+ true
+ );
+ }
+ } else {
+ delete props[key];
+ }
+ }
+ }
+ if (attrs !== rawCurrentProps) {
+ for (const key in attrs) {
+ if (!rawProps || !hasOwn(rawProps, key) && true) {
+ delete attrs[key];
+ hasAttrsChanged = true;
+ }
+ }
+ }
+ }
+ if (hasAttrsChanged) {
+ trigger(instance.attrs, "set", "");
+ }
+}
+function setFullProps(instance, rawProps, props, attrs) {
+ const [options, needCastKeys] = instance.propsOptions;
+ let hasAttrsChanged = false;
+ let rawCastValues;
+ if (rawProps) {
+ for (let key in rawProps) {
+ if (isReservedProp(key)) {
+ continue;
+ }
+ const value = rawProps[key];
+ let camelKey;
+ if (options && hasOwn(options, camelKey = camelize(key))) {
+ if (!needCastKeys || !needCastKeys.includes(camelKey)) {
+ props[camelKey] = value;
+ } else {
+ (rawCastValues || (rawCastValues = {}))[camelKey] = value;
+ }
+ } else if (!isEmitListener(instance.emitsOptions, key)) {
+ if (!(key in attrs) || value !== attrs[key]) {
+ attrs[key] = value;
+ hasAttrsChanged = true;
+ }
+ }
+ }
+ }
+ if (needCastKeys) {
+ const rawCurrentProps = toRaw(props);
+ const castValues = rawCastValues || EMPTY_OBJ;
+ for (let i = 0; i < needCastKeys.length; i++) {
+ const key = needCastKeys[i];
+ props[key] = resolvePropValue(
+ options,
+ rawCurrentProps,
+ key,
+ castValues[key],
+ instance,
+ !hasOwn(castValues, key)
+ );
+ }
+ }
+ return hasAttrsChanged;
+}
+function resolvePropValue(options, props, key, value, instance, isAbsent) {
+ const opt = options[key];
+ if (opt != null) {
+ const hasDefault = hasOwn(opt, "default");
+ if (hasDefault && value === void 0) {
+ const defaultValue = opt.default;
+ if (opt.type !== Function && !opt.skipFactory && isFunction$1(defaultValue)) {
+ const { propsDefaults } = instance;
+ if (key in propsDefaults) {
+ value = propsDefaults[key];
+ } else {
+ const reset = setCurrentInstance(instance);
+ value = propsDefaults[key] = defaultValue.call(
+ null,
+ props
+ );
+ reset();
+ }
+ } else {
+ value = defaultValue;
+ }
+ if (instance.ce) {
+ instance.ce._setProp(key, value);
+ }
+ }
+ if (opt[
+ 0
+ /* shouldCast */
+ ]) {
+ if (isAbsent && !hasDefault) {
+ value = false;
+ } else if (opt[
+ 1
+ /* shouldCastTrue */
+ ] && (value === "" || value === hyphenate(key))) {
+ value = true;
+ }
+ }
+ }
+ return value;
+}
+const mixinPropsCache = /* @__PURE__ */ new WeakMap();
+function normalizePropsOptions(comp, appContext, asMixin = false) {
+ const cache = asMixin ? mixinPropsCache : appContext.propsCache;
+ const cached = cache.get(comp);
+ if (cached) {
+ return cached;
+ }
+ const raw = comp.props;
+ const normalized = {};
+ const needCastKeys = [];
+ let hasExtends = false;
+ if (!isFunction$1(comp)) {
+ const extendProps = (raw2) => {
+ hasExtends = true;
+ const [props, keys] = normalizePropsOptions(raw2, appContext, true);
+ extend$1(normalized, props);
+ if (keys) needCastKeys.push(...keys);
+ };
+ if (!asMixin && appContext.mixins.length) {
+ appContext.mixins.forEach(extendProps);
+ }
+ if (comp.extends) {
+ extendProps(comp.extends);
+ }
+ if (comp.mixins) {
+ comp.mixins.forEach(extendProps);
+ }
+ }
+ if (!raw && !hasExtends) {
+ if (isObject$1(comp)) {
+ cache.set(comp, EMPTY_ARR);
+ }
+ return EMPTY_ARR;
+ }
+ if (isArray$2(raw)) {
+ for (let i = 0; i < raw.length; i++) {
+ const normalizedKey = camelize(raw[i]);
+ if (validatePropName(normalizedKey)) {
+ normalized[normalizedKey] = EMPTY_OBJ;
+ }
+ }
+ } else if (raw) {
+ for (const key in raw) {
+ const normalizedKey = camelize(key);
+ if (validatePropName(normalizedKey)) {
+ const opt = raw[key];
+ const prop = normalized[normalizedKey] = isArray$2(opt) || isFunction$1(opt) ? { type: opt } : extend$1({}, opt);
+ const propType = prop.type;
+ let shouldCast = false;
+ let shouldCastTrue = true;
+ if (isArray$2(propType)) {
+ for (let index = 0; index < propType.length; ++index) {
+ const type = propType[index];
+ const typeName = isFunction$1(type) && type.name;
+ if (typeName === "Boolean") {
+ shouldCast = true;
+ break;
+ } else if (typeName === "String") {
+ shouldCastTrue = false;
+ }
+ }
+ } else {
+ shouldCast = isFunction$1(propType) && propType.name === "Boolean";
+ }
+ prop[
+ 0
+ /* shouldCast */
+ ] = shouldCast;
+ prop[
+ 1
+ /* shouldCastTrue */
+ ] = shouldCastTrue;
+ if (shouldCast || hasOwn(prop, "default")) {
+ needCastKeys.push(normalizedKey);
+ }
+ }
+ }
+ }
+ const res = [normalized, needCastKeys];
+ if (isObject$1(comp)) {
+ cache.set(comp, res);
+ }
+ return res;
+}
+function validatePropName(key) {
+ if (key[0] !== "$" && !isReservedProp(key)) {
+ return true;
+ }
+ return false;
+}
+const isInternalKey = (key) => key[0] === "_" || key === "$stable";
+const normalizeSlotValue = (value) => isArray$2(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
+const normalizeSlot$1 = (key, rawSlot, ctx) => {
+ if (rawSlot._n) {
+ return rawSlot;
+ }
+ const normalized = withCtx((...args) => {
+ if (false) ;
+ return normalizeSlotValue(rawSlot(...args));
+ }, ctx);
+ normalized._c = false;
+ return normalized;
+};
+const normalizeObjectSlots = (rawSlots, slots, instance) => {
+ const ctx = rawSlots._ctx;
+ for (const key in rawSlots) {
+ if (isInternalKey(key)) continue;
+ const value = rawSlots[key];
+ if (isFunction$1(value)) {
+ slots[key] = normalizeSlot$1(key, value, ctx);
+ } else if (value != null) {
+ const normalized = normalizeSlotValue(value);
+ slots[key] = () => normalized;
+ }
+ }
+};
+const normalizeVNodeSlots = (instance, children) => {
+ const normalized = normalizeSlotValue(children);
+ instance.slots.default = () => normalized;
+};
+const assignSlots = (slots, children, optimized) => {
+ for (const key in children) {
+ if (optimized || key !== "_") {
+ slots[key] = children[key];
+ }
+ }
+};
+const initSlots = (instance, children, optimized) => {
+ const slots = instance.slots = createInternalObject();
+ if (instance.vnode.shapeFlag & 32) {
+ const type = children._;
+ if (type) {
+ assignSlots(slots, children, optimized);
+ if (optimized) {
+ def(slots, "_", type, true);
+ }
+ } else {
+ normalizeObjectSlots(children, slots);
+ }
+ } else if (children) {
+ normalizeVNodeSlots(instance, children);
+ }
+};
+const updateSlots = (instance, children, optimized) => {
+ const { vnode, slots } = instance;
+ let needDeletionCheck = true;
+ let deletionComparisonTarget = EMPTY_OBJ;
+ if (vnode.shapeFlag & 32) {
+ const type = children._;
+ if (type) {
+ if (optimized && type === 1) {
+ needDeletionCheck = false;
+ } else {
+ assignSlots(slots, children, optimized);
+ }
+ } else {
+ needDeletionCheck = !children.$stable;
+ normalizeObjectSlots(children, slots);
+ }
+ deletionComparisonTarget = children;
+ } else if (children) {
+ normalizeVNodeSlots(instance, children);
+ deletionComparisonTarget = { default: 1 };
+ }
+ if (needDeletionCheck) {
+ for (const key in slots) {
+ if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {
+ delete slots[key];
+ }
+ }
+ }
+};
+const queuePostRenderEffect = queueEffectWithSuspense;
+function createRenderer(options) {
+ return baseCreateRenderer(options);
+}
+function baseCreateRenderer(options, createHydrationFns) {
+ const target = getGlobalThis();
+ target.__VUE__ = true;
+ const {
+ insert: hostInsert,
+ remove: hostRemove,
+ patchProp: hostPatchProp,
+ createElement: hostCreateElement,
+ createText: hostCreateText,
+ createComment: hostCreateComment,
+ setText: hostSetText,
+ setElementText: hostSetElementText,
+ parentNode: hostParentNode,
+ nextSibling: hostNextSibling,
+ setScopeId: hostSetScopeId = NOOP,
+ insertStaticContent: hostInsertStaticContent
+ } = options;
+ const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {
+ if (n1 === n2) {
+ return;
+ }
+ if (n1 && !isSameVNodeType(n1, n2)) {
+ anchor = getNextHostNode(n1);
+ unmount(n1, parentComponent, parentSuspense, true);
+ n1 = null;
+ }
+ if (n2.patchFlag === -2) {
+ optimized = false;
+ n2.dynamicChildren = null;
+ }
+ const { type, ref: ref3, shapeFlag } = n2;
+ switch (type) {
+ case Text:
+ processText(n1, n2, container, anchor);
+ break;
+ case Comment:
+ processCommentNode(n1, n2, container, anchor);
+ break;
+ case Static:
+ if (n1 == null) {
+ mountStaticNode(n2, container, anchor, namespace);
+ }
+ break;
+ case Fragment:
+ processFragment(
+ n1,
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ break;
+ default:
+ if (shapeFlag & 1) {
+ processElement(
+ n1,
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else if (shapeFlag & 6) {
+ processComponent(
+ n1,
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else if (shapeFlag & 64) {
+ type.process(
+ n1,
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized,
+ internals
+ );
+ } else if (shapeFlag & 128) {
+ type.process(
+ n1,
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized,
+ internals
+ );
+ } else ;
+ }
+ if (ref3 != null && parentComponent) {
+ setRef(ref3, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
+ }
+ };
+ const processText = (n1, n2, container, anchor) => {
+ if (n1 == null) {
+ hostInsert(
+ n2.el = hostCreateText(n2.children),
+ container,
+ anchor
+ );
+ } else {
+ const el = n2.el = n1.el;
+ if (n2.children !== n1.children) {
+ hostSetText(el, n2.children);
+ }
+ }
+ };
+ const processCommentNode = (n1, n2, container, anchor) => {
+ if (n1 == null) {
+ hostInsert(
+ n2.el = hostCreateComment(n2.children || ""),
+ container,
+ anchor
+ );
+ } else {
+ n2.el = n1.el;
+ }
+ };
+ const mountStaticNode = (n2, container, anchor, namespace) => {
+ [n2.el, n2.anchor] = hostInsertStaticContent(
+ n2.children,
+ container,
+ anchor,
+ namespace,
+ n2.el,
+ n2.anchor
+ );
+ };
+ const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
+ let next;
+ while (el && el !== anchor) {
+ next = hostNextSibling(el);
+ hostInsert(el, container, nextSibling);
+ el = next;
+ }
+ hostInsert(anchor, container, nextSibling);
+ };
+ const removeStaticNode = ({ el, anchor }) => {
+ let next;
+ while (el && el !== anchor) {
+ next = hostNextSibling(el);
+ hostRemove(el);
+ el = next;
+ }
+ hostRemove(anchor);
+ };
+ const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ if (n2.type === "svg") {
+ namespace = "svg";
+ } else if (n2.type === "math") {
+ namespace = "mathml";
+ }
+ if (n1 == null) {
+ mountElement(
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else {
+ patchElement(
+ n1,
+ n2,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ }
+ };
+ const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ let el;
+ let vnodeHook;
+ const { props, shapeFlag, transition, dirs } = vnode;
+ el = vnode.el = hostCreateElement(
+ vnode.type,
+ namespace,
+ props && props.is,
+ props
+ );
+ if (shapeFlag & 8) {
+ hostSetElementText(el, vnode.children);
+ } else if (shapeFlag & 16) {
+ mountChildren(
+ vnode.children,
+ el,
+ null,
+ parentComponent,
+ parentSuspense,
+ resolveChildrenNamespace(vnode, namespace),
+ slotScopeIds,
+ optimized
+ );
+ }
+ if (dirs) {
+ invokeDirectiveHook(vnode, null, parentComponent, "created");
+ }
+ setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
+ if (props) {
+ for (const key in props) {
+ if (key !== "value" && !isReservedProp(key)) {
+ hostPatchProp(el, key, null, props[key], namespace, parentComponent);
+ }
+ }
+ if ("value" in props) {
+ hostPatchProp(el, "value", null, props.value, namespace);
+ }
+ if (vnodeHook = props.onVnodeBeforeMount) {
+ invokeVNodeHook(vnodeHook, parentComponent, vnode);
+ }
+ }
+ if (dirs) {
+ invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
+ }
+ const needCallTransitionHooks = needTransition(parentSuspense, transition);
+ if (needCallTransitionHooks) {
+ transition.beforeEnter(el);
+ }
+ hostInsert(el, container, anchor);
+ if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) {
+ queuePostRenderEffect(() => {
+ vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+ needCallTransitionHooks && transition.enter(el);
+ dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
+ }, parentSuspense);
+ }
+ };
+ const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
+ if (scopeId) {
+ hostSetScopeId(el, scopeId);
+ }
+ if (slotScopeIds) {
+ for (let i = 0; i < slotScopeIds.length; i++) {
+ hostSetScopeId(el, slotScopeIds[i]);
+ }
+ }
+ if (parentComponent) {
+ let subTree = parentComponent.subTree;
+ if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
+ const parentVNode = parentComponent.vnode;
+ setScopeId(
+ el,
+ parentVNode,
+ parentVNode.scopeId,
+ parentVNode.slotScopeIds,
+ parentComponent.parent
+ );
+ }
+ }
+ };
+ const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
+ for (let i = start; i < children.length; i++) {
+ const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
+ patch(
+ null,
+ child,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ }
+ };
+ const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ const el = n2.el = n1.el;
+ let { patchFlag, dynamicChildren, dirs } = n2;
+ patchFlag |= n1.patchFlag & 16;
+ const oldProps = n1.props || EMPTY_OBJ;
+ const newProps = n2.props || EMPTY_OBJ;
+ let vnodeHook;
+ parentComponent && toggleRecurse(parentComponent, false);
+ if (vnodeHook = newProps.onVnodeBeforeUpdate) {
+ invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+ }
+ if (dirs) {
+ invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
+ }
+ parentComponent && toggleRecurse(parentComponent, true);
+ if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {
+ hostSetElementText(el, "");
+ }
+ if (dynamicChildren) {
+ patchBlockChildren(
+ n1.dynamicChildren,
+ dynamicChildren,
+ el,
+ parentComponent,
+ parentSuspense,
+ resolveChildrenNamespace(n2, namespace),
+ slotScopeIds
+ );
+ } else if (!optimized) {
+ patchChildren(
+ n1,
+ n2,
+ el,
+ null,
+ parentComponent,
+ parentSuspense,
+ resolveChildrenNamespace(n2, namespace),
+ slotScopeIds,
+ false
+ );
+ }
+ if (patchFlag > 0) {
+ if (patchFlag & 16) {
+ patchProps(el, oldProps, newProps, parentComponent, namespace);
+ } else {
+ if (patchFlag & 2) {
+ if (oldProps.class !== newProps.class) {
+ hostPatchProp(el, "class", null, newProps.class, namespace);
+ }
+ }
+ if (patchFlag & 4) {
+ hostPatchProp(el, "style", oldProps.style, newProps.style, namespace);
+ }
+ if (patchFlag & 8) {
+ const propsToUpdate = n2.dynamicProps;
+ for (let i = 0; i < propsToUpdate.length; i++) {
+ const key = propsToUpdate[i];
+ const prev = oldProps[key];
+ const next = newProps[key];
+ if (next !== prev || key === "value") {
+ hostPatchProp(el, key, prev, next, namespace, parentComponent);
+ }
+ }
+ }
+ }
+ if (patchFlag & 1) {
+ if (n1.children !== n2.children) {
+ hostSetElementText(el, n2.children);
+ }
+ }
+ } else if (!optimized && dynamicChildren == null) {
+ patchProps(el, oldProps, newProps, parentComponent, namespace);
+ }
+ if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
+ queuePostRenderEffect(() => {
+ vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
+ dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
+ }, parentSuspense);
+ }
+ };
+ const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {
+ for (let i = 0; i < newChildren.length; i++) {
+ const oldVNode = oldChildren[i];
+ const newVNode = newChildren[i];
+ const container = (
+ // oldVNode may be an errored async setup() component inside Suspense
+ // which will not have a mounted element
+ oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
+ // of the Fragment itself so it can move its children.
+ (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
+ // which also requires the correct parent container
+ !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
+ oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
+ // In other cases, the parent container is not actually used so we
+ // just pass the block element here to avoid a DOM parentNode call.
+ fallbackContainer
+ )
+ );
+ patch(
+ oldVNode,
+ newVNode,
+ container,
+ null,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ true
+ );
+ }
+ };
+ const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {
+ if (oldProps !== newProps) {
+ if (oldProps !== EMPTY_OBJ) {
+ for (const key in oldProps) {
+ if (!isReservedProp(key) && !(key in newProps)) {
+ hostPatchProp(
+ el,
+ key,
+ oldProps[key],
+ null,
+ namespace,
+ parentComponent
+ );
+ }
+ }
+ }
+ for (const key in newProps) {
+ if (isReservedProp(key)) continue;
+ const next = newProps[key];
+ const prev = oldProps[key];
+ if (next !== prev && key !== "value") {
+ hostPatchProp(el, key, prev, next, namespace, parentComponent);
+ }
+ }
+ if ("value" in newProps) {
+ hostPatchProp(el, "value", oldProps.value, newProps.value, namespace);
+ }
+ }
+ };
+ const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
+ const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
+ let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
+ if (fragmentSlotScopeIds) {
+ slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
+ }
+ if (n1 == null) {
+ hostInsert(fragmentStartAnchor, container, anchor);
+ hostInsert(fragmentEndAnchor, container, anchor);
+ mountChildren(
+ // #10007
+ // such fragment like `<>>` will be compiled into
+ // a fragment which doesn't have a children.
+ // In this case fallback to an empty array
+ n2.children || [],
+ container,
+ fragmentEndAnchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else {
+ if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
+ // of renderSlot() with no valid children
+ n1.dynamicChildren) {
+ patchBlockChildren(
+ n1.dynamicChildren,
+ dynamicChildren,
+ container,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds
+ );
+ if (
+ // #2080 if the stable fragment has a key, it's a that may
+ // get moved around. Make sure all root level vnodes inherit el.
+ // #2134 or if it's a component root, it may also get moved around
+ // as the component is being moved.
+ n2.key != null || parentComponent && n2 === parentComponent.subTree
+ ) {
+ traverseStaticChildren(
+ n1,
+ n2,
+ true
+ /* shallow */
+ );
+ }
+ } else {
+ patchChildren(
+ n1,
+ n2,
+ container,
+ fragmentEndAnchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ }
+ }
+ };
+ const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ n2.slotScopeIds = slotScopeIds;
+ if (n1 == null) {
+ if (n2.shapeFlag & 512) {
+ parentComponent.ctx.activate(
+ n2,
+ container,
+ anchor,
+ namespace,
+ optimized
+ );
+ } else {
+ mountComponent(
+ n2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ optimized
+ );
+ }
+ } else {
+ updateComponent(n1, n2, optimized);
+ }
+ };
+ const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {
+ const instance = initialVNode.component = createComponentInstance(
+ initialVNode,
+ parentComponent,
+ parentSuspense
+ );
+ if (isKeepAlive(initialVNode)) {
+ instance.ctx.renderer = internals;
+ }
+ {
+ setupComponent(instance, false, optimized);
+ }
+ if (instance.asyncDep) {
+ parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
+ if (!initialVNode.el) {
+ const placeholder = instance.subTree = createVNode(Comment);
+ processCommentNode(null, placeholder, container, anchor);
+ }
+ } else {
+ setupRenderEffect(
+ instance,
+ initialVNode,
+ container,
+ anchor,
+ parentSuspense,
+ namespace,
+ optimized
+ );
+ }
+ };
+ const updateComponent = (n1, n2, optimized) => {
+ const instance = n2.component = n1.component;
+ if (shouldUpdateComponent(n1, n2, optimized)) {
+ if (instance.asyncDep && !instance.asyncResolved) {
+ updateComponentPreRender(instance, n2, optimized);
+ return;
+ } else {
+ instance.next = n2;
+ instance.update();
+ }
+ } else {
+ n2.el = n1.el;
+ instance.vnode = n2;
+ }
+ };
+ const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {
+ const componentUpdateFn = () => {
+ if (!instance.isMounted) {
+ let vnodeHook;
+ const { el, props } = initialVNode;
+ const { bm, m, parent, root, type } = instance;
+ const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
+ toggleRecurse(instance, false);
+ if (bm) {
+ invokeArrayFns(bm);
+ }
+ if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) {
+ invokeVNodeHook(vnodeHook, parent, initialVNode);
+ }
+ toggleRecurse(instance, true);
+ {
+ if (root.ce) {
+ root.ce._injectChildStyle(type);
+ }
+ const subTree = instance.subTree = renderComponentRoot(instance);
+ patch(
+ null,
+ subTree,
+ container,
+ anchor,
+ instance,
+ parentSuspense,
+ namespace
+ );
+ initialVNode.el = subTree.el;
+ }
+ if (m) {
+ queuePostRenderEffect(m, parentSuspense);
+ }
+ if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) {
+ const scopedInitialVNode = initialVNode;
+ queuePostRenderEffect(
+ () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),
+ parentSuspense
+ );
+ }
+ if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
+ instance.a && queuePostRenderEffect(instance.a, parentSuspense);
+ }
+ instance.isMounted = true;
+ initialVNode = container = anchor = null;
+ } else {
+ let { next, bu, u, parent, vnode } = instance;
+ {
+ const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
+ if (nonHydratedAsyncRoot) {
+ if (next) {
+ next.el = vnode.el;
+ updateComponentPreRender(instance, next, optimized);
+ }
+ nonHydratedAsyncRoot.asyncDep.then(() => {
+ if (!instance.isUnmounted) {
+ componentUpdateFn();
+ }
+ });
+ return;
+ }
+ }
+ let originNext = next;
+ let vnodeHook;
+ toggleRecurse(instance, false);
+ if (next) {
+ next.el = vnode.el;
+ updateComponentPreRender(instance, next, optimized);
+ } else {
+ next = vnode;
+ }
+ if (bu) {
+ invokeArrayFns(bu);
+ }
+ if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
+ invokeVNodeHook(vnodeHook, parent, next, vnode);
+ }
+ toggleRecurse(instance, true);
+ const nextTree = renderComponentRoot(instance);
+ const prevTree = instance.subTree;
+ instance.subTree = nextTree;
+ patch(
+ prevTree,
+ nextTree,
+ // parent may have changed if it's in a teleport
+ hostParentNode(prevTree.el),
+ // anchor may have changed if it's in a fragment
+ getNextHostNode(prevTree),
+ instance,
+ parentSuspense,
+ namespace
+ );
+ next.el = nextTree.el;
+ if (originNext === null) {
+ updateHOCHostEl(instance, nextTree.el);
+ }
+ if (u) {
+ queuePostRenderEffect(u, parentSuspense);
+ }
+ if (vnodeHook = next.props && next.props.onVnodeUpdated) {
+ queuePostRenderEffect(
+ () => invokeVNodeHook(vnodeHook, parent, next, vnode),
+ parentSuspense
+ );
+ }
+ }
+ };
+ instance.scope.on();
+ const effect2 = instance.effect = new ReactiveEffect(componentUpdateFn);
+ instance.scope.off();
+ const update = instance.update = effect2.run.bind(effect2);
+ const job = instance.job = effect2.runIfDirty.bind(effect2);
+ job.i = instance;
+ job.id = instance.uid;
+ effect2.scheduler = () => queueJob(job);
+ toggleRecurse(instance, true);
+ update();
+ };
+ const updateComponentPreRender = (instance, nextVNode, optimized) => {
+ nextVNode.component = instance;
+ const prevProps = instance.vnode.props;
+ instance.vnode = nextVNode;
+ instance.next = null;
+ updateProps(instance, nextVNode.props, prevProps, optimized);
+ updateSlots(instance, nextVNode.children, optimized);
+ pauseTracking();
+ flushPreFlushCbs(instance);
+ resetTracking();
+ };
+ const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {
+ const c1 = n1 && n1.children;
+ const prevShapeFlag = n1 ? n1.shapeFlag : 0;
+ const c2 = n2.children;
+ const { patchFlag, shapeFlag } = n2;
+ if (patchFlag > 0) {
+ if (patchFlag & 128) {
+ patchKeyedChildren(
+ c1,
+ c2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ return;
+ } else if (patchFlag & 256) {
+ patchUnkeyedChildren(
+ c1,
+ c2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ return;
+ }
+ }
+ if (shapeFlag & 8) {
+ if (prevShapeFlag & 16) {
+ unmountChildren(c1, parentComponent, parentSuspense);
+ }
+ if (c2 !== c1) {
+ hostSetElementText(container, c2);
+ }
+ } else {
+ if (prevShapeFlag & 16) {
+ if (shapeFlag & 16) {
+ patchKeyedChildren(
+ c1,
+ c2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else {
+ unmountChildren(c1, parentComponent, parentSuspense, true);
+ }
+ } else {
+ if (prevShapeFlag & 8) {
+ hostSetElementText(container, "");
+ }
+ if (shapeFlag & 16) {
+ mountChildren(
+ c2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ }
+ }
+ }
+ };
+ const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ c1 = c1 || EMPTY_ARR;
+ c2 = c2 || EMPTY_ARR;
+ const oldLength = c1.length;
+ const newLength = c2.length;
+ const commonLength = Math.min(oldLength, newLength);
+ let i;
+ for (i = 0; i < commonLength; i++) {
+ const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+ patch(
+ c1[i],
+ nextChild,
+ container,
+ null,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ }
+ if (oldLength > newLength) {
+ unmountChildren(
+ c1,
+ parentComponent,
+ parentSuspense,
+ true,
+ false,
+ commonLength
+ );
+ } else {
+ mountChildren(
+ c2,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized,
+ commonLength
+ );
+ }
+ };
+ const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
+ let i = 0;
+ const l2 = c2.length;
+ let e1 = c1.length - 1;
+ let e2 = l2 - 1;
+ while (i <= e1 && i <= e2) {
+ const n1 = c1[i];
+ const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+ if (isSameVNodeType(n1, n2)) {
+ patch(
+ n1,
+ n2,
+ container,
+ null,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else {
+ break;
+ }
+ i++;
+ }
+ while (i <= e1 && i <= e2) {
+ const n1 = c1[e1];
+ const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
+ if (isSameVNodeType(n1, n2)) {
+ patch(
+ n1,
+ n2,
+ container,
+ null,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else {
+ break;
+ }
+ e1--;
+ e2--;
+ }
+ if (i > e1) {
+ if (i <= e2) {
+ const nextPos = e2 + 1;
+ const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
+ while (i <= e2) {
+ patch(
+ null,
+ c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ i++;
+ }
+ }
+ } else if (i > e2) {
+ while (i <= e1) {
+ unmount(c1[i], parentComponent, parentSuspense, true);
+ i++;
+ }
+ } else {
+ const s1 = i;
+ const s2 = i;
+ const keyToNewIndexMap = /* @__PURE__ */ new Map();
+ for (i = s2; i <= e2; i++) {
+ const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
+ if (nextChild.key != null) {
+ keyToNewIndexMap.set(nextChild.key, i);
+ }
+ }
+ let j;
+ let patched = 0;
+ const toBePatched = e2 - s2 + 1;
+ let moved = false;
+ let maxNewIndexSoFar = 0;
+ const newIndexToOldIndexMap = new Array(toBePatched);
+ for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;
+ for (i = s1; i <= e1; i++) {
+ const prevChild = c1[i];
+ if (patched >= toBePatched) {
+ unmount(prevChild, parentComponent, parentSuspense, true);
+ continue;
+ }
+ let newIndex;
+ if (prevChild.key != null) {
+ newIndex = keyToNewIndexMap.get(prevChild.key);
+ } else {
+ for (j = s2; j <= e2; j++) {
+ if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
+ newIndex = j;
+ break;
+ }
+ }
+ }
+ if (newIndex === void 0) {
+ unmount(prevChild, parentComponent, parentSuspense, true);
+ } else {
+ newIndexToOldIndexMap[newIndex - s2] = i + 1;
+ if (newIndex >= maxNewIndexSoFar) {
+ maxNewIndexSoFar = newIndex;
+ } else {
+ moved = true;
+ }
+ patch(
+ prevChild,
+ c2[newIndex],
+ container,
+ null,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ patched++;
+ }
+ }
+ const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
+ j = increasingNewIndexSequence.length - 1;
+ for (i = toBePatched - 1; i >= 0; i--) {
+ const nextIndex = s2 + i;
+ const nextChild = c2[nextIndex];
+ const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
+ if (newIndexToOldIndexMap[i] === 0) {
+ patch(
+ null,
+ nextChild,
+ container,
+ anchor,
+ parentComponent,
+ parentSuspense,
+ namespace,
+ slotScopeIds,
+ optimized
+ );
+ } else if (moved) {
+ if (j < 0 || i !== increasingNewIndexSequence[j]) {
+ move(nextChild, container, anchor, 2);
+ } else {
+ j--;
+ }
+ }
+ }
+ }
+ };
+ const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
+ const { el, type, transition, children, shapeFlag } = vnode;
+ if (shapeFlag & 6) {
+ move(vnode.component.subTree, container, anchor, moveType);
+ return;
+ }
+ if (shapeFlag & 128) {
+ vnode.suspense.move(container, anchor, moveType);
+ return;
+ }
+ if (shapeFlag & 64) {
+ type.move(vnode, container, anchor, internals);
+ return;
+ }
+ if (type === Fragment) {
+ hostInsert(el, container, anchor);
+ for (let i = 0; i < children.length; i++) {
+ move(children[i], container, anchor, moveType);
+ }
+ hostInsert(vnode.anchor, container, anchor);
+ return;
+ }
+ if (type === Static) {
+ moveStaticNode(vnode, container, anchor);
+ return;
+ }
+ const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition;
+ if (needTransition2) {
+ if (moveType === 0) {
+ transition.beforeEnter(el);
+ hostInsert(el, container, anchor);
+ queuePostRenderEffect(() => transition.enter(el), parentSuspense);
+ } else {
+ const { leave, delayLeave, afterLeave } = transition;
+ const remove22 = () => hostInsert(el, container, anchor);
+ const performLeave = () => {
+ leave(el, () => {
+ remove22();
+ afterLeave && afterLeave();
+ });
+ };
+ if (delayLeave) {
+ delayLeave(el, remove22, performLeave);
+ } else {
+ performLeave();
+ }
+ }
+ } else {
+ hostInsert(el, container, anchor);
+ }
+ };
+ const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
+ const {
+ type,
+ props,
+ ref: ref3,
+ children,
+ dynamicChildren,
+ shapeFlag,
+ patchFlag,
+ dirs,
+ cacheIndex
+ } = vnode;
+ if (patchFlag === -2) {
+ optimized = false;
+ }
+ if (ref3 != null) {
+ setRef(ref3, null, parentSuspense, vnode, true);
+ }
+ if (cacheIndex != null) {
+ parentComponent.renderCache[cacheIndex] = void 0;
+ }
+ if (shapeFlag & 256) {
+ parentComponent.ctx.deactivate(vnode);
+ return;
+ }
+ const shouldInvokeDirs = shapeFlag & 1 && dirs;
+ const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
+ let vnodeHook;
+ if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) {
+ invokeVNodeHook(vnodeHook, parentComponent, vnode);
+ }
+ if (shapeFlag & 6) {
+ unmountComponent(vnode.component, parentSuspense, doRemove);
+ } else {
+ if (shapeFlag & 128) {
+ vnode.suspense.unmount(parentSuspense, doRemove);
+ return;
+ }
+ if (shouldInvokeDirs) {
+ invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
+ }
+ if (shapeFlag & 64) {
+ vnode.type.remove(
+ vnode,
+ parentComponent,
+ parentSuspense,
+ internals,
+ doRemove
+ );
+ } else if (dynamicChildren && // #5154
+ // when v-once is used inside a block, setBlockTracking(-1) marks the
+ // parent block with hasOnce: true
+ // so that it doesn't take the fast path during unmount - otherwise
+ // components nested in v-once are never unmounted.
+ !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments
+ (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
+ unmountChildren(
+ dynamicChildren,
+ parentComponent,
+ parentSuspense,
+ false,
+ true
+ );
+ } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
+ unmountChildren(children, parentComponent, parentSuspense);
+ }
+ if (doRemove) {
+ remove2(vnode);
+ }
+ }
+ if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) {
+ queuePostRenderEffect(() => {
+ vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
+ shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
+ }, parentSuspense);
+ }
+ };
+ const remove2 = (vnode) => {
+ const { type, el, anchor, transition } = vnode;
+ if (type === Fragment) {
+ {
+ removeFragment(el, anchor);
+ }
+ return;
+ }
+ if (type === Static) {
+ removeStaticNode(vnode);
+ return;
+ }
+ const performRemove = () => {
+ hostRemove(el);
+ if (transition && !transition.persisted && transition.afterLeave) {
+ transition.afterLeave();
+ }
+ };
+ if (vnode.shapeFlag & 1 && transition && !transition.persisted) {
+ const { leave, delayLeave } = transition;
+ const performLeave = () => leave(el, performRemove);
+ if (delayLeave) {
+ delayLeave(vnode.el, performRemove, performLeave);
+ } else {
+ performLeave();
+ }
+ } else {
+ performRemove();
+ }
+ };
+ const removeFragment = (cur, end) => {
+ let next;
+ while (cur !== end) {
+ next = hostNextSibling(cur);
+ hostRemove(cur);
+ cur = next;
+ }
+ hostRemove(end);
+ };
+ const unmountComponent = (instance, parentSuspense, doRemove) => {
+ const { bum, scope, job, subTree, um, m, a } = instance;
+ invalidateMount(m);
+ invalidateMount(a);
+ if (bum) {
+ invokeArrayFns(bum);
+ }
+ scope.stop();
+ if (job) {
+ job.flags |= 8;
+ unmount(subTree, instance, parentSuspense, doRemove);
+ }
+ if (um) {
+ queuePostRenderEffect(um, parentSuspense);
+ }
+ queuePostRenderEffect(() => {
+ instance.isUnmounted = true;
+ }, parentSuspense);
+ if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
+ parentSuspense.deps--;
+ if (parentSuspense.deps === 0) {
+ parentSuspense.resolve();
+ }
+ }
+ };
+ const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
+ for (let i = start; i < children.length; i++) {
+ unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
+ }
+ };
+ const getNextHostNode = (vnode) => {
+ if (vnode.shapeFlag & 6) {
+ return getNextHostNode(vnode.component.subTree);
+ }
+ if (vnode.shapeFlag & 128) {
+ return vnode.suspense.next();
+ }
+ const el = hostNextSibling(vnode.anchor || vnode.el);
+ const teleportEnd = el && el[TeleportEndKey];
+ return teleportEnd ? hostNextSibling(teleportEnd) : el;
+ };
+ let isFlushing = false;
+ const render = (vnode, container, namespace) => {
+ if (vnode == null) {
+ if (container._vnode) {
+ unmount(container._vnode, null, null, true);
+ }
+ } else {
+ patch(
+ container._vnode || null,
+ vnode,
+ container,
+ null,
+ null,
+ null,
+ namespace
+ );
+ }
+ container._vnode = vnode;
+ if (!isFlushing) {
+ isFlushing = true;
+ flushPreFlushCbs();
+ flushPostFlushCbs();
+ isFlushing = false;
+ }
+ };
+ const internals = {
+ p: patch,
+ um: unmount,
+ m: move,
+ r: remove2,
+ mt: mountComponent,
+ mc: mountChildren,
+ pc: patchChildren,
+ pbc: patchBlockChildren,
+ n: getNextHostNode,
+ o: options
+ };
+ let hydrate;
+ return {
+ render,
+ hydrate,
+ createApp: createAppAPI(render)
+ };
+}
+function resolveChildrenNamespace({ type, props }, currentNamespace) {
+ return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props && props.encoding && props.encoding.includes("html") ? void 0 : currentNamespace;
+}
+function toggleRecurse({ effect: effect2, job }, allowed) {
+ if (allowed) {
+ effect2.flags |= 32;
+ job.flags |= 4;
+ } else {
+ effect2.flags &= -33;
+ job.flags &= -5;
+ }
+}
+function needTransition(parentSuspense, transition) {
+ return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted;
+}
+function traverseStaticChildren(n1, n2, shallow = false) {
+ const ch1 = n1.children;
+ const ch2 = n2.children;
+ if (isArray$2(ch1) && isArray$2(ch2)) {
+ for (let i = 0; i < ch1.length; i++) {
+ const c1 = ch1[i];
+ let c2 = ch2[i];
+ if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
+ if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
+ c2 = ch2[i] = cloneIfMounted(ch2[i]);
+ c2.el = c1.el;
+ }
+ if (!shallow && c2.patchFlag !== -2)
+ traverseStaticChildren(c1, c2);
+ }
+ if (c2.type === Text) {
+ c2.el = c1.el;
+ }
+ }
+ }
+}
+function getSequence(arr) {
+ const p2 = arr.slice();
+ const result = [0];
+ let i, j, u, v, c;
+ const len = arr.length;
+ for (i = 0; i < len; i++) {
+ const arrI = arr[i];
+ if (arrI !== 0) {
+ j = result[result.length - 1];
+ if (arr[j] < arrI) {
+ p2[i] = j;
+ result.push(i);
+ continue;
+ }
+ u = 0;
+ v = result.length - 1;
+ while (u < v) {
+ c = u + v >> 1;
+ if (arr[result[c]] < arrI) {
+ u = c + 1;
+ } else {
+ v = c;
+ }
+ }
+ if (arrI < arr[result[u]]) {
+ if (u > 0) {
+ p2[i] = result[u - 1];
+ }
+ result[u] = i;
+ }
+ }
+ }
+ u = result.length;
+ v = result[u - 1];
+ while (u-- > 0) {
+ result[u] = v;
+ v = p2[v];
+ }
+ return result;
+}
+function locateNonHydratedAsyncRoot(instance) {
+ const subComponent = instance.subTree.component;
+ if (subComponent) {
+ if (subComponent.asyncDep && !subComponent.asyncResolved) {
+ return subComponent;
+ } else {
+ return locateNonHydratedAsyncRoot(subComponent);
+ }
+ }
+}
+function invalidateMount(hooks) {
+ if (hooks) {
+ for (let i = 0; i < hooks.length; i++)
+ hooks[i].flags |= 8;
+ }
+}
+const ssrContextKey = Symbol.for("v-scx");
+const useSSRContext = () => {
+ {
+ const ctx = inject(ssrContextKey);
+ return ctx;
+ }
+};
+function watch(source, cb, options) {
+ return doWatch(source, cb, options);
+}
+function doWatch(source, cb, options = EMPTY_OBJ) {
+ const { immediate, deep, flush, once } = options;
+ const baseWatchOptions = extend$1({}, options);
+ const runsImmediately = cb && immediate || !cb && flush !== "post";
+ let ssrCleanup;
+ if (isInSSRComponentSetup) {
+ if (flush === "sync") {
+ const ctx = useSSRContext();
+ ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
+ } else if (!runsImmediately) {
+ const watchStopHandle = () => {
+ };
+ watchStopHandle.stop = NOOP;
+ watchStopHandle.resume = NOOP;
+ watchStopHandle.pause = NOOP;
+ return watchStopHandle;
+ }
+ }
+ const instance = currentInstance;
+ baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);
+ let isPre = false;
+ if (flush === "post") {
+ baseWatchOptions.scheduler = (job) => {
+ queuePostRenderEffect(job, instance && instance.suspense);
+ };
+ } else if (flush !== "sync") {
+ isPre = true;
+ baseWatchOptions.scheduler = (job, isFirstRun) => {
+ if (isFirstRun) {
+ job();
+ } else {
+ queueJob(job);
+ }
+ };
+ }
+ baseWatchOptions.augmentJob = (job) => {
+ if (cb) {
+ job.flags |= 4;
+ }
+ if (isPre) {
+ job.flags |= 2;
+ if (instance) {
+ job.id = instance.uid;
+ job.i = instance;
+ }
+ }
+ };
+ const watchHandle = watch$1(source, cb, baseWatchOptions);
+ if (isInSSRComponentSetup) {
+ if (ssrCleanup) {
+ ssrCleanup.push(watchHandle);
+ } else if (runsImmediately) {
+ watchHandle();
+ }
+ }
+ return watchHandle;
+}
+function instanceWatch(source, value, options) {
+ const publicThis = this.proxy;
+ const getter = isString$1(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
+ let cb;
+ if (isFunction$1(value)) {
+ cb = value;
+ } else {
+ cb = value.handler;
+ options = value;
+ }
+ const reset = setCurrentInstance(this);
+ const res = doWatch(getter, cb.bind(publicThis), options);
+ reset();
+ return res;
+}
+function createPathGetter(ctx, path) {
+ const segments = path.split(".");
+ return () => {
+ let cur = ctx;
+ for (let i = 0; i < segments.length && cur; i++) {
+ cur = cur[segments[i]];
+ }
+ return cur;
+ };
+}
+const getModelModifiers = (props, modelName) => {
+ return modelName === "modelValue" || modelName === "model-value" ? props.modelModifiers : props[`${modelName}Modifiers`] || props[`${camelize(modelName)}Modifiers`] || props[`${hyphenate(modelName)}Modifiers`];
+};
+function emit(instance, event, ...rawArgs) {
+ if (instance.isUnmounted) return;
+ const props = instance.vnode.props || EMPTY_OBJ;
+ let args = rawArgs;
+ const isModelListener2 = event.startsWith("update:");
+ const modifiers = isModelListener2 && getModelModifiers(props, event.slice(7));
+ if (modifiers) {
+ if (modifiers.trim) {
+ args = rawArgs.map((a) => isString$1(a) ? a.trim() : a);
+ }
+ if (modifiers.number) {
+ args = rawArgs.map(looseToNumber);
+ }
+ }
+ let handlerName;
+ let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
+ props[handlerName = toHandlerKey(camelize(event))];
+ if (!handler && isModelListener2) {
+ handler = props[handlerName = toHandlerKey(hyphenate(event))];
+ }
+ if (handler) {
+ callWithAsyncErrorHandling(
+ handler,
+ instance,
+ 6,
+ args
+ );
+ }
+ const onceHandler = props[handlerName + `Once`];
+ if (onceHandler) {
+ if (!instance.emitted) {
+ instance.emitted = {};
+ } else if (instance.emitted[handlerName]) {
+ return;
+ }
+ instance.emitted[handlerName] = true;
+ callWithAsyncErrorHandling(
+ onceHandler,
+ instance,
+ 6,
+ args
+ );
+ }
+}
+function normalizeEmitsOptions(comp, appContext, asMixin = false) {
+ const cache = appContext.emitsCache;
+ const cached = cache.get(comp);
+ if (cached !== void 0) {
+ return cached;
+ }
+ const raw = comp.emits;
+ let normalized = {};
+ let hasExtends = false;
+ if (!isFunction$1(comp)) {
+ const extendEmits = (raw2) => {
+ const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
+ if (normalizedFromExtend) {
+ hasExtends = true;
+ extend$1(normalized, normalizedFromExtend);
+ }
+ };
+ if (!asMixin && appContext.mixins.length) {
+ appContext.mixins.forEach(extendEmits);
+ }
+ if (comp.extends) {
+ extendEmits(comp.extends);
+ }
+ if (comp.mixins) {
+ comp.mixins.forEach(extendEmits);
+ }
+ }
+ if (!raw && !hasExtends) {
+ if (isObject$1(comp)) {
+ cache.set(comp, null);
+ }
+ return null;
+ }
+ if (isArray$2(raw)) {
+ raw.forEach((key) => normalized[key] = null);
+ } else {
+ extend$1(normalized, raw);
+ }
+ if (isObject$1(comp)) {
+ cache.set(comp, normalized);
+ }
+ return normalized;
+}
+function isEmitListener(options, key) {
+ if (!options || !isOn(key)) {
+ return false;
+ }
+ key = key.slice(2).replace(/Once$/, "");
+ return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);
+}
+function markAttrsAccessed() {
+}
+function renderComponentRoot(instance) {
+ const {
+ type: Component,
+ vnode,
+ proxy,
+ withProxy,
+ propsOptions: [propsOptions],
+ slots,
+ attrs,
+ emit: emit2,
+ render,
+ renderCache,
+ props,
+ data,
+ setupState,
+ ctx,
+ inheritAttrs
+ } = instance;
+ const prev = setCurrentRenderingInstance(instance);
+ let result;
+ let fallthroughAttrs;
+ try {
+ if (vnode.shapeFlag & 4) {
+ const proxyToUse = withProxy || proxy;
+ const thisProxy = false ? new Proxy(proxyToUse, {
+ get(target, key, receiver) {
+ warn$1(
+ `Property '${String(
+ key
+ )}' was accessed via 'this'. Avoid using 'this' in templates.`
+ );
+ return Reflect.get(target, key, receiver);
+ }
+ }) : proxyToUse;
+ result = normalizeVNode(
+ render.call(
+ thisProxy,
+ proxyToUse,
+ renderCache,
+ false ? shallowReadonly(props) : props,
+ setupState,
+ data,
+ ctx
+ )
+ );
+ fallthroughAttrs = attrs;
+ } else {
+ const render2 = Component;
+ if (false) ;
+ result = normalizeVNode(
+ render2.length > 1 ? render2(
+ false ? shallowReadonly(props) : props,
+ false ? {
+ get attrs() {
+ markAttrsAccessed();
+ return shallowReadonly(attrs);
+ },
+ slots,
+ emit: emit2
+ } : { attrs, slots, emit: emit2 }
+ ) : render2(
+ false ? shallowReadonly(props) : props,
+ null
+ )
+ );
+ fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
+ }
+ } catch (err) {
+ blockStack.length = 0;
+ handleError(err, instance, 1);
+ result = createVNode(Comment);
+ }
+ let root = result;
+ if (fallthroughAttrs && inheritAttrs !== false) {
+ const keys = Object.keys(fallthroughAttrs);
+ const { shapeFlag } = root;
+ if (keys.length) {
+ if (shapeFlag & (1 | 6)) {
+ if (propsOptions && keys.some(isModelListener)) {
+ fallthroughAttrs = filterModelListeners(
+ fallthroughAttrs,
+ propsOptions
+ );
+ }
+ root = cloneVNode(root, fallthroughAttrs, false, true);
+ }
+ }
+ }
+ if (vnode.dirs) {
+ root = cloneVNode(root, null, false, true);
+ root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;
+ }
+ if (vnode.transition) {
+ setTransitionHooks(root, vnode.transition);
+ }
+ {
+ result = root;
+ }
+ setCurrentRenderingInstance(prev);
+ return result;
+}
+const getFunctionalFallthrough = (attrs) => {
+ let res;
+ for (const key in attrs) {
+ if (key === "class" || key === "style" || isOn(key)) {
+ (res || (res = {}))[key] = attrs[key];
+ }
+ }
+ return res;
+};
+const filterModelListeners = (attrs, props) => {
+ const res = {};
+ for (const key in attrs) {
+ if (!isModelListener(key) || !(key.slice(9) in props)) {
+ res[key] = attrs[key];
+ }
+ }
+ return res;
+};
+function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
+ const { props: prevProps, children: prevChildren, component } = prevVNode;
+ const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
+ const emits = component.emitsOptions;
+ if (nextVNode.dirs || nextVNode.transition) {
+ return true;
+ }
+ if (optimized && patchFlag >= 0) {
+ if (patchFlag & 1024) {
+ return true;
+ }
+ if (patchFlag & 16) {
+ if (!prevProps) {
+ return !!nextProps;
+ }
+ return hasPropsChanged(prevProps, nextProps, emits);
+ } else if (patchFlag & 8) {
+ const dynamicProps = nextVNode.dynamicProps;
+ for (let i = 0; i < dynamicProps.length; i++) {
+ const key = dynamicProps[i];
+ if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
+ return true;
+ }
+ }
+ }
+ } else {
+ if (prevChildren || nextChildren) {
+ if (!nextChildren || !nextChildren.$stable) {
+ return true;
+ }
+ }
+ if (prevProps === nextProps) {
+ return false;
+ }
+ if (!prevProps) {
+ return !!nextProps;
+ }
+ if (!nextProps) {
+ return true;
+ }
+ return hasPropsChanged(prevProps, nextProps, emits);
+ }
+ return false;
+}
+function hasPropsChanged(prevProps, nextProps, emitsOptions) {
+ const nextKeys = Object.keys(nextProps);
+ if (nextKeys.length !== Object.keys(prevProps).length) {
+ return true;
+ }
+ for (let i = 0; i < nextKeys.length; i++) {
+ const key = nextKeys[i];
+ if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
+ return true;
+ }
+ }
+ return false;
+}
+function updateHOCHostEl({ vnode, parent }, el) {
+ while (parent) {
+ const root = parent.subTree;
+ if (root.suspense && root.suspense.activeBranch === vnode) {
+ root.el = vnode.el;
+ }
+ if (root === vnode) {
+ (vnode = parent.vnode).el = el;
+ parent = parent.parent;
+ } else {
+ break;
+ }
+ }
+}
+const isSuspense = (type) => type.__isSuspense;
+function queueEffectWithSuspense(fn, suspense) {
+ if (suspense && suspense.pendingBranch) {
+ if (isArray$2(fn)) {
+ suspense.effects.push(...fn);
+ } else {
+ suspense.effects.push(fn);
+ }
+ } else {
+ queuePostFlushCb(fn);
+ }
+}
+const Fragment = Symbol.for("v-fgt");
+const Text = Symbol.for("v-txt");
+const Comment = Symbol.for("v-cmt");
+const Static = Symbol.for("v-stc");
+const blockStack = [];
+let currentBlock = null;
+function openBlock(disableTracking = false) {
+ blockStack.push(currentBlock = disableTracking ? null : []);
+}
+function closeBlock() {
+ blockStack.pop();
+ currentBlock = blockStack[blockStack.length - 1] || null;
+}
+let isBlockTreeEnabled = 1;
+function setBlockTracking(value, inVOnce = false) {
+ isBlockTreeEnabled += value;
+ if (value < 0 && currentBlock && inVOnce) {
+ currentBlock.hasOnce = true;
+ }
+}
+function setupBlock(vnode) {
+ vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
+ closeBlock();
+ if (isBlockTreeEnabled > 0 && currentBlock) {
+ currentBlock.push(vnode);
+ }
+ return vnode;
+}
+function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {
+ return setupBlock(
+ createBaseVNode(
+ type,
+ props,
+ children,
+ patchFlag,
+ dynamicProps,
+ shapeFlag,
+ true
+ )
+ );
+}
+function createBlock(type, props, children, patchFlag, dynamicProps) {
+ return setupBlock(
+ createVNode(
+ type,
+ props,
+ children,
+ patchFlag,
+ dynamicProps,
+ true
+ )
+ );
+}
+function isVNode(value) {
+ return value ? value.__v_isVNode === true : false;
+}
+function isSameVNodeType(n1, n2) {
+ return n1.type === n2.type && n1.key === n2.key;
+}
+const normalizeKey = ({ key }) => key != null ? key : null;
+const normalizeRef = ({
+ ref: ref3,
+ ref_key,
+ ref_for
+}) => {
+ if (typeof ref3 === "number") {
+ ref3 = "" + ref3;
+ }
+ return ref3 != null ? isString$1(ref3) || isRef(ref3) || isFunction$1(ref3) ? { i: currentRenderingInstance, r: ref3, k: ref_key, f: !!ref_for } : ref3 : null;
+};
+function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
+ const vnode = {
+ __v_isVNode: true,
+ __v_skip: true,
+ type,
+ props,
+ key: props && normalizeKey(props),
+ ref: props && normalizeRef(props),
+ scopeId: currentScopeId,
+ slotScopeIds: null,
+ children,
+ component: null,
+ suspense: null,
+ ssContent: null,
+ ssFallback: null,
+ dirs: null,
+ transition: null,
+ el: null,
+ anchor: null,
+ target: null,
+ targetStart: null,
+ targetAnchor: null,
+ staticCount: 0,
+ shapeFlag,
+ patchFlag,
+ dynamicProps,
+ dynamicChildren: null,
+ appContext: null,
+ ctx: currentRenderingInstance
+ };
+ if (needFullChildrenNormalization) {
+ normalizeChildren(vnode, children);
+ if (shapeFlag & 128) {
+ type.normalize(vnode);
+ }
+ } else if (children) {
+ vnode.shapeFlag |= isString$1(children) ? 8 : 16;
+ }
+ if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
+ !isBlockNode && // has current parent block
+ currentBlock && // presence of a patch flag indicates this node needs patching on updates.
+ // component nodes also should always be patched, because even if the
+ // component doesn't need to update, it needs to persist the instance on to
+ // the next vnode so that it can be properly unmounted later.
+ (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
+ // vnode should not be considered dynamic due to handler caching.
+ vnode.patchFlag !== 32) {
+ currentBlock.push(vnode);
+ }
+ return vnode;
+}
+const createVNode = _createVNode;
+function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
+ if (!type || type === NULL_DYNAMIC_COMPONENT) {
+ type = Comment;
+ }
+ if (isVNode(type)) {
+ const cloned = cloneVNode(
+ type,
+ props,
+ true
+ /* mergeRef: true */
+ );
+ if (children) {
+ normalizeChildren(cloned, children);
+ }
+ if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
+ if (cloned.shapeFlag & 6) {
+ currentBlock[currentBlock.indexOf(type)] = cloned;
+ } else {
+ currentBlock.push(cloned);
+ }
+ }
+ cloned.patchFlag = -2;
+ return cloned;
+ }
+ if (isClassComponent(type)) {
+ type = type.__vccOpts;
+ }
+ if (props) {
+ props = guardReactiveProps(props);
+ let { class: klass, style } = props;
+ if (klass && !isString$1(klass)) {
+ props.class = normalizeClass(klass);
+ }
+ if (isObject$1(style)) {
+ if (isProxy(style) && !isArray$2(style)) {
+ style = extend$1({}, style);
+ }
+ props.style = normalizeStyle(style);
+ }
+ }
+ const shapeFlag = isString$1(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$1(type) ? 4 : isFunction$1(type) ? 2 : 0;
+ return createBaseVNode(
+ type,
+ props,
+ children,
+ patchFlag,
+ dynamicProps,
+ shapeFlag,
+ isBlockNode,
+ true
+ );
+}
+function guardReactiveProps(props) {
+ if (!props) return null;
+ return isProxy(props) || isInternalObject(props) ? extend$1({}, props) : props;
+}
+function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {
+ const { props, ref: ref3, patchFlag, children, transition } = vnode;
+ const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;
+ const cloned = {
+ __v_isVNode: true,
+ __v_skip: true,
+ type: vnode.type,
+ props: mergedProps,
+ key: mergedProps && normalizeKey(mergedProps),
+ ref: extraProps && extraProps.ref ? (
+ // #2078 in the case of
+ // if the vnode itself already has a ref, cloneVNode will need to merge
+ // the refs so the single vnode can be set on multiple refs
+ mergeRef && ref3 ? isArray$2(ref3) ? ref3.concat(normalizeRef(extraProps)) : [ref3, normalizeRef(extraProps)] : normalizeRef(extraProps)
+ ) : ref3,
+ scopeId: vnode.scopeId,
+ slotScopeIds: vnode.slotScopeIds,
+ children,
+ target: vnode.target,
+ targetStart: vnode.targetStart,
+ targetAnchor: vnode.targetAnchor,
+ staticCount: vnode.staticCount,
+ shapeFlag: vnode.shapeFlag,
+ // if the vnode is cloned with extra props, we can no longer assume its
+ // existing patch flag to be reliable and need to add the FULL_PROPS flag.
+ // note: preserve flag for fragments since they use the flag for children
+ // fast paths only.
+ patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag,
+ dynamicProps: vnode.dynamicProps,
+ dynamicChildren: vnode.dynamicChildren,
+ appContext: vnode.appContext,
+ dirs: vnode.dirs,
+ transition,
+ // These should technically only be non-null on mounted VNodes. However,
+ // they *should* be copied for kept-alive vnodes. So we just always copy
+ // them since them being non-null during a mount doesn't affect the logic as
+ // they will simply be overwritten.
+ component: vnode.component,
+ suspense: vnode.suspense,
+ ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
+ ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
+ el: vnode.el,
+ anchor: vnode.anchor,
+ ctx: vnode.ctx,
+ ce: vnode.ce
+ };
+ if (transition && cloneTransition) {
+ setTransitionHooks(
+ cloned,
+ transition.clone(cloned)
+ );
+ }
+ return cloned;
+}
+function createTextVNode(text = " ", flag = 0) {
+ return createVNode(Text, null, text, flag);
+}
+function createCommentVNode(text = "", asBlock = false) {
+ return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);
+}
+function normalizeVNode(child) {
+ if (child == null || typeof child === "boolean") {
+ return createVNode(Comment);
+ } else if (isArray$2(child)) {
+ return createVNode(
+ Fragment,
+ null,
+ // #3666, avoid reference pollution when reusing vnode
+ child.slice()
+ );
+ } else if (isVNode(child)) {
+ return cloneIfMounted(child);
+ } else {
+ return createVNode(Text, null, String(child));
+ }
+}
+function cloneIfMounted(child) {
+ return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
+}
+function normalizeChildren(vnode, children) {
+ let type = 0;
+ const { shapeFlag } = vnode;
+ if (children == null) {
+ children = null;
+ } else if (isArray$2(children)) {
+ type = 16;
+ } else if (typeof children === "object") {
+ if (shapeFlag & (1 | 64)) {
+ const slot = children.default;
+ if (slot) {
+ slot._c && (slot._d = false);
+ normalizeChildren(vnode, slot());
+ slot._c && (slot._d = true);
+ }
+ return;
+ } else {
+ type = 32;
+ const slotFlag = children._;
+ if (!slotFlag && !isInternalObject(children)) {
+ children._ctx = currentRenderingInstance;
+ } else if (slotFlag === 3 && currentRenderingInstance) {
+ if (currentRenderingInstance.slots._ === 1) {
+ children._ = 1;
+ } else {
+ children._ = 2;
+ vnode.patchFlag |= 1024;
+ }
+ }
+ }
+ } else if (isFunction$1(children)) {
+ children = { default: children, _ctx: currentRenderingInstance };
+ type = 32;
+ } else {
+ children = String(children);
+ if (shapeFlag & 64) {
+ type = 16;
+ children = [createTextVNode(children)];
+ } else {
+ type = 8;
+ }
+ }
+ vnode.children = children;
+ vnode.shapeFlag |= type;
+}
+function mergeProps(...args) {
+ const ret = {};
+ for (let i = 0; i < args.length; i++) {
+ const toMerge = args[i];
+ for (const key in toMerge) {
+ if (key === "class") {
+ if (ret.class !== toMerge.class) {
+ ret.class = normalizeClass([ret.class, toMerge.class]);
+ }
+ } else if (key === "style") {
+ ret.style = normalizeStyle([ret.style, toMerge.style]);
+ } else if (isOn(key)) {
+ const existing = ret[key];
+ const incoming = toMerge[key];
+ if (incoming && existing !== incoming && !(isArray$2(existing) && existing.includes(incoming))) {
+ ret[key] = existing ? [].concat(existing, incoming) : incoming;
+ }
+ } else if (key !== "") {
+ ret[key] = toMerge[key];
+ }
+ }
+ }
+ return ret;
+}
+function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
+ callWithAsyncErrorHandling(hook, instance, 7, [
+ vnode,
+ prevVNode
+ ]);
+}
+const emptyAppContext = createAppContext();
+let uid = 0;
+function createComponentInstance(vnode, parent, suspense) {
+ const type = vnode.type;
+ const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
+ const instance = {
+ uid: uid++,
+ vnode,
+ type,
+ parent,
+ appContext,
+ root: null,
+ // to be immediately set
+ next: null,
+ subTree: null,
+ // will be set synchronously right after creation
+ effect: null,
+ update: null,
+ // will be set synchronously right after creation
+ job: null,
+ scope: new EffectScope(
+ true
+ /* detached */
+ ),
+ render: null,
+ proxy: null,
+ exposed: null,
+ exposeProxy: null,
+ withProxy: null,
+ provides: parent ? parent.provides : Object.create(appContext.provides),
+ ids: parent ? parent.ids : ["", 0, 0],
+ accessCache: null,
+ renderCache: [],
+ // local resolved assets
+ components: null,
+ directives: null,
+ // resolved props and emits options
+ propsOptions: normalizePropsOptions(type, appContext),
+ emitsOptions: normalizeEmitsOptions(type, appContext),
+ // emit
+ emit: null,
+ // to be set immediately
+ emitted: null,
+ // props default value
+ propsDefaults: EMPTY_OBJ,
+ // inheritAttrs
+ inheritAttrs: type.inheritAttrs,
+ // state
+ ctx: EMPTY_OBJ,
+ data: EMPTY_OBJ,
+ props: EMPTY_OBJ,
+ attrs: EMPTY_OBJ,
+ slots: EMPTY_OBJ,
+ refs: EMPTY_OBJ,
+ setupState: EMPTY_OBJ,
+ setupContext: null,
+ // suspense related
+ suspense,
+ suspenseId: suspense ? suspense.pendingId : 0,
+ asyncDep: null,
+ asyncResolved: false,
+ // lifecycle hooks
+ // not using enums here because it results in computed properties
+ isMounted: false,
+ isUnmounted: false,
+ isDeactivated: false,
+ bc: null,
+ c: null,
+ bm: null,
+ m: null,
+ bu: null,
+ u: null,
+ um: null,
+ bum: null,
+ da: null,
+ a: null,
+ rtg: null,
+ rtc: null,
+ ec: null,
+ sp: null
+ };
+ {
+ instance.ctx = { _: instance };
+ }
+ instance.root = parent ? parent.root : instance;
+ instance.emit = emit.bind(null, instance);
+ if (vnode.ce) {
+ vnode.ce(instance);
+ }
+ return instance;
+}
+let currentInstance = null;
+let internalSetCurrentInstance;
+let setInSSRSetupState;
+{
+ const g = getGlobalThis();
+ const registerGlobalSetter = (key, setter) => {
+ let setters;
+ if (!(setters = g[key])) setters = g[key] = [];
+ setters.push(setter);
+ return (v) => {
+ if (setters.length > 1) setters.forEach((set) => set(v));
+ else setters[0](v);
+ };
+ };
+ internalSetCurrentInstance = registerGlobalSetter(
+ `__VUE_INSTANCE_SETTERS__`,
+ (v) => currentInstance = v
+ );
+ setInSSRSetupState = registerGlobalSetter(
+ `__VUE_SSR_SETTERS__`,
+ (v) => isInSSRComponentSetup = v
+ );
+}
+const setCurrentInstance = (instance) => {
+ const prev = currentInstance;
+ internalSetCurrentInstance(instance);
+ instance.scope.on();
+ return () => {
+ instance.scope.off();
+ internalSetCurrentInstance(prev);
+ };
+};
+const unsetCurrentInstance = () => {
+ currentInstance && currentInstance.scope.off();
+ internalSetCurrentInstance(null);
+};
+function isStatefulComponent(instance) {
+ return instance.vnode.shapeFlag & 4;
+}
+let isInSSRComponentSetup = false;
+function setupComponent(instance, isSSR = false, optimized = false) {
+ isSSR && setInSSRSetupState(isSSR);
+ const { props, children } = instance.vnode;
+ const isStateful = isStatefulComponent(instance);
+ initProps(instance, props, isStateful, isSSR);
+ initSlots(instance, children, optimized);
+ const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
+ isSSR && setInSSRSetupState(false);
+ return setupResult;
+}
+function setupStatefulComponent(instance, isSSR) {
+ const Component = instance.type;
+ instance.accessCache = /* @__PURE__ */ Object.create(null);
+ instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);
+ const { setup } = Component;
+ if (setup) {
+ pauseTracking();
+ const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
+ const reset = setCurrentInstance(instance);
+ const setupResult = callWithErrorHandling(
+ setup,
+ instance,
+ 0,
+ [
+ instance.props,
+ setupContext
+ ]
+ );
+ const isAsyncSetup = isPromise(setupResult);
+ resetTracking();
+ reset();
+ if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {
+ markAsyncBoundary(instance);
+ }
+ if (isAsyncSetup) {
+ setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
+ if (isSSR) {
+ return setupResult.then((resolvedResult) => {
+ handleSetupResult(instance, resolvedResult);
+ }).catch((e) => {
+ handleError(e, instance, 0);
+ });
+ } else {
+ instance.asyncDep = setupResult;
+ }
+ } else {
+ handleSetupResult(instance, setupResult);
+ }
+ } else {
+ finishComponentSetup(instance);
+ }
+}
+function handleSetupResult(instance, setupResult, isSSR) {
+ if (isFunction$1(setupResult)) {
+ if (instance.type.__ssrInlineRender) {
+ instance.ssrRender = setupResult;
+ } else {
+ instance.render = setupResult;
+ }
+ } else if (isObject$1(setupResult)) {
+ instance.setupState = proxyRefs(setupResult);
+ } else ;
+ finishComponentSetup(instance);
+}
+function finishComponentSetup(instance, isSSR, skipOptions) {
+ const Component = instance.type;
+ if (!instance.render) {
+ instance.render = Component.render || NOOP;
+ }
+ {
+ const reset = setCurrentInstance(instance);
+ pauseTracking();
+ try {
+ applyOptions(instance);
+ } finally {
+ resetTracking();
+ reset();
+ }
+ }
+}
+const attrsProxyHandlers = {
+ get(target, key) {
+ track(target, "get", "");
+ return target[key];
+ }
+};
+function createSetupContext(instance) {
+ const expose = (exposed) => {
+ instance.exposed = exposed || {};
+ };
+ {
+ return {
+ attrs: new Proxy(instance.attrs, attrsProxyHandlers),
+ slots: instance.slots,
+ emit: instance.emit,
+ expose
+ };
+ }
+}
+function getComponentPublicInstance(instance) {
+ if (instance.exposed) {
+ return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
+ get(target, key) {
+ if (key in target) {
+ return target[key];
+ } else if (key in publicPropertiesMap) {
+ return publicPropertiesMap[key](instance);
+ }
+ },
+ has(target, key) {
+ return key in target || key in publicPropertiesMap;
+ }
+ }));
+ } else {
+ return instance.proxy;
+ }
+}
+const classifyRE = /(?:^|[-_])(\w)/g;
+const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
+function getComponentName(Component, includeInferred = true) {
+ return isFunction$1(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
+}
+function formatComponentName(instance, Component, isRoot = false) {
+ let name = getComponentName(Component);
+ if (!name && Component.__file) {
+ const match = Component.__file.match(/([^/\\]+)\.\w+$/);
+ if (match) {
+ name = match[1];
+ }
+ }
+ if (!name && instance && instance.parent) {
+ const inferFromRegistry = (registry) => {
+ for (const key in registry) {
+ if (registry[key] === Component) {
+ return key;
+ }
+ }
+ };
+ name = inferFromRegistry(
+ instance.components || instance.parent.type.components
+ ) || inferFromRegistry(instance.appContext.components);
+ }
+ return name ? classify(name) : isRoot ? `App` : `Anonymous`;
+}
+function isClassComponent(value) {
+ return isFunction$1(value) && "__vccOpts" in value;
+}
+const computed = (getterOrOptions, debugOptions) => {
+ const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
+ return c;
+};
+function h(type, propsOrChildren, children) {
+ const l = arguments.length;
+ if (l === 2) {
+ if (isObject$1(propsOrChildren) && !isArray$2(propsOrChildren)) {
+ if (isVNode(propsOrChildren)) {
+ return createVNode(type, null, [propsOrChildren]);
+ }
+ return createVNode(type, propsOrChildren);
+ } else {
+ return createVNode(type, null, propsOrChildren);
+ }
+ } else {
+ if (l > 3) {
+ children = Array.prototype.slice.call(arguments, 2);
+ } else if (l === 3 && isVNode(children)) {
+ children = [children];
+ }
+ return createVNode(type, propsOrChildren, children);
+ }
+}
+const version = "3.5.13";
+/**
+* @vue/runtime-dom v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/
+let policy = void 0;
+const tt = typeof window !== "undefined" && window.trustedTypes;
+if (tt) {
+ try {
+ policy = /* @__PURE__ */ tt.createPolicy("vue", {
+ createHTML: (val) => val
+ });
+ } catch (e) {
+ }
+}
+const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;
+const svgNS = "http://www.w3.org/2000/svg";
+const mathmlNS = "http://www.w3.org/1998/Math/MathML";
+const doc = typeof document !== "undefined" ? document : null;
+const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
+const nodeOps = {
+ insert: (child, parent, anchor) => {
+ parent.insertBefore(child, anchor || null);
+ },
+ remove: (child) => {
+ const parent = child.parentNode;
+ if (parent) {
+ parent.removeChild(child);
+ }
+ },
+ createElement: (tag, namespace, is, props) => {
+ const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
+ if (tag === "select" && props && props.multiple != null) {
+ el.setAttribute("multiple", props.multiple);
+ }
+ return el;
+ },
+ createText: (text) => doc.createTextNode(text),
+ createComment: (text) => doc.createComment(text),
+ setText: (node, text) => {
+ node.nodeValue = text;
+ },
+ setElementText: (el, text) => {
+ el.textContent = text;
+ },
+ parentNode: (node) => node.parentNode,
+ nextSibling: (node) => node.nextSibling,
+ querySelector: (selector) => doc.querySelector(selector),
+ setScopeId(el, id) {
+ el.setAttribute(id, "");
+ },
+ // __UNSAFE__
+ // Reason: innerHTML.
+ // Static content here can only come from compiled templates.
+ // As long as the user only uses trusted templates, this is safe.
+ insertStaticContent(content, parent, anchor, namespace, start, end) {
+ const before = anchor ? anchor.previousSibling : parent.lastChild;
+ if (start && (start === end || start.nextSibling)) {
+ while (true) {
+ parent.insertBefore(start.cloneNode(true), anchor);
+ if (start === end || !(start = start.nextSibling)) break;
+ }
+ } else {
+ templateContainer.innerHTML = unsafeToTrustedHTML(
+ namespace === "svg" ? `${content} ` : namespace === "mathml" ? `${content} ` : content
+ );
+ const template = templateContainer.content;
+ if (namespace === "svg" || namespace === "mathml") {
+ const wrapper = template.firstChild;
+ while (wrapper.firstChild) {
+ template.appendChild(wrapper.firstChild);
+ }
+ template.removeChild(wrapper);
+ }
+ parent.insertBefore(template, anchor);
+ }
+ return [
+ // first
+ before ? before.nextSibling : parent.firstChild,
+ // last
+ anchor ? anchor.previousSibling : parent.lastChild
+ ];
+ }
+};
+const vtcKey = Symbol("_vtc");
+function patchClass(el, value, isSVG) {
+ const transitionClasses = el[vtcKey];
+ if (transitionClasses) {
+ value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
+ }
+ if (value == null) {
+ el.removeAttribute("class");
+ } else if (isSVG) {
+ el.setAttribute("class", value);
+ } else {
+ el.className = value;
+ }
+}
+const vShowOriginalDisplay = Symbol("_vod");
+const vShowHidden = Symbol("_vsh");
+const CSS_VAR_TEXT = Symbol("");
+const displayRE = /(^|;)\s*display\s*:/;
+function patchStyle(el, prev, next) {
+ const style = el.style;
+ const isCssString = isString$1(next);
+ let hasControlledDisplay = false;
+ if (next && !isCssString) {
+ if (prev) {
+ if (!isString$1(prev)) {
+ for (const key in prev) {
+ if (next[key] == null) {
+ setStyle(style, key, "");
+ }
+ }
+ } else {
+ for (const prevStyle of prev.split(";")) {
+ const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim();
+ if (next[key] == null) {
+ setStyle(style, key, "");
+ }
+ }
+ }
+ }
+ for (const key in next) {
+ if (key === "display") {
+ hasControlledDisplay = true;
+ }
+ setStyle(style, key, next[key]);
+ }
+ } else {
+ if (isCssString) {
+ if (prev !== next) {
+ const cssVarText = style[CSS_VAR_TEXT];
+ if (cssVarText) {
+ next += ";" + cssVarText;
+ }
+ style.cssText = next;
+ hasControlledDisplay = displayRE.test(next);
+ }
+ } else if (prev) {
+ el.removeAttribute("style");
+ }
+ }
+ if (vShowOriginalDisplay in el) {
+ el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
+ if (el[vShowHidden]) {
+ style.display = "none";
+ }
+ }
+}
+const importantRE = /\s*!important$/;
+function setStyle(style, name, val) {
+ if (isArray$2(val)) {
+ val.forEach((v) => setStyle(style, name, v));
+ } else {
+ if (val == null) val = "";
+ if (name.startsWith("--")) {
+ style.setProperty(name, val);
+ } else {
+ const prefixed = autoPrefix(style, name);
+ if (importantRE.test(val)) {
+ style.setProperty(
+ hyphenate(prefixed),
+ val.replace(importantRE, ""),
+ "important"
+ );
+ } else {
+ style[prefixed] = val;
+ }
+ }
+ }
+}
+const prefixes = ["Webkit", "Moz", "ms"];
+const prefixCache = {};
+function autoPrefix(style, rawName) {
+ const cached = prefixCache[rawName];
+ if (cached) {
+ return cached;
+ }
+ let name = camelize(rawName);
+ if (name !== "filter" && name in style) {
+ return prefixCache[rawName] = name;
+ }
+ name = capitalize(name);
+ for (let i = 0; i < prefixes.length; i++) {
+ const prefixed = prefixes[i] + name;
+ if (prefixed in style) {
+ return prefixCache[rawName] = prefixed;
+ }
+ }
+ return rawName;
+}
+const xlinkNS = "http://www.w3.org/1999/xlink";
+function patchAttr(el, key, value, isSVG, instance, isBoolean2 = isSpecialBooleanAttr(key)) {
+ if (isSVG && key.startsWith("xlink:")) {
+ if (value == null) {
+ el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
+ } else {
+ el.setAttributeNS(xlinkNS, key, value);
+ }
+ } else {
+ if (value == null || isBoolean2 && !includeBooleanAttr(value)) {
+ el.removeAttribute(key);
+ } else {
+ el.setAttribute(
+ key,
+ isBoolean2 ? "" : isSymbol(value) ? String(value) : value
+ );
+ }
+ }
+}
+function patchDOMProp(el, key, value, parentComponent, attrName) {
+ if (key === "innerHTML" || key === "textContent") {
+ if (value != null) {
+ el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value;
+ }
+ return;
+ }
+ const tag = el.tagName;
+ if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
+ !tag.includes("-")) {
+ const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
+ const newValue = value == null ? (
+ // #11647: value should be set as empty string for null and undefined,
+ // but should be set as 'on'.
+ el.type === "checkbox" ? "on" : ""
+ ) : String(value);
+ if (oldValue !== newValue || !("_value" in el)) {
+ el.value = newValue;
+ }
+ if (value == null) {
+ el.removeAttribute(key);
+ }
+ el._value = value;
+ return;
+ }
+ let needRemove = false;
+ if (value === "" || value == null) {
+ const type = typeof el[key];
+ if (type === "boolean") {
+ value = includeBooleanAttr(value);
+ } else if (value == null && type === "string") {
+ value = "";
+ needRemove = true;
+ } else if (type === "number") {
+ value = 0;
+ needRemove = true;
+ }
+ }
+ try {
+ el[key] = value;
+ } catch (e) {
+ }
+ needRemove && el.removeAttribute(attrName || key);
+}
+function addEventListener(el, event, handler, options) {
+ el.addEventListener(event, handler, options);
+}
+function removeEventListener(el, event, handler, options) {
+ el.removeEventListener(event, handler, options);
+}
+const veiKey = Symbol("_vei");
+function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
+ const invokers = el[veiKey] || (el[veiKey] = {});
+ const existingInvoker = invokers[rawName];
+ if (nextValue && existingInvoker) {
+ existingInvoker.value = nextValue;
+ } else {
+ const [name, options] = parseName(rawName);
+ if (nextValue) {
+ const invoker = invokers[rawName] = createInvoker(
+ nextValue,
+ instance
+ );
+ addEventListener(el, name, invoker, options);
+ } else if (existingInvoker) {
+ removeEventListener(el, name, existingInvoker, options);
+ invokers[rawName] = void 0;
+ }
+ }
+}
+const optionsModifierRE = /(?:Once|Passive|Capture)$/;
+function parseName(name) {
+ let options;
+ if (optionsModifierRE.test(name)) {
+ options = {};
+ let m;
+ while (m = name.match(optionsModifierRE)) {
+ name = name.slice(0, name.length - m[0].length);
+ options[m[0].toLowerCase()] = true;
+ }
+ }
+ const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
+ return [event, options];
+}
+let cachedNow = 0;
+const p = /* @__PURE__ */ Promise.resolve();
+const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
+function createInvoker(initialValue, instance) {
+ const invoker = (e) => {
+ if (!e._vts) {
+ e._vts = Date.now();
+ } else if (e._vts <= invoker.attached) {
+ return;
+ }
+ callWithAsyncErrorHandling(
+ patchStopImmediatePropagation(e, invoker.value),
+ instance,
+ 5,
+ [e]
+ );
+ };
+ invoker.value = initialValue;
+ invoker.attached = getNow();
+ return invoker;
+}
+function patchStopImmediatePropagation(e, value) {
+ if (isArray$2(value)) {
+ const originalStop = e.stopImmediatePropagation;
+ e.stopImmediatePropagation = () => {
+ originalStop.call(e);
+ e._stopped = true;
+ };
+ return value.map(
+ (fn) => (e2) => !e2._stopped && fn && fn(e2)
+ );
+ } else {
+ return value;
+ }
+}
+const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
+key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
+const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {
+ const isSVG = namespace === "svg";
+ if (key === "class") {
+ patchClass(el, nextValue, isSVG);
+ } else if (key === "style") {
+ patchStyle(el, prevValue, nextValue);
+ } else if (isOn(key)) {
+ if (!isModelListener(key)) {
+ patchEvent(el, key, prevValue, nextValue, parentComponent);
+ }
+ } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
+ patchDOMProp(el, key, nextValue);
+ if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) {
+ patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
+ }
+ } else if (
+ // #11081 force set props for possible async custom element
+ el._isVueCE && (/[A-Z]/.test(key) || !isString$1(nextValue))
+ ) {
+ patchDOMProp(el, camelize(key), nextValue, parentComponent, key);
+ } else {
+ if (key === "true-value") {
+ el._trueValue = nextValue;
+ } else if (key === "false-value") {
+ el._falseValue = nextValue;
+ }
+ patchAttr(el, key, nextValue, isSVG);
+ }
+};
+function shouldSetAsProp(el, key, value, isSVG) {
+ if (isSVG) {
+ if (key === "innerHTML" || key === "textContent") {
+ return true;
+ }
+ if (key in el && isNativeOn(key) && isFunction$1(value)) {
+ return true;
+ }
+ return false;
+ }
+ if (key === "spellcheck" || key === "draggable" || key === "translate") {
+ return false;
+ }
+ if (key === "form") {
+ return false;
+ }
+ if (key === "list" && el.tagName === "INPUT") {
+ return false;
+ }
+ if (key === "type" && el.tagName === "TEXTAREA") {
+ return false;
+ }
+ if (key === "width" || key === "height") {
+ const tag = el.tagName;
+ if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") {
+ return false;
+ }
+ }
+ if (isNativeOn(key) && isString$1(value)) {
+ return false;
+ }
+ return key in el;
+}
+const getModelAssigner = (vnode) => {
+ const fn = vnode.props["onUpdate:modelValue"] || false;
+ return isArray$2(fn) ? (value) => invokeArrayFns(fn, value) : fn;
+};
+function onCompositionStart(e) {
+ e.target.composing = true;
+}
+function onCompositionEnd(e) {
+ const target = e.target;
+ if (target.composing) {
+ target.composing = false;
+ target.dispatchEvent(new Event("input"));
+ }
+}
+const assignKey = Symbol("_assign");
+const vModelText = {
+ created(el, { modifiers: { lazy, trim: trim2, number } }, vnode) {
+ el[assignKey] = getModelAssigner(vnode);
+ const castToNumber = number || vnode.props && vnode.props.type === "number";
+ addEventListener(el, lazy ? "change" : "input", (e) => {
+ if (e.target.composing) return;
+ let domValue = el.value;
+ if (trim2) {
+ domValue = domValue.trim();
+ }
+ if (castToNumber) {
+ domValue = looseToNumber(domValue);
+ }
+ el[assignKey](domValue);
+ });
+ if (trim2) {
+ addEventListener(el, "change", () => {
+ el.value = el.value.trim();
+ });
+ }
+ if (!lazy) {
+ addEventListener(el, "compositionstart", onCompositionStart);
+ addEventListener(el, "compositionend", onCompositionEnd);
+ addEventListener(el, "change", onCompositionEnd);
+ }
+ },
+ // set value on mounted so it's after min/max for type="range"
+ mounted(el, { value }) {
+ el.value = value == null ? "" : value;
+ },
+ beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim: trim2, number } }, vnode) {
+ el[assignKey] = getModelAssigner(vnode);
+ if (el.composing) return;
+ const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value;
+ const newValue = value == null ? "" : value;
+ if (elValue === newValue) {
+ return;
+ }
+ if (document.activeElement === el && el.type !== "range") {
+ if (lazy && value === oldValue) {
+ return;
+ }
+ if (trim2 && el.value.trim() === newValue) {
+ return;
+ }
+ }
+ el.value = newValue;
+ }
+};
+const systemModifiers = ["ctrl", "shift", "alt", "meta"];
+const modifierGuards = {
+ stop: (e) => e.stopPropagation(),
+ prevent: (e) => e.preventDefault(),
+ self: (e) => e.target !== e.currentTarget,
+ ctrl: (e) => !e.ctrlKey,
+ shift: (e) => !e.shiftKey,
+ alt: (e) => !e.altKey,
+ meta: (e) => !e.metaKey,
+ left: (e) => "button" in e && e.button !== 0,
+ middle: (e) => "button" in e && e.button !== 1,
+ right: (e) => "button" in e && e.button !== 2,
+ exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
+};
+const withModifiers = (fn, modifiers) => {
+ const cache = fn._withMods || (fn._withMods = {});
+ const cacheKey = modifiers.join(".");
+ return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
+ for (let i = 0; i < modifiers.length; i++) {
+ const guard = modifierGuards[modifiers[i]];
+ if (guard && guard(event, modifiers)) return;
+ }
+ return fn(event, ...args);
+ });
+};
+const rendererOptions = /* @__PURE__ */ extend$1({ patchProp }, nodeOps);
+let renderer;
+function ensureRenderer() {
+ return renderer || (renderer = createRenderer(rendererOptions));
+}
+const createApp = (...args) => {
+ const app2 = ensureRenderer().createApp(...args);
+ const { mount } = app2;
+ app2.mount = (containerOrSelector) => {
+ const container = normalizeContainer(containerOrSelector);
+ if (!container) return;
+ const component = app2._component;
+ if (!isFunction$1(component) && !component.render && !component.template) {
+ component.template = container.innerHTML;
+ }
+ if (container.nodeType === 1) {
+ container.textContent = "";
+ }
+ const proxy = mount(container, false, resolveRootNamespace(container));
+ if (container instanceof Element) {
+ container.removeAttribute("v-cloak");
+ container.setAttribute("data-v-app", "");
+ }
+ return proxy;
+ };
+ return app2;
+};
+function resolveRootNamespace(container) {
+ if (container instanceof SVGElement) {
+ return "svg";
+ }
+ if (typeof MathMLElement === "function" && container instanceof MathMLElement) {
+ return "mathml";
+ }
+}
+function normalizeContainer(container) {
+ if (isString$1(container)) {
+ const res = document.querySelector(container);
+ return res;
+ }
+ return container;
+}
+/*!
+ * pinia v3.0.1
+ * (c) 2025 Eduardo San Martin Morote
+ * @license MIT
+ */
+let activePinia;
+const setActivePinia = (pinia) => activePinia = pinia;
+const piniaSymbol = (
+ /* istanbul ignore next */
+ Symbol()
+);
+function isPlainObject$1(o) {
+ return o && typeof o === "object" && Object.prototype.toString.call(o) === "[object Object]" && typeof o.toJSON !== "function";
+}
+var MutationType;
+(function(MutationType2) {
+ MutationType2["direct"] = "direct";
+ MutationType2["patchObject"] = "patch object";
+ MutationType2["patchFunction"] = "patch function";
+})(MutationType || (MutationType = {}));
+function createPinia() {
+ const scope = effectScope(true);
+ const state = scope.run(() => ref({}));
+ let _p = [];
+ let toBeInstalled = [];
+ const pinia = markRaw({
+ install(app2) {
+ setActivePinia(pinia);
+ pinia._a = app2;
+ app2.provide(piniaSymbol, pinia);
+ app2.config.globalProperties.$pinia = pinia;
+ toBeInstalled.forEach((plugin) => _p.push(plugin));
+ toBeInstalled = [];
+ },
+ use(plugin) {
+ if (!this._a) {
+ toBeInstalled.push(plugin);
+ } else {
+ _p.push(plugin);
+ }
+ return this;
+ },
+ _p,
+ // it's actually undefined here
+ // @ts-expect-error
+ _a: null,
+ _e: scope,
+ _s: /* @__PURE__ */ new Map(),
+ state
+ });
+ return pinia;
+}
+const noop$2 = () => {
+};
+function addSubscription(subscriptions, callback, detached, onCleanup = noop$2) {
+ subscriptions.push(callback);
+ const removeSubscription = () => {
+ const idx = subscriptions.indexOf(callback);
+ if (idx > -1) {
+ subscriptions.splice(idx, 1);
+ onCleanup();
+ }
+ };
+ if (!detached && getCurrentScope()) {
+ onScopeDispose(removeSubscription);
+ }
+ return removeSubscription;
+}
+function triggerSubscriptions(subscriptions, ...args) {
+ subscriptions.slice().forEach((callback) => {
+ callback(...args);
+ });
+}
+const fallbackRunWithContext = (fn) => fn();
+const ACTION_MARKER = Symbol();
+const ACTION_NAME = Symbol();
+function mergeReactiveObjects(target, patchToApply) {
+ if (target instanceof Map && patchToApply instanceof Map) {
+ patchToApply.forEach((value, key) => target.set(key, value));
+ } else if (target instanceof Set && patchToApply instanceof Set) {
+ patchToApply.forEach(target.add, target);
+ }
+ for (const key in patchToApply) {
+ if (!patchToApply.hasOwnProperty(key))
+ continue;
+ const subPatch = patchToApply[key];
+ const targetValue = target[key];
+ if (isPlainObject$1(targetValue) && isPlainObject$1(subPatch) && target.hasOwnProperty(key) && !isRef(subPatch) && !isReactive(subPatch)) {
+ target[key] = mergeReactiveObjects(targetValue, subPatch);
+ } else {
+ target[key] = subPatch;
+ }
+ }
+ return target;
+}
+const skipHydrateSymbol = (
+ /* istanbul ignore next */
+ Symbol()
+);
+function shouldHydrate(obj) {
+ return !isPlainObject$1(obj) || !obj.hasOwnProperty(skipHydrateSymbol);
+}
+const { assign: assign$1 } = Object;
+function isComputed(o) {
+ return !!(isRef(o) && o.effect);
+}
+function createOptionsStore(id, options, pinia, hot) {
+ const { state, actions, getters } = options;
+ const initialState = pinia.state.value[id];
+ let store;
+ function setup() {
+ if (!initialState && true) {
+ pinia.state.value[id] = state ? state() : {};
+ }
+ const localState = toRefs(pinia.state.value[id]);
+ return assign$1(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {
+ computedGetters[name] = markRaw(computed(() => {
+ setActivePinia(pinia);
+ const store2 = pinia._s.get(id);
+ return getters[name].call(store2, store2);
+ }));
+ return computedGetters;
+ }, {}));
+ }
+ store = createSetupStore(id, setup, options, pinia, hot, true);
+ return store;
+}
+function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {
+ let scope;
+ const optionsForPlugin = assign$1({ actions: {} }, options);
+ const $subscribeOptions = { deep: true };
+ let isListening;
+ let isSyncListening;
+ let subscriptions = [];
+ let actionSubscriptions = [];
+ let debuggerEvents;
+ const initialState = pinia.state.value[$id];
+ if (!isOptionsStore && !initialState && true) {
+ pinia.state.value[$id] = {};
+ }
+ ref({});
+ let activeListener;
+ function $patch(partialStateOrMutator) {
+ let subscriptionMutation;
+ isListening = isSyncListening = false;
+ if (typeof partialStateOrMutator === "function") {
+ partialStateOrMutator(pinia.state.value[$id]);
+ subscriptionMutation = {
+ type: MutationType.patchFunction,
+ storeId: $id,
+ events: debuggerEvents
+ };
+ } else {
+ mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);
+ subscriptionMutation = {
+ type: MutationType.patchObject,
+ payload: partialStateOrMutator,
+ storeId: $id,
+ events: debuggerEvents
+ };
+ }
+ const myListenerId = activeListener = Symbol();
+ nextTick().then(() => {
+ if (activeListener === myListenerId) {
+ isListening = true;
+ }
+ });
+ isSyncListening = true;
+ triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
+ }
+ const $reset = isOptionsStore ? function $reset2() {
+ const { state } = options;
+ const newState = state ? state() : {};
+ this.$patch(($state) => {
+ assign$1($state, newState);
+ });
+ } : (
+ /* istanbul ignore next */
+ noop$2
+ );
+ function $dispose() {
+ scope.stop();
+ subscriptions = [];
+ actionSubscriptions = [];
+ pinia._s.delete($id);
+ }
+ const action = (fn, name = "") => {
+ if (ACTION_MARKER in fn) {
+ fn[ACTION_NAME] = name;
+ return fn;
+ }
+ const wrappedAction = function() {
+ setActivePinia(pinia);
+ const args = Array.from(arguments);
+ const afterCallbackList = [];
+ const onErrorCallbackList = [];
+ function after(callback) {
+ afterCallbackList.push(callback);
+ }
+ function onError(callback) {
+ onErrorCallbackList.push(callback);
+ }
+ triggerSubscriptions(actionSubscriptions, {
+ args,
+ name: wrappedAction[ACTION_NAME],
+ store,
+ after,
+ onError
+ });
+ let ret;
+ try {
+ ret = fn.apply(this && this.$id === $id ? this : store, args);
+ } catch (error) {
+ triggerSubscriptions(onErrorCallbackList, error);
+ throw error;
+ }
+ if (ret instanceof Promise) {
+ return ret.then((value) => {
+ triggerSubscriptions(afterCallbackList, value);
+ return value;
+ }).catch((error) => {
+ triggerSubscriptions(onErrorCallbackList, error);
+ return Promise.reject(error);
+ });
+ }
+ triggerSubscriptions(afterCallbackList, ret);
+ return ret;
+ };
+ wrappedAction[ACTION_MARKER] = true;
+ wrappedAction[ACTION_NAME] = name;
+ return wrappedAction;
+ };
+ const partialStore = {
+ _p: pinia,
+ // _s: scope,
+ $id,
+ $onAction: addSubscription.bind(null, actionSubscriptions),
+ $patch,
+ $reset,
+ $subscribe(callback, options2 = {}) {
+ const removeSubscription = addSubscription(subscriptions, callback, options2.detached, () => stopWatcher());
+ const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {
+ if (options2.flush === "sync" ? isSyncListening : isListening) {
+ callback({
+ storeId: $id,
+ type: MutationType.direct,
+ events: debuggerEvents
+ }, state);
+ }
+ }, assign$1({}, $subscribeOptions, options2)));
+ return removeSubscription;
+ },
+ $dispose
+ };
+ const store = reactive(partialStore);
+ pinia._s.set($id, store);
+ const runWithContext = pinia._a && pinia._a.runWithContext || fallbackRunWithContext;
+ const setupStore = runWithContext(() => pinia._e.run(() => (scope = effectScope()).run(() => setup({ action }))));
+ for (const key in setupStore) {
+ const prop = setupStore[key];
+ if (isRef(prop) && !isComputed(prop) || isReactive(prop)) {
+ if (!isOptionsStore) {
+ if (initialState && shouldHydrate(prop)) {
+ if (isRef(prop)) {
+ prop.value = initialState[key];
+ } else {
+ mergeReactiveObjects(prop, initialState[key]);
+ }
+ }
+ pinia.state.value[$id][key] = prop;
+ }
+ } else if (typeof prop === "function") {
+ const actionValue = action(prop, key);
+ setupStore[key] = actionValue;
+ optionsForPlugin.actions[key] = prop;
+ } else ;
+ }
+ assign$1(store, setupStore);
+ assign$1(toRaw(store), setupStore);
+ Object.defineProperty(store, "$state", {
+ get: () => pinia.state.value[$id],
+ set: (state) => {
+ $patch(($state) => {
+ assign$1($state, state);
+ });
+ }
+ });
+ pinia._p.forEach((extender) => {
+ {
+ assign$1(store, scope.run(() => extender({
+ store,
+ app: pinia._a,
+ pinia,
+ options: optionsForPlugin
+ })));
+ }
+ });
+ if (initialState && isOptionsStore && options.hydrate) {
+ options.hydrate(store.$state, initialState);
+ }
+ isListening = true;
+ isSyncListening = true;
+ return store;
+}
+/*! #__NO_SIDE_EFFECTS__ */
+// @__NO_SIDE_EFFECTS__
+function defineStore(id, setup, setupOptions) {
+ let options;
+ const isSetupStore = typeof setup === "function";
+ options = isSetupStore ? setupOptions : setup;
+ function useStore(pinia, hot) {
+ const hasContext = hasInjectionContext();
+ pinia = // in test mode, ignore the argument provided as we can always retrieve a
+ // pinia instance with getActivePinia()
+ pinia || (hasContext ? inject(piniaSymbol, null) : null);
+ if (pinia)
+ setActivePinia(pinia);
+ pinia = activePinia;
+ if (!pinia._s.has(id)) {
+ if (isSetupStore) {
+ createSetupStore(id, setup, options, pinia);
+ } else {
+ createOptionsStore(id, options, pinia);
+ }
+ }
+ const store = pinia._s.get(id);
+ return store;
+ }
+ useStore.$id = id;
+ return useStore;
+}
+const _imports_0$1 = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2024.2.3,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%202560%201440'%20style='enable-background:new%200%200%202560%201440;'%20xml:space='preserve'%3e%3crect%20style='fill:%23020618;'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_1_'%20cx='1280'%20cy='720'%20r='507.7116'%20fx='1274.7371'%20fy='1155.8185'%20gradientTransform='matrix(1%200%200%202.2985%200%20-934.9553)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='opacity:0.55;fill:url(%23SVGID_1_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_2_'%20cx='1352.0476'%20cy='1354.1904'%20r='1334.0841'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='opacity:0.55;fill:url(%23SVGID_2_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_3_'%20cx='1292.0344'%20cy='1255.0016'%20r='2246.7517'%20gradientTransform='matrix(-0.7144%20-0.6998%200.1899%20-0.1939%201976.6873%202402.437)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3cpolygon%20style='opacity:0.55;fill:url(%23SVGID_3_);'%20points='2560,1440%200,1440%200,-7%202560,0%20'/%3e%3cradialGradient%20id='SVGID_4_'%20cx='1292.0344'%20cy='1255.8966'%20r='2246.5256'%20fx='334.4712'%20fy='1265.3895'%20gradientTransform='matrix(0.7144%20-0.6998%20-0.1899%20-0.1939%20583.4827%202403.5054)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3cpolygon%20style='opacity:0.55;fill:url(%23SVGID_4_);'%20points='0,1440%202560,1440%202560,0%200,0%20'/%3e%3cradialGradient%20id='SVGID_5_'%20cx='1239.8966'%20cy='1737.5518'%20r='877.3733'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_5_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_6_'%20cx='1287.069'%20cy='950.5172'%20r='845.7465'%20fx='1276.8361'%20fy='325.8423'%20gradientTransform='matrix(-1%203.730347e-03%20-1.479320e-03%20-0.3966%202575.5352%201322.6541)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900;stop-opacity:0.3'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_6_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_7_'%20cx='1316.8621'%20cy='1417.2759'%20r='1888.6272'%20gradientTransform='matrix(0.6652%20-0.7467%200.1801%200.1604%20185.7137%202173.2124)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900;stop-opacity:0.38'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_7_);'%20width='2560'%20height='1440'/%3e%3c/svg%3e";
+const _imports_1 = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20140%2080'%20style='enable-background:new%200%200%20140%2080;'%20xml:space='preserve'%3e%3cpath%20style='fill:%23fff'%20d='M95.5,18.3l-0.2-0.1C95.2,18.1,95,18,94.8,18c-0.3,0-0.5,0.1-0.7,0.3L82.8,29.6l8.5,8.5l12-12L95.5,18.3z'/%3e%3cpath%20style='fill:%23fff'%20d='M57.3,29.5L46,18.3c-0.2-0.2-0.5-0.3-0.7-0.3s-0.4,0-0.5,0.1l-0.2,0.1L36.8,26l12,12L57.3,29.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M94.7,67l-14-14l-8.5,8.5l11.3,11.3c1,1,2.1,1.8,3.2,2.5c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.7,8.1-2.2L94.7,67%20L94.7,67z'/%3e%3cpath%20style='fill:%23fff'%20d='M114,15.5l-7.8-7.8c-0.2-0.2-0.5-0.5-0.7-0.7c-5.3-4.6-12.8-5.2-18.7-1.8c-1.1,0.7-2.2,1.5-3.2,2.5L72.2,19%20l2.6,2.6l5.9,5.9L92,16.2c0.8-0.8,1.8-1.1,2.8-1.1c0.7,0,1.4,0.2,2,0.5l0.1-0.1l8.5,8.5l13.4,13.4c0.8,0.8,1.1,1.8,1.1,2.8%20s-0.4,2.1-1.1,2.8l-11.3,11.3l5,5l3.5,3.5l11.3-11.3c3.1-3.1,4.7-7.2,4.7-11.3c0-4.1-1.5-8.2-4.6-11.3L114,15.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M105.4,56.5l-3.5-3.5l-4.5-4.5L81.2,32.2l-8.5-8.5l-2.6-2.6L56.6,7.7c-1-1-2.1-1.8-3.2-2.5%20C47.6,1.8,40,2.4,34.8,7c-0.3,0.2-0.5,0.4-0.7,0.7l-7.8,7.8L12.8,28.9C9.7,32,8.1,36.1,8.1,40.2c0,4.1,1.6,8.2,4.7,11.3l11.3,11.3%20l3.5-3.5l5-5L21.3,43c-0.8-0.8-1.1-1.8-1.1-2.8s0.4-2.1,1.1-2.8L34.7,24l8.5-8.5l0.1,0.1c1.5-0.9,3.6-0.7,4.8,0.6l11.3,11.3l2.1,2.1%20l8.5,8.5l2.1,2.1l8.5,8.5l16.2,16.2L97,65l8.4,8.4c0.3-0.2,0.5-0.4,0.7-0.7l7.8-7.8l-3.5-3.4L105.4,56.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M70.1,42.3l-8.5,8.5L45.4,67l-0.1,0.1L40.4,72l-3.2,3.2c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.8,8.1-2.2%20c1.1-0.7,2.2-1.5,3.2-2.5L70,59.3l8.5-8.5L70.1,42.3z'/%3e%3cpath%20style='fill:%23fff'%20d='M43.1,65.1l0.1-0.1l16.2-16.2l8.5-8.5l-8.4-8.6L51,40.2L38.2,53l-3.5,3.5l-5,5L26.2,65l7.8,7.8%20c0.2,0.2,0.5,0.5,0.7,0.7l3.5-3.5L43.1,65.1z'/%3e%3c/svg%3e";
+const _imports_0 = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20140%2080'%20style='enable-background:new%200%200%20140%2080;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:url(%23SVGID_1_);}%20.st1{fill:url(%23SVGID_2_);}%20.st2{fill:url(%23SVGID_3_);}%20.st3{fill:url(%23SVGID_4_);}%20.st4{fill:url(%23SVGID_5_);}%20.st5{fill:url(%23SVGID_6_);}%20.st6{fill:url(%23SVGID_7_);}%20%3c/style%3e%3clinearGradient%20id='SVGID_1_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28.05'%20x2='140'%20y2='28.05'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st0'%20d='M95.5,18.3l-0.2-0.1C95.2,18.1,95,18,94.8,18c-0.3,0-0.5,0.1-0.7,0.3L82.8,29.6l8.5,8.5l12-12L95.5,18.3z'/%3e%3clinearGradient%20id='SVGID_2_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28'%20x2='140'%20y2='28'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st1'%20d='M57.3,29.5L46,18.3c-0.2-0.2-0.5-0.3-0.7-0.3s-0.4,0-0.5,0.1l-0.2,0.1L36.8,26l12,12L57.3,29.5z'/%3e%3clinearGradient%20id='SVGID_3_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='65.25'%20x2='140'%20y2='65.25'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st2'%20d='M94.7,67l-14-14l-8.5,8.5l11.3,11.3c1,1,2.1,1.8,3.2,2.5c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.7,8.1-2.2L94.7,67%20L94.7,67z'/%3e%3clinearGradient%20id='SVGID_4_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='32.9162'%20x2='140'%20y2='32.9162'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st3'%20d='M114,15.5l-7.8-7.8c-0.2-0.2-0.5-0.5-0.7-0.7c-5.3-4.6-12.8-5.2-18.7-1.8c-1.1,0.7-2.2,1.5-3.2,2.5L72.2,19%20l2.6,2.6l5.9,5.9L92,16.2c0.8-0.8,1.8-1.1,2.8-1.1c0.7,0,1.4,0.2,2,0.5l0.1-0.1l8.5,8.5l13.4,13.4c0.8,0.8,1.1,1.8,1.1,2.8%20s-0.4,2.1-1.1,2.8l-11.3,11.3l5,5l3.5,3.5l11.3-11.3c3.1-3.1,4.7-7.2,4.7-11.3c0-4.1-1.5-8.2-4.6-11.3L114,15.5z'/%3e%3clinearGradient%20id='SVGID_5_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='38.2163'%20x2='140'%20y2='38.2163'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st4'%20d='M105.4,56.5l-3.5-3.5l-4.5-4.5L81.2,32.2l-8.5-8.5l-2.6-2.6L56.6,7.7c-1-1-2.1-1.8-3.2-2.5%20C47.6,1.8,40,2.4,34.8,7c-0.3,0.2-0.5,0.4-0.7,0.7l-7.8,7.8L12.8,28.9C9.7,32,8.1,36.1,8.1,40.2c0,4.1,1.6,8.2,4.7,11.3l11.3,11.3%20l3.5-3.5l5-5L21.3,43c-0.8-0.8-1.1-1.8-1.1-2.8s0.4-2.1,1.1-2.8L34.7,24l8.5-8.5l0.1,0.1c1.5-0.9,3.6-0.7,4.8,0.6l11.3,11.3l2.1,2.1%20l8.5,8.5l2.1,2.1l8.5,8.5l16.2,16.2L97,65l8.4,8.4c0.3-0.2,0.5-0.4,0.7-0.7l7.8-7.8l-3.5-3.4L105.4,56.5z'/%3e%3clinearGradient%20id='SVGID_6_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='59.85'%20x2='140'%20y2='59.85'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st5'%20d='M70.1,42.3l-8.5,8.5L45.4,67l-0.1,0.1L40.4,72l-3.2,3.2c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.8,8.1-2.2%20c1.1-0.7,2.2-1.5,3.2-2.5L70,59.3l8.5-8.5L70.1,42.3z'/%3e%3clinearGradient%20id='SVGID_7_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='52.6'%20x2='140'%20y2='52.6'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st6'%20d='M43.1,65.1l0.1-0.1l16.2-16.2l8.5-8.5l-8.4-8.6L51,40.2L38.2,53l-3.5,3.5l-5,5L26.2,65l7.8,7.8%20c0.2,0.2,0.5,0.5,0.7,0.7l3.5-3.5L43.1,65.1z'/%3e%3c/svg%3e";
+/*!
+ * vue-router v4.5.0
+ * (c) 2024 Eduardo San Martin Morote
+ * @license MIT
+ */
+const isBrowser = typeof document !== "undefined";
+function isRouteComponent(component) {
+ return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
+}
+function isESModule(obj) {
+ return obj.__esModule || obj[Symbol.toStringTag] === "Module" || // support CF with dynamic imports that do not
+ // add the Module string tag
+ obj.default && isRouteComponent(obj.default);
+}
+const assign = Object.assign;
+function applyToParams(fn, params) {
+ const newParams = {};
+ for (const key in params) {
+ const value = params[key];
+ newParams[key] = isArray$1(value) ? value.map(fn) : fn(value);
+ }
+ return newParams;
+}
+const noop$1 = () => {
+};
+const isArray$1 = Array.isArray;
+const HASH_RE = /#/g;
+const AMPERSAND_RE = /&/g;
+const SLASH_RE = /\//g;
+const EQUAL_RE = /=/g;
+const IM_RE = /\?/g;
+const PLUS_RE = /\+/g;
+const ENC_BRACKET_OPEN_RE = /%5B/g;
+const ENC_BRACKET_CLOSE_RE = /%5D/g;
+const ENC_CARET_RE = /%5E/g;
+const ENC_BACKTICK_RE = /%60/g;
+const ENC_CURLY_OPEN_RE = /%7B/g;
+const ENC_PIPE_RE = /%7C/g;
+const ENC_CURLY_CLOSE_RE = /%7D/g;
+const ENC_SPACE_RE = /%20/g;
+function commonEncode(text) {
+ return encodeURI("" + text).replace(ENC_PIPE_RE, "|").replace(ENC_BRACKET_OPEN_RE, "[").replace(ENC_BRACKET_CLOSE_RE, "]");
+}
+function encodeHash(text) {
+ return commonEncode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
+}
+function encodeQueryValue(text) {
+ return commonEncode(text).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
+}
+function encodeQueryKey(text) {
+ return encodeQueryValue(text).replace(EQUAL_RE, "%3D");
+}
+function encodePath(text) {
+ return commonEncode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F");
+}
+function encodeParam(text) {
+ return text == null ? "" : encodePath(text).replace(SLASH_RE, "%2F");
+}
+function decode(text) {
+ try {
+ return decodeURIComponent("" + text);
+ } catch (err) {
+ }
+ return "" + text;
+}
+const TRAILING_SLASH_RE = /\/$/;
+const removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, "");
+function parseURL(parseQuery2, location2, currentLocation = "/") {
+ let path, query = {}, searchString = "", hash = "";
+ const hashPos = location2.indexOf("#");
+ let searchPos = location2.indexOf("?");
+ if (hashPos < searchPos && hashPos >= 0) {
+ searchPos = -1;
+ }
+ if (searchPos > -1) {
+ path = location2.slice(0, searchPos);
+ searchString = location2.slice(searchPos + 1, hashPos > -1 ? hashPos : location2.length);
+ query = parseQuery2(searchString);
+ }
+ if (hashPos > -1) {
+ path = path || location2.slice(0, hashPos);
+ hash = location2.slice(hashPos, location2.length);
+ }
+ path = resolveRelativePath(path != null ? path : location2, currentLocation);
+ return {
+ fullPath: path + (searchString && "?") + searchString + hash,
+ path,
+ query,
+ hash: decode(hash)
+ };
+}
+function stringifyURL(stringifyQuery2, location2) {
+ const query = location2.query ? stringifyQuery2(location2.query) : "";
+ return location2.path + (query && "?") + query + (location2.hash || "");
+}
+function stripBase(pathname, base) {
+ if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))
+ return pathname;
+ return pathname.slice(base.length) || "/";
+}
+function isSameRouteLocation(stringifyQuery2, a, b) {
+ const aLastIndex = a.matched.length - 1;
+ const bLastIndex = b.matched.length - 1;
+ return aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery2(a.query) === stringifyQuery2(b.query) && a.hash === b.hash;
+}
+function isSameRouteRecord(a, b) {
+ return (a.aliasOf || a) === (b.aliasOf || b);
+}
+function isSameRouteLocationParams(a, b) {
+ if (Object.keys(a).length !== Object.keys(b).length)
+ return false;
+ for (const key in a) {
+ if (!isSameRouteLocationParamsValue(a[key], b[key]))
+ return false;
+ }
+ return true;
+}
+function isSameRouteLocationParamsValue(a, b) {
+ return isArray$1(a) ? isEquivalentArray(a, b) : isArray$1(b) ? isEquivalentArray(b, a) : a === b;
+}
+function isEquivalentArray(a, b) {
+ return isArray$1(b) ? a.length === b.length && a.every((value, i) => value === b[i]) : a.length === 1 && a[0] === b;
+}
+function resolveRelativePath(to, from) {
+ if (to.startsWith("/"))
+ return to;
+ if (!to)
+ return from;
+ const fromSegments = from.split("/");
+ const toSegments = to.split("/");
+ const lastToSegment = toSegments[toSegments.length - 1];
+ if (lastToSegment === ".." || lastToSegment === ".") {
+ toSegments.push("");
+ }
+ let position = fromSegments.length - 1;
+ let toPosition;
+ let segment;
+ for (toPosition = 0; toPosition < toSegments.length; toPosition++) {
+ segment = toSegments[toPosition];
+ if (segment === ".")
+ continue;
+ if (segment === "..") {
+ if (position > 1)
+ position--;
+ } else
+ break;
+ }
+ return fromSegments.slice(0, position).join("/") + "/" + toSegments.slice(toPosition).join("/");
+}
+const START_LOCATION_NORMALIZED = {
+ path: "/",
+ // TODO: could we use a symbol in the future?
+ name: void 0,
+ params: {},
+ query: {},
+ hash: "",
+ fullPath: "/",
+ matched: [],
+ meta: {},
+ redirectedFrom: void 0
+};
+var NavigationType;
+(function(NavigationType2) {
+ NavigationType2["pop"] = "pop";
+ NavigationType2["push"] = "push";
+})(NavigationType || (NavigationType = {}));
+var NavigationDirection;
+(function(NavigationDirection2) {
+ NavigationDirection2["back"] = "back";
+ NavigationDirection2["forward"] = "forward";
+ NavigationDirection2["unknown"] = "";
+})(NavigationDirection || (NavigationDirection = {}));
+function normalizeBase(base) {
+ if (!base) {
+ if (isBrowser) {
+ const baseEl = document.querySelector("base");
+ base = baseEl && baseEl.getAttribute("href") || "/";
+ base = base.replace(/^\w+:\/\/[^\/]+/, "");
+ } else {
+ base = "/";
+ }
+ }
+ if (base[0] !== "/" && base[0] !== "#")
+ base = "/" + base;
+ return removeTrailingSlash(base);
+}
+const BEFORE_HASH_RE = /^[^#]+#/;
+function createHref(base, location2) {
+ return base.replace(BEFORE_HASH_RE, "#") + location2;
+}
+function getElementPosition(el, offset) {
+ const docRect = document.documentElement.getBoundingClientRect();
+ const elRect = el.getBoundingClientRect();
+ return {
+ behavior: offset.behavior,
+ left: elRect.left - docRect.left - (offset.left || 0),
+ top: elRect.top - docRect.top - (offset.top || 0)
+ };
+}
+const computeScrollPosition = () => ({
+ left: window.scrollX,
+ top: window.scrollY
+});
+function scrollToPosition(position) {
+ let scrollToOptions;
+ if ("el" in position) {
+ const positionEl = position.el;
+ const isIdSelector = typeof positionEl === "string" && positionEl.startsWith("#");
+ const el = typeof positionEl === "string" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;
+ if (!el) {
+ return;
+ }
+ scrollToOptions = getElementPosition(el, position);
+ } else {
+ scrollToOptions = position;
+ }
+ if ("scrollBehavior" in document.documentElement.style)
+ window.scrollTo(scrollToOptions);
+ else {
+ window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);
+ }
+}
+function getScrollKey(path, delta) {
+ const position = history.state ? history.state.position - delta : -1;
+ return position + path;
+}
+const scrollPositions = /* @__PURE__ */ new Map();
+function saveScrollPosition(key, scrollPosition) {
+ scrollPositions.set(key, scrollPosition);
+}
+function getSavedScrollPosition(key) {
+ const scroll = scrollPositions.get(key);
+ scrollPositions.delete(key);
+ return scroll;
+}
+let createBaseLocation = () => location.protocol + "//" + location.host;
+function createCurrentLocation(base, location2) {
+ const { pathname, search, hash } = location2;
+ const hashPos = base.indexOf("#");
+ if (hashPos > -1) {
+ let slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;
+ let pathFromHash = hash.slice(slicePos);
+ if (pathFromHash[0] !== "/")
+ pathFromHash = "/" + pathFromHash;
+ return stripBase(pathFromHash, "");
+ }
+ const path = stripBase(pathname, base);
+ return path + search + hash;
+}
+function useHistoryListeners(base, historyState, currentLocation, replace) {
+ let listeners = [];
+ let teardowns = [];
+ let pauseState = null;
+ const popStateHandler = ({ state }) => {
+ const to = createCurrentLocation(base, location);
+ const from = currentLocation.value;
+ const fromState = historyState.value;
+ let delta = 0;
+ if (state) {
+ currentLocation.value = to;
+ historyState.value = state;
+ if (pauseState && pauseState === from) {
+ pauseState = null;
+ return;
+ }
+ delta = fromState ? state.position - fromState.position : 0;
+ } else {
+ replace(to);
+ }
+ listeners.forEach((listener) => {
+ listener(currentLocation.value, from, {
+ delta,
+ type: NavigationType.pop,
+ direction: delta ? delta > 0 ? NavigationDirection.forward : NavigationDirection.back : NavigationDirection.unknown
+ });
+ });
+ };
+ function pauseListeners() {
+ pauseState = currentLocation.value;
+ }
+ function listen(callback) {
+ listeners.push(callback);
+ const teardown = () => {
+ const index = listeners.indexOf(callback);
+ if (index > -1)
+ listeners.splice(index, 1);
+ };
+ teardowns.push(teardown);
+ return teardown;
+ }
+ function beforeUnloadListener() {
+ const { history: history2 } = window;
+ if (!history2.state)
+ return;
+ history2.replaceState(assign({}, history2.state, { scroll: computeScrollPosition() }), "");
+ }
+ function destroy() {
+ for (const teardown of teardowns)
+ teardown();
+ teardowns = [];
+ window.removeEventListener("popstate", popStateHandler);
+ window.removeEventListener("beforeunload", beforeUnloadListener);
+ }
+ window.addEventListener("popstate", popStateHandler);
+ window.addEventListener("beforeunload", beforeUnloadListener, {
+ passive: true
+ });
+ return {
+ pauseListeners,
+ listen,
+ destroy
+ };
+}
+function buildState(back, current, forward, replaced = false, computeScroll = false) {
+ return {
+ back,
+ current,
+ forward,
+ replaced,
+ position: window.history.length,
+ scroll: computeScroll ? computeScrollPosition() : null
+ };
+}
+function useHistoryStateNavigation(base) {
+ const { history: history2, location: location2 } = window;
+ const currentLocation = {
+ value: createCurrentLocation(base, location2)
+ };
+ const historyState = { value: history2.state };
+ if (!historyState.value) {
+ changeLocation(currentLocation.value, {
+ back: null,
+ current: currentLocation.value,
+ forward: null,
+ // the length is off by one, we need to decrease it
+ position: history2.length - 1,
+ replaced: true,
+ // don't add a scroll as the user may have an anchor, and we want
+ // scrollBehavior to be triggered without a saved position
+ scroll: null
+ }, true);
+ }
+ function changeLocation(to, state, replace2) {
+ const hashIndex = base.indexOf("#");
+ const url = hashIndex > -1 ? (location2.host && document.querySelector("base") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to;
+ try {
+ history2[replace2 ? "replaceState" : "pushState"](state, "", url);
+ historyState.value = state;
+ } catch (err) {
+ {
+ console.error(err);
+ }
+ location2[replace2 ? "replace" : "assign"](url);
+ }
+ }
+ function replace(to, data) {
+ const state = assign({}, history2.state, buildState(
+ historyState.value.back,
+ // keep back and forward entries but override current position
+ to,
+ historyState.value.forward,
+ true
+ ), data, { position: historyState.value.position });
+ changeLocation(to, state, true);
+ currentLocation.value = to;
+ }
+ function push(to, data) {
+ const currentState = assign(
+ {},
+ // use current history state to gracefully handle a wrong call to
+ // history.replaceState
+ // https://github.com/vuejs/router/issues/366
+ historyState.value,
+ history2.state,
+ {
+ forward: to,
+ scroll: computeScrollPosition()
+ }
+ );
+ changeLocation(currentState.current, currentState, true);
+ const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);
+ changeLocation(to, state, false);
+ currentLocation.value = to;
+ }
+ return {
+ location: currentLocation,
+ state: historyState,
+ push,
+ replace
+ };
+}
+function createWebHistory(base) {
+ base = normalizeBase(base);
+ const historyNavigation = useHistoryStateNavigation(base);
+ const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);
+ function go(delta, triggerListeners = true) {
+ if (!triggerListeners)
+ historyListeners.pauseListeners();
+ history.go(delta);
+ }
+ const routerHistory = assign({
+ // it's overridden right after
+ location: "",
+ base,
+ go,
+ createHref: createHref.bind(null, base)
+ }, historyNavigation, historyListeners);
+ Object.defineProperty(routerHistory, "location", {
+ enumerable: true,
+ get: () => historyNavigation.location.value
+ });
+ Object.defineProperty(routerHistory, "state", {
+ enumerable: true,
+ get: () => historyNavigation.state.value
+ });
+ return routerHistory;
+}
+function isRouteLocation(route) {
+ return typeof route === "string" || route && typeof route === "object";
+}
+function isRouteName(name) {
+ return typeof name === "string" || typeof name === "symbol";
+}
+const NavigationFailureSymbol = Symbol("");
+var NavigationFailureType;
+(function(NavigationFailureType2) {
+ NavigationFailureType2[NavigationFailureType2["aborted"] = 4] = "aborted";
+ NavigationFailureType2[NavigationFailureType2["cancelled"] = 8] = "cancelled";
+ NavigationFailureType2[NavigationFailureType2["duplicated"] = 16] = "duplicated";
+})(NavigationFailureType || (NavigationFailureType = {}));
+function createRouterError(type, params) {
+ {
+ return assign(new Error(), {
+ type,
+ [NavigationFailureSymbol]: true
+ }, params);
+ }
+}
+function isNavigationFailure(error, type) {
+ return error instanceof Error && NavigationFailureSymbol in error && (type == null || !!(error.type & type));
+}
+const BASE_PARAM_PATTERN = "[^/]+?";
+const BASE_PATH_PARSER_OPTIONS = {
+ sensitive: false,
+ strict: false,
+ start: true,
+ end: true
+};
+const REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g;
+function tokensToParser(segments, extraOptions) {
+ const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);
+ const score = [];
+ let pattern = options.start ? "^" : "";
+ const keys = [];
+ for (const segment of segments) {
+ const segmentScores = segment.length ? [] : [
+ 90
+ /* PathScore.Root */
+ ];
+ if (options.strict && !segment.length)
+ pattern += "/";
+ for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {
+ const token = segment[tokenIndex];
+ let subSegmentScore = 40 + (options.sensitive ? 0.25 : 0);
+ if (token.type === 0) {
+ if (!tokenIndex)
+ pattern += "/";
+ pattern += token.value.replace(REGEX_CHARS_RE, "\\$&");
+ subSegmentScore += 40;
+ } else if (token.type === 1) {
+ const { value, repeatable, optional, regexp } = token;
+ keys.push({
+ name: value,
+ repeatable,
+ optional
+ });
+ const re2 = regexp ? regexp : BASE_PARAM_PATTERN;
+ if (re2 !== BASE_PARAM_PATTERN) {
+ subSegmentScore += 10;
+ try {
+ new RegExp(`(${re2})`);
+ } catch (err) {
+ throw new Error(`Invalid custom RegExp for param "${value}" (${re2}): ` + err.message);
+ }
+ }
+ let subPattern = repeatable ? `((?:${re2})(?:/(?:${re2}))*)` : `(${re2})`;
+ if (!tokenIndex)
+ subPattern = // avoid an optional / if there are more segments e.g. /:p?-static
+ // or /:p?-:p2
+ optional && segment.length < 2 ? `(?:/${subPattern})` : "/" + subPattern;
+ if (optional)
+ subPattern += "?";
+ pattern += subPattern;
+ subSegmentScore += 20;
+ if (optional)
+ subSegmentScore += -8;
+ if (repeatable)
+ subSegmentScore += -20;
+ if (re2 === ".*")
+ subSegmentScore += -50;
+ }
+ segmentScores.push(subSegmentScore);
+ }
+ score.push(segmentScores);
+ }
+ if (options.strict && options.end) {
+ const i = score.length - 1;
+ score[i][score[i].length - 1] += 0.7000000000000001;
+ }
+ if (!options.strict)
+ pattern += "/?";
+ if (options.end)
+ pattern += "$";
+ else if (options.strict && !pattern.endsWith("/"))
+ pattern += "(?:/|$)";
+ const re = new RegExp(pattern, options.sensitive ? "" : "i");
+ function parse(path) {
+ const match = path.match(re);
+ const params = {};
+ if (!match)
+ return null;
+ for (let i = 1; i < match.length; i++) {
+ const value = match[i] || "";
+ const key = keys[i - 1];
+ params[key.name] = value && key.repeatable ? value.split("/") : value;
+ }
+ return params;
+ }
+ function stringify(params) {
+ let path = "";
+ let avoidDuplicatedSlash = false;
+ for (const segment of segments) {
+ if (!avoidDuplicatedSlash || !path.endsWith("/"))
+ path += "/";
+ avoidDuplicatedSlash = false;
+ for (const token of segment) {
+ if (token.type === 0) {
+ path += token.value;
+ } else if (token.type === 1) {
+ const { value, repeatable, optional } = token;
+ const param = value in params ? params[value] : "";
+ if (isArray$1(param) && !repeatable) {
+ throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`);
+ }
+ const text = isArray$1(param) ? param.join("/") : param;
+ if (!text) {
+ if (optional) {
+ if (segment.length < 2) {
+ if (path.endsWith("/"))
+ path = path.slice(0, -1);
+ else
+ avoidDuplicatedSlash = true;
+ }
+ } else
+ throw new Error(`Missing required param "${value}"`);
+ }
+ path += text;
+ }
+ }
+ }
+ return path || "/";
+ }
+ return {
+ re,
+ score,
+ keys,
+ parse,
+ stringify
+ };
+}
+function compareScoreArray(a, b) {
+ let i = 0;
+ while (i < a.length && i < b.length) {
+ const diff = b[i] - a[i];
+ if (diff)
+ return diff;
+ i++;
+ }
+ if (a.length < b.length) {
+ return a.length === 1 && a[0] === 40 + 40 ? -1 : 1;
+ } else if (a.length > b.length) {
+ return b.length === 1 && b[0] === 40 + 40 ? 1 : -1;
+ }
+ return 0;
+}
+function comparePathParserScore(a, b) {
+ let i = 0;
+ const aScore = a.score;
+ const bScore = b.score;
+ while (i < aScore.length && i < bScore.length) {
+ const comp = compareScoreArray(aScore[i], bScore[i]);
+ if (comp)
+ return comp;
+ i++;
+ }
+ if (Math.abs(bScore.length - aScore.length) === 1) {
+ if (isLastScoreNegative(aScore))
+ return 1;
+ if (isLastScoreNegative(bScore))
+ return -1;
+ }
+ return bScore.length - aScore.length;
+}
+function isLastScoreNegative(score) {
+ const last = score[score.length - 1];
+ return score.length > 0 && last[last.length - 1] < 0;
+}
+const ROOT_TOKEN = {
+ type: 0,
+ value: ""
+};
+const VALID_PARAM_RE = /[a-zA-Z0-9_]/;
+function tokenizePath(path) {
+ if (!path)
+ return [[]];
+ if (path === "/")
+ return [[ROOT_TOKEN]];
+ if (!path.startsWith("/")) {
+ throw new Error(`Invalid path "${path}"`);
+ }
+ function crash(message) {
+ throw new Error(`ERR (${state})/"${buffer}": ${message}`);
+ }
+ let state = 0;
+ let previousState = state;
+ const tokens = [];
+ let segment;
+ function finalizeSegment() {
+ if (segment)
+ tokens.push(segment);
+ segment = [];
+ }
+ let i = 0;
+ let char;
+ let buffer = "";
+ let customRe = "";
+ function consumeBuffer() {
+ if (!buffer)
+ return;
+ if (state === 0) {
+ segment.push({
+ type: 0,
+ value: buffer
+ });
+ } else if (state === 1 || state === 2 || state === 3) {
+ if (segment.length > 1 && (char === "*" || char === "+"))
+ crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);
+ segment.push({
+ type: 1,
+ value: buffer,
+ regexp: customRe,
+ repeatable: char === "*" || char === "+",
+ optional: char === "*" || char === "?"
+ });
+ } else {
+ crash("Invalid state to consume buffer");
+ }
+ buffer = "";
+ }
+ function addCharToBuffer() {
+ buffer += char;
+ }
+ while (i < path.length) {
+ char = path[i++];
+ if (char === "\\" && state !== 2) {
+ previousState = state;
+ state = 4;
+ continue;
+ }
+ switch (state) {
+ case 0:
+ if (char === "/") {
+ if (buffer) {
+ consumeBuffer();
+ }
+ finalizeSegment();
+ } else if (char === ":") {
+ consumeBuffer();
+ state = 1;
+ } else {
+ addCharToBuffer();
+ }
+ break;
+ case 4:
+ addCharToBuffer();
+ state = previousState;
+ break;
+ case 1:
+ if (char === "(") {
+ state = 2;
+ } else if (VALID_PARAM_RE.test(char)) {
+ addCharToBuffer();
+ } else {
+ consumeBuffer();
+ state = 0;
+ if (char !== "*" && char !== "?" && char !== "+")
+ i--;
+ }
+ break;
+ case 2:
+ if (char === ")") {
+ if (customRe[customRe.length - 1] == "\\")
+ customRe = customRe.slice(0, -1) + char;
+ else
+ state = 3;
+ } else {
+ customRe += char;
+ }
+ break;
+ case 3:
+ consumeBuffer();
+ state = 0;
+ if (char !== "*" && char !== "?" && char !== "+")
+ i--;
+ customRe = "";
+ break;
+ default:
+ crash("Unknown state");
+ break;
+ }
+ }
+ if (state === 2)
+ crash(`Unfinished custom RegExp for param "${buffer}"`);
+ consumeBuffer();
+ finalizeSegment();
+ return tokens;
+}
+function createRouteRecordMatcher(record, parent, options) {
+ const parser = tokensToParser(tokenizePath(record.path), options);
+ const matcher = assign(parser, {
+ record,
+ parent,
+ // these needs to be populated by the parent
+ children: [],
+ alias: []
+ });
+ if (parent) {
+ if (!matcher.record.aliasOf === !parent.record.aliasOf)
+ parent.children.push(matcher);
+ }
+ return matcher;
+}
+function createRouterMatcher(routes, globalOptions) {
+ const matchers = [];
+ const matcherMap = /* @__PURE__ */ new Map();
+ globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);
+ function getRecordMatcher(name) {
+ return matcherMap.get(name);
+ }
+ function addRoute(record, parent, originalRecord) {
+ const isRootAdd = !originalRecord;
+ const mainNormalizedRecord = normalizeRouteRecord(record);
+ mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;
+ const options = mergeOptions(globalOptions, record);
+ const normalizedRecords = [mainNormalizedRecord];
+ if ("alias" in record) {
+ const aliases = typeof record.alias === "string" ? [record.alias] : record.alias;
+ for (const alias of aliases) {
+ normalizedRecords.push(
+ // we need to normalize again to ensure the `mods` property
+ // being non enumerable
+ normalizeRouteRecord(assign({}, mainNormalizedRecord, {
+ // this allows us to hold a copy of the `components` option
+ // so that async components cache is hold on the original record
+ components: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,
+ path: alias,
+ // we might be the child of an alias
+ aliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord
+ // the aliases are always of the same kind as the original since they
+ // are defined on the same record
+ }))
+ );
+ }
+ }
+ let matcher;
+ let originalMatcher;
+ for (const normalizedRecord of normalizedRecords) {
+ const { path } = normalizedRecord;
+ if (parent && path[0] !== "/") {
+ const parentPath = parent.record.path;
+ const connectingSlash = parentPath[parentPath.length - 1] === "/" ? "" : "/";
+ normalizedRecord.path = parent.record.path + (path && connectingSlash + path);
+ }
+ matcher = createRouteRecordMatcher(normalizedRecord, parent, options);
+ if (originalRecord) {
+ originalRecord.alias.push(matcher);
+ } else {
+ originalMatcher = originalMatcher || matcher;
+ if (originalMatcher !== matcher)
+ originalMatcher.alias.push(matcher);
+ if (isRootAdd && record.name && !isAliasRecord(matcher)) {
+ removeRoute(record.name);
+ }
+ }
+ if (isMatchable(matcher)) {
+ insertMatcher(matcher);
+ }
+ if (mainNormalizedRecord.children) {
+ const children = mainNormalizedRecord.children;
+ for (let i = 0; i < children.length; i++) {
+ addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);
+ }
+ }
+ originalRecord = originalRecord || matcher;
+ }
+ return originalMatcher ? () => {
+ removeRoute(originalMatcher);
+ } : noop$1;
+ }
+ function removeRoute(matcherRef) {
+ if (isRouteName(matcherRef)) {
+ const matcher = matcherMap.get(matcherRef);
+ if (matcher) {
+ matcherMap.delete(matcherRef);
+ matchers.splice(matchers.indexOf(matcher), 1);
+ matcher.children.forEach(removeRoute);
+ matcher.alias.forEach(removeRoute);
+ }
+ } else {
+ const index = matchers.indexOf(matcherRef);
+ if (index > -1) {
+ matchers.splice(index, 1);
+ if (matcherRef.record.name)
+ matcherMap.delete(matcherRef.record.name);
+ matcherRef.children.forEach(removeRoute);
+ matcherRef.alias.forEach(removeRoute);
+ }
+ }
+ }
+ function getRoutes() {
+ return matchers;
+ }
+ function insertMatcher(matcher) {
+ const index = findInsertionIndex(matcher, matchers);
+ matchers.splice(index, 0, matcher);
+ if (matcher.record.name && !isAliasRecord(matcher))
+ matcherMap.set(matcher.record.name, matcher);
+ }
+ function resolve(location2, currentLocation) {
+ let matcher;
+ let params = {};
+ let path;
+ let name;
+ if ("name" in location2 && location2.name) {
+ matcher = matcherMap.get(location2.name);
+ if (!matcher)
+ throw createRouterError(1, {
+ location: location2
+ });
+ name = matcher.record.name;
+ params = assign(
+ // paramsFromLocation is a new object
+ paramsFromLocation(
+ currentLocation.params,
+ // only keep params that exist in the resolved location
+ // only keep optional params coming from a parent record
+ matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)
+ ),
+ // discard any existing params in the current location that do not exist here
+ // #1497 this ensures better active/exact matching
+ location2.params && paramsFromLocation(location2.params, matcher.keys.map((k) => k.name))
+ );
+ path = matcher.stringify(params);
+ } else if (location2.path != null) {
+ path = location2.path;
+ matcher = matchers.find((m) => m.re.test(path));
+ if (matcher) {
+ params = matcher.parse(path);
+ name = matcher.record.name;
+ }
+ } else {
+ matcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path));
+ if (!matcher)
+ throw createRouterError(1, {
+ location: location2,
+ currentLocation
+ });
+ name = matcher.record.name;
+ params = assign({}, currentLocation.params, location2.params);
+ path = matcher.stringify(params);
+ }
+ const matched = [];
+ let parentMatcher = matcher;
+ while (parentMatcher) {
+ matched.unshift(parentMatcher.record);
+ parentMatcher = parentMatcher.parent;
+ }
+ return {
+ name,
+ path,
+ params,
+ matched,
+ meta: mergeMetaFields(matched)
+ };
+ }
+ routes.forEach((route) => addRoute(route));
+ function clearRoutes() {
+ matchers.length = 0;
+ matcherMap.clear();
+ }
+ return {
+ addRoute,
+ resolve,
+ removeRoute,
+ clearRoutes,
+ getRoutes,
+ getRecordMatcher
+ };
+}
+function paramsFromLocation(params, keys) {
+ const newParams = {};
+ for (const key of keys) {
+ if (key in params)
+ newParams[key] = params[key];
+ }
+ return newParams;
+}
+function normalizeRouteRecord(record) {
+ const normalized = {
+ path: record.path,
+ redirect: record.redirect,
+ name: record.name,
+ meta: record.meta || {},
+ aliasOf: record.aliasOf,
+ beforeEnter: record.beforeEnter,
+ props: normalizeRecordProps(record),
+ children: record.children || [],
+ instances: {},
+ leaveGuards: /* @__PURE__ */ new Set(),
+ updateGuards: /* @__PURE__ */ new Set(),
+ enterCallbacks: {},
+ // must be declared afterwards
+ // mods: {},
+ components: "components" in record ? record.components || null : record.component && { default: record.component }
+ };
+ Object.defineProperty(normalized, "mods", {
+ value: {}
+ });
+ return normalized;
+}
+function normalizeRecordProps(record) {
+ const propsObject = {};
+ const props = record.props || false;
+ if ("component" in record) {
+ propsObject.default = props;
+ } else {
+ for (const name in record.components)
+ propsObject[name] = typeof props === "object" ? props[name] : props;
+ }
+ return propsObject;
+}
+function isAliasRecord(record) {
+ while (record) {
+ if (record.record.aliasOf)
+ return true;
+ record = record.parent;
+ }
+ return false;
+}
+function mergeMetaFields(matched) {
+ return matched.reduce((meta, record) => assign(meta, record.meta), {});
+}
+function mergeOptions(defaults2, partialOptions) {
+ const options = {};
+ for (const key in defaults2) {
+ options[key] = key in partialOptions ? partialOptions[key] : defaults2[key];
+ }
+ return options;
+}
+function findInsertionIndex(matcher, matchers) {
+ let lower = 0;
+ let upper = matchers.length;
+ while (lower !== upper) {
+ const mid = lower + upper >> 1;
+ const sortOrder = comparePathParserScore(matcher, matchers[mid]);
+ if (sortOrder < 0) {
+ upper = mid;
+ } else {
+ lower = mid + 1;
+ }
+ }
+ const insertionAncestor = getInsertionAncestor(matcher);
+ if (insertionAncestor) {
+ upper = matchers.lastIndexOf(insertionAncestor, upper - 1);
+ }
+ return upper;
+}
+function getInsertionAncestor(matcher) {
+ let ancestor = matcher;
+ while (ancestor = ancestor.parent) {
+ if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) {
+ return ancestor;
+ }
+ }
+ return;
+}
+function isMatchable({ record }) {
+ return !!(record.name || record.components && Object.keys(record.components).length || record.redirect);
+}
+function parseQuery(search) {
+ const query = {};
+ if (search === "" || search === "?")
+ return query;
+ const hasLeadingIM = search[0] === "?";
+ const searchParams = (hasLeadingIM ? search.slice(1) : search).split("&");
+ for (let i = 0; i < searchParams.length; ++i) {
+ const searchParam = searchParams[i].replace(PLUS_RE, " ");
+ const eqPos = searchParam.indexOf("=");
+ const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));
+ const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));
+ if (key in query) {
+ let currentValue = query[key];
+ if (!isArray$1(currentValue)) {
+ currentValue = query[key] = [currentValue];
+ }
+ currentValue.push(value);
+ } else {
+ query[key] = value;
+ }
+ }
+ return query;
+}
+function stringifyQuery(query) {
+ let search = "";
+ for (let key in query) {
+ const value = query[key];
+ key = encodeQueryKey(key);
+ if (value == null) {
+ if (value !== void 0) {
+ search += (search.length ? "&" : "") + key;
+ }
+ continue;
+ }
+ const values = isArray$1(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)];
+ values.forEach((value2) => {
+ if (value2 !== void 0) {
+ search += (search.length ? "&" : "") + key;
+ if (value2 != null)
+ search += "=" + value2;
+ }
+ });
+ }
+ return search;
+}
+function normalizeQuery(query) {
+ const normalizedQuery = {};
+ for (const key in query) {
+ const value = query[key];
+ if (value !== void 0) {
+ normalizedQuery[key] = isArray$1(value) ? value.map((v) => v == null ? null : "" + v) : value == null ? value : "" + value;
+ }
+ }
+ return normalizedQuery;
+}
+const matchedRouteKey = Symbol("");
+const viewDepthKey = Symbol("");
+const routerKey = Symbol("");
+const routeLocationKey = Symbol("");
+const routerViewLocationKey = Symbol("");
+function useCallbacks() {
+ let handlers = [];
+ function add(handler) {
+ handlers.push(handler);
+ return () => {
+ const i = handlers.indexOf(handler);
+ if (i > -1)
+ handlers.splice(i, 1);
+ };
+ }
+ function reset() {
+ handlers = [];
+ }
+ return {
+ add,
+ list: () => handlers.slice(),
+ reset
+ };
+}
+function guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) {
+ const enterCallbackArray = record && // name is defined if record is because of the function overload
+ (record.enterCallbacks[name] = record.enterCallbacks[name] || []);
+ return () => new Promise((resolve, reject) => {
+ const next = (valid) => {
+ if (valid === false) {
+ reject(createRouterError(4, {
+ from,
+ to
+ }));
+ } else if (valid instanceof Error) {
+ reject(valid);
+ } else if (isRouteLocation(valid)) {
+ reject(createRouterError(2, {
+ from: to,
+ to: valid
+ }));
+ } else {
+ if (enterCallbackArray && // since enterCallbackArray is truthy, both record and name also are
+ record.enterCallbacks[name] === enterCallbackArray && typeof valid === "function") {
+ enterCallbackArray.push(valid);
+ }
+ resolve();
+ }
+ };
+ const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, next));
+ let guardCall = Promise.resolve(guardReturn);
+ if (guard.length < 3)
+ guardCall = guardCall.then(next);
+ guardCall.catch((err) => reject(err));
+ });
+}
+function extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) {
+ const guards = [];
+ for (const record of matched) {
+ for (const name in record.components) {
+ let rawComponent = record.components[name];
+ if (guardType !== "beforeRouteEnter" && !record.instances[name])
+ continue;
+ if (isRouteComponent(rawComponent)) {
+ const options = rawComponent.__vccOpts || rawComponent;
+ const guard = options[guardType];
+ guard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));
+ } else {
+ let componentPromise = rawComponent();
+ guards.push(() => componentPromise.then((resolved) => {
+ if (!resolved)
+ throw new Error(`Couldn't resolve component "${name}" at "${record.path}"`);
+ const resolvedComponent = isESModule(resolved) ? resolved.default : resolved;
+ record.mods[name] = resolved;
+ record.components[name] = resolvedComponent;
+ const options = resolvedComponent.__vccOpts || resolvedComponent;
+ const guard = options[guardType];
+ return guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)();
+ }));
+ }
+ }
+ }
+ return guards;
+}
+function useLink(props) {
+ const router2 = inject(routerKey);
+ const currentRoute = inject(routeLocationKey);
+ const route = computed(() => {
+ const to = unref(props.to);
+ return router2.resolve(to);
+ });
+ const activeRecordIndex = computed(() => {
+ const { matched } = route.value;
+ const { length } = matched;
+ const routeMatched = matched[length - 1];
+ const currentMatched = currentRoute.matched;
+ if (!routeMatched || !currentMatched.length)
+ return -1;
+ const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));
+ if (index > -1)
+ return index;
+ const parentRecordPath = getOriginalPath(matched[length - 2]);
+ return (
+ // we are dealing with nested routes
+ length > 1 && // if the parent and matched route have the same path, this link is
+ // referring to the empty child. Or we currently are on a different
+ // child of the same parent
+ getOriginalPath(routeMatched) === parentRecordPath && // avoid comparing the child with its parent
+ currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index
+ );
+ });
+ const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));
+ const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));
+ function navigate(e = {}) {
+ if (guardEvent(e)) {
+ const p2 = router2[unref(props.replace) ? "replace" : "push"](
+ unref(props.to)
+ // avoid uncaught errors are they are logged anyway
+ ).catch(noop$1);
+ if (props.viewTransition && typeof document !== "undefined" && "startViewTransition" in document) {
+ document.startViewTransition(() => p2);
+ }
+ return p2;
+ }
+ return Promise.resolve();
+ }
+ return {
+ route,
+ href: computed(() => route.value.href),
+ isActive,
+ isExactActive,
+ navigate
+ };
+}
+function preferSingleVNode(vnodes) {
+ return vnodes.length === 1 ? vnodes[0] : vnodes;
+}
+const RouterLinkImpl = /* @__PURE__ */ defineComponent({
+ name: "RouterLink",
+ compatConfig: { MODE: 3 },
+ props: {
+ to: {
+ type: [String, Object],
+ required: true
+ },
+ replace: Boolean,
+ activeClass: String,
+ // inactiveClass: String,
+ exactActiveClass: String,
+ custom: Boolean,
+ ariaCurrentValue: {
+ type: String,
+ default: "page"
+ }
+ },
+ useLink,
+ setup(props, { slots }) {
+ const link = reactive(useLink(props));
+ const { options } = inject(routerKey);
+ const elClass = computed(() => ({
+ [getLinkClass(props.activeClass, options.linkActiveClass, "router-link-active")]: link.isActive,
+ // [getLinkClass(
+ // props.inactiveClass,
+ // options.linkInactiveClass,
+ // 'router-link-inactive'
+ // )]: !link.isExactActive,
+ [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, "router-link-exact-active")]: link.isExactActive
+ }));
+ return () => {
+ const children = slots.default && preferSingleVNode(slots.default(link));
+ return props.custom ? children : h("a", {
+ "aria-current": link.isExactActive ? props.ariaCurrentValue : null,
+ href: link.href,
+ // this would override user added attrs but Vue will still add
+ // the listener, so we end up triggering both
+ onClick: link.navigate,
+ class: elClass.value
+ }, children);
+ };
+ }
+});
+const RouterLink = RouterLinkImpl;
+function guardEvent(e) {
+ if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)
+ return;
+ if (e.defaultPrevented)
+ return;
+ if (e.button !== void 0 && e.button !== 0)
+ return;
+ if (e.currentTarget && e.currentTarget.getAttribute) {
+ const target = e.currentTarget.getAttribute("target");
+ if (/\b_blank\b/i.test(target))
+ return;
+ }
+ if (e.preventDefault)
+ e.preventDefault();
+ return true;
+}
+function includesParams(outer, inner) {
+ for (const key in inner) {
+ const innerValue = inner[key];
+ const outerValue = outer[key];
+ if (typeof innerValue === "string") {
+ if (innerValue !== outerValue)
+ return false;
+ } else {
+ if (!isArray$1(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i) => value !== outerValue[i]))
+ return false;
+ }
+ }
+ return true;
+}
+function getOriginalPath(record) {
+ return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
+}
+const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
+const RouterViewImpl = /* @__PURE__ */ defineComponent({
+ name: "RouterView",
+ // #674 we manually inherit them
+ inheritAttrs: false,
+ props: {
+ name: {
+ type: String,
+ default: "default"
+ },
+ route: Object
+ },
+ // Better compat for @vue/compat users
+ // https://github.com/vuejs/router/issues/1315
+ compatConfig: { MODE: 3 },
+ setup(props, { attrs, slots }) {
+ const injectedRoute = inject(routerViewLocationKey);
+ const routeToDisplay = computed(() => props.route || injectedRoute.value);
+ const injectedDepth = inject(viewDepthKey, 0);
+ const depth = computed(() => {
+ let initialDepth = unref(injectedDepth);
+ const { matched } = routeToDisplay.value;
+ let matchedRoute;
+ while ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) {
+ initialDepth++;
+ }
+ return initialDepth;
+ });
+ const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);
+ provide(viewDepthKey, computed(() => depth.value + 1));
+ provide(matchedRouteKey, matchedRouteRef);
+ provide(routerViewLocationKey, routeToDisplay);
+ const viewRef = ref();
+ watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {
+ if (to) {
+ to.instances[name] = instance;
+ if (from && from !== to && instance && instance === oldInstance) {
+ if (!to.leaveGuards.size) {
+ to.leaveGuards = from.leaveGuards;
+ }
+ if (!to.updateGuards.size) {
+ to.updateGuards = from.updateGuards;
+ }
+ }
+ }
+ if (instance && to && // if there is no instance but to and from are the same this might be
+ // the first visit
+ (!from || !isSameRouteRecord(to, from) || !oldInstance)) {
+ (to.enterCallbacks[name] || []).forEach((callback) => callback(instance));
+ }
+ }, { flush: "post" });
+ return () => {
+ const route = routeToDisplay.value;
+ const currentName = props.name;
+ const matchedRoute = matchedRouteRef.value;
+ const ViewComponent = matchedRoute && matchedRoute.components[currentName];
+ if (!ViewComponent) {
+ return normalizeSlot(slots.default, { Component: ViewComponent, route });
+ }
+ const routePropsOption = matchedRoute.props[currentName];
+ const routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === "function" ? routePropsOption(route) : routePropsOption : null;
+ const onVnodeUnmounted = (vnode) => {
+ if (vnode.component.isUnmounted) {
+ matchedRoute.instances[currentName] = null;
+ }
+ };
+ const component = h(ViewComponent, assign({}, routeProps, attrs, {
+ onVnodeUnmounted,
+ ref: viewRef
+ }));
+ return (
+ // pass the vnode to the slot as a prop.
+ // h and both accept vnodes
+ normalizeSlot(slots.default, { Component: component, route }) || component
+ );
+ };
+ }
+});
+function normalizeSlot(slot, data) {
+ if (!slot)
+ return null;
+ const slotContent = slot(data);
+ return slotContent.length === 1 ? slotContent[0] : slotContent;
+}
+const RouterView = RouterViewImpl;
+function createRouter(options) {
+ const matcher = createRouterMatcher(options.routes, options);
+ const parseQuery$1 = options.parseQuery || parseQuery;
+ const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;
+ const routerHistory = options.history;
+ const beforeGuards = useCallbacks();
+ const beforeResolveGuards = useCallbacks();
+ const afterGuards = useCallbacks();
+ const currentRoute = shallowRef(START_LOCATION_NORMALIZED);
+ let pendingLocation = START_LOCATION_NORMALIZED;
+ if (isBrowser && options.scrollBehavior && "scrollRestoration" in history) {
+ history.scrollRestoration = "manual";
+ }
+ const normalizeParams = applyToParams.bind(null, (paramValue) => "" + paramValue);
+ const encodeParams = applyToParams.bind(null, encodeParam);
+ const decodeParams = (
+ // @ts-expect-error: intentionally avoid the type check
+ applyToParams.bind(null, decode)
+ );
+ function addRoute(parentOrRoute, route) {
+ let parent;
+ let record;
+ if (isRouteName(parentOrRoute)) {
+ parent = matcher.getRecordMatcher(parentOrRoute);
+ record = route;
+ } else {
+ record = parentOrRoute;
+ }
+ return matcher.addRoute(record, parent);
+ }
+ function removeRoute(name) {
+ const recordMatcher = matcher.getRecordMatcher(name);
+ if (recordMatcher) {
+ matcher.removeRoute(recordMatcher);
+ }
+ }
+ function getRoutes() {
+ return matcher.getRoutes().map((routeMatcher) => routeMatcher.record);
+ }
+ function hasRoute(name) {
+ return !!matcher.getRecordMatcher(name);
+ }
+ function resolve(rawLocation, currentLocation) {
+ currentLocation = assign({}, currentLocation || currentRoute.value);
+ if (typeof rawLocation === "string") {
+ const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);
+ const matchedRoute2 = matcher.resolve({ path: locationNormalized.path }, currentLocation);
+ const href2 = routerHistory.createHref(locationNormalized.fullPath);
+ return assign(locationNormalized, matchedRoute2, {
+ params: decodeParams(matchedRoute2.params),
+ hash: decode(locationNormalized.hash),
+ redirectedFrom: void 0,
+ href: href2
+ });
+ }
+ let matcherLocation;
+ if (rawLocation.path != null) {
+ matcherLocation = assign({}, rawLocation, {
+ path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path
+ });
+ } else {
+ const targetParams = assign({}, rawLocation.params);
+ for (const key in targetParams) {
+ if (targetParams[key] == null) {
+ delete targetParams[key];
+ }
+ }
+ matcherLocation = assign({}, rawLocation, {
+ params: encodeParams(targetParams)
+ });
+ currentLocation.params = encodeParams(currentLocation.params);
+ }
+ const matchedRoute = matcher.resolve(matcherLocation, currentLocation);
+ const hash = rawLocation.hash || "";
+ matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));
+ const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {
+ hash: encodeHash(hash),
+ path: matchedRoute.path
+ }));
+ const href = routerHistory.createHref(fullPath);
+ return assign({
+ fullPath,
+ // keep the hash encoded so fullPath is effectively path + encodedQuery +
+ // hash
+ hash,
+ query: (
+ // if the user is using a custom query lib like qs, we might have
+ // nested objects, so we keep the query as is, meaning it can contain
+ // numbers at `$route.query`, but at the point, the user will have to
+ // use their own type anyway.
+ // https://github.com/vuejs/router/issues/328#issuecomment-649481567
+ stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}
+ )
+ }, matchedRoute, {
+ redirectedFrom: void 0,
+ href
+ });
+ }
+ function locationAsObject(to) {
+ return typeof to === "string" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to);
+ }
+ function checkCanceledNavigation(to, from) {
+ if (pendingLocation !== to) {
+ return createRouterError(8, {
+ from,
+ to
+ });
+ }
+ }
+ function push(to) {
+ return pushWithRedirect(to);
+ }
+ function replace(to) {
+ return push(assign(locationAsObject(to), { replace: true }));
+ }
+ function handleRedirectRecord(to) {
+ const lastMatched = to.matched[to.matched.length - 1];
+ if (lastMatched && lastMatched.redirect) {
+ const { redirect } = lastMatched;
+ let newTargetLocation = typeof redirect === "function" ? redirect(to) : redirect;
+ if (typeof newTargetLocation === "string") {
+ newTargetLocation = newTargetLocation.includes("?") || newTargetLocation.includes("#") ? newTargetLocation = locationAsObject(newTargetLocation) : (
+ // force empty params
+ { path: newTargetLocation }
+ );
+ newTargetLocation.params = {};
+ }
+ return assign({
+ query: to.query,
+ hash: to.hash,
+ // avoid transferring params if the redirect has a path
+ params: newTargetLocation.path != null ? {} : to.params
+ }, newTargetLocation);
+ }
+ }
+ function pushWithRedirect(to, redirectedFrom) {
+ const targetLocation = pendingLocation = resolve(to);
+ const from = currentRoute.value;
+ const data = to.state;
+ const force = to.force;
+ const replace2 = to.replace === true;
+ const shouldRedirect = handleRedirectRecord(targetLocation);
+ if (shouldRedirect)
+ return pushWithRedirect(
+ assign(locationAsObject(shouldRedirect), {
+ state: typeof shouldRedirect === "object" ? assign({}, data, shouldRedirect.state) : data,
+ force,
+ replace: replace2
+ }),
+ // keep original redirectedFrom if it exists
+ redirectedFrom || targetLocation
+ );
+ const toLocation = targetLocation;
+ toLocation.redirectedFrom = redirectedFrom;
+ let failure;
+ if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {
+ failure = createRouterError(16, { to: toLocation, from });
+ handleScroll(
+ from,
+ from,
+ // this is a push, the only way for it to be triggered from a
+ // history.listen is with a redirect, which makes it become a push
+ true,
+ // This cannot be the first navigation because the initial location
+ // cannot be manually navigated to
+ false
+ );
+ }
+ return (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? (
+ // navigation redirects still mark the router as ready
+ isNavigationFailure(
+ error,
+ 2
+ /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */
+ ) ? error : markAsReady(error)
+ ) : (
+ // reject any unknown error
+ triggerError(error, toLocation, from)
+ )).then((failure2) => {
+ if (failure2) {
+ if (isNavigationFailure(
+ failure2,
+ 2
+ /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */
+ )) {
+ return pushWithRedirect(
+ // keep options
+ assign({
+ // preserve an existing replacement but allow the redirect to override it
+ replace: replace2
+ }, locationAsObject(failure2.to), {
+ state: typeof failure2.to === "object" ? assign({}, data, failure2.to.state) : data,
+ force
+ }),
+ // preserve the original redirectedFrom if any
+ redirectedFrom || toLocation
+ );
+ }
+ } else {
+ failure2 = finalizeNavigation(toLocation, from, true, replace2, data);
+ }
+ triggerAfterEach(toLocation, from, failure2);
+ return failure2;
+ });
+ }
+ function checkCanceledNavigationAndReject(to, from) {
+ const error = checkCanceledNavigation(to, from);
+ return error ? Promise.reject(error) : Promise.resolve();
+ }
+ function runWithContext(fn) {
+ const app2 = installedApps.values().next().value;
+ return app2 && typeof app2.runWithContext === "function" ? app2.runWithContext(fn) : fn();
+ }
+ function navigate(to, from) {
+ let guards;
+ const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);
+ guards = extractComponentsGuards(leavingRecords.reverse(), "beforeRouteLeave", to, from);
+ for (const record of leavingRecords) {
+ record.leaveGuards.forEach((guard) => {
+ guards.push(guardToPromiseFn(guard, to, from));
+ });
+ }
+ const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards).then(() => {
+ guards = [];
+ for (const guard of beforeGuards.list()) {
+ guards.push(guardToPromiseFn(guard, to, from));
+ }
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards);
+ }).then(() => {
+ guards = extractComponentsGuards(updatingRecords, "beforeRouteUpdate", to, from);
+ for (const record of updatingRecords) {
+ record.updateGuards.forEach((guard) => {
+ guards.push(guardToPromiseFn(guard, to, from));
+ });
+ }
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards);
+ }).then(() => {
+ guards = [];
+ for (const record of enteringRecords) {
+ if (record.beforeEnter) {
+ if (isArray$1(record.beforeEnter)) {
+ for (const beforeEnter of record.beforeEnter)
+ guards.push(guardToPromiseFn(beforeEnter, to, from));
+ } else {
+ guards.push(guardToPromiseFn(record.beforeEnter, to, from));
+ }
+ }
+ }
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards);
+ }).then(() => {
+ to.matched.forEach((record) => record.enterCallbacks = {});
+ guards = extractComponentsGuards(enteringRecords, "beforeRouteEnter", to, from, runWithContext);
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards);
+ }).then(() => {
+ guards = [];
+ for (const guard of beforeResolveGuards.list()) {
+ guards.push(guardToPromiseFn(guard, to, from));
+ }
+ guards.push(canceledNavigationCheck);
+ return runGuardQueue(guards);
+ }).catch((err) => isNavigationFailure(
+ err,
+ 8
+ /* ErrorTypes.NAVIGATION_CANCELLED */
+ ) ? err : Promise.reject(err));
+ }
+ function triggerAfterEach(to, from, failure) {
+ afterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure)));
+ }
+ function finalizeNavigation(toLocation, from, isPush, replace2, data) {
+ const error = checkCanceledNavigation(toLocation, from);
+ if (error)
+ return error;
+ const isFirstNavigation = from === START_LOCATION_NORMALIZED;
+ const state = !isBrowser ? {} : history.state;
+ if (isPush) {
+ if (replace2 || isFirstNavigation)
+ routerHistory.replace(toLocation.fullPath, assign({
+ scroll: isFirstNavigation && state && state.scroll
+ }, data));
+ else
+ routerHistory.push(toLocation.fullPath, data);
+ }
+ currentRoute.value = toLocation;
+ handleScroll(toLocation, from, isPush, isFirstNavigation);
+ markAsReady();
+ }
+ let removeHistoryListener;
+ function setupListeners() {
+ if (removeHistoryListener)
+ return;
+ removeHistoryListener = routerHistory.listen((to, _from, info) => {
+ if (!router2.listening)
+ return;
+ const toLocation = resolve(to);
+ const shouldRedirect = handleRedirectRecord(toLocation);
+ if (shouldRedirect) {
+ pushWithRedirect(assign(shouldRedirect, { replace: true, force: true }), toLocation).catch(noop$1);
+ return;
+ }
+ pendingLocation = toLocation;
+ const from = currentRoute.value;
+ if (isBrowser) {
+ saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());
+ }
+ navigate(toLocation, from).catch((error) => {
+ if (isNavigationFailure(
+ error,
+ 4 | 8
+ /* ErrorTypes.NAVIGATION_CANCELLED */
+ )) {
+ return error;
+ }
+ if (isNavigationFailure(
+ error,
+ 2
+ /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */
+ )) {
+ pushWithRedirect(
+ assign(locationAsObject(error.to), {
+ force: true
+ }),
+ toLocation
+ // avoid an uncaught rejection, let push call triggerError
+ ).then((failure) => {
+ if (isNavigationFailure(
+ failure,
+ 4 | 16
+ /* ErrorTypes.NAVIGATION_DUPLICATED */
+ ) && !info.delta && info.type === NavigationType.pop) {
+ routerHistory.go(-1, false);
+ }
+ }).catch(noop$1);
+ return Promise.reject();
+ }
+ if (info.delta) {
+ routerHistory.go(-info.delta, false);
+ }
+ return triggerError(error, toLocation, from);
+ }).then((failure) => {
+ failure = failure || finalizeNavigation(
+ // after navigation, all matched components are resolved
+ toLocation,
+ from,
+ false
+ );
+ if (failure) {
+ if (info.delta && // a new navigation has been triggered, so we do not want to revert, that will change the current history
+ // entry while a different route is displayed
+ !isNavigationFailure(
+ failure,
+ 8
+ /* ErrorTypes.NAVIGATION_CANCELLED */
+ )) {
+ routerHistory.go(-info.delta, false);
+ } else if (info.type === NavigationType.pop && isNavigationFailure(
+ failure,
+ 4 | 16
+ /* ErrorTypes.NAVIGATION_DUPLICATED */
+ )) {
+ routerHistory.go(-1, false);
+ }
+ }
+ triggerAfterEach(toLocation, from, failure);
+ }).catch(noop$1);
+ });
+ }
+ let readyHandlers = useCallbacks();
+ let errorListeners = useCallbacks();
+ let ready;
+ function triggerError(error, to, from) {
+ markAsReady(error);
+ const list = errorListeners.list();
+ if (list.length) {
+ list.forEach((handler) => handler(error, to, from));
+ } else {
+ console.error(error);
+ }
+ return Promise.reject(error);
+ }
+ function isReady() {
+ if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)
+ return Promise.resolve();
+ return new Promise((resolve2, reject) => {
+ readyHandlers.add([resolve2, reject]);
+ });
+ }
+ function markAsReady(err) {
+ if (!ready) {
+ ready = !err;
+ setupListeners();
+ readyHandlers.list().forEach(([resolve2, reject]) => err ? reject(err) : resolve2());
+ readyHandlers.reset();
+ }
+ return err;
+ }
+ function handleScroll(to, from, isPush, isFirstNavigation) {
+ const { scrollBehavior } = options;
+ if (!isBrowser || !scrollBehavior)
+ return Promise.resolve();
+ const scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;
+ return nextTick().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => position && scrollToPosition(position)).catch((err) => triggerError(err, to, from));
+ }
+ const go = (delta) => routerHistory.go(delta);
+ let started;
+ const installedApps = /* @__PURE__ */ new Set();
+ const router2 = {
+ currentRoute,
+ listening: true,
+ addRoute,
+ removeRoute,
+ clearRoutes: matcher.clearRoutes,
+ hasRoute,
+ getRoutes,
+ resolve,
+ options,
+ push,
+ replace,
+ go,
+ back: () => go(-1),
+ forward: () => go(1),
+ beforeEach: beforeGuards.add,
+ beforeResolve: beforeResolveGuards.add,
+ afterEach: afterGuards.add,
+ onError: errorListeners.add,
+ isReady,
+ install(app2) {
+ const router22 = this;
+ app2.component("RouterLink", RouterLink);
+ app2.component("RouterView", RouterView);
+ app2.config.globalProperties.$router = router22;
+ Object.defineProperty(app2.config.globalProperties, "$route", {
+ enumerable: true,
+ get: () => unref(currentRoute)
+ });
+ if (isBrowser && // used for the initial navigation client side to avoid pushing
+ // multiple times when the router is used in multiple apps
+ !started && currentRoute.value === START_LOCATION_NORMALIZED) {
+ started = true;
+ push(routerHistory.location).catch((err) => {
+ });
+ }
+ const reactiveRoute = {};
+ for (const key in START_LOCATION_NORMALIZED) {
+ Object.defineProperty(reactiveRoute, key, {
+ get: () => currentRoute.value[key],
+ enumerable: true
+ });
+ }
+ app2.provide(routerKey, router22);
+ app2.provide(routeLocationKey, shallowReactive(reactiveRoute));
+ app2.provide(routerViewLocationKey, currentRoute);
+ const unmountApp = app2.unmount;
+ installedApps.add(app2);
+ app2.unmount = function() {
+ installedApps.delete(app2);
+ if (installedApps.size < 1) {
+ pendingLocation = START_LOCATION_NORMALIZED;
+ removeHistoryListener && removeHistoryListener();
+ removeHistoryListener = null;
+ currentRoute.value = START_LOCATION_NORMALIZED;
+ started = false;
+ ready = false;
+ }
+ unmountApp();
+ };
+ }
+ };
+ function runGuardQueue(guards) {
+ return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());
+ }
+ return router2;
+}
+function extractChangingRecords(to, from) {
+ const leavingRecords = [];
+ const updatingRecords = [];
+ const enteringRecords = [];
+ const len = Math.max(from.matched.length, to.matched.length);
+ for (let i = 0; i < len; i++) {
+ const recordFrom = from.matched[i];
+ if (recordFrom) {
+ if (to.matched.find((record) => isSameRouteRecord(record, recordFrom)))
+ updatingRecords.push(recordFrom);
+ else
+ leavingRecords.push(recordFrom);
+ }
+ const recordTo = to.matched[i];
+ if (recordTo) {
+ if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) {
+ enteringRecords.push(recordTo);
+ }
+ }
+ }
+ return [leavingRecords, updatingRecords, enteringRecords];
+}
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var defaultAttributes = {
+ outline: {
+ xmlns: "http://www.w3.org/2000/svg",
+ width: 24,
+ height: 24,
+ viewBox: "0 0 24 24",
+ fill: "none",
+ stroke: "currentColor",
+ "stroke-width": 2,
+ "stroke-linecap": "round",
+ "stroke-linejoin": "round"
+ },
+ filled: {
+ xmlns: "http://www.w3.org/2000/svg",
+ width: 24,
+ height: 24,
+ viewBox: "0 0 24 24",
+ fill: "currentColor",
+ stroke: "none"
+ }
+};
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+const createVueComponent = (type, iconName, iconNamePascal, iconNode) => ({ color = "currentColor", size = 24, stroke = 2, title, class: classes, ...rest }, { attrs, slots }) => {
+ let children = [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []];
+ if (title)
+ children = [h("title", title), ...children];
+ return h(
+ "svg",
+ {
+ ...defaultAttributes[type],
+ width: size,
+ height: size,
+ ...attrs,
+ class: ["tabler-icon", `tabler-icon-${iconName}`],
+ ...type === "filled" ? {
+ fill: color
+ } : {
+ "stroke-width": stroke ?? defaultAttributes[type]["stroke-width"],
+ stroke: color
+ },
+ ...rest
+ },
+ children
+ );
+};
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconDevices = createVueComponent("outline", "devices", "IconDevices", [["path", { "d": "M13 9a1 1 0 0 1 1 -1h6a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-6a1 1 0 0 1 -1 -1v-10z", "key": "svg-0" }], ["path", { "d": "M18 8v-3a1 1 0 0 0 -1 -1h-13a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h9", "key": "svg-1" }], ["path", { "d": "M16 9h2", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconHome = createVueComponent("outline", "home", "IconHome", [["path", { "d": "M5 12l-2 0l9 -9l9 9l-2 0", "key": "svg-0" }], ["path", { "d": "M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7", "key": "svg-1" }], ["path", { "d": "M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6", "key": "svg-2" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconKeyboard = createVueComponent("outline", "keyboard", "IconKeyboard", [["path", { "d": "M2 6m0 2a2 2 0 0 1 2 -2h16a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-16a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M6 10l0 .01", "key": "svg-1" }], ["path", { "d": "M10 10l0 .01", "key": "svg-2" }], ["path", { "d": "M14 10l0 .01", "key": "svg-3" }], ["path", { "d": "M18 10l0 .01", "key": "svg-4" }], ["path", { "d": "M6 14l0 .01", "key": "svg-5" }], ["path", { "d": "M18 14l0 .01", "key": "svg-6" }], ["path", { "d": "M10 14l4 .01", "key": "svg-7" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconLayoutGrid = createVueComponent("outline", "layout-grid", "IconLayoutGrid", [["path", { "d": "M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-0" }], ["path", { "d": "M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-1" }], ["path", { "d": "M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-2" }], ["path", { "d": "M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-3" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconSettings = createVueComponent("outline", "settings", "IconSettings", [["path", { "d": "M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z", "key": "svg-0" }], ["path", { "d": "M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0", "key": "svg-1" }]]);
+/**
+ * @license @tabler/icons-vue v3.30.0 - MIT
+ *
+ * This source code is licensed under the MIT license.
+ * See the LICENSE file in the root directory of this source tree.
+ */
+var IconX = createVueComponent("outline", "x", "IconX", [["path", { "d": "M18 6l-12 12", "key": "svg-0" }], ["path", { "d": "M6 6l12 12", "key": "svg-1" }]]);
+const _hoisted_1$1 = { id: "main-menu" };
+const _sfc_main$2 = {
+ __name: "MainMenu",
+ setup(__props) {
+ const menuOpen = ref(false);
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock("nav", _hoisted_1$1, [
+ createBaseVNode("button", {
+ id: "menu-toggle",
+ class: normalizeClass(menuOpen.value ? "open" : ""),
+ onClick: _cache[0] || (_cache[0] = ($event) => menuOpen.value = !menuOpen.value)
+ }, [
+ createBaseVNode("img", {
+ class: normalizeClass(["logo p-1", { "opacity-0": menuOpen.value }]),
+ src: _imports_0,
+ "aria-hidden": "true"
+ }, null, 2),
+ createVNode(unref(IconX), {
+ class: normalizeClass({ "opacity-0": !menuOpen.value })
+ }, null, 8, ["class"])
+ ], 2),
+ createBaseVNode("ul", {
+ class: normalizeClass(menuOpen.value ? "open" : "")
+ }, [
+ createBaseVNode("li", null, [
+ createVNode(unref(RouterLink), {
+ onClick: _cache[1] || (_cache[1] = ($event) => menuOpen.value = false),
+ to: "/"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconHome)),
+ _cache[6] || (_cache[6] = createTextVNode("Dashboard "))
+ ]),
+ _: 1
+ })
+ ]),
+ createBaseVNode("li", null, [
+ createVNode(unref(RouterLink), {
+ onClick: _cache[2] || (_cache[2] = ($event) => menuOpen.value = false),
+ to: "/panels"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconLayoutGrid)),
+ _cache[7] || (_cache[7] = createTextVNode("Panels "))
+ ]),
+ _: 1
+ })
+ ]),
+ createBaseVNode("li", null, [
+ createVNode(unref(RouterLink), {
+ onClick: _cache[3] || (_cache[3] = ($event) => menuOpen.value = false),
+ to: "/macros"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconKeyboard)),
+ _cache[8] || (_cache[8] = createTextVNode("Macros "))
+ ]),
+ _: 1
+ })
+ ]),
+ createBaseVNode("li", null, [
+ createVNode(unref(RouterLink), {
+ onClick: _cache[4] || (_cache[4] = ($event) => menuOpen.value = false),
+ to: "/devices"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconDevices)),
+ _cache[9] || (_cache[9] = createTextVNode("Device "))
+ ]),
+ _: 1
+ })
+ ]),
+ createBaseVNode("li", null, [
+ createVNode(unref(RouterLink), {
+ onClick: _cache[5] || (_cache[5] = ($event) => menuOpen.value = false),
+ to: "/settings"
+ }, {
+ default: withCtx(() => [
+ createVNode(unref(IconSettings)),
+ _cache[10] || (_cache[10] = createTextVNode("Settings "))
+ ]),
+ _: 1
+ })
+ ])
+ ], 2)
+ ]);
+ };
+ }
+};
+function bind(fn, thisArg) {
+ return function wrap() {
+ return fn.apply(thisArg, arguments);
+ };
+}
+const { toString } = Object.prototype;
+const { getPrototypeOf } = Object;
+const kindOf = /* @__PURE__ */ ((cache) => (thing) => {
+ const str = toString.call(thing);
+ return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
+})(/* @__PURE__ */ Object.create(null));
+const kindOfTest = (type) => {
+ type = type.toLowerCase();
+ return (thing) => kindOf(thing) === type;
+};
+const typeOfTest = (type) => (thing) => typeof thing === type;
+const { isArray } = Array;
+const isUndefined = typeOfTest("undefined");
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
+}
+const isArrayBuffer = kindOfTest("ArrayBuffer");
+function isArrayBufferView(val) {
+ let result;
+ if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = val && val.buffer && isArrayBuffer(val.buffer);
+ }
+ return result;
+}
+const isString = typeOfTest("string");
+const isFunction = typeOfTest("function");
+const isNumber = typeOfTest("number");
+const isObject = (thing) => thing !== null && typeof thing === "object";
+const isBoolean = (thing) => thing === true || thing === false;
+const isPlainObject = (val) => {
+ if (kindOf(val) !== "object") {
+ return false;
+ }
+ const prototype2 = getPrototypeOf(val);
+ return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
+};
+const isDate = kindOfTest("Date");
+const isFile = kindOfTest("File");
+const isBlob = kindOfTest("Blob");
+const isFileList = kindOfTest("FileList");
+const isStream = (val) => isObject(val) && isFunction(val.pipe);
+const isFormData = (thing) => {
+ let kind;
+ return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance
+ kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]"));
+};
+const isURLSearchParams = kindOfTest("URLSearchParams");
+const [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest);
+const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
+function forEach(obj, fn, { allOwnKeys = false } = {}) {
+ if (obj === null || typeof obj === "undefined") {
+ return;
+ }
+ let i;
+ let l;
+ if (typeof obj !== "object") {
+ obj = [obj];
+ }
+ if (isArray(obj)) {
+ for (i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
+ const len = keys.length;
+ let key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+}
+function findKey(obj, key) {
+ key = key.toLowerCase();
+ const keys = Object.keys(obj);
+ let i = keys.length;
+ let _key;
+ while (i-- > 0) {
+ _key = keys[i];
+ if (key === _key.toLowerCase()) {
+ return _key;
+ }
+ }
+ return null;
+}
+const _global = (() => {
+ if (typeof globalThis !== "undefined") return globalThis;
+ return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
+})();
+const isContextDefined = (context) => !isUndefined(context) && context !== _global;
+function merge() {
+ const { caseless } = isContextDefined(this) && this || {};
+ const result = {};
+ const assignValue = (val, key) => {
+ const targetKey = caseless && findKey(result, key) || key;
+ if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
+ result[targetKey] = merge(result[targetKey], val);
+ } else if (isPlainObject(val)) {
+ result[targetKey] = merge({}, val);
+ } else if (isArray(val)) {
+ result[targetKey] = val.slice();
+ } else {
+ result[targetKey] = val;
+ }
+ };
+ for (let i = 0, l = arguments.length; i < l; i++) {
+ arguments[i] && forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+const extend = (a, b, thisArg, { allOwnKeys } = {}) => {
+ forEach(b, (val, key) => {
+ if (thisArg && isFunction(val)) {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ }, { allOwnKeys });
+ return a;
+};
+const stripBOM = (content) => {
+ if (content.charCodeAt(0) === 65279) {
+ content = content.slice(1);
+ }
+ return content;
+};
+const inherits = (constructor, superConstructor, props, descriptors2) => {
+ constructor.prototype = Object.create(superConstructor.prototype, descriptors2);
+ constructor.prototype.constructor = constructor;
+ Object.defineProperty(constructor, "super", {
+ value: superConstructor.prototype
+ });
+ props && Object.assign(constructor.prototype, props);
+};
+const toFlatObject = (sourceObj, destObj, filter2, propFilter) => {
+ let props;
+ let i;
+ let prop;
+ const merged = {};
+ destObj = destObj || {};
+ if (sourceObj == null) return destObj;
+ do {
+ props = Object.getOwnPropertyNames(sourceObj);
+ i = props.length;
+ while (i-- > 0) {
+ prop = props[i];
+ if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
+ destObj[prop] = sourceObj[prop];
+ merged[prop] = true;
+ }
+ }
+ sourceObj = filter2 !== false && getPrototypeOf(sourceObj);
+ } while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype);
+ return destObj;
+};
+const endsWith = (str, searchString, position) => {
+ str = String(str);
+ if (position === void 0 || position > str.length) {
+ position = str.length;
+ }
+ position -= searchString.length;
+ const lastIndex = str.indexOf(searchString, position);
+ return lastIndex !== -1 && lastIndex === position;
+};
+const toArray = (thing) => {
+ if (!thing) return null;
+ if (isArray(thing)) return thing;
+ let i = thing.length;
+ if (!isNumber(i)) return null;
+ const arr = new Array(i);
+ while (i-- > 0) {
+ arr[i] = thing[i];
+ }
+ return arr;
+};
+const isTypedArray = /* @__PURE__ */ ((TypedArray) => {
+ return (thing) => {
+ return TypedArray && thing instanceof TypedArray;
+ };
+})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array));
+const forEachEntry = (obj, fn) => {
+ const generator = obj && obj[Symbol.iterator];
+ const iterator2 = generator.call(obj);
+ let result;
+ while ((result = iterator2.next()) && !result.done) {
+ const pair = result.value;
+ fn.call(obj, pair[0], pair[1]);
+ }
+};
+const matchAll = (regExp, str) => {
+ let matches;
+ const arr = [];
+ while ((matches = regExp.exec(str)) !== null) {
+ arr.push(matches);
+ }
+ return arr;
+};
+const isHTMLForm = kindOfTest("HTMLFormElement");
+const toCamelCase = (str) => {
+ return str.toLowerCase().replace(
+ /[-_\s]([a-z\d])(\w*)/g,
+ function replacer2(m, p1, p2) {
+ return p1.toUpperCase() + p2;
+ }
+ );
+};
+const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype);
+const isRegExp = kindOfTest("RegExp");
+const reduceDescriptors = (obj, reducer) => {
+ const descriptors2 = Object.getOwnPropertyDescriptors(obj);
+ const reducedDescriptors = {};
+ forEach(descriptors2, (descriptor, name) => {
+ let ret;
+ if ((ret = reducer(descriptor, name, obj)) !== false) {
+ reducedDescriptors[name] = ret || descriptor;
+ }
+ });
+ Object.defineProperties(obj, reducedDescriptors);
+};
+const freezeMethods = (obj) => {
+ reduceDescriptors(obj, (descriptor, name) => {
+ if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) {
+ return false;
+ }
+ const value = obj[name];
+ if (!isFunction(value)) return;
+ descriptor.enumerable = false;
+ if ("writable" in descriptor) {
+ descriptor.writable = false;
+ return;
+ }
+ if (!descriptor.set) {
+ descriptor.set = () => {
+ throw Error("Can not rewrite read-only method '" + name + "'");
+ };
+ }
+ });
+};
+const toObjectSet = (arrayOrString, delimiter) => {
+ const obj = {};
+ const define = (arr) => {
+ arr.forEach((value) => {
+ obj[value] = true;
+ });
+ };
+ isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
+ return obj;
+};
+const noop = () => {
+};
+const toFiniteNumber = (value, defaultValue) => {
+ return value != null && Number.isFinite(value = +value) ? value : defaultValue;
+};
+function isSpecCompliantForm(thing) {
+ return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === "FormData" && thing[Symbol.iterator]);
+}
+const toJSONObject = (obj) => {
+ const stack2 = new Array(10);
+ const visit = (source, i) => {
+ if (isObject(source)) {
+ if (stack2.indexOf(source) >= 0) {
+ return;
+ }
+ if (!("toJSON" in source)) {
+ stack2[i] = source;
+ const target = isArray(source) ? [] : {};
+ forEach(source, (value, key) => {
+ const reducedValue = visit(value, i + 1);
+ !isUndefined(reducedValue) && (target[key] = reducedValue);
+ });
+ stack2[i] = void 0;
+ return target;
+ }
+ }
+ return source;
+ };
+ return visit(obj, 0);
+};
+const isAsyncFn = kindOfTest("AsyncFunction");
+const isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
+const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
+ if (setImmediateSupported) {
+ return setImmediate;
+ }
+ return postMessageSupported ? ((token, callbacks) => {
+ _global.addEventListener("message", ({ source, data }) => {
+ if (source === _global && data === token) {
+ callbacks.length && callbacks.shift()();
+ }
+ }, false);
+ return (cb) => {
+ callbacks.push(cb);
+ _global.postMessage(token, "*");
+ };
+ })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
+})(
+ typeof setImmediate === "function",
+ isFunction(_global.postMessage)
+);
+const asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate;
+const utils$1 = {
+ isArray,
+ isArrayBuffer,
+ isBuffer,
+ isFormData,
+ isArrayBufferView,
+ isString,
+ isNumber,
+ isBoolean,
+ isObject,
+ isPlainObject,
+ isReadableStream,
+ isRequest,
+ isResponse,
+ isHeaders,
+ isUndefined,
+ isDate,
+ isFile,
+ isBlob,
+ isRegExp,
+ isFunction,
+ isStream,
+ isURLSearchParams,
+ isTypedArray,
+ isFileList,
+ forEach,
+ merge,
+ extend,
+ trim,
+ stripBOM,
+ inherits,
+ toFlatObject,
+ kindOf,
+ kindOfTest,
+ endsWith,
+ toArray,
+ forEachEntry,
+ matchAll,
+ isHTMLForm,
+ hasOwnProperty,
+ hasOwnProp: hasOwnProperty,
+ // an alias to avoid ESLint no-prototype-builtins detection
+ reduceDescriptors,
+ freezeMethods,
+ toObjectSet,
+ toCamelCase,
+ noop,
+ toFiniteNumber,
+ findKey,
+ global: _global,
+ isContextDefined,
+ isSpecCompliantForm,
+ toJSONObject,
+ isAsyncFn,
+ isThenable,
+ setImmediate: _setImmediate,
+ asap
+};
+function AxiosError$1(message, code, config, request, response) {
+ Error.call(this);
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ this.stack = new Error().stack;
+ }
+ this.message = message;
+ this.name = "AxiosError";
+ code && (this.code = code);
+ config && (this.config = config);
+ request && (this.request = request);
+ if (response) {
+ this.response = response;
+ this.status = response.status ? response.status : null;
+ }
+}
+utils$1.inherits(AxiosError$1, Error, {
+ toJSON: function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: utils$1.toJSONObject(this.config),
+ code: this.code,
+ status: this.status
+ };
+ }
+});
+const prototype$1 = AxiosError$1.prototype;
+const descriptors = {};
+[
+ "ERR_BAD_OPTION_VALUE",
+ "ERR_BAD_OPTION",
+ "ECONNABORTED",
+ "ETIMEDOUT",
+ "ERR_NETWORK",
+ "ERR_FR_TOO_MANY_REDIRECTS",
+ "ERR_DEPRECATED",
+ "ERR_BAD_RESPONSE",
+ "ERR_BAD_REQUEST",
+ "ERR_CANCELED",
+ "ERR_NOT_SUPPORT",
+ "ERR_INVALID_URL"
+ // eslint-disable-next-line func-names
+].forEach((code) => {
+ descriptors[code] = { value: code };
+});
+Object.defineProperties(AxiosError$1, descriptors);
+Object.defineProperty(prototype$1, "isAxiosError", { value: true });
+AxiosError$1.from = (error, code, config, request, response, customProps) => {
+ const axiosError = Object.create(prototype$1);
+ utils$1.toFlatObject(error, axiosError, function filter2(obj) {
+ return obj !== Error.prototype;
+ }, (prop) => {
+ return prop !== "isAxiosError";
+ });
+ AxiosError$1.call(axiosError, error.message, code, config, request, response);
+ axiosError.cause = error;
+ axiosError.name = error.name;
+ customProps && Object.assign(axiosError, customProps);
+ return axiosError;
+};
+const httpAdapter = null;
+function isVisitable(thing) {
+ return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
+}
+function removeBrackets(key) {
+ return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key;
+}
+function renderKey(path, key, dots) {
+ if (!path) return key;
+ return path.concat(key).map(function each(token, i) {
+ token = removeBrackets(token);
+ return !dots && i ? "[" + token + "]" : token;
+ }).join(dots ? "." : "");
+}
+function isFlatArray(arr) {
+ return utils$1.isArray(arr) && !arr.some(isVisitable);
+}
+const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
+ return /^is[A-Z]/.test(prop);
+});
+function toFormData$1(obj, formData, options) {
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError("target must be an object");
+ }
+ formData = formData || new FormData();
+ options = utils$1.toFlatObject(options, {
+ metaTokens: true,
+ dots: false,
+ indexes: false
+ }, false, function defined(option, source) {
+ return !utils$1.isUndefined(source[option]);
+ });
+ const metaTokens = options.metaTokens;
+ const visitor = options.visitor || defaultVisitor;
+ const dots = options.dots;
+ const indexes = options.indexes;
+ const _Blob = options.Blob || typeof Blob !== "undefined" && Blob;
+ const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
+ if (!utils$1.isFunction(visitor)) {
+ throw new TypeError("visitor must be a function");
+ }
+ function convertValue(value) {
+ if (value === null) return "";
+ if (utils$1.isDate(value)) {
+ return value.toISOString();
+ }
+ if (!useBlob && utils$1.isBlob(value)) {
+ throw new AxiosError$1("Blob is not supported. Use a Buffer instead.");
+ }
+ if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
+ return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value);
+ }
+ return value;
+ }
+ function defaultVisitor(value, key, path) {
+ let arr = value;
+ if (value && !path && typeof value === "object") {
+ if (utils$1.endsWith(key, "{}")) {
+ key = metaTokens ? key : key.slice(0, -2);
+ value = JSON.stringify(value);
+ } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) {
+ key = removeBrackets(key);
+ arr.forEach(function each(el, index) {
+ !(utils$1.isUndefined(el) || el === null) && formData.append(
+ // eslint-disable-next-line no-nested-ternary
+ indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]",
+ convertValue(el)
+ );
+ });
+ return false;
+ }
+ }
+ if (isVisitable(value)) {
+ return true;
+ }
+ formData.append(renderKey(path, key, dots), convertValue(value));
+ return false;
+ }
+ const stack2 = [];
+ const exposedHelpers = Object.assign(predicates, {
+ defaultVisitor,
+ convertValue,
+ isVisitable
+ });
+ function build(value, path) {
+ if (utils$1.isUndefined(value)) return;
+ if (stack2.indexOf(value) !== -1) {
+ throw Error("Circular reference detected in " + path.join("."));
+ }
+ stack2.push(value);
+ utils$1.forEach(value, function each(el, key) {
+ const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
+ formData,
+ el,
+ utils$1.isString(key) ? key.trim() : key,
+ path,
+ exposedHelpers
+ );
+ if (result === true) {
+ build(el, path ? path.concat(key) : [key]);
+ }
+ });
+ stack2.pop();
+ }
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError("data must be an object");
+ }
+ build(obj);
+ return formData;
+}
+function encode$1(str) {
+ const charMap = {
+ "!": "%21",
+ "'": "%27",
+ "(": "%28",
+ ")": "%29",
+ "~": "%7E",
+ "%20": "+",
+ "%00": "\0"
+ };
+ return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer2(match) {
+ return charMap[match];
+ });
+}
+function AxiosURLSearchParams(params, options) {
+ this._pairs = [];
+ params && toFormData$1(params, this, options);
+}
+const prototype = AxiosURLSearchParams.prototype;
+prototype.append = function append(name, value) {
+ this._pairs.push([name, value]);
+};
+prototype.toString = function toString2(encoder) {
+ const _encode = encoder ? function(value) {
+ return encoder.call(this, value, encode$1);
+ } : encode$1;
+ return this._pairs.map(function each(pair) {
+ return _encode(pair[0]) + "=" + _encode(pair[1]);
+ }, "").join("&");
+};
+function encode(val) {
+ return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
+}
+function buildURL(url, params, options) {
+ if (!params) {
+ return url;
+ }
+ const _encode = options && options.encode || encode;
+ if (utils$1.isFunction(options)) {
+ options = {
+ serialize: options
+ };
+ }
+ const serializeFn = options && options.serialize;
+ let serializedParams;
+ if (serializeFn) {
+ serializedParams = serializeFn(params, options);
+ } else {
+ serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);
+ }
+ if (serializedParams) {
+ const hashmarkIndex = url.indexOf("#");
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
+ }
+ return url;
+}
+class InterceptorManager {
+ constructor() {
+ this.handlers = [];
+ }
+ /**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+ use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled,
+ rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ }
+ /**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ *
+ * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
+ */
+ eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ }
+ /**
+ * Clear all interceptors from the stack
+ *
+ * @returns {void}
+ */
+ clear() {
+ if (this.handlers) {
+ this.handlers = [];
+ }
+ }
+ /**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ *
+ * @returns {void}
+ */
+ forEach(fn) {
+ utils$1.forEach(this.handlers, function forEachHandler(h2) {
+ if (h2 !== null) {
+ fn(h2);
+ }
+ });
+ }
+}
+const transitionalDefaults = {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+};
+const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams;
+const FormData$1 = typeof FormData !== "undefined" ? FormData : null;
+const Blob$1 = typeof Blob !== "undefined" ? Blob : null;
+const platform$1 = {
+ isBrowser: true,
+ classes: {
+ URLSearchParams: URLSearchParams$1,
+ FormData: FormData$1,
+ Blob: Blob$1
+ },
+ protocols: ["http", "https", "file", "blob", "url", "data"]
+};
+const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined";
+const _navigator = typeof navigator === "object" && navigator || void 0;
+const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0);
+const hasStandardBrowserWebWorkerEnv = (() => {
+ return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef
+ self instanceof WorkerGlobalScope && typeof self.importScripts === "function";
+})();
+const origin = hasBrowserEnv && window.location.href || "http://localhost";
+const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ hasBrowserEnv,
+ hasStandardBrowserEnv,
+ hasStandardBrowserWebWorkerEnv,
+ navigator: _navigator,
+ origin
+}, Symbol.toStringTag, { value: "Module" }));
+const platform = {
+ ...utils,
+ ...platform$1
+};
+function toURLEncodedForm(data, options) {
+ return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
+ visitor: function(value, key, path, helpers) {
+ if (platform.isNode && utils$1.isBuffer(value)) {
+ this.append(key, value.toString("base64"));
+ return false;
+ }
+ return helpers.defaultVisitor.apply(this, arguments);
+ }
+ }, options));
+}
+function parsePropPath(name) {
+ return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => {
+ return match[0] === "[]" ? "" : match[1] || match[0];
+ });
+}
+function arrayToObject(arr) {
+ const obj = {};
+ const keys = Object.keys(arr);
+ let i;
+ const len = keys.length;
+ let key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ obj[key] = arr[key];
+ }
+ return obj;
+}
+function formDataToJSON(formData) {
+ function buildPath(path, value, target, index) {
+ let name = path[index++];
+ if (name === "__proto__") return true;
+ const isNumericKey = Number.isFinite(+name);
+ const isLast = index >= path.length;
+ name = !name && utils$1.isArray(target) ? target.length : name;
+ if (isLast) {
+ if (utils$1.hasOwnProp(target, name)) {
+ target[name] = [target[name], value];
+ } else {
+ target[name] = value;
+ }
+ return !isNumericKey;
+ }
+ if (!target[name] || !utils$1.isObject(target[name])) {
+ target[name] = [];
+ }
+ const result = buildPath(path, value, target[name], index);
+ if (result && utils$1.isArray(target[name])) {
+ target[name] = arrayToObject(target[name]);
+ }
+ return !isNumericKey;
+ }
+ if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
+ const obj = {};
+ utils$1.forEachEntry(formData, (name, value) => {
+ buildPath(parsePropPath(name), value, obj, 0);
+ });
+ return obj;
+ }
+ return null;
+}
+function stringifySafely(rawValue, parser, encoder) {
+ if (utils$1.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils$1.trim(rawValue);
+ } catch (e) {
+ if (e.name !== "SyntaxError") {
+ throw e;
+ }
+ }
+ }
+ return (encoder || JSON.stringify)(rawValue);
+}
+const defaults = {
+ transitional: transitionalDefaults,
+ adapter: ["xhr", "http", "fetch"],
+ transformRequest: [function transformRequest(data, headers) {
+ const contentType = headers.getContentType() || "";
+ const hasJSONContentType = contentType.indexOf("application/json") > -1;
+ const isObjectPayload = utils$1.isObject(data);
+ if (isObjectPayload && utils$1.isHTMLForm(data)) {
+ data = new FormData(data);
+ }
+ const isFormData2 = utils$1.isFormData(data);
+ if (isFormData2) {
+ return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
+ }
+ if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+ if (utils$1.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils$1.isURLSearchParams(data)) {
+ headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false);
+ return data.toString();
+ }
+ let isFileList2;
+ if (isObjectPayload) {
+ if (contentType.indexOf("application/x-www-form-urlencoded") > -1) {
+ return toURLEncodedForm(data, this.formSerializer).toString();
+ }
+ if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) {
+ const _FormData = this.env && this.env.FormData;
+ return toFormData$1(
+ isFileList2 ? { "files[]": data } : data,
+ _FormData && new _FormData(),
+ this.formSerializer
+ );
+ }
+ }
+ if (isObjectPayload || hasJSONContentType) {
+ headers.setContentType("application/json", false);
+ return stringifySafely(data);
+ }
+ return data;
+ }],
+ transformResponse: [function transformResponse(data) {
+ const transitional2 = this.transitional || defaults.transitional;
+ const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing;
+ const JSONRequested = this.responseType === "json";
+ if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+ if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
+ const silentJSONParsing = transitional2 && transitional2.silentJSONParsing;
+ const strictJSONParsing = !silentJSONParsing && JSONRequested;
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === "SyntaxError") {
+ throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response);
+ }
+ throw e;
+ }
+ }
+ }
+ return data;
+ }],
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
+ xsrfCookieName: "XSRF-TOKEN",
+ xsrfHeaderName: "X-XSRF-TOKEN",
+ maxContentLength: -1,
+ maxBodyLength: -1,
+ env: {
+ FormData: platform.classes.FormData,
+ Blob: platform.classes.Blob
+ },
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+ headers: {
+ common: {
+ "Accept": "application/json, text/plain, */*",
+ "Content-Type": void 0
+ }
+ }
+};
+utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => {
+ defaults.headers[method] = {};
+});
+const ignoreDuplicateOf = utils$1.toObjectSet([
+ "age",
+ "authorization",
+ "content-length",
+ "content-type",
+ "etag",
+ "expires",
+ "from",
+ "host",
+ "if-modified-since",
+ "if-unmodified-since",
+ "last-modified",
+ "location",
+ "max-forwards",
+ "proxy-authorization",
+ "referer",
+ "retry-after",
+ "user-agent"
+]);
+const parseHeaders = (rawHeaders) => {
+ const parsed = {};
+ let key;
+ let val;
+ let i;
+ rawHeaders && rawHeaders.split("\n").forEach(function parser(line) {
+ i = line.indexOf(":");
+ key = line.substring(0, i).trim().toLowerCase();
+ val = line.substring(i + 1).trim();
+ if (!key || parsed[key] && ignoreDuplicateOf[key]) {
+ return;
+ }
+ if (key === "set-cookie") {
+ if (parsed[key]) {
+ parsed[key].push(val);
+ } else {
+ parsed[key] = [val];
+ }
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
+ }
+ });
+ return parsed;
+};
+const $internals = Symbol("internals");
+function normalizeHeader(header) {
+ return header && String(header).trim().toLowerCase();
+}
+function normalizeValue(value) {
+ if (value === false || value == null) {
+ return value;
+ }
+ return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
+}
+function parseTokens(str) {
+ const tokens = /* @__PURE__ */ Object.create(null);
+ const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
+ let match;
+ while (match = tokensRE.exec(str)) {
+ tokens[match[1]] = match[2];
+ }
+ return tokens;
+}
+const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
+function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) {
+ if (utils$1.isFunction(filter2)) {
+ return filter2.call(this, value, header);
+ }
+ if (isHeaderNameFilter) {
+ value = header;
+ }
+ if (!utils$1.isString(value)) return;
+ if (utils$1.isString(filter2)) {
+ return value.indexOf(filter2) !== -1;
+ }
+ if (utils$1.isRegExp(filter2)) {
+ return filter2.test(value);
+ }
+}
+function formatHeader(header) {
+ return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
+ return char.toUpperCase() + str;
+ });
+}
+function buildAccessors(obj, header) {
+ const accessorName = utils$1.toCamelCase(" " + header);
+ ["get", "set", "has"].forEach((methodName) => {
+ Object.defineProperty(obj, methodName + accessorName, {
+ value: function(arg1, arg2, arg3) {
+ return this[methodName].call(this, header, arg1, arg2, arg3);
+ },
+ configurable: true
+ });
+ });
+}
+let AxiosHeaders$1 = class AxiosHeaders {
+ constructor(headers) {
+ headers && this.set(headers);
+ }
+ set(header, valueOrRewrite, rewrite) {
+ const self2 = this;
+ function setHeader(_value, _header, _rewrite) {
+ const lHeader = normalizeHeader(_header);
+ if (!lHeader) {
+ throw new Error("header name must be a non-empty string");
+ }
+ const key = utils$1.findKey(self2, lHeader);
+ if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) {
+ self2[key || _header] = normalizeValue(_value);
+ }
+ }
+ const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
+ if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
+ setHeaders(header, valueOrRewrite);
+ } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
+ setHeaders(parseHeaders(header), valueOrRewrite);
+ } else if (utils$1.isHeaders(header)) {
+ for (const [key, value] of header.entries()) {
+ setHeader(value, key, rewrite);
+ }
+ } else {
+ header != null && setHeader(valueOrRewrite, header, rewrite);
+ }
+ return this;
+ }
+ get(header, parser) {
+ header = normalizeHeader(header);
+ if (header) {
+ const key = utils$1.findKey(this, header);
+ if (key) {
+ const value = this[key];
+ if (!parser) {
+ return value;
+ }
+ if (parser === true) {
+ return parseTokens(value);
+ }
+ if (utils$1.isFunction(parser)) {
+ return parser.call(this, value, key);
+ }
+ if (utils$1.isRegExp(parser)) {
+ return parser.exec(value);
+ }
+ throw new TypeError("parser must be boolean|regexp|function");
+ }
+ }
+ }
+ has(header, matcher) {
+ header = normalizeHeader(header);
+ if (header) {
+ const key = utils$1.findKey(this, header);
+ return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
+ }
+ return false;
+ }
+ delete(header, matcher) {
+ const self2 = this;
+ let deleted = false;
+ function deleteHeader(_header) {
+ _header = normalizeHeader(_header);
+ if (_header) {
+ const key = utils$1.findKey(self2, _header);
+ if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) {
+ delete self2[key];
+ deleted = true;
+ }
+ }
+ }
+ if (utils$1.isArray(header)) {
+ header.forEach(deleteHeader);
+ } else {
+ deleteHeader(header);
+ }
+ return deleted;
+ }
+ clear(matcher) {
+ const keys = Object.keys(this);
+ let i = keys.length;
+ let deleted = false;
+ while (i--) {
+ const key = keys[i];
+ if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
+ delete this[key];
+ deleted = true;
+ }
+ }
+ return deleted;
+ }
+ normalize(format) {
+ const self2 = this;
+ const headers = {};
+ utils$1.forEach(this, (value, header) => {
+ const key = utils$1.findKey(headers, header);
+ if (key) {
+ self2[key] = normalizeValue(value);
+ delete self2[header];
+ return;
+ }
+ const normalized = format ? formatHeader(header) : String(header).trim();
+ if (normalized !== header) {
+ delete self2[header];
+ }
+ self2[normalized] = normalizeValue(value);
+ headers[normalized] = true;
+ });
+ return this;
+ }
+ concat(...targets) {
+ return this.constructor.concat(this, ...targets);
+ }
+ toJSON(asStrings) {
+ const obj = /* @__PURE__ */ Object.create(null);
+ utils$1.forEach(this, (value, header) => {
+ value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value);
+ });
+ return obj;
+ }
+ [Symbol.iterator]() {
+ return Object.entries(this.toJSON())[Symbol.iterator]();
+ }
+ toString() {
+ return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n");
+ }
+ get [Symbol.toStringTag]() {
+ return "AxiosHeaders";
+ }
+ static from(thing) {
+ return thing instanceof this ? thing : new this(thing);
+ }
+ static concat(first, ...targets) {
+ const computed2 = new this(first);
+ targets.forEach((target) => computed2.set(target));
+ return computed2;
+ }
+ static accessor(header) {
+ const internals = this[$internals] = this[$internals] = {
+ accessors: {}
+ };
+ const accessors = internals.accessors;
+ const prototype2 = this.prototype;
+ function defineAccessor(_header) {
+ const lHeader = normalizeHeader(_header);
+ if (!accessors[lHeader]) {
+ buildAccessors(prototype2, _header);
+ accessors[lHeader] = true;
+ }
+ }
+ utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
+ return this;
+ }
+};
+AxiosHeaders$1.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]);
+utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => {
+ let mapped = key[0].toUpperCase() + key.slice(1);
+ return {
+ get: () => value,
+ set(headerValue) {
+ this[mapped] = headerValue;
+ }
+ };
+});
+utils$1.freezeMethods(AxiosHeaders$1);
+function transformData(fns, response) {
+ const config = this || defaults;
+ const context = response || config;
+ const headers = AxiosHeaders$1.from(context.headers);
+ let data = context.data;
+ utils$1.forEach(fns, function transform(fn) {
+ data = fn.call(config, data, headers.normalize(), response ? response.status : void 0);
+ });
+ headers.normalize();
+ return data;
+}
+function isCancel$1(value) {
+ return !!(value && value.__CANCEL__);
+}
+function CanceledError$1(message, config, request) {
+ AxiosError$1.call(this, message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config, request);
+ this.name = "CanceledError";
+}
+utils$1.inherits(CanceledError$1, AxiosError$1, {
+ __CANCEL__: true
+});
+function settle(resolve, reject, response) {
+ const validateStatus2 = response.config.validateStatus;
+ if (!response.status || !validateStatus2 || validateStatus2(response.status)) {
+ resolve(response);
+ } else {
+ reject(new AxiosError$1(
+ "Request failed with status code " + response.status,
+ [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
+ response.config,
+ response.request,
+ response
+ ));
+ }
+}
+function parseProtocol(url) {
+ const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
+ return match && match[1] || "";
+}
+function speedometer(samplesCount, min) {
+ samplesCount = samplesCount || 10;
+ const bytes = new Array(samplesCount);
+ const timestamps = new Array(samplesCount);
+ let head = 0;
+ let tail = 0;
+ let firstSampleTS;
+ min = min !== void 0 ? min : 1e3;
+ return function push(chunkLength) {
+ const now = Date.now();
+ const startedAt = timestamps[tail];
+ if (!firstSampleTS) {
+ firstSampleTS = now;
+ }
+ bytes[head] = chunkLength;
+ timestamps[head] = now;
+ let i = tail;
+ let bytesCount = 0;
+ while (i !== head) {
+ bytesCount += bytes[i++];
+ i = i % samplesCount;
+ }
+ head = (head + 1) % samplesCount;
+ if (head === tail) {
+ tail = (tail + 1) % samplesCount;
+ }
+ if (now - firstSampleTS < min) {
+ return;
+ }
+ const passed = startedAt && now - startedAt;
+ return passed ? Math.round(bytesCount * 1e3 / passed) : void 0;
+ };
+}
+function throttle(fn, freq) {
+ let timestamp = 0;
+ let threshold = 1e3 / freq;
+ let lastArgs;
+ let timer;
+ const invoke = (args, now = Date.now()) => {
+ timestamp = now;
+ lastArgs = null;
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ fn.apply(null, args);
+ };
+ const throttled = (...args) => {
+ const now = Date.now();
+ const passed = now - timestamp;
+ if (passed >= threshold) {
+ invoke(args, now);
+ } else {
+ lastArgs = args;
+ if (!timer) {
+ timer = setTimeout(() => {
+ timer = null;
+ invoke(lastArgs);
+ }, threshold - passed);
+ }
+ }
+ };
+ const flush = () => lastArgs && invoke(lastArgs);
+ return [throttled, flush];
+}
+const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
+ let bytesNotified = 0;
+ const _speedometer = speedometer(50, 250);
+ return throttle((e) => {
+ const loaded = e.loaded;
+ const total = e.lengthComputable ? e.total : void 0;
+ const progressBytes = loaded - bytesNotified;
+ const rate = _speedometer(progressBytes);
+ const inRange = loaded <= total;
+ bytesNotified = loaded;
+ const data = {
+ loaded,
+ total,
+ progress: total ? loaded / total : void 0,
+ bytes: progressBytes,
+ rate: rate ? rate : void 0,
+ estimated: rate && total && inRange ? (total - loaded) / rate : void 0,
+ event: e,
+ lengthComputable: total != null,
+ [isDownloadStream ? "download" : "upload"]: true
+ };
+ listener(data);
+ }, freq);
+};
+const progressEventDecorator = (total, throttled) => {
+ const lengthComputable = total != null;
+ return [(loaded) => throttled[0]({
+ lengthComputable,
+ total,
+ loaded
+ }), throttled[1]];
+};
+const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));
+const isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => {
+ url = new URL(url, platform.origin);
+ return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port);
+})(
+ new URL(platform.origin),
+ platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
+) : () => true;
+const cookies = platform.hasStandardBrowserEnv ? (
+ // Standard browser envs support document.cookie
+ {
+ write(name, value, expires, path, domain, secure) {
+ const cookie = [name + "=" + encodeURIComponent(value)];
+ utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString());
+ utils$1.isString(path) && cookie.push("path=" + path);
+ utils$1.isString(domain) && cookie.push("domain=" + domain);
+ secure === true && cookie.push("secure");
+ document.cookie = cookie.join("; ");
+ },
+ read(name) {
+ const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
+ return match ? decodeURIComponent(match[3]) : null;
+ },
+ remove(name) {
+ this.write(name, "", Date.now() - 864e5);
+ }
+ }
+) : (
+ // Non-standard browser env (web workers, react-native) lack needed support.
+ {
+ write() {
+ },
+ read() {
+ return null;
+ },
+ remove() {
+ }
+ }
+);
+function isAbsoluteURL(url) {
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
+}
+function combineURLs(baseURL, relativeURL) {
+ return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
+}
+function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
+ let isRelativeUrl = !isAbsoluteURL(requestedURL);
+ if (baseURL && isRelativeUrl || allowAbsoluteUrls == false) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+}
+const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
+function mergeConfig$1(config1, config2) {
+ config2 = config2 || {};
+ const config = {};
+ function getMergedValue(target, source, prop, caseless) {
+ if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
+ return utils$1.merge.call({ caseless }, target, source);
+ } else if (utils$1.isPlainObject(source)) {
+ return utils$1.merge({}, source);
+ } else if (utils$1.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+ function mergeDeepProperties(a, b, prop, caseless) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(a, b, prop, caseless);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(void 0, a, prop, caseless);
+ }
+ }
+ function valueFromConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(void 0, b);
+ }
+ }
+ function defaultToConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(void 0, b);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(void 0, a);
+ }
+ }
+ function mergeDirectKeys(a, b, prop) {
+ if (prop in config2) {
+ return getMergedValue(a, b);
+ } else if (prop in config1) {
+ return getMergedValue(void 0, a);
+ }
+ }
+ const mergeMap = {
+ url: valueFromConfig2,
+ method: valueFromConfig2,
+ data: valueFromConfig2,
+ baseURL: defaultToConfig2,
+ transformRequest: defaultToConfig2,
+ transformResponse: defaultToConfig2,
+ paramsSerializer: defaultToConfig2,
+ timeout: defaultToConfig2,
+ timeoutMessage: defaultToConfig2,
+ withCredentials: defaultToConfig2,
+ withXSRFToken: defaultToConfig2,
+ adapter: defaultToConfig2,
+ responseType: defaultToConfig2,
+ xsrfCookieName: defaultToConfig2,
+ xsrfHeaderName: defaultToConfig2,
+ onUploadProgress: defaultToConfig2,
+ onDownloadProgress: defaultToConfig2,
+ decompress: defaultToConfig2,
+ maxContentLength: defaultToConfig2,
+ maxBodyLength: defaultToConfig2,
+ beforeRedirect: defaultToConfig2,
+ transport: defaultToConfig2,
+ httpAgent: defaultToConfig2,
+ httpsAgent: defaultToConfig2,
+ cancelToken: defaultToConfig2,
+ socketPath: defaultToConfig2,
+ responseEncoding: defaultToConfig2,
+ validateStatus: mergeDirectKeys,
+ headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)
+ };
+ utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
+ const merge2 = mergeMap[prop] || mergeDeepProperties;
+ const configValue = merge2(config1[prop], config2[prop], prop);
+ utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue);
+ });
+ return config;
+}
+const resolveConfig = (config) => {
+ const newConfig = mergeConfig$1({}, config);
+ let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
+ newConfig.headers = headers = AxiosHeaders$1.from(headers);
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);
+ if (auth) {
+ headers.set(
+ "Authorization",
+ "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : ""))
+ );
+ }
+ let contentType;
+ if (utils$1.isFormData(data)) {
+ if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
+ headers.setContentType(void 0);
+ } else if ((contentType = headers.getContentType()) !== false) {
+ const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : [];
+ headers.setContentType([type || "multipart/form-data", ...tokens].join("; "));
+ }
+ }
+ if (platform.hasStandardBrowserEnv) {
+ withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
+ if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) {
+ const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
+ if (xsrfValue) {
+ headers.set(xsrfHeaderName, xsrfValue);
+ }
+ }
+ }
+ return newConfig;
+};
+const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined";
+const xhrAdapter = isXHRAdapterSupported && function(config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ const _config = resolveConfig(config);
+ let requestData = _config.data;
+ const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
+ let { responseType, onUploadProgress, onDownloadProgress } = _config;
+ let onCanceled;
+ let uploadThrottled, downloadThrottled;
+ let flushUpload, flushDownload;
+ function done() {
+ flushUpload && flushUpload();
+ flushDownload && flushDownload();
+ _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);
+ _config.signal && _config.signal.removeEventListener("abort", onCanceled);
+ }
+ let request = new XMLHttpRequest();
+ request.open(_config.method.toUpperCase(), _config.url, true);
+ request.timeout = _config.timeout;
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ const responseHeaders = AxiosHeaders$1.from(
+ "getAllResponseHeaders" in request && request.getAllResponseHeaders()
+ );
+ const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
+ const response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config,
+ request
+ };
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+ request = null;
+ }
+ if ("onloadend" in request) {
+ request.onloadend = onloadend;
+ } else {
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
+ return;
+ }
+ setTimeout(onloadend);
+ };
+ }
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+ reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config, request));
+ request = null;
+ };
+ request.onerror = function handleError2() {
+ reject(new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request));
+ request = null;
+ };
+ request.ontimeout = function handleTimeout() {
+ let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded";
+ const transitional2 = _config.transitional || transitionalDefaults;
+ if (_config.timeoutErrorMessage) {
+ timeoutErrorMessage = _config.timeoutErrorMessage;
+ }
+ reject(new AxiosError$1(
+ timeoutErrorMessage,
+ transitional2.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED,
+ config,
+ request
+ ));
+ request = null;
+ };
+ requestData === void 0 && requestHeaders.setContentType(null);
+ if ("setRequestHeader" in request) {
+ utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
+ request.setRequestHeader(key, val);
+ });
+ }
+ if (!utils$1.isUndefined(_config.withCredentials)) {
+ request.withCredentials = !!_config.withCredentials;
+ }
+ if (responseType && responseType !== "json") {
+ request.responseType = _config.responseType;
+ }
+ if (onDownloadProgress) {
+ [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);
+ request.addEventListener("progress", downloadThrottled);
+ }
+ if (onUploadProgress && request.upload) {
+ [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);
+ request.upload.addEventListener("progress", uploadThrottled);
+ request.upload.addEventListener("loadend", flushUpload);
+ }
+ if (_config.cancelToken || _config.signal) {
+ onCanceled = (cancel) => {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel);
+ request.abort();
+ request = null;
+ };
+ _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
+ if (_config.signal) {
+ _config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled);
+ }
+ }
+ const protocol = parseProtocol(_config.url);
+ if (protocol && platform.protocols.indexOf(protocol) === -1) {
+ reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config));
+ return;
+ }
+ request.send(requestData || null);
+ });
+};
+const composeSignals = (signals, timeout) => {
+ const { length } = signals = signals ? signals.filter(Boolean) : [];
+ if (timeout || length) {
+ let controller = new AbortController();
+ let aborted;
+ const onabort = function(reason) {
+ if (!aborted) {
+ aborted = true;
+ unsubscribe();
+ const err = reason instanceof Error ? reason : this.reason;
+ controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err));
+ }
+ };
+ let timer = timeout && setTimeout(() => {
+ timer = null;
+ onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT));
+ }, timeout);
+ const unsubscribe = () => {
+ if (signals) {
+ timer && clearTimeout(timer);
+ timer = null;
+ signals.forEach((signal2) => {
+ signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort);
+ });
+ signals = null;
+ }
+ };
+ signals.forEach((signal2) => signal2.addEventListener("abort", onabort));
+ const { signal } = controller;
+ signal.unsubscribe = () => utils$1.asap(unsubscribe);
+ return signal;
+ }
+};
+const streamChunk = function* (chunk, chunkSize) {
+ let len = chunk.byteLength;
+ if (len < chunkSize) {
+ yield chunk;
+ return;
+ }
+ let pos = 0;
+ let end;
+ while (pos < len) {
+ end = pos + chunkSize;
+ yield chunk.slice(pos, end);
+ pos = end;
+ }
+};
+const readBytes = async function* (iterable, chunkSize) {
+ for await (const chunk of readStream(iterable)) {
+ yield* streamChunk(chunk, chunkSize);
+ }
+};
+const readStream = async function* (stream) {
+ if (stream[Symbol.asyncIterator]) {
+ yield* stream;
+ return;
+ }
+ const reader = stream.getReader();
+ try {
+ for (; ; ) {
+ const { done, value } = await reader.read();
+ if (done) {
+ break;
+ }
+ yield value;
+ }
+ } finally {
+ await reader.cancel();
+ }
+};
+const trackStream = (stream, chunkSize, onProgress, onFinish) => {
+ const iterator2 = readBytes(stream, chunkSize);
+ let bytes = 0;
+ let done;
+ let _onFinish = (e) => {
+ if (!done) {
+ done = true;
+ onFinish && onFinish(e);
+ }
+ };
+ return new ReadableStream({
+ async pull(controller) {
+ try {
+ const { done: done2, value } = await iterator2.next();
+ if (done2) {
+ _onFinish();
+ controller.close();
+ return;
+ }
+ let len = value.byteLength;
+ if (onProgress) {
+ let loadedBytes = bytes += len;
+ onProgress(loadedBytes);
+ }
+ controller.enqueue(new Uint8Array(value));
+ } catch (err) {
+ _onFinish(err);
+ throw err;
+ }
+ },
+ cancel(reason) {
+ _onFinish(reason);
+ return iterator2.return();
+ }
+ }, {
+ highWaterMark: 2
+ });
+};
+const isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function";
+const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function";
+const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer()));
+const test = (fn, ...args) => {
+ try {
+ return !!fn(...args);
+ } catch (e) {
+ return false;
+ }
+};
+const supportsRequestStream = isReadableStreamSupported && test(() => {
+ let duplexAccessed = false;
+ const hasContentType = new Request(platform.origin, {
+ body: new ReadableStream(),
+ method: "POST",
+ get duplex() {
+ duplexAccessed = true;
+ return "half";
+ }
+ }).headers.has("Content-Type");
+ return duplexAccessed && !hasContentType;
+});
+const DEFAULT_CHUNK_SIZE = 64 * 1024;
+const supportsResponseStream = isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body));
+const resolvers = {
+ stream: supportsResponseStream && ((res) => res.body)
+};
+isFetchSupported && ((res) => {
+ ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
+ !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res2) => res2[type]() : (_, config) => {
+ throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
+ });
+ });
+})(new Response());
+const getBodyLength = async (body) => {
+ if (body == null) {
+ return 0;
+ }
+ if (utils$1.isBlob(body)) {
+ return body.size;
+ }
+ if (utils$1.isSpecCompliantForm(body)) {
+ const _request = new Request(platform.origin, {
+ method: "POST",
+ body
+ });
+ return (await _request.arrayBuffer()).byteLength;
+ }
+ if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
+ return body.byteLength;
+ }
+ if (utils$1.isURLSearchParams(body)) {
+ body = body + "";
+ }
+ if (utils$1.isString(body)) {
+ return (await encodeText(body)).byteLength;
+ }
+};
+const resolveBodyLength = async (headers, body) => {
+ const length = utils$1.toFiniteNumber(headers.getContentLength());
+ return length == null ? getBodyLength(body) : length;
+};
+const fetchAdapter = isFetchSupported && (async (config) => {
+ let {
+ url,
+ method,
+ data,
+ signal,
+ cancelToken,
+ timeout,
+ onDownloadProgress,
+ onUploadProgress,
+ responseType,
+ headers,
+ withCredentials = "same-origin",
+ fetchOptions
+ } = resolveConfig(config);
+ responseType = responseType ? (responseType + "").toLowerCase() : "text";
+ let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
+ let request;
+ const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
+ composedSignal.unsubscribe();
+ });
+ let requestContentLength;
+ try {
+ if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
+ let _request = new Request(url, {
+ method: "POST",
+ body: data,
+ duplex: "half"
+ });
+ let contentTypeHeader;
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
+ headers.setContentType(contentTypeHeader);
+ }
+ if (_request.body) {
+ const [onProgress, flush] = progressEventDecorator(
+ requestContentLength,
+ progressEventReducer(asyncDecorator(onUploadProgress))
+ );
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
+ }
+ }
+ if (!utils$1.isString(withCredentials)) {
+ withCredentials = withCredentials ? "include" : "omit";
+ }
+ const isCredentialsSupported = "credentials" in Request.prototype;
+ request = new Request(url, {
+ ...fetchOptions,
+ signal: composedSignal,
+ method: method.toUpperCase(),
+ headers: headers.normalize().toJSON(),
+ body: data,
+ duplex: "half",
+ credentials: isCredentialsSupported ? withCredentials : void 0
+ });
+ let response = await fetch(request);
+ const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
+ const options = {};
+ ["status", "statusText", "headers"].forEach((prop) => {
+ options[prop] = response[prop];
+ });
+ const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length"));
+ const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
+ responseContentLength,
+ progressEventReducer(asyncDecorator(onDownloadProgress), true)
+ ) || [];
+ response = new Response(
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
+ flush && flush();
+ unsubscribe && unsubscribe();
+ }),
+ options
+ );
+ }
+ responseType = responseType || "text";
+ let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config);
+ !isStreamResponse && unsubscribe && unsubscribe();
+ return await new Promise((resolve, reject) => {
+ settle(resolve, reject, {
+ data: responseData,
+ headers: AxiosHeaders$1.from(response.headers),
+ status: response.status,
+ statusText: response.statusText,
+ config,
+ request
+ });
+ });
+ } catch (err) {
+ unsubscribe && unsubscribe();
+ if (err && err.name === "TypeError" && /fetch/i.test(err.message)) {
+ throw Object.assign(
+ new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request),
+ {
+ cause: err.cause || err
+ }
+ );
+ }
+ throw AxiosError$1.from(err, err && err.code, config, request);
+ }
+});
+const knownAdapters = {
+ http: httpAdapter,
+ xhr: xhrAdapter,
+ fetch: fetchAdapter
+};
+utils$1.forEach(knownAdapters, (fn, value) => {
+ if (fn) {
+ try {
+ Object.defineProperty(fn, "name", { value });
+ } catch (e) {
+ }
+ Object.defineProperty(fn, "adapterName", { value });
+ }
+});
+const renderReason = (reason) => `- ${reason}`;
+const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
+const adapters = {
+ getAdapter: (adapters2) => {
+ adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2];
+ const { length } = adapters2;
+ let nameOrAdapter;
+ let adapter;
+ const rejectedReasons = {};
+ for (let i = 0; i < length; i++) {
+ nameOrAdapter = adapters2[i];
+ let id;
+ adapter = nameOrAdapter;
+ if (!isResolvedHandle(nameOrAdapter)) {
+ adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
+ if (adapter === void 0) {
+ throw new AxiosError$1(`Unknown adapter '${id}'`);
+ }
+ }
+ if (adapter) {
+ break;
+ }
+ rejectedReasons[id || "#" + i] = adapter;
+ }
+ if (!adapter) {
+ const reasons = Object.entries(rejectedReasons).map(
+ ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build")
+ );
+ let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified";
+ throw new AxiosError$1(
+ `There is no suitable adapter to dispatch the request ` + s,
+ "ERR_NOT_SUPPORT"
+ );
+ }
+ return adapter;
+ },
+ adapters: knownAdapters
+};
+function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+ if (config.signal && config.signal.aborted) {
+ throw new CanceledError$1(null, config);
+ }
+}
+function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+ config.headers = AxiosHeaders$1.from(config.headers);
+ config.data = transformData.call(
+ config,
+ config.transformRequest
+ );
+ if (["post", "put", "patch"].indexOf(config.method) !== -1) {
+ config.headers.setContentType("application/x-www-form-urlencoded", false);
+ }
+ const adapter = adapters.getAdapter(config.adapter || defaults.adapter);
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+ response.data = transformData.call(
+ config,
+ config.transformResponse,
+ response
+ );
+ response.headers = AxiosHeaders$1.from(response.headers);
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel$1(reason)) {
+ throwIfCancellationRequested(config);
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(
+ config,
+ config.transformResponse,
+ reason.response
+ );
+ reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
+ }
+ }
+ return Promise.reject(reason);
+ });
+}
+const VERSION$1 = "1.8.3";
+const validators$1 = {};
+["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => {
+ validators$1[type] = function validator2(thing) {
+ return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type;
+ };
+});
+const deprecatedWarnings = {};
+validators$1.transitional = function transitional(validator2, version2, message) {
+ function formatMessage(opt, desc) {
+ return "[Axios v" + VERSION$1 + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
+ }
+ return (value, opt, opts) => {
+ if (validator2 === false) {
+ throw new AxiosError$1(
+ formatMessage(opt, " has been removed" + (version2 ? " in " + version2 : "")),
+ AxiosError$1.ERR_DEPRECATED
+ );
+ }
+ if (version2 && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ console.warn(
+ formatMessage(
+ opt,
+ " has been deprecated since v" + version2 + " and will be removed in the near future"
+ )
+ );
+ }
+ return validator2 ? validator2(value, opt, opts) : true;
+ };
+};
+validators$1.spelling = function spelling(correctSpelling) {
+ return (value, opt) => {
+ console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
+ return true;
+ };
+};
+function assertOptions(options, schema, allowUnknown) {
+ if (typeof options !== "object") {
+ throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE);
+ }
+ const keys = Object.keys(options);
+ let i = keys.length;
+ while (i-- > 0) {
+ const opt = keys[i];
+ const validator2 = schema[opt];
+ if (validator2) {
+ const value = options[opt];
+ const result = value === void 0 || validator2(value, opt, options);
+ if (result !== true) {
+ throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION);
+ }
+ }
+}
+const validator = {
+ assertOptions,
+ validators: validators$1
+};
+const validators = validator.validators;
+let Axios$1 = class Axios {
+ constructor(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager(),
+ response: new InterceptorManager()
+ };
+ }
+ /**
+ * Dispatch a request
+ *
+ * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
+ * @param {?Object} config
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ async request(configOrUrl, config) {
+ try {
+ return await this._request(configOrUrl, config);
+ } catch (err) {
+ if (err instanceof Error) {
+ let dummy = {};
+ Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error();
+ const stack2 = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : "";
+ try {
+ if (!err.stack) {
+ err.stack = stack2;
+ } else if (stack2 && !String(err.stack).endsWith(stack2.replace(/^.+\n.+\n/, ""))) {
+ err.stack += "\n" + stack2;
+ }
+ } catch (e) {
+ }
+ }
+ throw err;
+ }
+ }
+ _request(configOrUrl, config) {
+ if (typeof configOrUrl === "string") {
+ config = config || {};
+ config.url = configOrUrl;
+ } else {
+ config = configOrUrl || {};
+ }
+ config = mergeConfig$1(this.defaults, config);
+ const { transitional: transitional2, paramsSerializer, headers } = config;
+ if (transitional2 !== void 0) {
+ validator.assertOptions(transitional2, {
+ silentJSONParsing: validators.transitional(validators.boolean),
+ forcedJSONParsing: validators.transitional(validators.boolean),
+ clarifyTimeoutError: validators.transitional(validators.boolean)
+ }, false);
+ }
+ if (paramsSerializer != null) {
+ if (utils$1.isFunction(paramsSerializer)) {
+ config.paramsSerializer = {
+ serialize: paramsSerializer
+ };
+ } else {
+ validator.assertOptions(paramsSerializer, {
+ encode: validators.function,
+ serialize: validators.function
+ }, true);
+ }
+ }
+ if (config.allowAbsoluteUrls !== void 0) ;
+ else if (this.defaults.allowAbsoluteUrls !== void 0) {
+ config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
+ } else {
+ config.allowAbsoluteUrls = true;
+ }
+ validator.assertOptions(config, {
+ baseUrl: validators.spelling("baseURL"),
+ withXsrfToken: validators.spelling("withXSRFToken")
+ }, true);
+ config.method = (config.method || this.defaults.method || "get").toLowerCase();
+ let contextHeaders = headers && utils$1.merge(
+ headers.common,
+ headers[config.method]
+ );
+ headers && utils$1.forEach(
+ ["delete", "get", "head", "post", "put", "patch", "common"],
+ (method) => {
+ delete headers[method];
+ }
+ );
+ config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
+ const requestInterceptorChain = [];
+ let synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
+ return;
+ }
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+ const responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+ let promise;
+ let i = 0;
+ let len;
+ if (!synchronousRequestInterceptors) {
+ const chain = [dispatchRequest.bind(this), void 0];
+ chain.unshift.apply(chain, requestInterceptorChain);
+ chain.push.apply(chain, responseInterceptorChain);
+ len = chain.length;
+ promise = Promise.resolve(config);
+ while (i < len) {
+ promise = promise.then(chain[i++], chain[i++]);
+ }
+ return promise;
+ }
+ len = requestInterceptorChain.length;
+ let newConfig = config;
+ i = 0;
+ while (i < len) {
+ const onFulfilled = requestInterceptorChain[i++];
+ const onRejected = requestInterceptorChain[i++];
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected.call(this, error);
+ break;
+ }
+ }
+ try {
+ promise = dispatchRequest.call(this, newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+ i = 0;
+ len = responseInterceptorChain.length;
+ while (i < len) {
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
+ }
+ return promise;
+ }
+ getUri(config) {
+ config = mergeConfig$1(this.defaults, config);
+ const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
+ return buildURL(fullPath, config.params, config.paramsSerializer);
+ }
+};
+utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) {
+ Axios$1.prototype[method] = function(url, config) {
+ return this.request(mergeConfig$1(config || {}, {
+ method,
+ url,
+ data: (config || {}).data
+ }));
+ };
+});
+utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
+ function generateHTTPMethod(isForm) {
+ return function httpMethod(url, data, config) {
+ return this.request(mergeConfig$1(config || {}, {
+ method,
+ headers: isForm ? {
+ "Content-Type": "multipart/form-data"
+ } : {},
+ url,
+ data
+ }));
+ };
+ }
+ Axios$1.prototype[method] = generateHTTPMethod();
+ Axios$1.prototype[method + "Form"] = generateHTTPMethod(true);
+});
+let CancelToken$1 = class CancelToken {
+ constructor(executor) {
+ if (typeof executor !== "function") {
+ throw new TypeError("executor must be a function.");
+ }
+ let resolvePromise;
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+ const token = this;
+ this.promise.then((cancel) => {
+ if (!token._listeners) return;
+ let i = token._listeners.length;
+ while (i-- > 0) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+ this.promise.then = (onfulfilled) => {
+ let _resolve;
+ const promise = new Promise((resolve) => {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+ return promise;
+ };
+ executor(function cancel(message, config, request) {
+ if (token.reason) {
+ return;
+ }
+ token.reason = new CanceledError$1(message, config, request);
+ resolvePromise(token.reason);
+ });
+ }
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ */
+ throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ }
+ /**
+ * Subscribe to the cancel signal
+ */
+ subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ }
+ /**
+ * Unsubscribe from the cancel signal
+ */
+ unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ const index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ }
+ toAbortSignal() {
+ const controller = new AbortController();
+ const abort = (err) => {
+ controller.abort(err);
+ };
+ this.subscribe(abort);
+ controller.signal.unsubscribe = () => this.unsubscribe(abort);
+ return controller.signal;
+ }
+ /**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+ static source() {
+ let cancel;
+ const token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token,
+ cancel
+ };
+ }
+};
+function spread$1(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+}
+function isAxiosError$1(payload) {
+ return utils$1.isObject(payload) && payload.isAxiosError === true;
+}
+const HttpStatusCode$1 = {
+ Continue: 100,
+ SwitchingProtocols: 101,
+ Processing: 102,
+ EarlyHints: 103,
+ Ok: 200,
+ Created: 201,
+ Accepted: 202,
+ NonAuthoritativeInformation: 203,
+ NoContent: 204,
+ ResetContent: 205,
+ PartialContent: 206,
+ MultiStatus: 207,
+ AlreadyReported: 208,
+ ImUsed: 226,
+ MultipleChoices: 300,
+ MovedPermanently: 301,
+ Found: 302,
+ SeeOther: 303,
+ NotModified: 304,
+ UseProxy: 305,
+ Unused: 306,
+ TemporaryRedirect: 307,
+ PermanentRedirect: 308,
+ BadRequest: 400,
+ Unauthorized: 401,
+ PaymentRequired: 402,
+ Forbidden: 403,
+ NotFound: 404,
+ MethodNotAllowed: 405,
+ NotAcceptable: 406,
+ ProxyAuthenticationRequired: 407,
+ RequestTimeout: 408,
+ Conflict: 409,
+ Gone: 410,
+ LengthRequired: 411,
+ PreconditionFailed: 412,
+ PayloadTooLarge: 413,
+ UriTooLong: 414,
+ UnsupportedMediaType: 415,
+ RangeNotSatisfiable: 416,
+ ExpectationFailed: 417,
+ ImATeapot: 418,
+ MisdirectedRequest: 421,
+ UnprocessableEntity: 422,
+ Locked: 423,
+ FailedDependency: 424,
+ TooEarly: 425,
+ UpgradeRequired: 426,
+ PreconditionRequired: 428,
+ TooManyRequests: 429,
+ RequestHeaderFieldsTooLarge: 431,
+ UnavailableForLegalReasons: 451,
+ InternalServerError: 500,
+ NotImplemented: 501,
+ BadGateway: 502,
+ ServiceUnavailable: 503,
+ GatewayTimeout: 504,
+ HttpVersionNotSupported: 505,
+ VariantAlsoNegotiates: 506,
+ InsufficientStorage: 507,
+ LoopDetected: 508,
+ NotExtended: 510,
+ NetworkAuthenticationRequired: 511
+};
+Object.entries(HttpStatusCode$1).forEach(([key, value]) => {
+ HttpStatusCode$1[value] = key;
+});
+function createInstance(defaultConfig) {
+ const context = new Axios$1(defaultConfig);
+ const instance = bind(Axios$1.prototype.request, context);
+ utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true });
+ utils$1.extend(instance, context, null, { allOwnKeys: true });
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig$1(defaultConfig, instanceConfig));
+ };
+ return instance;
+}
+const axios = createInstance(defaults);
+axios.Axios = Axios$1;
+axios.CanceledError = CanceledError$1;
+axios.CancelToken = CancelToken$1;
+axios.isCancel = isCancel$1;
+axios.VERSION = VERSION$1;
+axios.toFormData = toFormData$1;
+axios.AxiosError = AxiosError$1;
+axios.Cancel = axios.CanceledError;
+axios.all = function all(promises) {
+ return Promise.all(promises);
+};
+axios.spread = spread$1;
+axios.isAxiosError = isAxiosError$1;
+axios.mergeConfig = mergeConfig$1;
+axios.AxiosHeaders = AxiosHeaders$1;
+axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
+axios.getAdapter = adapters.getAdapter;
+axios.HttpStatusCode = HttpStatusCode$1;
+axios.default = axios;
+const {
+ Axios: Axios2,
+ AxiosError,
+ CanceledError,
+ isCancel,
+ CancelToken: CancelToken2,
+ VERSION,
+ all: all2,
+ Cancel,
+ isAxiosError,
+ spread,
+ toFormData,
+ AxiosHeaders: AxiosHeaders2,
+ HttpStatusCode,
+ formToJSON,
+ getAdapter,
+ mergeConfig
+} = axios;
+var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
+function getAugmentedNamespace(n) {
+ if (Object.prototype.hasOwnProperty.call(n, "__esModule")) return n;
+ var f = n.default;
+ if (typeof f == "function") {
+ var a = function a2() {
+ if (this instanceof a2) {
+ return Reflect.construct(f, arguments, this.constructor);
+ }
+ return f.apply(this, arguments);
+ };
+ a.prototype = f.prototype;
+ } else a = {};
+ Object.defineProperty(a, "__esModule", { value: true });
+ Object.keys(n).forEach(function(k) {
+ var d = Object.getOwnPropertyDescriptor(n, k);
+ Object.defineProperty(a, k, d.get ? d : {
+ enumerable: true,
+ get: function() {
+ return n[k];
+ }
+ });
+ });
+ return a;
+}
+var cryptoJs$1 = { exports: {} };
+function commonjsRequire(path) {
+ throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
+}
+var core$1 = { exports: {} };
+const __viteBrowserExternal = {};
+const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ default: __viteBrowserExternal
+}, Symbol.toStringTag, { value: "Module" }));
+const require$$0 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
+var core = core$1.exports;
+var hasRequiredCore;
+function requireCore() {
+ if (hasRequiredCore) return core$1.exports;
+ hasRequiredCore = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory();
+ }
+ })(core, function() {
+ var CryptoJS = CryptoJS || function(Math2, undefined$1) {
+ var crypto2;
+ if (typeof window !== "undefined" && window.crypto) {
+ crypto2 = window.crypto;
+ }
+ if (typeof self !== "undefined" && self.crypto) {
+ crypto2 = self.crypto;
+ }
+ if (typeof globalThis !== "undefined" && globalThis.crypto) {
+ crypto2 = globalThis.crypto;
+ }
+ if (!crypto2 && typeof window !== "undefined" && window.msCrypto) {
+ crypto2 = window.msCrypto;
+ }
+ if (!crypto2 && typeof commonjsGlobal !== "undefined" && commonjsGlobal.crypto) {
+ crypto2 = commonjsGlobal.crypto;
+ }
+ if (!crypto2 && typeof commonjsRequire === "function") {
+ try {
+ crypto2 = require$$0;
+ } catch (err) {
+ }
+ }
+ var cryptoSecureRandomInt = function() {
+ if (crypto2) {
+ if (typeof crypto2.getRandomValues === "function") {
+ try {
+ return crypto2.getRandomValues(new Uint32Array(1))[0];
+ } catch (err) {
+ }
+ }
+ if (typeof crypto2.randomBytes === "function") {
+ try {
+ return crypto2.randomBytes(4).readInt32LE();
+ } catch (err) {
+ }
+ }
+ }
+ throw new Error("Native crypto module could not be used to get secure random number.");
+ };
+ var create = Object.create || /* @__PURE__ */ function() {
+ function F() {
+ }
+ return function(obj) {
+ var subtype;
+ F.prototype = obj;
+ subtype = new F();
+ F.prototype = null;
+ return subtype;
+ };
+ }();
+ var C = {};
+ var C_lib = C.lib = {};
+ var Base = C_lib.Base = /* @__PURE__ */ function() {
+ return {
+ /**
+ * Creates a new object that inherits from this object.
+ *
+ * @param {Object} overrides Properties to copy into the new object.
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * field: 'value',
+ *
+ * method: function () {
+ * }
+ * });
+ */
+ extend: function(overrides) {
+ var subtype = create(this);
+ if (overrides) {
+ subtype.mixIn(overrides);
+ }
+ if (!subtype.hasOwnProperty("init") || this.init === subtype.init) {
+ subtype.init = function() {
+ subtype.$super.init.apply(this, arguments);
+ };
+ }
+ subtype.init.prototype = subtype;
+ subtype.$super = this;
+ return subtype;
+ },
+ /**
+ * Extends this object and runs the init method.
+ * Arguments to create() will be passed to init().
+ *
+ * @return {Object} The new object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var instance = MyType.create();
+ */
+ create: function() {
+ var instance = this.extend();
+ instance.init.apply(instance, arguments);
+ return instance;
+ },
+ /**
+ * Initializes a newly created object.
+ * Override this method to add some logic when your objects are created.
+ *
+ * @example
+ *
+ * var MyType = CryptoJS.lib.Base.extend({
+ * init: function () {
+ * // ...
+ * }
+ * });
+ */
+ init: function() {
+ },
+ /**
+ * Copies properties into this object.
+ *
+ * @param {Object} properties The properties to mix in.
+ *
+ * @example
+ *
+ * MyType.mixIn({
+ * field: 'value'
+ * });
+ */
+ mixIn: function(properties) {
+ for (var propertyName in properties) {
+ if (properties.hasOwnProperty(propertyName)) {
+ this[propertyName] = properties[propertyName];
+ }
+ }
+ if (properties.hasOwnProperty("toString")) {
+ this.toString = properties.toString;
+ }
+ },
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = instance.clone();
+ */
+ clone: function() {
+ return this.init.prototype.extend(this);
+ }
+ };
+ }();
+ var WordArray = C_lib.WordArray = Base.extend({
+ /**
+ * Initializes a newly created word array.
+ *
+ * @param {Array} words (Optional) An array of 32-bit words.
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.create();
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
+ * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
+ */
+ init: function(words, sigBytes) {
+ words = this.words = words || [];
+ if (sigBytes != undefined$1) {
+ this.sigBytes = sigBytes;
+ } else {
+ this.sigBytes = words.length * 4;
+ }
+ },
+ /**
+ * Converts this word array to a string.
+ *
+ * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
+ *
+ * @return {string} The stringified word array.
+ *
+ * @example
+ *
+ * var string = wordArray + '';
+ * var string = wordArray.toString();
+ * var string = wordArray.toString(CryptoJS.enc.Utf8);
+ */
+ toString: function(encoder) {
+ return (encoder || Hex).stringify(this);
+ },
+ /**
+ * Concatenates a word array to this word array.
+ *
+ * @param {WordArray} wordArray The word array to append.
+ *
+ * @return {WordArray} This word array.
+ *
+ * @example
+ *
+ * wordArray1.concat(wordArray2);
+ */
+ concat: function(wordArray) {
+ var thisWords = this.words;
+ var thatWords = wordArray.words;
+ var thisSigBytes = this.sigBytes;
+ var thatSigBytes = wordArray.sigBytes;
+ this.clamp();
+ if (thisSigBytes % 4) {
+ for (var i = 0; i < thatSigBytes; i++) {
+ var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;
+ }
+ } else {
+ for (var j = 0; j < thatSigBytes; j += 4) {
+ thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];
+ }
+ }
+ this.sigBytes += thatSigBytes;
+ return this;
+ },
+ /**
+ * Removes insignificant bits.
+ *
+ * @example
+ *
+ * wordArray.clamp();
+ */
+ clamp: function() {
+ var words = this.words;
+ var sigBytes = this.sigBytes;
+ words[sigBytes >>> 2] &= 4294967295 << 32 - sigBytes % 4 * 8;
+ words.length = Math2.ceil(sigBytes / 4);
+ },
+ /**
+ * Creates a copy of this word array.
+ *
+ * @return {WordArray} The clone.
+ *
+ * @example
+ *
+ * var clone = wordArray.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+ clone.words = this.words.slice(0);
+ return clone;
+ },
+ /**
+ * Creates a word array filled with random bytes.
+ *
+ * @param {number} nBytes The number of random bytes to generate.
+ *
+ * @return {WordArray} The random word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.lib.WordArray.random(16);
+ */
+ random: function(nBytes) {
+ var words = [];
+ for (var i = 0; i < nBytes; i += 4) {
+ words.push(cryptoSecureRandomInt());
+ }
+ return new WordArray.init(words, nBytes);
+ }
+ });
+ var C_enc = C.enc = {};
+ var Hex = C_enc.Hex = {
+ /**
+ * Converts a word array to a hex string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The hex string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hexString = CryptoJS.enc.Hex.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var hexChars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ hexChars.push((bite >>> 4).toString(16));
+ hexChars.push((bite & 15).toString(16));
+ }
+ return hexChars.join("");
+ },
+ /**
+ * Converts a hex string to a word array.
+ *
+ * @param {string} hexStr The hex string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Hex.parse(hexString);
+ */
+ parse: function(hexStr) {
+ var hexStrLength = hexStr.length;
+ var words = [];
+ for (var i = 0; i < hexStrLength; i += 2) {
+ words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;
+ }
+ return new WordArray.init(words, hexStrLength / 2);
+ }
+ };
+ var Latin1 = C_enc.Latin1 = {
+ /**
+ * Converts a word array to a Latin1 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Latin1 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var latin1Chars = [];
+ for (var i = 0; i < sigBytes; i++) {
+ var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ latin1Chars.push(String.fromCharCode(bite));
+ }
+ return latin1Chars.join("");
+ },
+ /**
+ * Converts a Latin1 string to a word array.
+ *
+ * @param {string} latin1Str The Latin1 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
+ */
+ parse: function(latin1Str) {
+ var latin1StrLength = latin1Str.length;
+ var words = [];
+ for (var i = 0; i < latin1StrLength; i++) {
+ words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
+ }
+ return new WordArray.init(words, latin1StrLength);
+ }
+ };
+ var Utf8 = C_enc.Utf8 = {
+ /**
+ * Converts a word array to a UTF-8 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-8 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ try {
+ return decodeURIComponent(escape(Latin1.stringify(wordArray)));
+ } catch (e) {
+ throw new Error("Malformed UTF-8 data");
+ }
+ },
+ /**
+ * Converts a UTF-8 string to a word array.
+ *
+ * @param {string} utf8Str The UTF-8 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
+ */
+ parse: function(utf8Str) {
+ return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
+ }
+ };
+ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
+ /**
+ * Resets this block algorithm's data buffer to its initial state.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm.reset();
+ */
+ reset: function() {
+ this._data = new WordArray.init();
+ this._nDataBytes = 0;
+ },
+ /**
+ * Adds new data to this block algorithm's buffer.
+ *
+ * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
+ *
+ * @example
+ *
+ * bufferedBlockAlgorithm._append('data');
+ * bufferedBlockAlgorithm._append(wordArray);
+ */
+ _append: function(data) {
+ if (typeof data == "string") {
+ data = Utf8.parse(data);
+ }
+ this._data.concat(data);
+ this._nDataBytes += data.sigBytes;
+ },
+ /**
+ * Processes available data blocks.
+ *
+ * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
+ *
+ * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
+ *
+ * @return {WordArray} The processed data.
+ *
+ * @example
+ *
+ * var processedData = bufferedBlockAlgorithm._process();
+ * var processedData = bufferedBlockAlgorithm._process(!!'flush');
+ */
+ _process: function(doFlush) {
+ var processedWords;
+ var data = this._data;
+ var dataWords = data.words;
+ var dataSigBytes = data.sigBytes;
+ var blockSize = this.blockSize;
+ var blockSizeBytes = blockSize * 4;
+ var nBlocksReady = dataSigBytes / blockSizeBytes;
+ if (doFlush) {
+ nBlocksReady = Math2.ceil(nBlocksReady);
+ } else {
+ nBlocksReady = Math2.max((nBlocksReady | 0) - this._minBufferSize, 0);
+ }
+ var nWordsReady = nBlocksReady * blockSize;
+ var nBytesReady = Math2.min(nWordsReady * 4, dataSigBytes);
+ if (nWordsReady) {
+ for (var offset = 0; offset < nWordsReady; offset += blockSize) {
+ this._doProcessBlock(dataWords, offset);
+ }
+ processedWords = dataWords.splice(0, nWordsReady);
+ data.sigBytes -= nBytesReady;
+ }
+ return new WordArray.init(processedWords, nBytesReady);
+ },
+ /**
+ * Creates a copy of this object.
+ *
+ * @return {Object} The clone.
+ *
+ * @example
+ *
+ * var clone = bufferedBlockAlgorithm.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+ clone._data = this._data.clone();
+ return clone;
+ },
+ _minBufferSize: 0
+ });
+ C_lib.Hasher = BufferedBlockAlgorithm.extend({
+ /**
+ * Configuration options.
+ */
+ cfg: Base.extend(),
+ /**
+ * Initializes a newly created hasher.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
+ *
+ * @example
+ *
+ * var hasher = CryptoJS.algo.SHA256.create();
+ */
+ init: function(cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ this.reset();
+ },
+ /**
+ * Resets this hasher to its initial state.
+ *
+ * @example
+ *
+ * hasher.reset();
+ */
+ reset: function() {
+ BufferedBlockAlgorithm.reset.call(this);
+ this._doReset();
+ },
+ /**
+ * Updates this hasher with a message.
+ *
+ * @param {WordArray|string} messageUpdate The message to append.
+ *
+ * @return {Hasher} This hasher.
+ *
+ * @example
+ *
+ * hasher.update('message');
+ * hasher.update(wordArray);
+ */
+ update: function(messageUpdate) {
+ this._append(messageUpdate);
+ this._process();
+ return this;
+ },
+ /**
+ * Finalizes the hash computation.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} messageUpdate (Optional) A final message update.
+ *
+ * @return {WordArray} The hash.
+ *
+ * @example
+ *
+ * var hash = hasher.finalize();
+ * var hash = hasher.finalize('message');
+ * var hash = hasher.finalize(wordArray);
+ */
+ finalize: function(messageUpdate) {
+ if (messageUpdate) {
+ this._append(messageUpdate);
+ }
+ var hash = this._doFinalize();
+ return hash;
+ },
+ blockSize: 512 / 32,
+ /**
+ * Creates a shortcut function to a hasher's object interface.
+ *
+ * @param {Hasher} hasher The hasher to create a helper for.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
+ */
+ _createHelper: function(hasher) {
+ return function(message, cfg) {
+ return new hasher.init(cfg).finalize(message);
+ };
+ },
+ /**
+ * Creates a shortcut function to the HMAC's object interface.
+ *
+ * @param {Hasher} hasher The hasher to use in this HMAC helper.
+ *
+ * @return {Function} The shortcut function.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
+ */
+ _createHmacHelper: function(hasher) {
+ return function(message, key) {
+ return new C_algo.HMAC.init(hasher, key).finalize(message);
+ };
+ }
+ });
+ var C_algo = C.algo = {};
+ return C;
+ }(Math);
+ return CryptoJS;
+ });
+ })(core$1);
+ return core$1.exports;
+}
+var x64Core$1 = { exports: {} };
+var x64Core = x64Core$1.exports;
+var hasRequiredX64Core;
+function requireX64Core() {
+ if (hasRequiredX64Core) return x64Core$1.exports;
+ hasRequiredX64Core = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(x64Core, function(CryptoJS) {
+ (function(undefined$1) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var X32WordArray = C_lib.WordArray;
+ var C_x64 = C.x64 = {};
+ C_x64.Word = Base.extend({
+ /**
+ * Initializes a newly created 64-bit word.
+ *
+ * @param {number} high The high 32 bits.
+ * @param {number} low The low 32 bits.
+ *
+ * @example
+ *
+ * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
+ */
+ init: function(high, low) {
+ this.high = high;
+ this.low = low;
+ }
+ /**
+ * Bitwise NOTs this word.
+ *
+ * @return {X64Word} A new x64-Word object after negating.
+ *
+ * @example
+ *
+ * var negated = x64Word.not();
+ */
+ // not: function () {
+ // var high = ~this.high;
+ // var low = ~this.low;
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Bitwise ANDs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to AND with this word.
+ *
+ * @return {X64Word} A new x64-Word object after ANDing.
+ *
+ * @example
+ *
+ * var anded = x64Word.and(anotherX64Word);
+ */
+ // and: function (word) {
+ // var high = this.high & word.high;
+ // var low = this.low & word.low;
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Bitwise ORs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to OR with this word.
+ *
+ * @return {X64Word} A new x64-Word object after ORing.
+ *
+ * @example
+ *
+ * var ored = x64Word.or(anotherX64Word);
+ */
+ // or: function (word) {
+ // var high = this.high | word.high;
+ // var low = this.low | word.low;
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Bitwise XORs this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to XOR with this word.
+ *
+ * @return {X64Word} A new x64-Word object after XORing.
+ *
+ * @example
+ *
+ * var xored = x64Word.xor(anotherX64Word);
+ */
+ // xor: function (word) {
+ // var high = this.high ^ word.high;
+ // var low = this.low ^ word.low;
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Shifts this word n bits to the left.
+ *
+ * @param {number} n The number of bits to shift.
+ *
+ * @return {X64Word} A new x64-Word object after shifting.
+ *
+ * @example
+ *
+ * var shifted = x64Word.shiftL(25);
+ */
+ // shiftL: function (n) {
+ // if (n < 32) {
+ // var high = (this.high << n) | (this.low >>> (32 - n));
+ // var low = this.low << n;
+ // } else {
+ // var high = this.low << (n - 32);
+ // var low = 0;
+ // }
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Shifts this word n bits to the right.
+ *
+ * @param {number} n The number of bits to shift.
+ *
+ * @return {X64Word} A new x64-Word object after shifting.
+ *
+ * @example
+ *
+ * var shifted = x64Word.shiftR(7);
+ */
+ // shiftR: function (n) {
+ // if (n < 32) {
+ // var low = (this.low >>> n) | (this.high << (32 - n));
+ // var high = this.high >>> n;
+ // } else {
+ // var low = this.high >>> (n - 32);
+ // var high = 0;
+ // }
+ // return X64Word.create(high, low);
+ // },
+ /**
+ * Rotates this word n bits to the left.
+ *
+ * @param {number} n The number of bits to rotate.
+ *
+ * @return {X64Word} A new x64-Word object after rotating.
+ *
+ * @example
+ *
+ * var rotated = x64Word.rotL(25);
+ */
+ // rotL: function (n) {
+ // return this.shiftL(n).or(this.shiftR(64 - n));
+ // },
+ /**
+ * Rotates this word n bits to the right.
+ *
+ * @param {number} n The number of bits to rotate.
+ *
+ * @return {X64Word} A new x64-Word object after rotating.
+ *
+ * @example
+ *
+ * var rotated = x64Word.rotR(7);
+ */
+ // rotR: function (n) {
+ // return this.shiftR(n).or(this.shiftL(64 - n));
+ // },
+ /**
+ * Adds this word with the passed word.
+ *
+ * @param {X64Word} word The x64-Word to add with this word.
+ *
+ * @return {X64Word} A new x64-Word object after adding.
+ *
+ * @example
+ *
+ * var added = x64Word.add(anotherX64Word);
+ */
+ // add: function (word) {
+ // var low = (this.low + word.low) | 0;
+ // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
+ // var high = (this.high + word.high + carry) | 0;
+ // return X64Word.create(high, low);
+ // }
+ });
+ C_x64.WordArray = Base.extend({
+ /**
+ * Initializes a newly created word array.
+ *
+ * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
+ * @param {number} sigBytes (Optional) The number of significant bytes in the words.
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create();
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create([
+ * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
+ * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
+ * ]);
+ *
+ * var wordArray = CryptoJS.x64.WordArray.create([
+ * CryptoJS.x64.Word.create(0x00010203, 0x04050607),
+ * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
+ * ], 10);
+ */
+ init: function(words, sigBytes) {
+ words = this.words = words || [];
+ if (sigBytes != undefined$1) {
+ this.sigBytes = sigBytes;
+ } else {
+ this.sigBytes = words.length * 8;
+ }
+ },
+ /**
+ * Converts this 64-bit word array to a 32-bit word array.
+ *
+ * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
+ *
+ * @example
+ *
+ * var x32WordArray = x64WordArray.toX32();
+ */
+ toX32: function() {
+ var x64Words = this.words;
+ var x64WordsLength = x64Words.length;
+ var x32Words = [];
+ for (var i = 0; i < x64WordsLength; i++) {
+ var x64Word = x64Words[i];
+ x32Words.push(x64Word.high);
+ x32Words.push(x64Word.low);
+ }
+ return X32WordArray.create(x32Words, this.sigBytes);
+ },
+ /**
+ * Creates a copy of this word array.
+ *
+ * @return {X64WordArray} The clone.
+ *
+ * @example
+ *
+ * var clone = x64WordArray.clone();
+ */
+ clone: function() {
+ var clone = Base.clone.call(this);
+ var words = clone.words = this.words.slice(0);
+ var wordsLength = words.length;
+ for (var i = 0; i < wordsLength; i++) {
+ words[i] = words[i].clone();
+ }
+ return clone;
+ }
+ });
+ })();
+ return CryptoJS;
+ });
+ })(x64Core$1);
+ return x64Core$1.exports;
+}
+var libTypedarrays$1 = { exports: {} };
+var libTypedarrays = libTypedarrays$1.exports;
+var hasRequiredLibTypedarrays;
+function requireLibTypedarrays() {
+ if (hasRequiredLibTypedarrays) return libTypedarrays$1.exports;
+ hasRequiredLibTypedarrays = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(libTypedarrays, function(CryptoJS) {
+ (function() {
+ if (typeof ArrayBuffer != "function") {
+ return;
+ }
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var superInit = WordArray.init;
+ var subInit = WordArray.init = function(typedArray) {
+ if (typedArray instanceof ArrayBuffer) {
+ typedArray = new Uint8Array(typedArray);
+ }
+ if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {
+ typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
+ }
+ if (typedArray instanceof Uint8Array) {
+ var typedArrayByteLength = typedArray.byteLength;
+ var words = [];
+ for (var i = 0; i < typedArrayByteLength; i++) {
+ words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;
+ }
+ superInit.call(this, words, typedArrayByteLength);
+ } else {
+ superInit.apply(this, arguments);
+ }
+ };
+ subInit.prototype = WordArray;
+ })();
+ return CryptoJS.lib.WordArray;
+ });
+ })(libTypedarrays$1);
+ return libTypedarrays$1.exports;
+}
+var encUtf16$1 = { exports: {} };
+var encUtf16 = encUtf16$1.exports;
+var hasRequiredEncUtf16;
+function requireEncUtf16() {
+ if (hasRequiredEncUtf16) return encUtf16$1.exports;
+ hasRequiredEncUtf16 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(encUtf16, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+ C_enc.Utf16 = C_enc.Utf16BE = {
+ /**
+ * Converts a word array to a UTF-16 BE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 BE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 65535;
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+ return utf16Chars.join("");
+ },
+ /**
+ * Converts a UTF-16 BE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 BE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
+ */
+ parse: function(utf16Str) {
+ var utf16StrLength = utf16Str.length;
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;
+ }
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+ C_enc.Utf16LE = {
+ /**
+ * Converts a word array to a UTF-16 LE string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The UTF-16 LE string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var utf16Chars = [];
+ for (var i = 0; i < sigBytes; i += 2) {
+ var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 65535);
+ utf16Chars.push(String.fromCharCode(codePoint));
+ }
+ return utf16Chars.join("");
+ },
+ /**
+ * Converts a UTF-16 LE string to a word array.
+ *
+ * @param {string} utf16Str The UTF-16 LE string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
+ */
+ parse: function(utf16Str) {
+ var utf16StrLength = utf16Str.length;
+ var words = [];
+ for (var i = 0; i < utf16StrLength; i++) {
+ words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);
+ }
+ return WordArray.create(words, utf16StrLength * 2);
+ }
+ };
+ function swapEndian(word) {
+ return word << 8 & 4278255360 | word >>> 8 & 16711935;
+ }
+ })();
+ return CryptoJS.enc.Utf16;
+ });
+ })(encUtf16$1);
+ return encUtf16$1.exports;
+}
+var encBase64$1 = { exports: {} };
+var encBase64 = encBase64$1.exports;
+var hasRequiredEncBase64;
+function requireEncBase64() {
+ if (hasRequiredEncBase64) return encBase64$1.exports;
+ hasRequiredEncBase64 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(encBase64, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+ C_enc.Base64 = {
+ /**
+ * Converts a word array to a Base64 string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @return {string} The Base64 string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var base64String = CryptoJS.enc.Base64.stringify(wordArray);
+ */
+ stringify: function(wordArray) {
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var map = this._map;
+ wordArray.clamp();
+ var base64Chars = [];
+ for (var i = 0; i < sigBytes; i += 3) {
+ var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
+ var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
+ var triplet = byte1 << 16 | byte2 << 8 | byte3;
+ for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
+ base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
+ }
+ }
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ while (base64Chars.length % 4) {
+ base64Chars.push(paddingChar);
+ }
+ }
+ return base64Chars.join("");
+ },
+ /**
+ * Converts a Base64 string to a word array.
+ *
+ * @param {string} base64Str The Base64 string.
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Base64.parse(base64String);
+ */
+ parse: function(base64Str) {
+ var base64StrLength = base64Str.length;
+ var map = this._map;
+ var reverseMap = this._reverseMap;
+ if (!reverseMap) {
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
+ }
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ var paddingIndex = base64Str.indexOf(paddingChar);
+ if (paddingIndex !== -1) {
+ base64StrLength = paddingIndex;
+ }
+ }
+ return parseLoop(base64Str, base64StrLength, reverseMap);
+ },
+ _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
+ };
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
+ var bitsCombined = bits1 | bits2;
+ words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
+ }
+ })();
+ return CryptoJS.enc.Base64;
+ });
+ })(encBase64$1);
+ return encBase64$1.exports;
+}
+var encBase64url$1 = { exports: {} };
+var encBase64url = encBase64url$1.exports;
+var hasRequiredEncBase64url;
+function requireEncBase64url() {
+ if (hasRequiredEncBase64url) return encBase64url$1.exports;
+ hasRequiredEncBase64url = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(encBase64url, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_enc = C.enc;
+ C_enc.Base64url = {
+ /**
+ * Converts a word array to a Base64url string.
+ *
+ * @param {WordArray} wordArray The word array.
+ *
+ * @param {boolean} urlSafe Whether to use url safe
+ *
+ * @return {string} The Base64url string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
+ */
+ stringify: function(wordArray, urlSafe) {
+ if (urlSafe === void 0) {
+ urlSafe = true;
+ }
+ var words = wordArray.words;
+ var sigBytes = wordArray.sigBytes;
+ var map = urlSafe ? this._safe_map : this._map;
+ wordArray.clamp();
+ var base64Chars = [];
+ for (var i = 0; i < sigBytes; i += 3) {
+ var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
+ var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
+ var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
+ var triplet = byte1 << 16 | byte2 << 8 | byte3;
+ for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
+ base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
+ }
+ }
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ while (base64Chars.length % 4) {
+ base64Chars.push(paddingChar);
+ }
+ }
+ return base64Chars.join("");
+ },
+ /**
+ * Converts a Base64url string to a word array.
+ *
+ * @param {string} base64Str The Base64url string.
+ *
+ * @param {boolean} urlSafe Whether to use url safe
+ *
+ * @return {WordArray} The word array.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var wordArray = CryptoJS.enc.Base64url.parse(base64String);
+ */
+ parse: function(base64Str, urlSafe) {
+ if (urlSafe === void 0) {
+ urlSafe = true;
+ }
+ var base64StrLength = base64Str.length;
+ var map = urlSafe ? this._safe_map : this._map;
+ var reverseMap = this._reverseMap;
+ if (!reverseMap) {
+ reverseMap = this._reverseMap = [];
+ for (var j = 0; j < map.length; j++) {
+ reverseMap[map.charCodeAt(j)] = j;
+ }
+ }
+ var paddingChar = map.charAt(64);
+ if (paddingChar) {
+ var paddingIndex = base64Str.indexOf(paddingChar);
+ if (paddingIndex !== -1) {
+ base64StrLength = paddingIndex;
+ }
+ }
+ return parseLoop(base64Str, base64StrLength, reverseMap);
+ },
+ _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+ _safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
+ };
+ function parseLoop(base64Str, base64StrLength, reverseMap) {
+ var words = [];
+ var nBytes = 0;
+ for (var i = 0; i < base64StrLength; i++) {
+ if (i % 4) {
+ var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
+ var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
+ var bitsCombined = bits1 | bits2;
+ words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
+ nBytes++;
+ }
+ }
+ return WordArray.create(words, nBytes);
+ }
+ })();
+ return CryptoJS.enc.Base64url;
+ });
+ })(encBase64url$1);
+ return encBase64url$1.exports;
+}
+var md5$1 = { exports: {} };
+var md5 = md5$1.exports;
+var hasRequiredMd5;
+function requireMd5() {
+ if (hasRequiredMd5) return md5$1.exports;
+ hasRequiredMd5 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(md5, function(CryptoJS) {
+ (function(Math2) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+ var T = [];
+ (function() {
+ for (var i = 0; i < 64; i++) {
+ T[i] = Math2.abs(Math2.sin(i + 1)) * 4294967296 | 0;
+ }
+ })();
+ var MD5 = C_algo.MD5 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 1732584193,
+ 4023233417,
+ 2562383102,
+ 271733878
+ ]);
+ },
+ _doProcessBlock: function(M, offset) {
+ for (var i = 0; i < 16; i++) {
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+ M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
+ }
+ var H = this._hash.words;
+ var M_offset_0 = M[offset + 0];
+ var M_offset_1 = M[offset + 1];
+ var M_offset_2 = M[offset + 2];
+ var M_offset_3 = M[offset + 3];
+ var M_offset_4 = M[offset + 4];
+ var M_offset_5 = M[offset + 5];
+ var M_offset_6 = M[offset + 6];
+ var M_offset_7 = M[offset + 7];
+ var M_offset_8 = M[offset + 8];
+ var M_offset_9 = M[offset + 9];
+ var M_offset_10 = M[offset + 10];
+ var M_offset_11 = M[offset + 11];
+ var M_offset_12 = M[offset + 12];
+ var M_offset_13 = M[offset + 13];
+ var M_offset_14 = M[offset + 14];
+ var M_offset_15 = M[offset + 15];
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ a = FF(a, b, c, d, M_offset_0, 7, T[0]);
+ d = FF(d, a, b, c, M_offset_1, 12, T[1]);
+ c = FF(c, d, a, b, M_offset_2, 17, T[2]);
+ b = FF(b, c, d, a, M_offset_3, 22, T[3]);
+ a = FF(a, b, c, d, M_offset_4, 7, T[4]);
+ d = FF(d, a, b, c, M_offset_5, 12, T[5]);
+ c = FF(c, d, a, b, M_offset_6, 17, T[6]);
+ b = FF(b, c, d, a, M_offset_7, 22, T[7]);
+ a = FF(a, b, c, d, M_offset_8, 7, T[8]);
+ d = FF(d, a, b, c, M_offset_9, 12, T[9]);
+ c = FF(c, d, a, b, M_offset_10, 17, T[10]);
+ b = FF(b, c, d, a, M_offset_11, 22, T[11]);
+ a = FF(a, b, c, d, M_offset_12, 7, T[12]);
+ d = FF(d, a, b, c, M_offset_13, 12, T[13]);
+ c = FF(c, d, a, b, M_offset_14, 17, T[14]);
+ b = FF(b, c, d, a, M_offset_15, 22, T[15]);
+ a = GG(a, b, c, d, M_offset_1, 5, T[16]);
+ d = GG(d, a, b, c, M_offset_6, 9, T[17]);
+ c = GG(c, d, a, b, M_offset_11, 14, T[18]);
+ b = GG(b, c, d, a, M_offset_0, 20, T[19]);
+ a = GG(a, b, c, d, M_offset_5, 5, T[20]);
+ d = GG(d, a, b, c, M_offset_10, 9, T[21]);
+ c = GG(c, d, a, b, M_offset_15, 14, T[22]);
+ b = GG(b, c, d, a, M_offset_4, 20, T[23]);
+ a = GG(a, b, c, d, M_offset_9, 5, T[24]);
+ d = GG(d, a, b, c, M_offset_14, 9, T[25]);
+ c = GG(c, d, a, b, M_offset_3, 14, T[26]);
+ b = GG(b, c, d, a, M_offset_8, 20, T[27]);
+ a = GG(a, b, c, d, M_offset_13, 5, T[28]);
+ d = GG(d, a, b, c, M_offset_2, 9, T[29]);
+ c = GG(c, d, a, b, M_offset_7, 14, T[30]);
+ b = GG(b, c, d, a, M_offset_12, 20, T[31]);
+ a = HH(a, b, c, d, M_offset_5, 4, T[32]);
+ d = HH(d, a, b, c, M_offset_8, 11, T[33]);
+ c = HH(c, d, a, b, M_offset_11, 16, T[34]);
+ b = HH(b, c, d, a, M_offset_14, 23, T[35]);
+ a = HH(a, b, c, d, M_offset_1, 4, T[36]);
+ d = HH(d, a, b, c, M_offset_4, 11, T[37]);
+ c = HH(c, d, a, b, M_offset_7, 16, T[38]);
+ b = HH(b, c, d, a, M_offset_10, 23, T[39]);
+ a = HH(a, b, c, d, M_offset_13, 4, T[40]);
+ d = HH(d, a, b, c, M_offset_0, 11, T[41]);
+ c = HH(c, d, a, b, M_offset_3, 16, T[42]);
+ b = HH(b, c, d, a, M_offset_6, 23, T[43]);
+ a = HH(a, b, c, d, M_offset_9, 4, T[44]);
+ d = HH(d, a, b, c, M_offset_12, 11, T[45]);
+ c = HH(c, d, a, b, M_offset_15, 16, T[46]);
+ b = HH(b, c, d, a, M_offset_2, 23, T[47]);
+ a = II(a, b, c, d, M_offset_0, 6, T[48]);
+ d = II(d, a, b, c, M_offset_7, 10, T[49]);
+ c = II(c, d, a, b, M_offset_14, 15, T[50]);
+ b = II(b, c, d, a, M_offset_5, 21, T[51]);
+ a = II(a, b, c, d, M_offset_12, 6, T[52]);
+ d = II(d, a, b, c, M_offset_3, 10, T[53]);
+ c = II(c, d, a, b, M_offset_10, 15, T[54]);
+ b = II(b, c, d, a, M_offset_1, 21, T[55]);
+ a = II(a, b, c, d, M_offset_8, 6, T[56]);
+ d = II(d, a, b, c, M_offset_15, 10, T[57]);
+ c = II(c, d, a, b, M_offset_6, 15, T[58]);
+ b = II(b, c, d, a, M_offset_13, 21, T[59]);
+ a = II(a, b, c, d, M_offset_4, 6, T[60]);
+ d = II(d, a, b, c, M_offset_11, 10, T[61]);
+ c = II(c, d, a, b, M_offset_2, 15, T[62]);
+ b = II(b, c, d, a, M_offset_9, 21, T[63]);
+ H[0] = H[0] + a | 0;
+ H[1] = H[1] + b | 0;
+ H[2] = H[2] + c | 0;
+ H[3] = H[3] + d | 0;
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
+ var nBitsTotalH = Math2.floor(nBitsTotal / 4294967296);
+ var nBitsTotalL = nBitsTotal;
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 16711935 | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 4278255360;
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 16711935 | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 4278255360;
+ data.sigBytes = (dataWords.length + 1) * 4;
+ this._process();
+ var hash = this._hash;
+ var H = hash.words;
+ for (var i = 0; i < 4; i++) {
+ var H_i = H[i];
+ H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
+ }
+ return hash;
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+ return clone;
+ }
+ });
+ function FF(a, b, c, d, x, s, t) {
+ var n = a + (b & c | ~b & d) + x + t;
+ return (n << s | n >>> 32 - s) + b;
+ }
+ function GG(a, b, c, d, x, s, t) {
+ var n = a + (b & d | c & ~d) + x + t;
+ return (n << s | n >>> 32 - s) + b;
+ }
+ function HH(a, b, c, d, x, s, t) {
+ var n = a + (b ^ c ^ d) + x + t;
+ return (n << s | n >>> 32 - s) + b;
+ }
+ function II(a, b, c, d, x, s, t) {
+ var n = a + (c ^ (b | ~d)) + x + t;
+ return (n << s | n >>> 32 - s) + b;
+ }
+ C.MD5 = Hasher._createHelper(MD5);
+ C.HmacMD5 = Hasher._createHmacHelper(MD5);
+ })(Math);
+ return CryptoJS.MD5;
+ });
+ })(md5$1);
+ return md5$1.exports;
+}
+var sha1$1 = { exports: {} };
+var sha1 = sha1$1.exports;
+var hasRequiredSha1;
+function requireSha1() {
+ if (hasRequiredSha1) return sha1$1.exports;
+ hasRequiredSha1 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(sha1, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+ var W = [];
+ var SHA1 = C_algo.SHA1 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 1732584193,
+ 4023233417,
+ 2562383102,
+ 271733878,
+ 3285377520
+ ]);
+ },
+ _doProcessBlock: function(M, offset) {
+ var H = this._hash.words;
+ var a = H[0];
+ var b = H[1];
+ var c = H[2];
+ var d = H[3];
+ var e = H[4];
+ for (var i = 0; i < 80; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
+ W[i] = n << 1 | n >>> 31;
+ }
+ var t = (a << 5 | a >>> 27) + e + W[i];
+ if (i < 20) {
+ t += (b & c | ~b & d) + 1518500249;
+ } else if (i < 40) {
+ t += (b ^ c ^ d) + 1859775393;
+ } else if (i < 60) {
+ t += (b & c | b & d | c & d) - 1894007588;
+ } else {
+ t += (b ^ c ^ d) - 899497514;
+ }
+ e = d;
+ d = c;
+ c = b << 30 | b >>> 2;
+ b = a;
+ a = t;
+ }
+ H[0] = H[0] + a | 0;
+ H[1] = H[1] + b | 0;
+ H[2] = H[2] + c | 0;
+ H[3] = H[3] + d | 0;
+ H[4] = H[4] + e | 0;
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 4294967296);
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+ this._process();
+ return this._hash;
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+ return clone;
+ }
+ });
+ C.SHA1 = Hasher._createHelper(SHA1);
+ C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
+ })();
+ return CryptoJS.SHA1;
+ });
+ })(sha1$1);
+ return sha1$1.exports;
+}
+var sha256$1 = { exports: {} };
+var sha256 = sha256$1.exports;
+var hasRequiredSha256;
+function requireSha256() {
+ if (hasRequiredSha256) return sha256$1.exports;
+ hasRequiredSha256 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(sha256, function(CryptoJS) {
+ (function(Math2) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+ var H = [];
+ var K = [];
+ (function() {
+ function isPrime(n2) {
+ var sqrtN = Math2.sqrt(n2);
+ for (var factor = 2; factor <= sqrtN; factor++) {
+ if (!(n2 % factor)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ function getFractionalBits(n2) {
+ return (n2 - (n2 | 0)) * 4294967296 | 0;
+ }
+ var n = 2;
+ var nPrime = 0;
+ while (nPrime < 64) {
+ if (isPrime(n)) {
+ if (nPrime < 8) {
+ H[nPrime] = getFractionalBits(Math2.pow(n, 1 / 2));
+ }
+ K[nPrime] = getFractionalBits(Math2.pow(n, 1 / 3));
+ nPrime++;
+ }
+ n++;
+ }
+ })();
+ var W = [];
+ var SHA256 = C_algo.SHA256 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init(H.slice(0));
+ },
+ _doProcessBlock: function(M, offset) {
+ var H2 = this._hash.words;
+ var a = H2[0];
+ var b = H2[1];
+ var c = H2[2];
+ var d = H2[3];
+ var e = H2[4];
+ var f = H2[5];
+ var g = H2[6];
+ var h2 = H2[7];
+ for (var i = 0; i < 64; i++) {
+ if (i < 16) {
+ W[i] = M[offset + i] | 0;
+ } else {
+ var gamma0x = W[i - 15];
+ var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
+ var gamma1x = W[i - 2];
+ var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
+ W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
+ }
+ var ch = e & f ^ ~e & g;
+ var maj = a & b ^ a & c ^ b & c;
+ var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
+ var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
+ var t1 = h2 + sigma1 + ch + K[i] + W[i];
+ var t2 = sigma0 + maj;
+ h2 = g;
+ g = f;
+ f = e;
+ e = d + t1 | 0;
+ d = c;
+ c = b;
+ b = a;
+ a = t1 + t2 | 0;
+ }
+ H2[0] = H2[0] + a | 0;
+ H2[1] = H2[1] + b | 0;
+ H2[2] = H2[2] + c | 0;
+ H2[3] = H2[3] + d | 0;
+ H2[4] = H2[4] + e | 0;
+ H2[5] = H2[5] + f | 0;
+ H2[6] = H2[6] + g | 0;
+ H2[7] = H2[7] + h2 | 0;
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math2.floor(nBitsTotal / 4294967296);
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+ this._process();
+ return this._hash;
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+ return clone;
+ }
+ });
+ C.SHA256 = Hasher._createHelper(SHA256);
+ C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
+ })(Math);
+ return CryptoJS.SHA256;
+ });
+ })(sha256$1);
+ return sha256$1.exports;
+}
+var sha224$1 = { exports: {} };
+var sha224 = sha224$1.exports;
+var hasRequiredSha224;
+function requireSha224() {
+ if (hasRequiredSha224) return sha224$1.exports;
+ hasRequiredSha224 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireSha256());
+ }
+ })(sha224, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var SHA256 = C_algo.SHA256;
+ var SHA224 = C_algo.SHA224 = SHA256.extend({
+ _doReset: function() {
+ this._hash = new WordArray.init([
+ 3238371032,
+ 914150663,
+ 812702999,
+ 4144912697,
+ 4290775857,
+ 1750603025,
+ 1694076839,
+ 3204075428
+ ]);
+ },
+ _doFinalize: function() {
+ var hash = SHA256._doFinalize.call(this);
+ hash.sigBytes -= 4;
+ return hash;
+ }
+ });
+ C.SHA224 = SHA256._createHelper(SHA224);
+ C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
+ })();
+ return CryptoJS.SHA224;
+ });
+ })(sha224$1);
+ return sha224$1.exports;
+}
+var sha512$1 = { exports: {} };
+var sha512 = sha512$1.exports;
+var hasRequiredSha512;
+function requireSha512() {
+ if (hasRequiredSha512) return sha512$1.exports;
+ hasRequiredSha512 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireX64Core());
+ }
+ })(sha512, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Hasher = C_lib.Hasher;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var X64WordArray = C_x64.WordArray;
+ var C_algo = C.algo;
+ function X64Word_create() {
+ return X64Word.create.apply(X64Word, arguments);
+ }
+ var K = [
+ X64Word_create(1116352408, 3609767458),
+ X64Word_create(1899447441, 602891725),
+ X64Word_create(3049323471, 3964484399),
+ X64Word_create(3921009573, 2173295548),
+ X64Word_create(961987163, 4081628472),
+ X64Word_create(1508970993, 3053834265),
+ X64Word_create(2453635748, 2937671579),
+ X64Word_create(2870763221, 3664609560),
+ X64Word_create(3624381080, 2734883394),
+ X64Word_create(310598401, 1164996542),
+ X64Word_create(607225278, 1323610764),
+ X64Word_create(1426881987, 3590304994),
+ X64Word_create(1925078388, 4068182383),
+ X64Word_create(2162078206, 991336113),
+ X64Word_create(2614888103, 633803317),
+ X64Word_create(3248222580, 3479774868),
+ X64Word_create(3835390401, 2666613458),
+ X64Word_create(4022224774, 944711139),
+ X64Word_create(264347078, 2341262773),
+ X64Word_create(604807628, 2007800933),
+ X64Word_create(770255983, 1495990901),
+ X64Word_create(1249150122, 1856431235),
+ X64Word_create(1555081692, 3175218132),
+ X64Word_create(1996064986, 2198950837),
+ X64Word_create(2554220882, 3999719339),
+ X64Word_create(2821834349, 766784016),
+ X64Word_create(2952996808, 2566594879),
+ X64Word_create(3210313671, 3203337956),
+ X64Word_create(3336571891, 1034457026),
+ X64Word_create(3584528711, 2466948901),
+ X64Word_create(113926993, 3758326383),
+ X64Word_create(338241895, 168717936),
+ X64Word_create(666307205, 1188179964),
+ X64Word_create(773529912, 1546045734),
+ X64Word_create(1294757372, 1522805485),
+ X64Word_create(1396182291, 2643833823),
+ X64Word_create(1695183700, 2343527390),
+ X64Word_create(1986661051, 1014477480),
+ X64Word_create(2177026350, 1206759142),
+ X64Word_create(2456956037, 344077627),
+ X64Word_create(2730485921, 1290863460),
+ X64Word_create(2820302411, 3158454273),
+ X64Word_create(3259730800, 3505952657),
+ X64Word_create(3345764771, 106217008),
+ X64Word_create(3516065817, 3606008344),
+ X64Word_create(3600352804, 1432725776),
+ X64Word_create(4094571909, 1467031594),
+ X64Word_create(275423344, 851169720),
+ X64Word_create(430227734, 3100823752),
+ X64Word_create(506948616, 1363258195),
+ X64Word_create(659060556, 3750685593),
+ X64Word_create(883997877, 3785050280),
+ X64Word_create(958139571, 3318307427),
+ X64Word_create(1322822218, 3812723403),
+ X64Word_create(1537002063, 2003034995),
+ X64Word_create(1747873779, 3602036899),
+ X64Word_create(1955562222, 1575990012),
+ X64Word_create(2024104815, 1125592928),
+ X64Word_create(2227730452, 2716904306),
+ X64Word_create(2361852424, 442776044),
+ X64Word_create(2428436474, 593698344),
+ X64Word_create(2756734187, 3733110249),
+ X64Word_create(3204031479, 2999351573),
+ X64Word_create(3329325298, 3815920427),
+ X64Word_create(3391569614, 3928383900),
+ X64Word_create(3515267271, 566280711),
+ X64Word_create(3940187606, 3454069534),
+ X64Word_create(4118630271, 4000239992),
+ X64Word_create(116418474, 1914138554),
+ X64Word_create(174292421, 2731055270),
+ X64Word_create(289380356, 3203993006),
+ X64Word_create(460393269, 320620315),
+ X64Word_create(685471733, 587496836),
+ X64Word_create(852142971, 1086792851),
+ X64Word_create(1017036298, 365543100),
+ X64Word_create(1126000580, 2618297676),
+ X64Word_create(1288033470, 3409855158),
+ X64Word_create(1501505948, 4234509866),
+ X64Word_create(1607167915, 987167468),
+ X64Word_create(1816402316, 1246189591)
+ ];
+ var W = [];
+ (function() {
+ for (var i = 0; i < 80; i++) {
+ W[i] = X64Word_create();
+ }
+ })();
+ var SHA512 = C_algo.SHA512 = Hasher.extend({
+ _doReset: function() {
+ this._hash = new X64WordArray.init([
+ new X64Word.init(1779033703, 4089235720),
+ new X64Word.init(3144134277, 2227873595),
+ new X64Word.init(1013904242, 4271175723),
+ new X64Word.init(2773480762, 1595750129),
+ new X64Word.init(1359893119, 2917565137),
+ new X64Word.init(2600822924, 725511199),
+ new X64Word.init(528734635, 4215389547),
+ new X64Word.init(1541459225, 327033209)
+ ]);
+ },
+ _doProcessBlock: function(M, offset) {
+ var H = this._hash.words;
+ var H0 = H[0];
+ var H1 = H[1];
+ var H2 = H[2];
+ var H3 = H[3];
+ var H4 = H[4];
+ var H5 = H[5];
+ var H6 = H[6];
+ var H7 = H[7];
+ var H0h = H0.high;
+ var H0l = H0.low;
+ var H1h = H1.high;
+ var H1l = H1.low;
+ var H2h = H2.high;
+ var H2l = H2.low;
+ var H3h = H3.high;
+ var H3l = H3.low;
+ var H4h = H4.high;
+ var H4l = H4.low;
+ var H5h = H5.high;
+ var H5l = H5.low;
+ var H6h = H6.high;
+ var H6l = H6.low;
+ var H7h = H7.high;
+ var H7l = H7.low;
+ var ah = H0h;
+ var al = H0l;
+ var bh = H1h;
+ var bl = H1l;
+ var ch = H2h;
+ var cl = H2l;
+ var dh = H3h;
+ var dl = H3l;
+ var eh = H4h;
+ var el = H4l;
+ var fh = H5h;
+ var fl = H5l;
+ var gh = H6h;
+ var gl = H6l;
+ var hh = H7h;
+ var hl = H7l;
+ for (var i = 0; i < 80; i++) {
+ var Wil;
+ var Wih;
+ var Wi = W[i];
+ if (i < 16) {
+ Wih = Wi.high = M[offset + i * 2] | 0;
+ Wil = Wi.low = M[offset + i * 2 + 1] | 0;
+ } else {
+ var gamma0x = W[i - 15];
+ var gamma0xh = gamma0x.high;
+ var gamma0xl = gamma0x.low;
+ var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;
+ var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25);
+ var gamma1x = W[i - 2];
+ var gamma1xh = gamma1x.high;
+ var gamma1xl = gamma1x.low;
+ var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;
+ var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26);
+ var Wi7 = W[i - 7];
+ var Wi7h = Wi7.high;
+ var Wi7l = Wi7.low;
+ var Wi16 = W[i - 16];
+ var Wi16h = Wi16.high;
+ var Wi16l = Wi16.low;
+ Wil = gamma0l + Wi7l;
+ Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);
+ Wil = Wil + gamma1l;
+ Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);
+ Wil = Wil + Wi16l;
+ Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);
+ Wi.high = Wih;
+ Wi.low = Wil;
+ }
+ var chh = eh & fh ^ ~eh & gh;
+ var chl = el & fl ^ ~el & gl;
+ var majh = ah & bh ^ ah & ch ^ bh & ch;
+ var majl = al & bl ^ al & cl ^ bl & cl;
+ var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);
+ var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);
+ var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);
+ var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9);
+ var Ki = K[i];
+ var Kih = Ki.high;
+ var Kil = Ki.low;
+ var t1l = hl + sigma1l;
+ var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);
+ var t1l = t1l + chl;
+ var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);
+ var t1l = t1l + Kil;
+ var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);
+ var t1l = t1l + Wil;
+ var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0);
+ var t2l = sigma0l + majl;
+ var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0);
+ hh = gh;
+ hl = gl;
+ gh = fh;
+ gl = fl;
+ fh = eh;
+ fl = el;
+ el = dl + t1l | 0;
+ eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;
+ dh = ch;
+ dl = cl;
+ ch = bh;
+ cl = bl;
+ bh = ah;
+ bl = al;
+ al = t1l + t2l | 0;
+ ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;
+ }
+ H0l = H0.low = H0l + al;
+ H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);
+ H1l = H1.low = H1l + bl;
+ H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);
+ H2l = H2.low = H2l + cl;
+ H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);
+ H3l = H3.low = H3l + dl;
+ H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);
+ H4l = H4.low = H4l + el;
+ H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);
+ H5l = H5.low = H5l + fl;
+ H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);
+ H6l = H6.low = H6l + gl;
+ H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);
+ H7l = H7.low = H7l + hl;
+ H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
+ dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 4294967296);
+ dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;
+ data.sigBytes = dataWords.length * 4;
+ this._process();
+ var hash = this._hash.toX32();
+ return hash;
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+ return clone;
+ },
+ blockSize: 1024 / 32
+ });
+ C.SHA512 = Hasher._createHelper(SHA512);
+ C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
+ })();
+ return CryptoJS.SHA512;
+ });
+ })(sha512$1);
+ return sha512$1.exports;
+}
+var sha384$1 = { exports: {} };
+var sha384 = sha384$1.exports;
+var hasRequiredSha384;
+function requireSha384() {
+ if (hasRequiredSha384) return sha384$1.exports;
+ hasRequiredSha384 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireX64Core(), requireSha512());
+ }
+ })(sha384, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var X64WordArray = C_x64.WordArray;
+ var C_algo = C.algo;
+ var SHA512 = C_algo.SHA512;
+ var SHA384 = C_algo.SHA384 = SHA512.extend({
+ _doReset: function() {
+ this._hash = new X64WordArray.init([
+ new X64Word.init(3418070365, 3238371032),
+ new X64Word.init(1654270250, 914150663),
+ new X64Word.init(2438529370, 812702999),
+ new X64Word.init(355462360, 4144912697),
+ new X64Word.init(1731405415, 4290775857),
+ new X64Word.init(2394180231, 1750603025),
+ new X64Word.init(3675008525, 1694076839),
+ new X64Word.init(1203062813, 3204075428)
+ ]);
+ },
+ _doFinalize: function() {
+ var hash = SHA512._doFinalize.call(this);
+ hash.sigBytes -= 16;
+ return hash;
+ }
+ });
+ C.SHA384 = SHA512._createHelper(SHA384);
+ C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
+ })();
+ return CryptoJS.SHA384;
+ });
+ })(sha384$1);
+ return sha384$1.exports;
+}
+var sha3$1 = { exports: {} };
+var sha3 = sha3$1.exports;
+var hasRequiredSha3;
+function requireSha3() {
+ if (hasRequiredSha3) return sha3$1.exports;
+ hasRequiredSha3 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireX64Core());
+ }
+ })(sha3, function(CryptoJS) {
+ (function(Math2) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_x64 = C.x64;
+ var X64Word = C_x64.Word;
+ var C_algo = C.algo;
+ var RHO_OFFSETS = [];
+ var PI_INDEXES = [];
+ var ROUND_CONSTANTS = [];
+ (function() {
+ var x = 1, y = 0;
+ for (var t = 0; t < 24; t++) {
+ RHO_OFFSETS[x + 5 * y] = (t + 1) * (t + 2) / 2 % 64;
+ var newX = y % 5;
+ var newY = (2 * x + 3 * y) % 5;
+ x = newX;
+ y = newY;
+ }
+ for (var x = 0; x < 5; x++) {
+ for (var y = 0; y < 5; y++) {
+ PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;
+ }
+ }
+ var LFSR = 1;
+ for (var i = 0; i < 24; i++) {
+ var roundConstantMsw = 0;
+ var roundConstantLsw = 0;
+ for (var j = 0; j < 7; j++) {
+ if (LFSR & 1) {
+ var bitPosition = (1 << j) - 1;
+ if (bitPosition < 32) {
+ roundConstantLsw ^= 1 << bitPosition;
+ } else {
+ roundConstantMsw ^= 1 << bitPosition - 32;
+ }
+ }
+ if (LFSR & 128) {
+ LFSR = LFSR << 1 ^ 113;
+ } else {
+ LFSR <<= 1;
+ }
+ }
+ ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
+ }
+ })();
+ var T = [];
+ (function() {
+ for (var i = 0; i < 25; i++) {
+ T[i] = X64Word.create();
+ }
+ })();
+ var SHA3 = C_algo.SHA3 = Hasher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} outputLength
+ * The desired number of bits in the output hash.
+ * Only values permitted are: 224, 256, 384, 512.
+ * Default: 512
+ */
+ cfg: Hasher.cfg.extend({
+ outputLength: 512
+ }),
+ _doReset: function() {
+ var state = this._state = [];
+ for (var i = 0; i < 25; i++) {
+ state[i] = new X64Word.init();
+ }
+ this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
+ },
+ _doProcessBlock: function(M, offset) {
+ var state = this._state;
+ var nBlockSizeLanes = this.blockSize / 2;
+ for (var i = 0; i < nBlockSizeLanes; i++) {
+ var M2i = M[offset + 2 * i];
+ var M2i1 = M[offset + 2 * i + 1];
+ M2i = (M2i << 8 | M2i >>> 24) & 16711935 | (M2i << 24 | M2i >>> 8) & 4278255360;
+ M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 16711935 | (M2i1 << 24 | M2i1 >>> 8) & 4278255360;
+ var lane = state[i];
+ lane.high ^= M2i1;
+ lane.low ^= M2i;
+ }
+ for (var round = 0; round < 24; round++) {
+ for (var x = 0; x < 5; x++) {
+ var tMsw = 0, tLsw = 0;
+ for (var y = 0; y < 5; y++) {
+ var lane = state[x + 5 * y];
+ tMsw ^= lane.high;
+ tLsw ^= lane.low;
+ }
+ var Tx = T[x];
+ Tx.high = tMsw;
+ Tx.low = tLsw;
+ }
+ for (var x = 0; x < 5; x++) {
+ var Tx4 = T[(x + 4) % 5];
+ var Tx1 = T[(x + 1) % 5];
+ var Tx1Msw = Tx1.high;
+ var Tx1Lsw = Tx1.low;
+ var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);
+ var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);
+ for (var y = 0; y < 5; y++) {
+ var lane = state[x + 5 * y];
+ lane.high ^= tMsw;
+ lane.low ^= tLsw;
+ }
+ }
+ for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
+ var tMsw;
+ var tLsw;
+ var lane = state[laneIndex];
+ var laneMsw = lane.high;
+ var laneLsw = lane.low;
+ var rhoOffset = RHO_OFFSETS[laneIndex];
+ if (rhoOffset < 32) {
+ tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;
+ tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;
+ } else {
+ tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;
+ tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;
+ }
+ var TPiLane = T[PI_INDEXES[laneIndex]];
+ TPiLane.high = tMsw;
+ TPiLane.low = tLsw;
+ }
+ var T0 = T[0];
+ var state0 = state[0];
+ T0.high = state0.high;
+ T0.low = state0.low;
+ for (var x = 0; x < 5; x++) {
+ for (var y = 0; y < 5; y++) {
+ var laneIndex = x + 5 * y;
+ var lane = state[laneIndex];
+ var TLane = T[laneIndex];
+ var Tx1Lane = T[(x + 1) % 5 + 5 * y];
+ var Tx2Lane = T[(x + 2) % 5 + 5 * y];
+ lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;
+ lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;
+ }
+ }
+ var lane = state[0];
+ var roundConstant = ROUND_CONSTANTS[round];
+ lane.high ^= roundConstant.high;
+ lane.low ^= roundConstant.low;
+ }
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ var blockSizeBits = this.blockSize * 32;
+ dataWords[nBitsLeft >>> 5] |= 1 << 24 - nBitsLeft % 32;
+ dataWords[(Math2.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 128;
+ data.sigBytes = dataWords.length * 4;
+ this._process();
+ var state = this._state;
+ var outputLengthBytes = this.cfg.outputLength / 8;
+ var outputLengthLanes = outputLengthBytes / 8;
+ var hashWords = [];
+ for (var i = 0; i < outputLengthLanes; i++) {
+ var lane = state[i];
+ var laneMsw = lane.high;
+ var laneLsw = lane.low;
+ laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 16711935 | (laneMsw << 24 | laneMsw >>> 8) & 4278255360;
+ laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 16711935 | (laneLsw << 24 | laneLsw >>> 8) & 4278255360;
+ hashWords.push(laneLsw);
+ hashWords.push(laneMsw);
+ }
+ return new WordArray.init(hashWords, outputLengthBytes);
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ var state = clone._state = this._state.slice(0);
+ for (var i = 0; i < 25; i++) {
+ state[i] = state[i].clone();
+ }
+ return clone;
+ }
+ });
+ C.SHA3 = Hasher._createHelper(SHA3);
+ C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
+ })(Math);
+ return CryptoJS.SHA3;
+ });
+ })(sha3$1);
+ return sha3$1.exports;
+}
+var ripemd160$1 = { exports: {} };
+var ripemd160 = ripemd160$1.exports;
+var hasRequiredRipemd160;
+function requireRipemd160() {
+ if (hasRequiredRipemd160) return ripemd160$1.exports;
+ hasRequiredRipemd160 = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(ripemd160, function(CryptoJS) {
+ /** @preserve
+ (c) 2012 by Cédric Mesnil. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function(Math2) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var Hasher = C_lib.Hasher;
+ var C_algo = C.algo;
+ var _zl = WordArray.create([
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 7,
+ 4,
+ 13,
+ 1,
+ 10,
+ 6,
+ 15,
+ 3,
+ 12,
+ 0,
+ 9,
+ 5,
+ 2,
+ 14,
+ 11,
+ 8,
+ 3,
+ 10,
+ 14,
+ 4,
+ 9,
+ 15,
+ 8,
+ 1,
+ 2,
+ 7,
+ 0,
+ 6,
+ 13,
+ 11,
+ 5,
+ 12,
+ 1,
+ 9,
+ 11,
+ 10,
+ 0,
+ 8,
+ 12,
+ 4,
+ 13,
+ 3,
+ 7,
+ 15,
+ 14,
+ 5,
+ 6,
+ 2,
+ 4,
+ 0,
+ 5,
+ 9,
+ 7,
+ 12,
+ 2,
+ 10,
+ 14,
+ 1,
+ 3,
+ 8,
+ 11,
+ 6,
+ 15,
+ 13
+ ]);
+ var _zr = WordArray.create([
+ 5,
+ 14,
+ 7,
+ 0,
+ 9,
+ 2,
+ 11,
+ 4,
+ 13,
+ 6,
+ 15,
+ 8,
+ 1,
+ 10,
+ 3,
+ 12,
+ 6,
+ 11,
+ 3,
+ 7,
+ 0,
+ 13,
+ 5,
+ 10,
+ 14,
+ 15,
+ 8,
+ 12,
+ 4,
+ 9,
+ 1,
+ 2,
+ 15,
+ 5,
+ 1,
+ 3,
+ 7,
+ 14,
+ 6,
+ 9,
+ 11,
+ 8,
+ 12,
+ 2,
+ 10,
+ 0,
+ 4,
+ 13,
+ 8,
+ 6,
+ 4,
+ 1,
+ 3,
+ 11,
+ 15,
+ 0,
+ 5,
+ 12,
+ 2,
+ 13,
+ 9,
+ 7,
+ 10,
+ 14,
+ 12,
+ 15,
+ 10,
+ 4,
+ 1,
+ 5,
+ 8,
+ 7,
+ 6,
+ 2,
+ 13,
+ 14,
+ 0,
+ 3,
+ 9,
+ 11
+ ]);
+ var _sl = WordArray.create([
+ 11,
+ 14,
+ 15,
+ 12,
+ 5,
+ 8,
+ 7,
+ 9,
+ 11,
+ 13,
+ 14,
+ 15,
+ 6,
+ 7,
+ 9,
+ 8,
+ 7,
+ 6,
+ 8,
+ 13,
+ 11,
+ 9,
+ 7,
+ 15,
+ 7,
+ 12,
+ 15,
+ 9,
+ 11,
+ 7,
+ 13,
+ 12,
+ 11,
+ 13,
+ 6,
+ 7,
+ 14,
+ 9,
+ 13,
+ 15,
+ 14,
+ 8,
+ 13,
+ 6,
+ 5,
+ 12,
+ 7,
+ 5,
+ 11,
+ 12,
+ 14,
+ 15,
+ 14,
+ 15,
+ 9,
+ 8,
+ 9,
+ 14,
+ 5,
+ 6,
+ 8,
+ 6,
+ 5,
+ 12,
+ 9,
+ 15,
+ 5,
+ 11,
+ 6,
+ 8,
+ 13,
+ 12,
+ 5,
+ 12,
+ 13,
+ 14,
+ 11,
+ 8,
+ 5,
+ 6
+ ]);
+ var _sr = WordArray.create([
+ 8,
+ 9,
+ 9,
+ 11,
+ 13,
+ 15,
+ 15,
+ 5,
+ 7,
+ 7,
+ 8,
+ 11,
+ 14,
+ 14,
+ 12,
+ 6,
+ 9,
+ 13,
+ 15,
+ 7,
+ 12,
+ 8,
+ 9,
+ 11,
+ 7,
+ 7,
+ 12,
+ 7,
+ 6,
+ 15,
+ 13,
+ 11,
+ 9,
+ 7,
+ 15,
+ 11,
+ 8,
+ 6,
+ 6,
+ 14,
+ 12,
+ 13,
+ 5,
+ 14,
+ 13,
+ 13,
+ 7,
+ 5,
+ 15,
+ 5,
+ 8,
+ 11,
+ 14,
+ 14,
+ 6,
+ 14,
+ 6,
+ 9,
+ 12,
+ 9,
+ 12,
+ 5,
+ 15,
+ 8,
+ 8,
+ 5,
+ 12,
+ 9,
+ 12,
+ 5,
+ 14,
+ 6,
+ 8,
+ 13,
+ 6,
+ 5,
+ 15,
+ 13,
+ 11,
+ 11
+ ]);
+ var _hl = WordArray.create([0, 1518500249, 1859775393, 2400959708, 2840853838]);
+ var _hr = WordArray.create([1352829926, 1548603684, 1836072691, 2053994217, 0]);
+ var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
+ _doReset: function() {
+ this._hash = WordArray.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
+ },
+ _doProcessBlock: function(M, offset) {
+ for (var i = 0; i < 16; i++) {
+ var offset_i = offset + i;
+ var M_offset_i = M[offset_i];
+ M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
+ }
+ var H = this._hash.words;
+ var hl = _hl.words;
+ var hr = _hr.words;
+ var zl = _zl.words;
+ var zr = _zr.words;
+ var sl = _sl.words;
+ var sr = _sr.words;
+ var al, bl, cl, dl, el;
+ var ar, br, cr, dr, er;
+ ar = al = H[0];
+ br = bl = H[1];
+ cr = cl = H[2];
+ dr = dl = H[3];
+ er = el = H[4];
+ var t;
+ for (var i = 0; i < 80; i += 1) {
+ t = al + M[offset + zl[i]] | 0;
+ if (i < 16) {
+ t += f1(bl, cl, dl) + hl[0];
+ } else if (i < 32) {
+ t += f2(bl, cl, dl) + hl[1];
+ } else if (i < 48) {
+ t += f3(bl, cl, dl) + hl[2];
+ } else if (i < 64) {
+ t += f4(bl, cl, dl) + hl[3];
+ } else {
+ t += f5(bl, cl, dl) + hl[4];
+ }
+ t = t | 0;
+ t = rotl(t, sl[i]);
+ t = t + el | 0;
+ al = el;
+ el = dl;
+ dl = rotl(cl, 10);
+ cl = bl;
+ bl = t;
+ t = ar + M[offset + zr[i]] | 0;
+ if (i < 16) {
+ t += f5(br, cr, dr) + hr[0];
+ } else if (i < 32) {
+ t += f4(br, cr, dr) + hr[1];
+ } else if (i < 48) {
+ t += f3(br, cr, dr) + hr[2];
+ } else if (i < 64) {
+ t += f2(br, cr, dr) + hr[3];
+ } else {
+ t += f1(br, cr, dr) + hr[4];
+ }
+ t = t | 0;
+ t = rotl(t, sr[i]);
+ t = t + er | 0;
+ ar = er;
+ er = dr;
+ dr = rotl(cr, 10);
+ cr = br;
+ br = t;
+ }
+ t = H[1] + cl + dr | 0;
+ H[1] = H[2] + dl + er | 0;
+ H[2] = H[3] + el + ar | 0;
+ H[3] = H[4] + al + br | 0;
+ H[4] = H[0] + bl + cr | 0;
+ H[0] = t;
+ },
+ _doFinalize: function() {
+ var data = this._data;
+ var dataWords = data.words;
+ var nBitsTotal = this._nDataBytes * 8;
+ var nBitsLeft = data.sigBytes * 8;
+ dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
+ dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 16711935 | (nBitsTotal << 24 | nBitsTotal >>> 8) & 4278255360;
+ data.sigBytes = (dataWords.length + 1) * 4;
+ this._process();
+ var hash = this._hash;
+ var H = hash.words;
+ for (var i = 0; i < 5; i++) {
+ var H_i = H[i];
+ H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
+ }
+ return hash;
+ },
+ clone: function() {
+ var clone = Hasher.clone.call(this);
+ clone._hash = this._hash.clone();
+ return clone;
+ }
+ });
+ function f1(x, y, z) {
+ return x ^ y ^ z;
+ }
+ function f2(x, y, z) {
+ return x & y | ~x & z;
+ }
+ function f3(x, y, z) {
+ return (x | ~y) ^ z;
+ }
+ function f4(x, y, z) {
+ return x & z | y & ~z;
+ }
+ function f5(x, y, z) {
+ return x ^ (y | ~z);
+ }
+ function rotl(x, n) {
+ return x << n | x >>> 32 - n;
+ }
+ C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
+ C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
+ })();
+ return CryptoJS.RIPEMD160;
+ });
+ })(ripemd160$1);
+ return ripemd160$1.exports;
+}
+var hmac$1 = { exports: {} };
+var hmac = hmac$1.exports;
+var hasRequiredHmac;
+function requireHmac() {
+ if (hasRequiredHmac) return hmac$1.exports;
+ hasRequiredHmac = 1;
+ (function(module, exports) {
+ (function(root, factory) {
+ {
+ module.exports = factory(requireCore());
+ }
+ })(hmac, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var C_enc = C.enc;
+ var Utf8 = C_enc.Utf8;
+ var C_algo = C.algo;
+ C_algo.HMAC = Base.extend({
+ /**
+ * Initializes a newly created HMAC.
+ *
+ * @param {Hasher} hasher The hash algorithm to use.
+ * @param {WordArray|string} key The secret key.
+ *
+ * @example
+ *
+ * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
+ */
+ init: function(hasher, key) {
+ hasher = this._hasher = new hasher.init();
+ if (typeof key == "string") {
+ key = Utf8.parse(key);
+ }
+ var hasherBlockSize = hasher.blockSize;
+ var hasherBlockSizeBytes = hasherBlockSize * 4;
+ if (key.sigBytes > hasherBlockSizeBytes) {
+ key = hasher.finalize(key);
+ }
+ key.clamp();
+ var oKey = this._oKey = key.clone();
+ var iKey = this._iKey = key.clone();
+ var oKeyWords = oKey.words;
+ var iKeyWords = iKey.words;
+ for (var i = 0; i < hasherBlockSize; i++) {
+ oKeyWords[i] ^= 1549556828;
+ iKeyWords[i] ^= 909522486;
+ }
+ oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
+ this.reset();
+ },
+ /**
+ * Resets this HMAC to its initial state.
+ *
+ * @example
+ *
+ * hmacHasher.reset();
+ */
+ reset: function() {
+ var hasher = this._hasher;
+ hasher.reset();
+ hasher.update(this._iKey);
+ },
+ /**
+ * Updates this HMAC with a message.
+ *
+ * @param {WordArray|string} messageUpdate The message to append.
+ *
+ * @return {HMAC} This HMAC instance.
+ *
+ * @example
+ *
+ * hmacHasher.update('message');
+ * hmacHasher.update(wordArray);
+ */
+ update: function(messageUpdate) {
+ this._hasher.update(messageUpdate);
+ return this;
+ },
+ /**
+ * Finalizes the HMAC computation.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} messageUpdate (Optional) A final message update.
+ *
+ * @return {WordArray} The HMAC.
+ *
+ * @example
+ *
+ * var hmac = hmacHasher.finalize();
+ * var hmac = hmacHasher.finalize('message');
+ * var hmac = hmacHasher.finalize(wordArray);
+ */
+ finalize: function(messageUpdate) {
+ var hasher = this._hasher;
+ var innerHash = hasher.finalize(messageUpdate);
+ hasher.reset();
+ var hmac2 = hasher.finalize(this._oKey.clone().concat(innerHash));
+ return hmac2;
+ }
+ });
+ })();
+ });
+ })(hmac$1);
+ return hmac$1.exports;
+}
+var pbkdf2$1 = { exports: {} };
+var pbkdf2 = pbkdf2$1.exports;
+var hasRequiredPbkdf2;
+function requirePbkdf2() {
+ if (hasRequiredPbkdf2) return pbkdf2$1.exports;
+ hasRequiredPbkdf2 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireSha256(), requireHmac());
+ }
+ })(pbkdf2, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var SHA256 = C_algo.SHA256;
+ var HMAC = C_algo.HMAC;
+ var PBKDF2 = C_algo.PBKDF2 = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
+ * @property {Hasher} hasher The hasher to use. Default: SHA256
+ * @property {number} iterations The number of iterations to perform. Default: 250000
+ */
+ cfg: Base.extend({
+ keySize: 128 / 32,
+ hasher: SHA256,
+ iterations: 25e4
+ }),
+ /**
+ * Initializes a newly created key derivation function.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for the derivation.
+ *
+ * @example
+ *
+ * var kdf = CryptoJS.algo.PBKDF2.create();
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
+ * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
+ */
+ init: function(cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ },
+ /**
+ * Computes the Password-Based Key Derivation Function 2.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @example
+ *
+ * var key = kdf.compute(password, salt);
+ */
+ compute: function(password, salt) {
+ var cfg = this.cfg;
+ var hmac2 = HMAC.create(cfg.hasher, password);
+ var derivedKey = WordArray.create();
+ var blockIndex = WordArray.create([1]);
+ var derivedKeyWords = derivedKey.words;
+ var blockIndexWords = blockIndex.words;
+ var keySize = cfg.keySize;
+ var iterations = cfg.iterations;
+ while (derivedKeyWords.length < keySize) {
+ var block = hmac2.update(salt).finalize(blockIndex);
+ hmac2.reset();
+ var blockWords = block.words;
+ var blockWordsLength = blockWords.length;
+ var intermediate = block;
+ for (var i = 1; i < iterations; i++) {
+ intermediate = hmac2.finalize(intermediate);
+ hmac2.reset();
+ var intermediateWords = intermediate.words;
+ for (var j = 0; j < blockWordsLength; j++) {
+ blockWords[j] ^= intermediateWords[j];
+ }
+ }
+ derivedKey.concat(block);
+ blockIndexWords[0]++;
+ }
+ derivedKey.sigBytes = keySize * 4;
+ return derivedKey;
+ }
+ });
+ C.PBKDF2 = function(password, salt, cfg) {
+ return PBKDF2.create(cfg).compute(password, salt);
+ };
+ })();
+ return CryptoJS.PBKDF2;
+ });
+ })(pbkdf2$1);
+ return pbkdf2$1.exports;
+}
+var evpkdf$1 = { exports: {} };
+var evpkdf = evpkdf$1.exports;
+var hasRequiredEvpkdf;
+function requireEvpkdf() {
+ if (hasRequiredEvpkdf) return evpkdf$1.exports;
+ hasRequiredEvpkdf = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireSha1(), requireHmac());
+ }
+ })(evpkdf, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var C_algo = C.algo;
+ var MD5 = C_algo.MD5;
+ var EvpKDF = C_algo.EvpKDF = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
+ * @property {Hasher} hasher The hash algorithm to use. Default: MD5
+ * @property {number} iterations The number of iterations to perform. Default: 1
+ */
+ cfg: Base.extend({
+ keySize: 128 / 32,
+ hasher: MD5,
+ iterations: 1
+ }),
+ /**
+ * Initializes a newly created key derivation function.
+ *
+ * @param {Object} cfg (Optional) The configuration options to use for the derivation.
+ *
+ * @example
+ *
+ * var kdf = CryptoJS.algo.EvpKDF.create();
+ * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
+ * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
+ */
+ init: function(cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ },
+ /**
+ * Derives a key from a password.
+ *
+ * @param {WordArray|string} password The password.
+ * @param {WordArray|string} salt A salt.
+ *
+ * @return {WordArray} The derived key.
+ *
+ * @example
+ *
+ * var key = kdf.compute(password, salt);
+ */
+ compute: function(password, salt) {
+ var block;
+ var cfg = this.cfg;
+ var hasher = cfg.hasher.create();
+ var derivedKey = WordArray.create();
+ var derivedKeyWords = derivedKey.words;
+ var keySize = cfg.keySize;
+ var iterations = cfg.iterations;
+ while (derivedKeyWords.length < keySize) {
+ if (block) {
+ hasher.update(block);
+ }
+ block = hasher.update(password).finalize(salt);
+ hasher.reset();
+ for (var i = 1; i < iterations; i++) {
+ block = hasher.finalize(block);
+ hasher.reset();
+ }
+ derivedKey.concat(block);
+ }
+ derivedKey.sigBytes = keySize * 4;
+ return derivedKey;
+ }
+ });
+ C.EvpKDF = function(password, salt, cfg) {
+ return EvpKDF.create(cfg).compute(password, salt);
+ };
+ })();
+ return CryptoJS.EvpKDF;
+ });
+ })(evpkdf$1);
+ return evpkdf$1.exports;
+}
+var cipherCore$1 = { exports: {} };
+var cipherCore = cipherCore$1.exports;
+var hasRequiredCipherCore;
+function requireCipherCore() {
+ if (hasRequiredCipherCore) return cipherCore$1.exports;
+ hasRequiredCipherCore = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEvpkdf());
+ }
+ })(cipherCore, function(CryptoJS) {
+ CryptoJS.lib.Cipher || function(undefined$1) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var Base = C_lib.Base;
+ var WordArray = C_lib.WordArray;
+ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
+ var C_enc = C.enc;
+ C_enc.Utf8;
+ var Base64 = C_enc.Base64;
+ var C_algo = C.algo;
+ var EvpKDF = C_algo.EvpKDF;
+ var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {WordArray} iv The IV to use for this operation.
+ */
+ cfg: Base.extend(),
+ /**
+ * Creates this cipher in encryption mode.
+ *
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {Cipher} A cipher instance.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
+ */
+ createEncryptor: function(key, cfg) {
+ return this.create(this._ENC_XFORM_MODE, key, cfg);
+ },
+ /**
+ * Creates this cipher in decryption mode.
+ *
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {Cipher} A cipher instance.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
+ */
+ createDecryptor: function(key, cfg) {
+ return this.create(this._DEC_XFORM_MODE, key, cfg);
+ },
+ /**
+ * Initializes a newly created cipher.
+ *
+ * @param {number} xformMode Either the encryption or decryption transormation mode constant.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @example
+ *
+ * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
+ */
+ init: function(xformMode, key, cfg) {
+ this.cfg = this.cfg.extend(cfg);
+ this._xformMode = xformMode;
+ this._key = key;
+ this.reset();
+ },
+ /**
+ * Resets this cipher to its initial state.
+ *
+ * @example
+ *
+ * cipher.reset();
+ */
+ reset: function() {
+ BufferedBlockAlgorithm.reset.call(this);
+ this._doReset();
+ },
+ /**
+ * Adds data to be encrypted or decrypted.
+ *
+ * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
+ *
+ * @return {WordArray} The data after processing.
+ *
+ * @example
+ *
+ * var encrypted = cipher.process('data');
+ * var encrypted = cipher.process(wordArray);
+ */
+ process: function(dataUpdate) {
+ this._append(dataUpdate);
+ return this._process();
+ },
+ /**
+ * Finalizes the encryption or decryption process.
+ * Note that the finalize operation is effectively a destructive, read-once operation.
+ *
+ * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
+ *
+ * @return {WordArray} The data after final processing.
+ *
+ * @example
+ *
+ * var encrypted = cipher.finalize();
+ * var encrypted = cipher.finalize('data');
+ * var encrypted = cipher.finalize(wordArray);
+ */
+ finalize: function(dataUpdate) {
+ if (dataUpdate) {
+ this._append(dataUpdate);
+ }
+ var finalProcessedData = this._doFinalize();
+ return finalProcessedData;
+ },
+ keySize: 128 / 32,
+ ivSize: 128 / 32,
+ _ENC_XFORM_MODE: 1,
+ _DEC_XFORM_MODE: 2,
+ /**
+ * Creates shortcut functions to a cipher's object interface.
+ *
+ * @param {Cipher} cipher The cipher to create a helper for.
+ *
+ * @return {Object} An object with encrypt and decrypt shortcut functions.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
+ */
+ _createHelper: /* @__PURE__ */ function() {
+ function selectCipherStrategy(key) {
+ if (typeof key == "string") {
+ return PasswordBasedCipher;
+ } else {
+ return SerializableCipher;
+ }
+ }
+ return function(cipher) {
+ return {
+ encrypt: function(message, key, cfg) {
+ return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
+ },
+ decrypt: function(ciphertext, key, cfg) {
+ return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
+ }
+ };
+ };
+ }()
+ });
+ C_lib.StreamCipher = Cipher.extend({
+ _doFinalize: function() {
+ var finalProcessedBlocks = this._process(true);
+ return finalProcessedBlocks;
+ },
+ blockSize: 1
+ });
+ var C_mode = C.mode = {};
+ var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
+ /**
+ * Creates this mode for encryption.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
+ */
+ createEncryptor: function(cipher, iv) {
+ return this.Encryptor.create(cipher, iv);
+ },
+ /**
+ * Creates this mode for decryption.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
+ */
+ createDecryptor: function(cipher, iv) {
+ return this.Decryptor.create(cipher, iv);
+ },
+ /**
+ * Initializes a newly created mode.
+ *
+ * @param {Cipher} cipher A block cipher instance.
+ * @param {Array} iv The IV words.
+ *
+ * @example
+ *
+ * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
+ */
+ init: function(cipher, iv) {
+ this._cipher = cipher;
+ this._iv = iv;
+ }
+ });
+ var CBC = C_mode.CBC = function() {
+ var CBC2 = BlockCipherMode.extend();
+ CBC2.Encryptor = CBC2.extend({
+ /**
+ * Processes the data block at offset.
+ *
+ * @param {Array} words The data words to operate on.
+ * @param {number} offset The offset where the block starts.
+ *
+ * @example
+ *
+ * mode.processBlock(data.words, offset);
+ */
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ xorBlock.call(this, words, offset, blockSize);
+ cipher.encryptBlock(words, offset);
+ this._prevBlock = words.slice(offset, offset + blockSize);
+ }
+ });
+ CBC2.Decryptor = CBC2.extend({
+ /**
+ * Processes the data block at offset.
+ *
+ * @param {Array} words The data words to operate on.
+ * @param {number} offset The offset where the block starts.
+ *
+ * @example
+ *
+ * mode.processBlock(data.words, offset);
+ */
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ var thisBlock = words.slice(offset, offset + blockSize);
+ cipher.decryptBlock(words, offset);
+ xorBlock.call(this, words, offset, blockSize);
+ this._prevBlock = thisBlock;
+ }
+ });
+ function xorBlock(words, offset, blockSize) {
+ var block;
+ var iv = this._iv;
+ if (iv) {
+ block = iv;
+ this._iv = undefined$1;
+ } else {
+ block = this._prevBlock;
+ }
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= block[i];
+ }
+ }
+ return CBC2;
+ }();
+ var C_pad = C.pad = {};
+ var Pkcs7 = C_pad.Pkcs7 = {
+ /**
+ * Pads data using the algorithm defined in PKCS #5/7.
+ *
+ * @param {WordArray} data The data to pad.
+ * @param {number} blockSize The multiple that the data should be padded to.
+ *
+ * @static
+ *
+ * @example
+ *
+ * CryptoJS.pad.Pkcs7.pad(wordArray, 4);
+ */
+ pad: function(data, blockSize) {
+ var blockSizeBytes = blockSize * 4;
+ var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
+ var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
+ var paddingWords = [];
+ for (var i = 0; i < nPaddingBytes; i += 4) {
+ paddingWords.push(paddingWord);
+ }
+ var padding = WordArray.create(paddingWords, nPaddingBytes);
+ data.concat(padding);
+ },
+ /**
+ * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
+ *
+ * @param {WordArray} data The data to unpad.
+ *
+ * @static
+ *
+ * @example
+ *
+ * CryptoJS.pad.Pkcs7.unpad(wordArray);
+ */
+ unpad: function(data) {
+ var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+ C_lib.BlockCipher = Cipher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {Mode} mode The block mode to use. Default: CBC
+ * @property {Padding} padding The padding strategy to use. Default: Pkcs7
+ */
+ cfg: Cipher.cfg.extend({
+ mode: CBC,
+ padding: Pkcs7
+ }),
+ reset: function() {
+ var modeCreator;
+ Cipher.reset.call(this);
+ var cfg = this.cfg;
+ var iv = cfg.iv;
+ var mode = cfg.mode;
+ if (this._xformMode == this._ENC_XFORM_MODE) {
+ modeCreator = mode.createEncryptor;
+ } else {
+ modeCreator = mode.createDecryptor;
+ this._minBufferSize = 1;
+ }
+ if (this._mode && this._mode.__creator == modeCreator) {
+ this._mode.init(this, iv && iv.words);
+ } else {
+ this._mode = modeCreator.call(mode, this, iv && iv.words);
+ this._mode.__creator = modeCreator;
+ }
+ },
+ _doProcessBlock: function(words, offset) {
+ this._mode.processBlock(words, offset);
+ },
+ _doFinalize: function() {
+ var finalProcessedBlocks;
+ var padding = this.cfg.padding;
+ if (this._xformMode == this._ENC_XFORM_MODE) {
+ padding.pad(this._data, this.blockSize);
+ finalProcessedBlocks = this._process(true);
+ } else {
+ finalProcessedBlocks = this._process(true);
+ padding.unpad(finalProcessedBlocks);
+ }
+ return finalProcessedBlocks;
+ },
+ blockSize: 128 / 32
+ });
+ var CipherParams = C_lib.CipherParams = Base.extend({
+ /**
+ * Initializes a newly created cipher params object.
+ *
+ * @param {Object} cipherParams An object with any of the possible cipher parameters.
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.lib.CipherParams.create({
+ * ciphertext: ciphertextWordArray,
+ * key: keyWordArray,
+ * iv: ivWordArray,
+ * salt: saltWordArray,
+ * algorithm: CryptoJS.algo.AES,
+ * mode: CryptoJS.mode.CBC,
+ * padding: CryptoJS.pad.PKCS7,
+ * blockSize: 4,
+ * formatter: CryptoJS.format.OpenSSL
+ * });
+ */
+ init: function(cipherParams) {
+ this.mixIn(cipherParams);
+ },
+ /**
+ * Converts this cipher params object to a string.
+ *
+ * @param {Format} formatter (Optional) The formatting strategy to use.
+ *
+ * @return {string} The stringified cipher params.
+ *
+ * @throws Error If neither the formatter nor the default formatter is set.
+ *
+ * @example
+ *
+ * var string = cipherParams + '';
+ * var string = cipherParams.toString();
+ * var string = cipherParams.toString(CryptoJS.format.OpenSSL);
+ */
+ toString: function(formatter) {
+ return (formatter || this.formatter).stringify(this);
+ }
+ });
+ var C_format = C.format = {};
+ var OpenSSLFormatter = C_format.OpenSSL = {
+ /**
+ * Converts a cipher params object to an OpenSSL-compatible string.
+ *
+ * @param {CipherParams} cipherParams The cipher params object.
+ *
+ * @return {string} The OpenSSL-compatible string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
+ */
+ stringify: function(cipherParams) {
+ var wordArray;
+ var ciphertext = cipherParams.ciphertext;
+ var salt = cipherParams.salt;
+ if (salt) {
+ wordArray = WordArray.create([1398893684, 1701076831]).concat(salt).concat(ciphertext);
+ } else {
+ wordArray = ciphertext;
+ }
+ return wordArray.toString(Base64);
+ },
+ /**
+ * Converts an OpenSSL-compatible string to a cipher params object.
+ *
+ * @param {string} openSSLStr The OpenSSL-compatible string.
+ *
+ * @return {CipherParams} The cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
+ */
+ parse: function(openSSLStr) {
+ var salt;
+ var ciphertext = Base64.parse(openSSLStr);
+ var ciphertextWords = ciphertext.words;
+ if (ciphertextWords[0] == 1398893684 && ciphertextWords[1] == 1701076831) {
+ salt = WordArray.create(ciphertextWords.slice(2, 4));
+ ciphertextWords.splice(0, 4);
+ ciphertext.sigBytes -= 16;
+ }
+ return CipherParams.create({ ciphertext, salt });
+ }
+ };
+ var SerializableCipher = C_lib.SerializableCipher = Base.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
+ */
+ cfg: Base.extend({
+ format: OpenSSLFormatter
+ }),
+ /**
+ * Encrypts a message.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {WordArray|string} message The message to encrypt.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {CipherParams} A cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ */
+ encrypt: function(cipher, message, key, cfg) {
+ cfg = this.cfg.extend(cfg);
+ var encryptor = cipher.createEncryptor(key, cfg);
+ var ciphertext = encryptor.finalize(message);
+ var cipherCfg = encryptor.cfg;
+ return CipherParams.create({
+ ciphertext,
+ key,
+ iv: cipherCfg.iv,
+ algorithm: cipher,
+ mode: cipherCfg.mode,
+ padding: cipherCfg.padding,
+ blockSize: cipher.blockSize,
+ formatter: cfg.format
+ });
+ },
+ /**
+ * Decrypts serialized ciphertext.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
+ * @param {WordArray} key The key.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {WordArray} The plaintext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
+ */
+ decrypt: function(cipher, ciphertext, key, cfg) {
+ cfg = this.cfg.extend(cfg);
+ ciphertext = this._parse(ciphertext, cfg.format);
+ var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
+ return plaintext;
+ },
+ /**
+ * Converts serialized ciphertext to CipherParams,
+ * else assumed CipherParams already and returns ciphertext unchanged.
+ *
+ * @param {CipherParams|string} ciphertext The ciphertext.
+ * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
+ *
+ * @return {CipherParams} The unserialized ciphertext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
+ */
+ _parse: function(ciphertext, format) {
+ if (typeof ciphertext == "string") {
+ return format.parse(ciphertext, this);
+ } else {
+ return ciphertext;
+ }
+ }
+ });
+ var C_kdf = C.kdf = {};
+ var OpenSSLKdf = C_kdf.OpenSSL = {
+ /**
+ * Derives a key and IV from a password.
+ *
+ * @param {string} password The password to derive from.
+ * @param {number} keySize The size in words of the key to generate.
+ * @param {number} ivSize The size in words of the IV to generate.
+ * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
+ *
+ * @return {CipherParams} A cipher params object with the key, IV, and salt.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
+ * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
+ */
+ execute: function(password, keySize, ivSize, salt, hasher) {
+ if (!salt) {
+ salt = WordArray.random(64 / 8);
+ }
+ if (!hasher) {
+ var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
+ } else {
+ var key = EvpKDF.create({ keySize: keySize + ivSize, hasher }).compute(password, salt);
+ }
+ var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
+ key.sigBytes = keySize * 4;
+ return CipherParams.create({ key, iv, salt });
+ }
+ };
+ var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
+ */
+ cfg: SerializableCipher.cfg.extend({
+ kdf: OpenSSLKdf
+ }),
+ /**
+ * Encrypts a message using a password.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {WordArray|string} message The message to encrypt.
+ * @param {string} password The password.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {CipherParams} A cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
+ * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
+ */
+ encrypt: function(cipher, message, password, cfg) {
+ cfg = this.cfg.extend(cfg);
+ var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);
+ cfg.iv = derivedParams.iv;
+ var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
+ ciphertext.mixIn(derivedParams);
+ return ciphertext;
+ },
+ /**
+ * Decrypts serialized ciphertext using a password.
+ *
+ * @param {Cipher} cipher The cipher algorithm to use.
+ * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
+ * @param {string} password The password.
+ * @param {Object} cfg (Optional) The configuration options to use for this operation.
+ *
+ * @return {WordArray} The plaintext.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
+ * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
+ */
+ decrypt: function(cipher, ciphertext, password, cfg) {
+ cfg = this.cfg.extend(cfg);
+ ciphertext = this._parse(ciphertext, cfg.format);
+ var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);
+ cfg.iv = derivedParams.iv;
+ var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
+ return plaintext;
+ }
+ });
+ }();
+ });
+ })(cipherCore$1);
+ return cipherCore$1.exports;
+}
+var modeCfb$1 = { exports: {} };
+var modeCfb = modeCfb$1.exports;
+var hasRequiredModeCfb;
+function requireModeCfb() {
+ if (hasRequiredModeCfb) return modeCfb$1.exports;
+ hasRequiredModeCfb = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(modeCfb, function(CryptoJS) {
+ CryptoJS.mode.CFB = function() {
+ var CFB = CryptoJS.lib.BlockCipherMode.extend();
+ CFB.Encryptor = CFB.extend({
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
+ this._prevBlock = words.slice(offset, offset + blockSize);
+ }
+ });
+ CFB.Decryptor = CFB.extend({
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ var thisBlock = words.slice(offset, offset + blockSize);
+ generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
+ this._prevBlock = thisBlock;
+ }
+ });
+ function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
+ var keystream;
+ var iv = this._iv;
+ if (iv) {
+ keystream = iv.slice(0);
+ this._iv = void 0;
+ } else {
+ keystream = this._prevBlock;
+ }
+ cipher.encryptBlock(keystream, 0);
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ return CFB;
+ }();
+ return CryptoJS.mode.CFB;
+ });
+ })(modeCfb$1);
+ return modeCfb$1.exports;
+}
+var modeCtr$1 = { exports: {} };
+var modeCtr = modeCtr$1.exports;
+var hasRequiredModeCtr;
+function requireModeCtr() {
+ if (hasRequiredModeCtr) return modeCtr$1.exports;
+ hasRequiredModeCtr = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(modeCtr, function(CryptoJS) {
+ CryptoJS.mode.CTR = function() {
+ var CTR = CryptoJS.lib.BlockCipherMode.extend();
+ var Encryptor = CTR.Encryptor = CTR.extend({
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var counter = this._counter;
+ if (iv) {
+ counter = this._counter = iv.slice(0);
+ this._iv = void 0;
+ }
+ var keystream = counter.slice(0);
+ cipher.encryptBlock(keystream, 0);
+ counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0;
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+ CTR.Decryptor = Encryptor;
+ return CTR;
+ }();
+ return CryptoJS.mode.CTR;
+ });
+ })(modeCtr$1);
+ return modeCtr$1.exports;
+}
+var modeCtrGladman$1 = { exports: {} };
+var modeCtrGladman = modeCtrGladman$1.exports;
+var hasRequiredModeCtrGladman;
+function requireModeCtrGladman() {
+ if (hasRequiredModeCtrGladman) return modeCtrGladman$1.exports;
+ hasRequiredModeCtrGladman = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(modeCtrGladman, function(CryptoJS) {
+ /** @preserve
+ * Counter block mode compatible with Dr Brian Gladman fileenc.c
+ * derived from CryptoJS.mode.CTR
+ * Jan Hruby jhruby.web@gmail.com
+ */
+ CryptoJS.mode.CTRGladman = function() {
+ var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();
+ function incWord(word) {
+ if ((word >> 24 & 255) === 255) {
+ var b1 = word >> 16 & 255;
+ var b2 = word >> 8 & 255;
+ var b3 = word & 255;
+ if (b1 === 255) {
+ b1 = 0;
+ if (b2 === 255) {
+ b2 = 0;
+ if (b3 === 255) {
+ b3 = 0;
+ } else {
+ ++b3;
+ }
+ } else {
+ ++b2;
+ }
+ } else {
+ ++b1;
+ }
+ word = 0;
+ word += b1 << 16;
+ word += b2 << 8;
+ word += b3;
+ } else {
+ word += 1 << 24;
+ }
+ return word;
+ }
+ function incCounter(counter) {
+ if ((counter[0] = incWord(counter[0])) === 0) {
+ counter[1] = incWord(counter[1]);
+ }
+ return counter;
+ }
+ var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var counter = this._counter;
+ if (iv) {
+ counter = this._counter = iv.slice(0);
+ this._iv = void 0;
+ }
+ incCounter(counter);
+ var keystream = counter.slice(0);
+ cipher.encryptBlock(keystream, 0);
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+ CTRGladman.Decryptor = Encryptor;
+ return CTRGladman;
+ }();
+ return CryptoJS.mode.CTRGladman;
+ });
+ })(modeCtrGladman$1);
+ return modeCtrGladman$1.exports;
+}
+var modeOfb$1 = { exports: {} };
+var modeOfb = modeOfb$1.exports;
+var hasRequiredModeOfb;
+function requireModeOfb() {
+ if (hasRequiredModeOfb) return modeOfb$1.exports;
+ hasRequiredModeOfb = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(modeOfb, function(CryptoJS) {
+ CryptoJS.mode.OFB = function() {
+ var OFB = CryptoJS.lib.BlockCipherMode.extend();
+ var Encryptor = OFB.Encryptor = OFB.extend({
+ processBlock: function(words, offset) {
+ var cipher = this._cipher;
+ var blockSize = cipher.blockSize;
+ var iv = this._iv;
+ var keystream = this._keystream;
+ if (iv) {
+ keystream = this._keystream = iv.slice(0);
+ this._iv = void 0;
+ }
+ cipher.encryptBlock(keystream, 0);
+ for (var i = 0; i < blockSize; i++) {
+ words[offset + i] ^= keystream[i];
+ }
+ }
+ });
+ OFB.Decryptor = Encryptor;
+ return OFB;
+ }();
+ return CryptoJS.mode.OFB;
+ });
+ })(modeOfb$1);
+ return modeOfb$1.exports;
+}
+var modeEcb$1 = { exports: {} };
+var modeEcb = modeEcb$1.exports;
+var hasRequiredModeEcb;
+function requireModeEcb() {
+ if (hasRequiredModeEcb) return modeEcb$1.exports;
+ hasRequiredModeEcb = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(modeEcb, function(CryptoJS) {
+ CryptoJS.mode.ECB = function() {
+ var ECB = CryptoJS.lib.BlockCipherMode.extend();
+ ECB.Encryptor = ECB.extend({
+ processBlock: function(words, offset) {
+ this._cipher.encryptBlock(words, offset);
+ }
+ });
+ ECB.Decryptor = ECB.extend({
+ processBlock: function(words, offset) {
+ this._cipher.decryptBlock(words, offset);
+ }
+ });
+ return ECB;
+ }();
+ return CryptoJS.mode.ECB;
+ });
+ })(modeEcb$1);
+ return modeEcb$1.exports;
+}
+var padAnsix923$1 = { exports: {} };
+var padAnsix923 = padAnsix923$1.exports;
+var hasRequiredPadAnsix923;
+function requirePadAnsix923() {
+ if (hasRequiredPadAnsix923) return padAnsix923$1.exports;
+ hasRequiredPadAnsix923 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(padAnsix923, function(CryptoJS) {
+ CryptoJS.pad.AnsiX923 = {
+ pad: function(data, blockSize) {
+ var dataSigBytes = data.sigBytes;
+ var blockSizeBytes = blockSize * 4;
+ var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
+ var lastBytePos = dataSigBytes + nPaddingBytes - 1;
+ data.clamp();
+ data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;
+ data.sigBytes += nPaddingBytes;
+ },
+ unpad: function(data) {
+ var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+ return CryptoJS.pad.Ansix923;
+ });
+ })(padAnsix923$1);
+ return padAnsix923$1.exports;
+}
+var padIso10126$1 = { exports: {} };
+var padIso10126 = padIso10126$1.exports;
+var hasRequiredPadIso10126;
+function requirePadIso10126() {
+ if (hasRequiredPadIso10126) return padIso10126$1.exports;
+ hasRequiredPadIso10126 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(padIso10126, function(CryptoJS) {
+ CryptoJS.pad.Iso10126 = {
+ pad: function(data, blockSize) {
+ var blockSizeBytes = blockSize * 4;
+ var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
+ data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));
+ },
+ unpad: function(data) {
+ var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
+ data.sigBytes -= nPaddingBytes;
+ }
+ };
+ return CryptoJS.pad.Iso10126;
+ });
+ })(padIso10126$1);
+ return padIso10126$1.exports;
+}
+var padIso97971$1 = { exports: {} };
+var padIso97971 = padIso97971$1.exports;
+var hasRequiredPadIso97971;
+function requirePadIso97971() {
+ if (hasRequiredPadIso97971) return padIso97971$1.exports;
+ hasRequiredPadIso97971 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(padIso97971, function(CryptoJS) {
+ CryptoJS.pad.Iso97971 = {
+ pad: function(data, blockSize) {
+ data.concat(CryptoJS.lib.WordArray.create([2147483648], 1));
+ CryptoJS.pad.ZeroPadding.pad(data, blockSize);
+ },
+ unpad: function(data) {
+ CryptoJS.pad.ZeroPadding.unpad(data);
+ data.sigBytes--;
+ }
+ };
+ return CryptoJS.pad.Iso97971;
+ });
+ })(padIso97971$1);
+ return padIso97971$1.exports;
+}
+var padZeropadding$1 = { exports: {} };
+var padZeropadding = padZeropadding$1.exports;
+var hasRequiredPadZeropadding;
+function requirePadZeropadding() {
+ if (hasRequiredPadZeropadding) return padZeropadding$1.exports;
+ hasRequiredPadZeropadding = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(padZeropadding, function(CryptoJS) {
+ CryptoJS.pad.ZeroPadding = {
+ pad: function(data, blockSize) {
+ var blockSizeBytes = blockSize * 4;
+ data.clamp();
+ data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);
+ },
+ unpad: function(data) {
+ var dataWords = data.words;
+ var i = data.sigBytes - 1;
+ for (var i = data.sigBytes - 1; i >= 0; i--) {
+ if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 255) {
+ data.sigBytes = i + 1;
+ break;
+ }
+ }
+ }
+ };
+ return CryptoJS.pad.ZeroPadding;
+ });
+ })(padZeropadding$1);
+ return padZeropadding$1.exports;
+}
+var padNopadding$1 = { exports: {} };
+var padNopadding = padNopadding$1.exports;
+var hasRequiredPadNopadding;
+function requirePadNopadding() {
+ if (hasRequiredPadNopadding) return padNopadding$1.exports;
+ hasRequiredPadNopadding = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(padNopadding, function(CryptoJS) {
+ CryptoJS.pad.NoPadding = {
+ pad: function() {
+ },
+ unpad: function() {
+ }
+ };
+ return CryptoJS.pad.NoPadding;
+ });
+ })(padNopadding$1);
+ return padNopadding$1.exports;
+}
+var formatHex$1 = { exports: {} };
+var formatHex = formatHex$1.exports;
+var hasRequiredFormatHex;
+function requireFormatHex() {
+ if (hasRequiredFormatHex) return formatHex$1.exports;
+ hasRequiredFormatHex = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireCipherCore());
+ }
+ })(formatHex, function(CryptoJS) {
+ (function(undefined$1) {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var CipherParams = C_lib.CipherParams;
+ var C_enc = C.enc;
+ var Hex = C_enc.Hex;
+ var C_format = C.format;
+ C_format.Hex = {
+ /**
+ * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
+ *
+ * @param {CipherParams} cipherParams The cipher params object.
+ *
+ * @return {string} The hexadecimally encoded string.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var hexString = CryptoJS.format.Hex.stringify(cipherParams);
+ */
+ stringify: function(cipherParams) {
+ return cipherParams.ciphertext.toString(Hex);
+ },
+ /**
+ * Converts a hexadecimally encoded ciphertext string to a cipher params object.
+ *
+ * @param {string} input The hexadecimally encoded string.
+ *
+ * @return {CipherParams} The cipher params object.
+ *
+ * @static
+ *
+ * @example
+ *
+ * var cipherParams = CryptoJS.format.Hex.parse(hexString);
+ */
+ parse: function(input) {
+ var ciphertext = Hex.parse(input);
+ return CipherParams.create({ ciphertext });
+ }
+ };
+ })();
+ return CryptoJS.format.Hex;
+ });
+ })(formatHex$1);
+ return formatHex$1.exports;
+}
+var aes$1 = { exports: {} };
+var aes = aes$1.exports;
+var hasRequiredAes;
+function requireAes() {
+ if (hasRequiredAes) return aes$1.exports;
+ hasRequiredAes = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(aes, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var BlockCipher = C_lib.BlockCipher;
+ var C_algo = C.algo;
+ var SBOX = [];
+ var INV_SBOX = [];
+ var SUB_MIX_0 = [];
+ var SUB_MIX_1 = [];
+ var SUB_MIX_2 = [];
+ var SUB_MIX_3 = [];
+ var INV_SUB_MIX_0 = [];
+ var INV_SUB_MIX_1 = [];
+ var INV_SUB_MIX_2 = [];
+ var INV_SUB_MIX_3 = [];
+ (function() {
+ var d = [];
+ for (var i = 0; i < 256; i++) {
+ if (i < 128) {
+ d[i] = i << 1;
+ } else {
+ d[i] = i << 1 ^ 283;
+ }
+ }
+ var x = 0;
+ var xi = 0;
+ for (var i = 0; i < 256; i++) {
+ var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
+ sx = sx >>> 8 ^ sx & 255 ^ 99;
+ SBOX[x] = sx;
+ INV_SBOX[sx] = x;
+ var x2 = d[x];
+ var x4 = d[x2];
+ var x8 = d[x4];
+ var t = d[sx] * 257 ^ sx * 16843008;
+ SUB_MIX_0[x] = t << 24 | t >>> 8;
+ SUB_MIX_1[x] = t << 16 | t >>> 16;
+ SUB_MIX_2[x] = t << 8 | t >>> 24;
+ SUB_MIX_3[x] = t;
+ var t = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008;
+ INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;
+ INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;
+ INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;
+ INV_SUB_MIX_3[sx] = t;
+ if (!x) {
+ x = xi = 1;
+ } else {
+ x = x2 ^ d[d[d[x8 ^ x2]]];
+ xi ^= d[d[xi]];
+ }
+ }
+ })();
+ var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
+ var AES = C_algo.AES = BlockCipher.extend({
+ _doReset: function() {
+ var t;
+ if (this._nRounds && this._keyPriorReset === this._key) {
+ return;
+ }
+ var key = this._keyPriorReset = this._key;
+ var keyWords = key.words;
+ var keySize = key.sigBytes / 4;
+ var nRounds = this._nRounds = keySize + 6;
+ var ksRows = (nRounds + 1) * 4;
+ var keySchedule = this._keySchedule = [];
+ for (var ksRow = 0; ksRow < ksRows; ksRow++) {
+ if (ksRow < keySize) {
+ keySchedule[ksRow] = keyWords[ksRow];
+ } else {
+ t = keySchedule[ksRow - 1];
+ if (!(ksRow % keySize)) {
+ t = t << 8 | t >>> 24;
+ t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
+ t ^= RCON[ksRow / keySize | 0] << 24;
+ } else if (keySize > 6 && ksRow % keySize == 4) {
+ t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
+ }
+ keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
+ }
+ }
+ var invKeySchedule = this._invKeySchedule = [];
+ for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
+ var ksRow = ksRows - invKsRow;
+ if (invKsRow % 4) {
+ var t = keySchedule[ksRow];
+ } else {
+ var t = keySchedule[ksRow - 4];
+ }
+ if (invKsRow < 4 || ksRow <= 4) {
+ invKeySchedule[invKsRow] = t;
+ } else {
+ invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 255]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 255]] ^ INV_SUB_MIX_3[SBOX[t & 255]];
+ }
+ }
+ },
+ encryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
+ },
+ decryptBlock: function(M, offset) {
+ var t = M[offset + 1];
+ M[offset + 1] = M[offset + 3];
+ M[offset + 3] = t;
+ this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
+ var t = M[offset + 1];
+ M[offset + 1] = M[offset + 3];
+ M[offset + 3] = t;
+ },
+ _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_02, SUB_MIX_12, SUB_MIX_22, SUB_MIX_32, SBOX2) {
+ var nRounds = this._nRounds;
+ var s0 = M[offset] ^ keySchedule[0];
+ var s1 = M[offset + 1] ^ keySchedule[1];
+ var s2 = M[offset + 2] ^ keySchedule[2];
+ var s3 = M[offset + 3] ^ keySchedule[3];
+ var ksRow = 4;
+ for (var round = 1; round < nRounds; round++) {
+ var t0 = SUB_MIX_02[s0 >>> 24] ^ SUB_MIX_12[s1 >>> 16 & 255] ^ SUB_MIX_22[s2 >>> 8 & 255] ^ SUB_MIX_32[s3 & 255] ^ keySchedule[ksRow++];
+ var t1 = SUB_MIX_02[s1 >>> 24] ^ SUB_MIX_12[s2 >>> 16 & 255] ^ SUB_MIX_22[s3 >>> 8 & 255] ^ SUB_MIX_32[s0 & 255] ^ keySchedule[ksRow++];
+ var t2 = SUB_MIX_02[s2 >>> 24] ^ SUB_MIX_12[s3 >>> 16 & 255] ^ SUB_MIX_22[s0 >>> 8 & 255] ^ SUB_MIX_32[s1 & 255] ^ keySchedule[ksRow++];
+ var t3 = SUB_MIX_02[s3 >>> 24] ^ SUB_MIX_12[s0 >>> 16 & 255] ^ SUB_MIX_22[s1 >>> 8 & 255] ^ SUB_MIX_32[s2 & 255] ^ keySchedule[ksRow++];
+ s0 = t0;
+ s1 = t1;
+ s2 = t2;
+ s3 = t3;
+ }
+ var t0 = (SBOX2[s0 >>> 24] << 24 | SBOX2[s1 >>> 16 & 255] << 16 | SBOX2[s2 >>> 8 & 255] << 8 | SBOX2[s3 & 255]) ^ keySchedule[ksRow++];
+ var t1 = (SBOX2[s1 >>> 24] << 24 | SBOX2[s2 >>> 16 & 255] << 16 | SBOX2[s3 >>> 8 & 255] << 8 | SBOX2[s0 & 255]) ^ keySchedule[ksRow++];
+ var t2 = (SBOX2[s2 >>> 24] << 24 | SBOX2[s3 >>> 16 & 255] << 16 | SBOX2[s0 >>> 8 & 255] << 8 | SBOX2[s1 & 255]) ^ keySchedule[ksRow++];
+ var t3 = (SBOX2[s3 >>> 24] << 24 | SBOX2[s0 >>> 16 & 255] << 16 | SBOX2[s1 >>> 8 & 255] << 8 | SBOX2[s2 & 255]) ^ keySchedule[ksRow++];
+ M[offset] = t0;
+ M[offset + 1] = t1;
+ M[offset + 2] = t2;
+ M[offset + 3] = t3;
+ },
+ keySize: 256 / 32
+ });
+ C.AES = BlockCipher._createHelper(AES);
+ })();
+ return CryptoJS.AES;
+ });
+ })(aes$1);
+ return aes$1.exports;
+}
+var tripledes$1 = { exports: {} };
+var tripledes = tripledes$1.exports;
+var hasRequiredTripledes;
+function requireTripledes() {
+ if (hasRequiredTripledes) return tripledes$1.exports;
+ hasRequiredTripledes = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(tripledes, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var WordArray = C_lib.WordArray;
+ var BlockCipher = C_lib.BlockCipher;
+ var C_algo = C.algo;
+ var PC1 = [
+ 57,
+ 49,
+ 41,
+ 33,
+ 25,
+ 17,
+ 9,
+ 1,
+ 58,
+ 50,
+ 42,
+ 34,
+ 26,
+ 18,
+ 10,
+ 2,
+ 59,
+ 51,
+ 43,
+ 35,
+ 27,
+ 19,
+ 11,
+ 3,
+ 60,
+ 52,
+ 44,
+ 36,
+ 63,
+ 55,
+ 47,
+ 39,
+ 31,
+ 23,
+ 15,
+ 7,
+ 62,
+ 54,
+ 46,
+ 38,
+ 30,
+ 22,
+ 14,
+ 6,
+ 61,
+ 53,
+ 45,
+ 37,
+ 29,
+ 21,
+ 13,
+ 5,
+ 28,
+ 20,
+ 12,
+ 4
+ ];
+ var PC2 = [
+ 14,
+ 17,
+ 11,
+ 24,
+ 1,
+ 5,
+ 3,
+ 28,
+ 15,
+ 6,
+ 21,
+ 10,
+ 23,
+ 19,
+ 12,
+ 4,
+ 26,
+ 8,
+ 16,
+ 7,
+ 27,
+ 20,
+ 13,
+ 2,
+ 41,
+ 52,
+ 31,
+ 37,
+ 47,
+ 55,
+ 30,
+ 40,
+ 51,
+ 45,
+ 33,
+ 48,
+ 44,
+ 49,
+ 39,
+ 56,
+ 34,
+ 53,
+ 46,
+ 42,
+ 50,
+ 36,
+ 29,
+ 32
+ ];
+ var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
+ var SBOX_P = [
+ {
+ 0: 8421888,
+ 268435456: 32768,
+ 536870912: 8421378,
+ 805306368: 2,
+ 1073741824: 512,
+ 1342177280: 8421890,
+ 1610612736: 8389122,
+ 1879048192: 8388608,
+ 2147483648: 514,
+ 2415919104: 8389120,
+ 2684354560: 33280,
+ 2952790016: 8421376,
+ 3221225472: 32770,
+ 3489660928: 8388610,
+ 3758096384: 0,
+ 4026531840: 33282,
+ 134217728: 0,
+ 402653184: 8421890,
+ 671088640: 33282,
+ 939524096: 32768,
+ 1207959552: 8421888,
+ 1476395008: 512,
+ 1744830464: 8421378,
+ 2013265920: 2,
+ 2281701376: 8389120,
+ 2550136832: 33280,
+ 2818572288: 8421376,
+ 3087007744: 8389122,
+ 3355443200: 8388610,
+ 3623878656: 32770,
+ 3892314112: 514,
+ 4160749568: 8388608,
+ 1: 32768,
+ 268435457: 2,
+ 536870913: 8421888,
+ 805306369: 8388608,
+ 1073741825: 8421378,
+ 1342177281: 33280,
+ 1610612737: 512,
+ 1879048193: 8389122,
+ 2147483649: 8421890,
+ 2415919105: 8421376,
+ 2684354561: 8388610,
+ 2952790017: 33282,
+ 3221225473: 514,
+ 3489660929: 8389120,
+ 3758096385: 32770,
+ 4026531841: 0,
+ 134217729: 8421890,
+ 402653185: 8421376,
+ 671088641: 8388608,
+ 939524097: 512,
+ 1207959553: 32768,
+ 1476395009: 8388610,
+ 1744830465: 2,
+ 2013265921: 33282,
+ 2281701377: 32770,
+ 2550136833: 8389122,
+ 2818572289: 514,
+ 3087007745: 8421888,
+ 3355443201: 8389120,
+ 3623878657: 0,
+ 3892314113: 33280,
+ 4160749569: 8421378
+ },
+ {
+ 0: 1074282512,
+ 16777216: 16384,
+ 33554432: 524288,
+ 50331648: 1074266128,
+ 67108864: 1073741840,
+ 83886080: 1074282496,
+ 100663296: 1073758208,
+ 117440512: 16,
+ 134217728: 540672,
+ 150994944: 1073758224,
+ 167772160: 1073741824,
+ 184549376: 540688,
+ 201326592: 524304,
+ 218103808: 0,
+ 234881024: 16400,
+ 251658240: 1074266112,
+ 8388608: 1073758208,
+ 25165824: 540688,
+ 41943040: 16,
+ 58720256: 1073758224,
+ 75497472: 1074282512,
+ 92274688: 1073741824,
+ 109051904: 524288,
+ 125829120: 1074266128,
+ 142606336: 524304,
+ 159383552: 0,
+ 176160768: 16384,
+ 192937984: 1074266112,
+ 209715200: 1073741840,
+ 226492416: 540672,
+ 243269632: 1074282496,
+ 260046848: 16400,
+ 268435456: 0,
+ 285212672: 1074266128,
+ 301989888: 1073758224,
+ 318767104: 1074282496,
+ 335544320: 1074266112,
+ 352321536: 16,
+ 369098752: 540688,
+ 385875968: 16384,
+ 402653184: 16400,
+ 419430400: 524288,
+ 436207616: 524304,
+ 452984832: 1073741840,
+ 469762048: 540672,
+ 486539264: 1073758208,
+ 503316480: 1073741824,
+ 520093696: 1074282512,
+ 276824064: 540688,
+ 293601280: 524288,
+ 310378496: 1074266112,
+ 327155712: 16384,
+ 343932928: 1073758208,
+ 360710144: 1074282512,
+ 377487360: 16,
+ 394264576: 1073741824,
+ 411041792: 1074282496,
+ 427819008: 1073741840,
+ 444596224: 1073758224,
+ 461373440: 524304,
+ 478150656: 0,
+ 494927872: 16400,
+ 511705088: 1074266128,
+ 528482304: 540672
+ },
+ {
+ 0: 260,
+ 1048576: 0,
+ 2097152: 67109120,
+ 3145728: 65796,
+ 4194304: 65540,
+ 5242880: 67108868,
+ 6291456: 67174660,
+ 7340032: 67174400,
+ 8388608: 67108864,
+ 9437184: 67174656,
+ 10485760: 65792,
+ 11534336: 67174404,
+ 12582912: 67109124,
+ 13631488: 65536,
+ 14680064: 4,
+ 15728640: 256,
+ 524288: 67174656,
+ 1572864: 67174404,
+ 2621440: 0,
+ 3670016: 67109120,
+ 4718592: 67108868,
+ 5767168: 65536,
+ 6815744: 65540,
+ 7864320: 260,
+ 8912896: 4,
+ 9961472: 256,
+ 11010048: 67174400,
+ 12058624: 65796,
+ 13107200: 65792,
+ 14155776: 67109124,
+ 15204352: 67174660,
+ 16252928: 67108864,
+ 16777216: 67174656,
+ 17825792: 65540,
+ 18874368: 65536,
+ 19922944: 67109120,
+ 20971520: 256,
+ 22020096: 67174660,
+ 23068672: 67108868,
+ 24117248: 0,
+ 25165824: 67109124,
+ 26214400: 67108864,
+ 27262976: 4,
+ 28311552: 65792,
+ 29360128: 67174400,
+ 30408704: 260,
+ 31457280: 65796,
+ 32505856: 67174404,
+ 17301504: 67108864,
+ 18350080: 260,
+ 19398656: 67174656,
+ 20447232: 0,
+ 21495808: 65540,
+ 22544384: 67109120,
+ 23592960: 256,
+ 24641536: 67174404,
+ 25690112: 65536,
+ 26738688: 67174660,
+ 27787264: 65796,
+ 28835840: 67108868,
+ 29884416: 67109124,
+ 30932992: 67174400,
+ 31981568: 4,
+ 33030144: 65792
+ },
+ {
+ 0: 2151682048,
+ 65536: 2147487808,
+ 131072: 4198464,
+ 196608: 2151677952,
+ 262144: 0,
+ 327680: 4198400,
+ 393216: 2147483712,
+ 458752: 4194368,
+ 524288: 2147483648,
+ 589824: 4194304,
+ 655360: 64,
+ 720896: 2147487744,
+ 786432: 2151678016,
+ 851968: 4160,
+ 917504: 4096,
+ 983040: 2151682112,
+ 32768: 2147487808,
+ 98304: 64,
+ 163840: 2151678016,
+ 229376: 2147487744,
+ 294912: 4198400,
+ 360448: 2151682112,
+ 425984: 0,
+ 491520: 2151677952,
+ 557056: 4096,
+ 622592: 2151682048,
+ 688128: 4194304,
+ 753664: 4160,
+ 819200: 2147483648,
+ 884736: 4194368,
+ 950272: 4198464,
+ 1015808: 2147483712,
+ 1048576: 4194368,
+ 1114112: 4198400,
+ 1179648: 2147483712,
+ 1245184: 0,
+ 1310720: 4160,
+ 1376256: 2151678016,
+ 1441792: 2151682048,
+ 1507328: 2147487808,
+ 1572864: 2151682112,
+ 1638400: 2147483648,
+ 1703936: 2151677952,
+ 1769472: 4198464,
+ 1835008: 2147487744,
+ 1900544: 4194304,
+ 1966080: 64,
+ 2031616: 4096,
+ 1081344: 2151677952,
+ 1146880: 2151682112,
+ 1212416: 0,
+ 1277952: 4198400,
+ 1343488: 4194368,
+ 1409024: 2147483648,
+ 1474560: 2147487808,
+ 1540096: 64,
+ 1605632: 2147483712,
+ 1671168: 4096,
+ 1736704: 2147487744,
+ 1802240: 2151678016,
+ 1867776: 4160,
+ 1933312: 2151682048,
+ 1998848: 4194304,
+ 2064384: 4198464
+ },
+ {
+ 0: 128,
+ 4096: 17039360,
+ 8192: 262144,
+ 12288: 536870912,
+ 16384: 537133184,
+ 20480: 16777344,
+ 24576: 553648256,
+ 28672: 262272,
+ 32768: 16777216,
+ 36864: 537133056,
+ 40960: 536871040,
+ 45056: 553910400,
+ 49152: 553910272,
+ 53248: 0,
+ 57344: 17039488,
+ 61440: 553648128,
+ 2048: 17039488,
+ 6144: 553648256,
+ 10240: 128,
+ 14336: 17039360,
+ 18432: 262144,
+ 22528: 537133184,
+ 26624: 553910272,
+ 30720: 536870912,
+ 34816: 537133056,
+ 38912: 0,
+ 43008: 553910400,
+ 47104: 16777344,
+ 51200: 536871040,
+ 55296: 553648128,
+ 59392: 16777216,
+ 63488: 262272,
+ 65536: 262144,
+ 69632: 128,
+ 73728: 536870912,
+ 77824: 553648256,
+ 81920: 16777344,
+ 86016: 553910272,
+ 90112: 537133184,
+ 94208: 16777216,
+ 98304: 553910400,
+ 102400: 553648128,
+ 106496: 17039360,
+ 110592: 537133056,
+ 114688: 262272,
+ 118784: 536871040,
+ 122880: 0,
+ 126976: 17039488,
+ 67584: 553648256,
+ 71680: 16777216,
+ 75776: 17039360,
+ 79872: 537133184,
+ 83968: 536870912,
+ 88064: 17039488,
+ 92160: 128,
+ 96256: 553910272,
+ 100352: 262272,
+ 104448: 553910400,
+ 108544: 0,
+ 112640: 553648128,
+ 116736: 16777344,
+ 120832: 262144,
+ 124928: 537133056,
+ 129024: 536871040
+ },
+ {
+ 0: 268435464,
+ 256: 8192,
+ 512: 270532608,
+ 768: 270540808,
+ 1024: 268443648,
+ 1280: 2097152,
+ 1536: 2097160,
+ 1792: 268435456,
+ 2048: 0,
+ 2304: 268443656,
+ 2560: 2105344,
+ 2816: 8,
+ 3072: 270532616,
+ 3328: 2105352,
+ 3584: 8200,
+ 3840: 270540800,
+ 128: 270532608,
+ 384: 270540808,
+ 640: 8,
+ 896: 2097152,
+ 1152: 2105352,
+ 1408: 268435464,
+ 1664: 268443648,
+ 1920: 8200,
+ 2176: 2097160,
+ 2432: 8192,
+ 2688: 268443656,
+ 2944: 270532616,
+ 3200: 0,
+ 3456: 270540800,
+ 3712: 2105344,
+ 3968: 268435456,
+ 4096: 268443648,
+ 4352: 270532616,
+ 4608: 270540808,
+ 4864: 8200,
+ 5120: 2097152,
+ 5376: 268435456,
+ 5632: 268435464,
+ 5888: 2105344,
+ 6144: 2105352,
+ 6400: 0,
+ 6656: 8,
+ 6912: 270532608,
+ 7168: 8192,
+ 7424: 268443656,
+ 7680: 270540800,
+ 7936: 2097160,
+ 4224: 8,
+ 4480: 2105344,
+ 4736: 2097152,
+ 4992: 268435464,
+ 5248: 268443648,
+ 5504: 8200,
+ 5760: 270540808,
+ 6016: 270532608,
+ 6272: 270540800,
+ 6528: 270532616,
+ 6784: 8192,
+ 7040: 2105352,
+ 7296: 2097160,
+ 7552: 0,
+ 7808: 268435456,
+ 8064: 268443656
+ },
+ {
+ 0: 1048576,
+ 16: 33555457,
+ 32: 1024,
+ 48: 1049601,
+ 64: 34604033,
+ 80: 0,
+ 96: 1,
+ 112: 34603009,
+ 128: 33555456,
+ 144: 1048577,
+ 160: 33554433,
+ 176: 34604032,
+ 192: 34603008,
+ 208: 1025,
+ 224: 1049600,
+ 240: 33554432,
+ 8: 34603009,
+ 24: 0,
+ 40: 33555457,
+ 56: 34604032,
+ 72: 1048576,
+ 88: 33554433,
+ 104: 33554432,
+ 120: 1025,
+ 136: 1049601,
+ 152: 33555456,
+ 168: 34603008,
+ 184: 1048577,
+ 200: 1024,
+ 216: 34604033,
+ 232: 1,
+ 248: 1049600,
+ 256: 33554432,
+ 272: 1048576,
+ 288: 33555457,
+ 304: 34603009,
+ 320: 1048577,
+ 336: 33555456,
+ 352: 34604032,
+ 368: 1049601,
+ 384: 1025,
+ 400: 34604033,
+ 416: 1049600,
+ 432: 1,
+ 448: 0,
+ 464: 34603008,
+ 480: 33554433,
+ 496: 1024,
+ 264: 1049600,
+ 280: 33555457,
+ 296: 34603009,
+ 312: 1,
+ 328: 33554432,
+ 344: 1048576,
+ 360: 1025,
+ 376: 34604032,
+ 392: 33554433,
+ 408: 34603008,
+ 424: 0,
+ 440: 34604033,
+ 456: 1049601,
+ 472: 1024,
+ 488: 33555456,
+ 504: 1048577
+ },
+ {
+ 0: 134219808,
+ 1: 131072,
+ 2: 134217728,
+ 3: 32,
+ 4: 131104,
+ 5: 134350880,
+ 6: 134350848,
+ 7: 2048,
+ 8: 134348800,
+ 9: 134219776,
+ 10: 133120,
+ 11: 134348832,
+ 12: 2080,
+ 13: 0,
+ 14: 134217760,
+ 15: 133152,
+ 2147483648: 2048,
+ 2147483649: 134350880,
+ 2147483650: 134219808,
+ 2147483651: 134217728,
+ 2147483652: 134348800,
+ 2147483653: 133120,
+ 2147483654: 133152,
+ 2147483655: 32,
+ 2147483656: 134217760,
+ 2147483657: 2080,
+ 2147483658: 131104,
+ 2147483659: 134350848,
+ 2147483660: 0,
+ 2147483661: 134348832,
+ 2147483662: 134219776,
+ 2147483663: 131072,
+ 16: 133152,
+ 17: 134350848,
+ 18: 32,
+ 19: 2048,
+ 20: 134219776,
+ 21: 134217760,
+ 22: 134348832,
+ 23: 131072,
+ 24: 0,
+ 25: 131104,
+ 26: 134348800,
+ 27: 134219808,
+ 28: 134350880,
+ 29: 133120,
+ 30: 2080,
+ 31: 134217728,
+ 2147483664: 131072,
+ 2147483665: 2048,
+ 2147483666: 134348832,
+ 2147483667: 133152,
+ 2147483668: 32,
+ 2147483669: 134348800,
+ 2147483670: 134217728,
+ 2147483671: 134219808,
+ 2147483672: 134350880,
+ 2147483673: 134217760,
+ 2147483674: 134219776,
+ 2147483675: 0,
+ 2147483676: 133120,
+ 2147483677: 2080,
+ 2147483678: 131104,
+ 2147483679: 134350848
+ }
+ ];
+ var SBOX_MASK = [
+ 4160749569,
+ 528482304,
+ 33030144,
+ 2064384,
+ 129024,
+ 8064,
+ 504,
+ 2147483679
+ ];
+ var DES = C_algo.DES = BlockCipher.extend({
+ _doReset: function() {
+ var key = this._key;
+ var keyWords = key.words;
+ var keyBits = [];
+ for (var i = 0; i < 56; i++) {
+ var keyBitPos = PC1[i] - 1;
+ keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;
+ }
+ var subKeys = this._subKeys = [];
+ for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
+ var subKey = subKeys[nSubKey] = [];
+ var bitShift = BIT_SHIFTS[nSubKey];
+ for (var i = 0; i < 24; i++) {
+ subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;
+ subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;
+ }
+ subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;
+ for (var i = 1; i < 7; i++) {
+ subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;
+ }
+ subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;
+ }
+ var invSubKeys = this._invSubKeys = [];
+ for (var i = 0; i < 16; i++) {
+ invSubKeys[i] = subKeys[15 - i];
+ }
+ },
+ encryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._subKeys);
+ },
+ decryptBlock: function(M, offset) {
+ this._doCryptBlock(M, offset, this._invSubKeys);
+ },
+ _doCryptBlock: function(M, offset, subKeys) {
+ this._lBlock = M[offset];
+ this._rBlock = M[offset + 1];
+ exchangeLR.call(this, 4, 252645135);
+ exchangeLR.call(this, 16, 65535);
+ exchangeRL.call(this, 2, 858993459);
+ exchangeRL.call(this, 8, 16711935);
+ exchangeLR.call(this, 1, 1431655765);
+ for (var round = 0; round < 16; round++) {
+ var subKey = subKeys[round];
+ var lBlock = this._lBlock;
+ var rBlock = this._rBlock;
+ var f = 0;
+ for (var i = 0; i < 8; i++) {
+ f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
+ }
+ this._lBlock = rBlock;
+ this._rBlock = lBlock ^ f;
+ }
+ var t = this._lBlock;
+ this._lBlock = this._rBlock;
+ this._rBlock = t;
+ exchangeLR.call(this, 1, 1431655765);
+ exchangeRL.call(this, 8, 16711935);
+ exchangeRL.call(this, 2, 858993459);
+ exchangeLR.call(this, 16, 65535);
+ exchangeLR.call(this, 4, 252645135);
+ M[offset] = this._lBlock;
+ M[offset + 1] = this._rBlock;
+ },
+ keySize: 64 / 32,
+ ivSize: 64 / 32,
+ blockSize: 64 / 32
+ });
+ function exchangeLR(offset, mask) {
+ var t = (this._lBlock >>> offset ^ this._rBlock) & mask;
+ this._rBlock ^= t;
+ this._lBlock ^= t << offset;
+ }
+ function exchangeRL(offset, mask) {
+ var t = (this._rBlock >>> offset ^ this._lBlock) & mask;
+ this._lBlock ^= t;
+ this._rBlock ^= t << offset;
+ }
+ C.DES = BlockCipher._createHelper(DES);
+ var TripleDES = C_algo.TripleDES = BlockCipher.extend({
+ _doReset: function() {
+ var key = this._key;
+ var keyWords = key.words;
+ if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
+ throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");
+ }
+ var key1 = keyWords.slice(0, 2);
+ var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
+ var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
+ this._des1 = DES.createEncryptor(WordArray.create(key1));
+ this._des2 = DES.createEncryptor(WordArray.create(key2));
+ this._des3 = DES.createEncryptor(WordArray.create(key3));
+ },
+ encryptBlock: function(M, offset) {
+ this._des1.encryptBlock(M, offset);
+ this._des2.decryptBlock(M, offset);
+ this._des3.encryptBlock(M, offset);
+ },
+ decryptBlock: function(M, offset) {
+ this._des3.decryptBlock(M, offset);
+ this._des2.encryptBlock(M, offset);
+ this._des1.decryptBlock(M, offset);
+ },
+ keySize: 192 / 32,
+ ivSize: 64 / 32,
+ blockSize: 64 / 32
+ });
+ C.TripleDES = BlockCipher._createHelper(TripleDES);
+ })();
+ return CryptoJS.TripleDES;
+ });
+ })(tripledes$1);
+ return tripledes$1.exports;
+}
+var rc4$1 = { exports: {} };
+var rc4 = rc4$1.exports;
+var hasRequiredRc4;
+function requireRc4() {
+ if (hasRequiredRc4) return rc4$1.exports;
+ hasRequiredRc4 = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(rc4, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+ var RC4 = C_algo.RC4 = StreamCipher.extend({
+ _doReset: function() {
+ var key = this._key;
+ var keyWords = key.words;
+ var keySigBytes = key.sigBytes;
+ var S = this._S = [];
+ for (var i = 0; i < 256; i++) {
+ S[i] = i;
+ }
+ for (var i = 0, j = 0; i < 256; i++) {
+ var keyByteIndex = i % keySigBytes;
+ var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 255;
+ j = (j + S[i] + keyByte) % 256;
+ var t = S[i];
+ S[i] = S[j];
+ S[j] = t;
+ }
+ this._i = this._j = 0;
+ },
+ _doProcessBlock: function(M, offset) {
+ M[offset] ^= generateKeystreamWord.call(this);
+ },
+ keySize: 256 / 32,
+ ivSize: 0
+ });
+ function generateKeystreamWord() {
+ var S = this._S;
+ var i = this._i;
+ var j = this._j;
+ var keystreamWord = 0;
+ for (var n = 0; n < 4; n++) {
+ i = (i + 1) % 256;
+ j = (j + S[i]) % 256;
+ var t = S[i];
+ S[i] = S[j];
+ S[j] = t;
+ keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;
+ }
+ this._i = i;
+ this._j = j;
+ return keystreamWord;
+ }
+ C.RC4 = StreamCipher._createHelper(RC4);
+ var RC4Drop = C_algo.RC4Drop = RC4.extend({
+ /**
+ * Configuration options.
+ *
+ * @property {number} drop The number of keystream words to drop. Default 192
+ */
+ cfg: RC4.cfg.extend({
+ drop: 192
+ }),
+ _doReset: function() {
+ RC4._doReset.call(this);
+ for (var i = this.cfg.drop; i > 0; i--) {
+ generateKeystreamWord.call(this);
+ }
+ }
+ });
+ C.RC4Drop = StreamCipher._createHelper(RC4Drop);
+ })();
+ return CryptoJS.RC4;
+ });
+ })(rc4$1);
+ return rc4$1.exports;
+}
+var rabbit$1 = { exports: {} };
+var rabbit = rabbit$1.exports;
+var hasRequiredRabbit;
+function requireRabbit() {
+ if (hasRequiredRabbit) return rabbit$1.exports;
+ hasRequiredRabbit = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(rabbit, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+ var S = [];
+ var C_ = [];
+ var G = [];
+ var Rabbit = C_algo.Rabbit = StreamCipher.extend({
+ _doReset: function() {
+ var K = this._key.words;
+ var iv = this.cfg.iv;
+ for (var i = 0; i < 4; i++) {
+ K[i] = (K[i] << 8 | K[i] >>> 24) & 16711935 | (K[i] << 24 | K[i] >>> 8) & 4278255360;
+ }
+ var X = this._X = [
+ K[0],
+ K[3] << 16 | K[2] >>> 16,
+ K[1],
+ K[0] << 16 | K[3] >>> 16,
+ K[2],
+ K[1] << 16 | K[0] >>> 16,
+ K[3],
+ K[2] << 16 | K[1] >>> 16
+ ];
+ var C2 = this._C = [
+ K[2] << 16 | K[2] >>> 16,
+ K[0] & 4294901760 | K[1] & 65535,
+ K[3] << 16 | K[3] >>> 16,
+ K[1] & 4294901760 | K[2] & 65535,
+ K[0] << 16 | K[0] >>> 16,
+ K[2] & 4294901760 | K[3] & 65535,
+ K[1] << 16 | K[1] >>> 16,
+ K[3] & 4294901760 | K[0] & 65535
+ ];
+ this._b = 0;
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ for (var i = 0; i < 8; i++) {
+ C2[i] ^= X[i + 4 & 7];
+ }
+ if (iv) {
+ var IV = iv.words;
+ var IV_0 = IV[0];
+ var IV_1 = IV[1];
+ var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
+ var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
+ var i1 = i0 >>> 16 | i2 & 4294901760;
+ var i3 = i2 << 16 | i0 & 65535;
+ C2[0] ^= i0;
+ C2[1] ^= i1;
+ C2[2] ^= i2;
+ C2[3] ^= i3;
+ C2[4] ^= i0;
+ C2[5] ^= i1;
+ C2[6] ^= i2;
+ C2[7] ^= i3;
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ }
+ },
+ _doProcessBlock: function(M, offset) {
+ var X = this._X;
+ nextState.call(this);
+ S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
+ S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
+ S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
+ S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
+ for (var i = 0; i < 4; i++) {
+ S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
+ M[offset + i] ^= S[i];
+ }
+ },
+ blockSize: 128 / 32,
+ ivSize: 64 / 32
+ });
+ function nextState() {
+ var X = this._X;
+ var C2 = this._C;
+ for (var i = 0; i < 8; i++) {
+ C_[i] = C2[i];
+ }
+ C2[0] = C2[0] + 1295307597 + this._b | 0;
+ C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
+ C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
+ C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
+ C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
+ C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
+ C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
+ C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
+ this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
+ for (var i = 0; i < 8; i++) {
+ var gx = X[i] + C2[i];
+ var ga = gx & 65535;
+ var gb = gx >>> 16;
+ var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
+ var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
+ G[i] = gh ^ gl;
+ }
+ X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
+ X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
+ X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
+ X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
+ X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
+ X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
+ X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
+ X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
+ }
+ C.Rabbit = StreamCipher._createHelper(Rabbit);
+ })();
+ return CryptoJS.Rabbit;
+ });
+ })(rabbit$1);
+ return rabbit$1.exports;
+}
+var rabbitLegacy$1 = { exports: {} };
+var rabbitLegacy = rabbitLegacy$1.exports;
+var hasRequiredRabbitLegacy;
+function requireRabbitLegacy() {
+ if (hasRequiredRabbitLegacy) return rabbitLegacy$1.exports;
+ hasRequiredRabbitLegacy = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(rabbitLegacy, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var StreamCipher = C_lib.StreamCipher;
+ var C_algo = C.algo;
+ var S = [];
+ var C_ = [];
+ var G = [];
+ var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
+ _doReset: function() {
+ var K = this._key.words;
+ var iv = this.cfg.iv;
+ var X = this._X = [
+ K[0],
+ K[3] << 16 | K[2] >>> 16,
+ K[1],
+ K[0] << 16 | K[3] >>> 16,
+ K[2],
+ K[1] << 16 | K[0] >>> 16,
+ K[3],
+ K[2] << 16 | K[1] >>> 16
+ ];
+ var C2 = this._C = [
+ K[2] << 16 | K[2] >>> 16,
+ K[0] & 4294901760 | K[1] & 65535,
+ K[3] << 16 | K[3] >>> 16,
+ K[1] & 4294901760 | K[2] & 65535,
+ K[0] << 16 | K[0] >>> 16,
+ K[2] & 4294901760 | K[3] & 65535,
+ K[1] << 16 | K[1] >>> 16,
+ K[3] & 4294901760 | K[0] & 65535
+ ];
+ this._b = 0;
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ for (var i = 0; i < 8; i++) {
+ C2[i] ^= X[i + 4 & 7];
+ }
+ if (iv) {
+ var IV = iv.words;
+ var IV_0 = IV[0];
+ var IV_1 = IV[1];
+ var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
+ var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
+ var i1 = i0 >>> 16 | i2 & 4294901760;
+ var i3 = i2 << 16 | i0 & 65535;
+ C2[0] ^= i0;
+ C2[1] ^= i1;
+ C2[2] ^= i2;
+ C2[3] ^= i3;
+ C2[4] ^= i0;
+ C2[5] ^= i1;
+ C2[6] ^= i2;
+ C2[7] ^= i3;
+ for (var i = 0; i < 4; i++) {
+ nextState.call(this);
+ }
+ }
+ },
+ _doProcessBlock: function(M, offset) {
+ var X = this._X;
+ nextState.call(this);
+ S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
+ S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
+ S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
+ S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
+ for (var i = 0; i < 4; i++) {
+ S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
+ M[offset + i] ^= S[i];
+ }
+ },
+ blockSize: 128 / 32,
+ ivSize: 64 / 32
+ });
+ function nextState() {
+ var X = this._X;
+ var C2 = this._C;
+ for (var i = 0; i < 8; i++) {
+ C_[i] = C2[i];
+ }
+ C2[0] = C2[0] + 1295307597 + this._b | 0;
+ C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
+ C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
+ C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
+ C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
+ C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
+ C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
+ C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
+ this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
+ for (var i = 0; i < 8; i++) {
+ var gx = X[i] + C2[i];
+ var ga = gx & 65535;
+ var gb = gx >>> 16;
+ var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
+ var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
+ G[i] = gh ^ gl;
+ }
+ X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
+ X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
+ X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
+ X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
+ X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
+ X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
+ X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
+ X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
+ }
+ C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
+ })();
+ return CryptoJS.RabbitLegacy;
+ });
+ })(rabbitLegacy$1);
+ return rabbitLegacy$1.exports;
+}
+var blowfish$1 = { exports: {} };
+var blowfish = blowfish$1.exports;
+var hasRequiredBlowfish;
+function requireBlowfish() {
+ if (hasRequiredBlowfish) return blowfish$1.exports;
+ hasRequiredBlowfish = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
+ }
+ })(blowfish, function(CryptoJS) {
+ (function() {
+ var C = CryptoJS;
+ var C_lib = C.lib;
+ var BlockCipher = C_lib.BlockCipher;
+ var C_algo = C.algo;
+ const N = 16;
+ const ORIG_P = [
+ 608135816,
+ 2242054355,
+ 320440878,
+ 57701188,
+ 2752067618,
+ 698298832,
+ 137296536,
+ 3964562569,
+ 1160258022,
+ 953160567,
+ 3193202383,
+ 887688300,
+ 3232508343,
+ 3380367581,
+ 1065670069,
+ 3041331479,
+ 2450970073,
+ 2306472731
+ ];
+ const ORIG_S = [
+ [
+ 3509652390,
+ 2564797868,
+ 805139163,
+ 3491422135,
+ 3101798381,
+ 1780907670,
+ 3128725573,
+ 4046225305,
+ 614570311,
+ 3012652279,
+ 134345442,
+ 2240740374,
+ 1667834072,
+ 1901547113,
+ 2757295779,
+ 4103290238,
+ 227898511,
+ 1921955416,
+ 1904987480,
+ 2182433518,
+ 2069144605,
+ 3260701109,
+ 2620446009,
+ 720527379,
+ 3318853667,
+ 677414384,
+ 3393288472,
+ 3101374703,
+ 2390351024,
+ 1614419982,
+ 1822297739,
+ 2954791486,
+ 3608508353,
+ 3174124327,
+ 2024746970,
+ 1432378464,
+ 3864339955,
+ 2857741204,
+ 1464375394,
+ 1676153920,
+ 1439316330,
+ 715854006,
+ 3033291828,
+ 289532110,
+ 2706671279,
+ 2087905683,
+ 3018724369,
+ 1668267050,
+ 732546397,
+ 1947742710,
+ 3462151702,
+ 2609353502,
+ 2950085171,
+ 1814351708,
+ 2050118529,
+ 680887927,
+ 999245976,
+ 1800124847,
+ 3300911131,
+ 1713906067,
+ 1641548236,
+ 4213287313,
+ 1216130144,
+ 1575780402,
+ 4018429277,
+ 3917837745,
+ 3693486850,
+ 3949271944,
+ 596196993,
+ 3549867205,
+ 258830323,
+ 2213823033,
+ 772490370,
+ 2760122372,
+ 1774776394,
+ 2652871518,
+ 566650946,
+ 4142492826,
+ 1728879713,
+ 2882767088,
+ 1783734482,
+ 3629395816,
+ 2517608232,
+ 2874225571,
+ 1861159788,
+ 326777828,
+ 3124490320,
+ 2130389656,
+ 2716951837,
+ 967770486,
+ 1724537150,
+ 2185432712,
+ 2364442137,
+ 1164943284,
+ 2105845187,
+ 998989502,
+ 3765401048,
+ 2244026483,
+ 1075463327,
+ 1455516326,
+ 1322494562,
+ 910128902,
+ 469688178,
+ 1117454909,
+ 936433444,
+ 3490320968,
+ 3675253459,
+ 1240580251,
+ 122909385,
+ 2157517691,
+ 634681816,
+ 4142456567,
+ 3825094682,
+ 3061402683,
+ 2540495037,
+ 79693498,
+ 3249098678,
+ 1084186820,
+ 1583128258,
+ 426386531,
+ 1761308591,
+ 1047286709,
+ 322548459,
+ 995290223,
+ 1845252383,
+ 2603652396,
+ 3431023940,
+ 2942221577,
+ 3202600964,
+ 3727903485,
+ 1712269319,
+ 422464435,
+ 3234572375,
+ 1170764815,
+ 3523960633,
+ 3117677531,
+ 1434042557,
+ 442511882,
+ 3600875718,
+ 1076654713,
+ 1738483198,
+ 4213154764,
+ 2393238008,
+ 3677496056,
+ 1014306527,
+ 4251020053,
+ 793779912,
+ 2902807211,
+ 842905082,
+ 4246964064,
+ 1395751752,
+ 1040244610,
+ 2656851899,
+ 3396308128,
+ 445077038,
+ 3742853595,
+ 3577915638,
+ 679411651,
+ 2892444358,
+ 2354009459,
+ 1767581616,
+ 3150600392,
+ 3791627101,
+ 3102740896,
+ 284835224,
+ 4246832056,
+ 1258075500,
+ 768725851,
+ 2589189241,
+ 3069724005,
+ 3532540348,
+ 1274779536,
+ 3789419226,
+ 2764799539,
+ 1660621633,
+ 3471099624,
+ 4011903706,
+ 913787905,
+ 3497959166,
+ 737222580,
+ 2514213453,
+ 2928710040,
+ 3937242737,
+ 1804850592,
+ 3499020752,
+ 2949064160,
+ 2386320175,
+ 2390070455,
+ 2415321851,
+ 4061277028,
+ 2290661394,
+ 2416832540,
+ 1336762016,
+ 1754252060,
+ 3520065937,
+ 3014181293,
+ 791618072,
+ 3188594551,
+ 3933548030,
+ 2332172193,
+ 3852520463,
+ 3043980520,
+ 413987798,
+ 3465142937,
+ 3030929376,
+ 4245938359,
+ 2093235073,
+ 3534596313,
+ 375366246,
+ 2157278981,
+ 2479649556,
+ 555357303,
+ 3870105701,
+ 2008414854,
+ 3344188149,
+ 4221384143,
+ 3956125452,
+ 2067696032,
+ 3594591187,
+ 2921233993,
+ 2428461,
+ 544322398,
+ 577241275,
+ 1471733935,
+ 610547355,
+ 4027169054,
+ 1432588573,
+ 1507829418,
+ 2025931657,
+ 3646575487,
+ 545086370,
+ 48609733,
+ 2200306550,
+ 1653985193,
+ 298326376,
+ 1316178497,
+ 3007786442,
+ 2064951626,
+ 458293330,
+ 2589141269,
+ 3591329599,
+ 3164325604,
+ 727753846,
+ 2179363840,
+ 146436021,
+ 1461446943,
+ 4069977195,
+ 705550613,
+ 3059967265,
+ 3887724982,
+ 4281599278,
+ 3313849956,
+ 1404054877,
+ 2845806497,
+ 146425753,
+ 1854211946
+ ],
+ [
+ 1266315497,
+ 3048417604,
+ 3681880366,
+ 3289982499,
+ 290971e4,
+ 1235738493,
+ 2632868024,
+ 2414719590,
+ 3970600049,
+ 1771706367,
+ 1449415276,
+ 3266420449,
+ 422970021,
+ 1963543593,
+ 2690192192,
+ 3826793022,
+ 1062508698,
+ 1531092325,
+ 1804592342,
+ 2583117782,
+ 2714934279,
+ 4024971509,
+ 1294809318,
+ 4028980673,
+ 1289560198,
+ 2221992742,
+ 1669523910,
+ 35572830,
+ 157838143,
+ 1052438473,
+ 1016535060,
+ 1802137761,
+ 1753167236,
+ 1386275462,
+ 3080475397,
+ 2857371447,
+ 1040679964,
+ 2145300060,
+ 2390574316,
+ 1461121720,
+ 2956646967,
+ 4031777805,
+ 4028374788,
+ 33600511,
+ 2920084762,
+ 1018524850,
+ 629373528,
+ 3691585981,
+ 3515945977,
+ 2091462646,
+ 2486323059,
+ 586499841,
+ 988145025,
+ 935516892,
+ 3367335476,
+ 2599673255,
+ 2839830854,
+ 265290510,
+ 3972581182,
+ 2759138881,
+ 3795373465,
+ 1005194799,
+ 847297441,
+ 406762289,
+ 1314163512,
+ 1332590856,
+ 1866599683,
+ 4127851711,
+ 750260880,
+ 613907577,
+ 1450815602,
+ 3165620655,
+ 3734664991,
+ 3650291728,
+ 3012275730,
+ 3704569646,
+ 1427272223,
+ 778793252,
+ 1343938022,
+ 2676280711,
+ 2052605720,
+ 1946737175,
+ 3164576444,
+ 3914038668,
+ 3967478842,
+ 3682934266,
+ 1661551462,
+ 3294938066,
+ 4011595847,
+ 840292616,
+ 3712170807,
+ 616741398,
+ 312560963,
+ 711312465,
+ 1351876610,
+ 322626781,
+ 1910503582,
+ 271666773,
+ 2175563734,
+ 1594956187,
+ 70604529,
+ 3617834859,
+ 1007753275,
+ 1495573769,
+ 4069517037,
+ 2549218298,
+ 2663038764,
+ 504708206,
+ 2263041392,
+ 3941167025,
+ 2249088522,
+ 1514023603,
+ 1998579484,
+ 1312622330,
+ 694541497,
+ 2582060303,
+ 2151582166,
+ 1382467621,
+ 776784248,
+ 2618340202,
+ 3323268794,
+ 2497899128,
+ 2784771155,
+ 503983604,
+ 4076293799,
+ 907881277,
+ 423175695,
+ 432175456,
+ 1378068232,
+ 4145222326,
+ 3954048622,
+ 3938656102,
+ 3820766613,
+ 2793130115,
+ 2977904593,
+ 26017576,
+ 3274890735,
+ 3194772133,
+ 1700274565,
+ 1756076034,
+ 4006520079,
+ 3677328699,
+ 720338349,
+ 1533947780,
+ 354530856,
+ 688349552,
+ 3973924725,
+ 1637815568,
+ 332179504,
+ 3949051286,
+ 53804574,
+ 2852348879,
+ 3044236432,
+ 1282449977,
+ 3583942155,
+ 3416972820,
+ 4006381244,
+ 1617046695,
+ 2628476075,
+ 3002303598,
+ 1686838959,
+ 431878346,
+ 2686675385,
+ 1700445008,
+ 1080580658,
+ 1009431731,
+ 832498133,
+ 3223435511,
+ 2605976345,
+ 2271191193,
+ 2516031870,
+ 1648197032,
+ 4164389018,
+ 2548247927,
+ 300782431,
+ 375919233,
+ 238389289,
+ 3353747414,
+ 2531188641,
+ 2019080857,
+ 1475708069,
+ 455242339,
+ 2609103871,
+ 448939670,
+ 3451063019,
+ 1395535956,
+ 2413381860,
+ 1841049896,
+ 1491858159,
+ 885456874,
+ 4264095073,
+ 4001119347,
+ 1565136089,
+ 3898914787,
+ 1108368660,
+ 540939232,
+ 1173283510,
+ 2745871338,
+ 3681308437,
+ 4207628240,
+ 3343053890,
+ 4016749493,
+ 1699691293,
+ 1103962373,
+ 3625875870,
+ 2256883143,
+ 3830138730,
+ 1031889488,
+ 3479347698,
+ 1535977030,
+ 4236805024,
+ 3251091107,
+ 2132092099,
+ 1774941330,
+ 1199868427,
+ 1452454533,
+ 157007616,
+ 2904115357,
+ 342012276,
+ 595725824,
+ 1480756522,
+ 206960106,
+ 497939518,
+ 591360097,
+ 863170706,
+ 2375253569,
+ 3596610801,
+ 1814182875,
+ 2094937945,
+ 3421402208,
+ 1082520231,
+ 3463918190,
+ 2785509508,
+ 435703966,
+ 3908032597,
+ 1641649973,
+ 2842273706,
+ 3305899714,
+ 1510255612,
+ 2148256476,
+ 2655287854,
+ 3276092548,
+ 4258621189,
+ 236887753,
+ 3681803219,
+ 274041037,
+ 1734335097,
+ 3815195456,
+ 3317970021,
+ 1899903192,
+ 1026095262,
+ 4050517792,
+ 356393447,
+ 2410691914,
+ 3873677099,
+ 3682840055
+ ],
+ [
+ 3913112168,
+ 2491498743,
+ 4132185628,
+ 2489919796,
+ 1091903735,
+ 1979897079,
+ 3170134830,
+ 3567386728,
+ 3557303409,
+ 857797738,
+ 1136121015,
+ 1342202287,
+ 507115054,
+ 2535736646,
+ 337727348,
+ 3213592640,
+ 1301675037,
+ 2528481711,
+ 1895095763,
+ 1721773893,
+ 3216771564,
+ 62756741,
+ 2142006736,
+ 835421444,
+ 2531993523,
+ 1442658625,
+ 3659876326,
+ 2882144922,
+ 676362277,
+ 1392781812,
+ 170690266,
+ 3921047035,
+ 1759253602,
+ 3611846912,
+ 1745797284,
+ 664899054,
+ 1329594018,
+ 3901205900,
+ 3045908486,
+ 2062866102,
+ 2865634940,
+ 3543621612,
+ 3464012697,
+ 1080764994,
+ 553557557,
+ 3656615353,
+ 3996768171,
+ 991055499,
+ 499776247,
+ 1265440854,
+ 648242737,
+ 3940784050,
+ 980351604,
+ 3713745714,
+ 1749149687,
+ 3396870395,
+ 4211799374,
+ 3640570775,
+ 1161844396,
+ 3125318951,
+ 1431517754,
+ 545492359,
+ 4268468663,
+ 3499529547,
+ 1437099964,
+ 2702547544,
+ 3433638243,
+ 2581715763,
+ 2787789398,
+ 1060185593,
+ 1593081372,
+ 2418618748,
+ 4260947970,
+ 69676912,
+ 2159744348,
+ 86519011,
+ 2512459080,
+ 3838209314,
+ 1220612927,
+ 3339683548,
+ 133810670,
+ 1090789135,
+ 1078426020,
+ 1569222167,
+ 845107691,
+ 3583754449,
+ 4072456591,
+ 1091646820,
+ 628848692,
+ 1613405280,
+ 3757631651,
+ 526609435,
+ 236106946,
+ 48312990,
+ 2942717905,
+ 3402727701,
+ 1797494240,
+ 859738849,
+ 992217954,
+ 4005476642,
+ 2243076622,
+ 3870952857,
+ 3732016268,
+ 765654824,
+ 3490871365,
+ 2511836413,
+ 1685915746,
+ 3888969200,
+ 1414112111,
+ 2273134842,
+ 3281911079,
+ 4080962846,
+ 172450625,
+ 2569994100,
+ 980381355,
+ 4109958455,
+ 2819808352,
+ 2716589560,
+ 2568741196,
+ 3681446669,
+ 3329971472,
+ 1835478071,
+ 660984891,
+ 3704678404,
+ 4045999559,
+ 3422617507,
+ 3040415634,
+ 1762651403,
+ 1719377915,
+ 3470491036,
+ 2693910283,
+ 3642056355,
+ 3138596744,
+ 1364962596,
+ 2073328063,
+ 1983633131,
+ 926494387,
+ 3423689081,
+ 2150032023,
+ 4096667949,
+ 1749200295,
+ 3328846651,
+ 309677260,
+ 2016342300,
+ 1779581495,
+ 3079819751,
+ 111262694,
+ 1274766160,
+ 443224088,
+ 298511866,
+ 1025883608,
+ 3806446537,
+ 1145181785,
+ 168956806,
+ 3641502830,
+ 3584813610,
+ 1689216846,
+ 3666258015,
+ 3200248200,
+ 1692713982,
+ 2646376535,
+ 4042768518,
+ 1618508792,
+ 1610833997,
+ 3523052358,
+ 4130873264,
+ 2001055236,
+ 3610705100,
+ 2202168115,
+ 4028541809,
+ 2961195399,
+ 1006657119,
+ 2006996926,
+ 3186142756,
+ 1430667929,
+ 3210227297,
+ 1314452623,
+ 4074634658,
+ 4101304120,
+ 2273951170,
+ 1399257539,
+ 3367210612,
+ 3027628629,
+ 1190975929,
+ 2062231137,
+ 2333990788,
+ 2221543033,
+ 2438960610,
+ 1181637006,
+ 548689776,
+ 2362791313,
+ 3372408396,
+ 3104550113,
+ 3145860560,
+ 296247880,
+ 1970579870,
+ 3078560182,
+ 3769228297,
+ 1714227617,
+ 3291629107,
+ 3898220290,
+ 166772364,
+ 1251581989,
+ 493813264,
+ 448347421,
+ 195405023,
+ 2709975567,
+ 677966185,
+ 3703036547,
+ 1463355134,
+ 2715995803,
+ 1338867538,
+ 1343315457,
+ 2802222074,
+ 2684532164,
+ 233230375,
+ 2599980071,
+ 2000651841,
+ 3277868038,
+ 1638401717,
+ 4028070440,
+ 3237316320,
+ 6314154,
+ 819756386,
+ 300326615,
+ 590932579,
+ 1405279636,
+ 3267499572,
+ 3150704214,
+ 2428286686,
+ 3959192993,
+ 3461946742,
+ 1862657033,
+ 1266418056,
+ 963775037,
+ 2089974820,
+ 2263052895,
+ 1917689273,
+ 448879540,
+ 3550394620,
+ 3981727096,
+ 150775221,
+ 3627908307,
+ 1303187396,
+ 508620638,
+ 2975983352,
+ 2726630617,
+ 1817252668,
+ 1876281319,
+ 1457606340,
+ 908771278,
+ 3720792119,
+ 3617206836,
+ 2455994898,
+ 1729034894,
+ 1080033504
+ ],
+ [
+ 976866871,
+ 3556439503,
+ 2881648439,
+ 1522871579,
+ 1555064734,
+ 1336096578,
+ 3548522304,
+ 2579274686,
+ 3574697629,
+ 3205460757,
+ 3593280638,
+ 3338716283,
+ 3079412587,
+ 564236357,
+ 2993598910,
+ 1781952180,
+ 1464380207,
+ 3163844217,
+ 3332601554,
+ 1699332808,
+ 1393555694,
+ 1183702653,
+ 3581086237,
+ 1288719814,
+ 691649499,
+ 2847557200,
+ 2895455976,
+ 3193889540,
+ 2717570544,
+ 1781354906,
+ 1676643554,
+ 2592534050,
+ 3230253752,
+ 1126444790,
+ 2770207658,
+ 2633158820,
+ 2210423226,
+ 2615765581,
+ 2414155088,
+ 3127139286,
+ 673620729,
+ 2805611233,
+ 1269405062,
+ 4015350505,
+ 3341807571,
+ 4149409754,
+ 1057255273,
+ 2012875353,
+ 2162469141,
+ 2276492801,
+ 2601117357,
+ 993977747,
+ 3918593370,
+ 2654263191,
+ 753973209,
+ 36408145,
+ 2530585658,
+ 25011837,
+ 3520020182,
+ 2088578344,
+ 530523599,
+ 2918365339,
+ 1524020338,
+ 1518925132,
+ 3760827505,
+ 3759777254,
+ 1202760957,
+ 3985898139,
+ 3906192525,
+ 674977740,
+ 4174734889,
+ 2031300136,
+ 2019492241,
+ 3983892565,
+ 4153806404,
+ 3822280332,
+ 352677332,
+ 2297720250,
+ 60907813,
+ 90501309,
+ 3286998549,
+ 1016092578,
+ 2535922412,
+ 2839152426,
+ 457141659,
+ 509813237,
+ 4120667899,
+ 652014361,
+ 1966332200,
+ 2975202805,
+ 55981186,
+ 2327461051,
+ 676427537,
+ 3255491064,
+ 2882294119,
+ 3433927263,
+ 1307055953,
+ 942726286,
+ 933058658,
+ 2468411793,
+ 3933900994,
+ 4215176142,
+ 1361170020,
+ 2001714738,
+ 2830558078,
+ 3274259782,
+ 1222529897,
+ 1679025792,
+ 2729314320,
+ 3714953764,
+ 1770335741,
+ 151462246,
+ 3013232138,
+ 1682292957,
+ 1483529935,
+ 471910574,
+ 1539241949,
+ 458788160,
+ 3436315007,
+ 1807016891,
+ 3718408830,
+ 978976581,
+ 1043663428,
+ 3165965781,
+ 1927990952,
+ 4200891579,
+ 2372276910,
+ 3208408903,
+ 3533431907,
+ 1412390302,
+ 2931980059,
+ 4132332400,
+ 1947078029,
+ 3881505623,
+ 4168226417,
+ 2941484381,
+ 1077988104,
+ 1320477388,
+ 886195818,
+ 18198404,
+ 3786409e3,
+ 2509781533,
+ 112762804,
+ 3463356488,
+ 1866414978,
+ 891333506,
+ 18488651,
+ 661792760,
+ 1628790961,
+ 3885187036,
+ 3141171499,
+ 876946877,
+ 2693282273,
+ 1372485963,
+ 791857591,
+ 2686433993,
+ 3759982718,
+ 3167212022,
+ 3472953795,
+ 2716379847,
+ 445679433,
+ 3561995674,
+ 3504004811,
+ 3574258232,
+ 54117162,
+ 3331405415,
+ 2381918588,
+ 3769707343,
+ 4154350007,
+ 1140177722,
+ 4074052095,
+ 668550556,
+ 3214352940,
+ 367459370,
+ 261225585,
+ 2610173221,
+ 4209349473,
+ 3468074219,
+ 3265815641,
+ 314222801,
+ 3066103646,
+ 3808782860,
+ 282218597,
+ 3406013506,
+ 3773591054,
+ 379116347,
+ 1285071038,
+ 846784868,
+ 2669647154,
+ 3771962079,
+ 3550491691,
+ 2305946142,
+ 453669953,
+ 1268987020,
+ 3317592352,
+ 3279303384,
+ 3744833421,
+ 2610507566,
+ 3859509063,
+ 266596637,
+ 3847019092,
+ 517658769,
+ 3462560207,
+ 3443424879,
+ 370717030,
+ 4247526661,
+ 2224018117,
+ 4143653529,
+ 4112773975,
+ 2788324899,
+ 2477274417,
+ 1456262402,
+ 2901442914,
+ 1517677493,
+ 1846949527,
+ 2295493580,
+ 3734397586,
+ 2176403920,
+ 1280348187,
+ 1908823572,
+ 3871786941,
+ 846861322,
+ 1172426758,
+ 3287448474,
+ 3383383037,
+ 1655181056,
+ 3139813346,
+ 901632758,
+ 1897031941,
+ 2986607138,
+ 3066810236,
+ 3447102507,
+ 1393639104,
+ 373351379,
+ 950779232,
+ 625454576,
+ 3124240540,
+ 4148612726,
+ 2007998917,
+ 544563296,
+ 2244738638,
+ 2330496472,
+ 2058025392,
+ 1291430526,
+ 424198748,
+ 50039436,
+ 29584100,
+ 3605783033,
+ 2429876329,
+ 2791104160,
+ 1057563949,
+ 3255363231,
+ 3075367218,
+ 3463963227,
+ 1469046755,
+ 985887462
+ ]
+ ];
+ var BLOWFISH_CTX = {
+ pbox: [],
+ sbox: []
+ };
+ function F(ctx, x) {
+ let a = x >> 24 & 255;
+ let b = x >> 16 & 255;
+ let c = x >> 8 & 255;
+ let d = x & 255;
+ let y = ctx.sbox[0][a] + ctx.sbox[1][b];
+ y = y ^ ctx.sbox[2][c];
+ y = y + ctx.sbox[3][d];
+ return y;
+ }
+ function BlowFish_Encrypt(ctx, left, right) {
+ let Xl = left;
+ let Xr = right;
+ let temp;
+ for (let i = 0; i < N; ++i) {
+ Xl = Xl ^ ctx.pbox[i];
+ Xr = F(ctx, Xl) ^ Xr;
+ temp = Xl;
+ Xl = Xr;
+ Xr = temp;
+ }
+ temp = Xl;
+ Xl = Xr;
+ Xr = temp;
+ Xr = Xr ^ ctx.pbox[N];
+ Xl = Xl ^ ctx.pbox[N + 1];
+ return { left: Xl, right: Xr };
+ }
+ function BlowFish_Decrypt(ctx, left, right) {
+ let Xl = left;
+ let Xr = right;
+ let temp;
+ for (let i = N + 1; i > 1; --i) {
+ Xl = Xl ^ ctx.pbox[i];
+ Xr = F(ctx, Xl) ^ Xr;
+ temp = Xl;
+ Xl = Xr;
+ Xr = temp;
+ }
+ temp = Xl;
+ Xl = Xr;
+ Xr = temp;
+ Xr = Xr ^ ctx.pbox[1];
+ Xl = Xl ^ ctx.pbox[0];
+ return { left: Xl, right: Xr };
+ }
+ function BlowFishInit(ctx, key, keysize) {
+ for (let Row = 0; Row < 4; Row++) {
+ ctx.sbox[Row] = [];
+ for (let Col = 0; Col < 256; Col++) {
+ ctx.sbox[Row][Col] = ORIG_S[Row][Col];
+ }
+ }
+ let keyIndex = 0;
+ for (let index = 0; index < N + 2; index++) {
+ ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];
+ keyIndex++;
+ if (keyIndex >= keysize) {
+ keyIndex = 0;
+ }
+ }
+ let Data1 = 0;
+ let Data2 = 0;
+ let res = 0;
+ for (let i = 0; i < N + 2; i += 2) {
+ res = BlowFish_Encrypt(ctx, Data1, Data2);
+ Data1 = res.left;
+ Data2 = res.right;
+ ctx.pbox[i] = Data1;
+ ctx.pbox[i + 1] = Data2;
+ }
+ for (let i = 0; i < 4; i++) {
+ for (let j = 0; j < 256; j += 2) {
+ res = BlowFish_Encrypt(ctx, Data1, Data2);
+ Data1 = res.left;
+ Data2 = res.right;
+ ctx.sbox[i][j] = Data1;
+ ctx.sbox[i][j + 1] = Data2;
+ }
+ }
+ return true;
+ }
+ var Blowfish = C_algo.Blowfish = BlockCipher.extend({
+ _doReset: function() {
+ if (this._keyPriorReset === this._key) {
+ return;
+ }
+ var key = this._keyPriorReset = this._key;
+ var keyWords = key.words;
+ var keySize = key.sigBytes / 4;
+ BlowFishInit(BLOWFISH_CTX, keyWords, keySize);
+ },
+ encryptBlock: function(M, offset) {
+ var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
+ M[offset] = res.left;
+ M[offset + 1] = res.right;
+ },
+ decryptBlock: function(M, offset) {
+ var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
+ M[offset] = res.left;
+ M[offset + 1] = res.right;
+ },
+ blockSize: 64 / 32,
+ keySize: 128 / 32,
+ ivSize: 64 / 32
+ });
+ C.Blowfish = BlockCipher._createHelper(Blowfish);
+ })();
+ return CryptoJS.Blowfish;
+ });
+ })(blowfish$1);
+ return blowfish$1.exports;
+}
+var cryptoJs = cryptoJs$1.exports;
+var hasRequiredCryptoJs;
+function requireCryptoJs() {
+ if (hasRequiredCryptoJs) return cryptoJs$1.exports;
+ hasRequiredCryptoJs = 1;
+ (function(module, exports) {
+ (function(root, factory, undef) {
+ {
+ module.exports = factory(requireCore(), requireX64Core(), requireLibTypedarrays(), requireEncUtf16(), requireEncBase64(), requireEncBase64url(), requireMd5(), requireSha1(), requireSha256(), requireSha224(), requireSha512(), requireSha384(), requireSha3(), requireRipemd160(), requireHmac(), requirePbkdf2(), requireEvpkdf(), requireCipherCore(), requireModeCfb(), requireModeCtr(), requireModeCtrGladman(), requireModeOfb(), requireModeEcb(), requirePadAnsix923(), requirePadIso10126(), requirePadIso97971(), requirePadZeropadding(), requirePadNopadding(), requireFormatHex(), requireAes(), requireTripledes(), requireRc4(), requireRabbit(), requireRabbitLegacy(), requireBlowfish());
+ }
+ })(cryptoJs, function(CryptoJS) {
+ return CryptoJS;
+ });
+ })(cryptoJs$1);
+ return cryptoJs$1.exports;
+}
+var cryptoJsExports = requireCryptoJs();
+const appUrl = () => {
+ return window.location.port !== 6970 ? `http://${window.location.hostname}:6970` : "";
+};
+const isLocal = () => {
+ return window.location.hostname === "127.0.0.1" || window.location.hostname === "localhost";
+};
+const byteToHex = [];
+for (let i = 0; i < 256; ++i) {
+ byteToHex.push((i + 256).toString(16).slice(1));
+}
+function unsafeStringify(arr, offset = 0) {
+ return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
+}
+let getRandomValues;
+const rnds8 = new Uint8Array(16);
+function rng() {
+ if (!getRandomValues) {
+ if (typeof crypto === "undefined" || !crypto.getRandomValues) {
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
+ }
+ getRandomValues = crypto.getRandomValues.bind(crypto);
+ }
+ return getRandomValues(rnds8);
+}
+const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto);
+const native = { randomUUID };
+function v4(options, buf, offset) {
+ var _a;
+ if (native.randomUUID && true && !options) {
+ return native.randomUUID();
+ }
+ options = options || {};
+ const rnds = options.random ?? ((_a = options.rng) == null ? void 0 : _a.call(options)) ?? rng();
+ if (rnds.length < 16) {
+ throw new Error("Random bytes length must be >= 16");
+ }
+ rnds[6] = rnds[6] & 15 | 64;
+ rnds[8] = rnds[8] & 63 | 128;
+ return unsafeStringify(rnds);
+}
+const encryptAES = (key, str) => {
+ key = keyPad(key);
+ let iv = cryptoJsExports.enc.Utf8.parse("5380045276373006");
+ let encrypted = cryptoJsExports.AES.encrypt(str, key, {
+ iv,
+ padding: cryptoJsExports.pad.Pkcs7
+ });
+ return encrypted.toString();
+};
+const decryptAES = (key, str) => {
+ key = keyPad(key);
+ let iv = cryptoJsExports.enc.Utf8.parse("5380045276373006");
+ let encrypted = cryptoJsExports.AES.decrypt(str.toString(), key, {
+ iv,
+ padding: cryptoJsExports.pad.Pkcs7
+ });
+ return encrypted.toString(cryptoJsExports.enc.Utf8);
+};
+const AuthCall = (data) => {
+ const device = useDeviceStore();
+ return {
+ uuid: device.uuid(),
+ d: encryptAES(device.key(), JSON.stringify(data))
+ };
+};
+function keyPad(key) {
+ let returnKey = key;
+ if (key.length == 4) {
+ returnKey = key + "9ebWgVO9cpLeZ1PkXYcPvE0NZie0";
+ }
+ return cryptoJsExports.enc.Utf8.parse(returnKey);
+}
+const getDateStr = () => {
+ const date = /* @__PURE__ */ new Date();
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0");
+ const day = String(date.getDate()).padStart(2, "0");
+ return `${year}${month}${day}`;
+};
+const useDeviceStore = /* @__PURE__ */ defineStore("device", () => {
+ const current = ref({
+ uuid: false,
+ key: false
+ });
+ const remote = ref([]);
+ const server = ref({
+ status: false
+ });
+ const uuid = () => {
+ if (!current.value.uuid && localStorage.getItem("deviceId")) {
+ current.value.uuid = localStorage.getItem("deviceId");
+ } else if (!current.value.uuid) {
+ current.value.uuid = setDeviceId();
+ }
+ return current.value.uuid;
+ };
+ const setDeviceId = () => {
+ const uuid2 = v4();
+ localStorage.setItem("deviceId", uuid2);
+ return uuid2;
+ };
+ const key = () => {
+ if (!current.value.key && localStorage.getItem("deviceKey")) {
+ current.value.key = localStorage.getItem("deviceKey");
+ }
+ return current.value.key;
+ };
+ const setDeviceKey = (key2) => {
+ current.value.key = key2;
+ localStorage.setItem("deviceKey", key2);
+ };
+ const removeDeviceKey = () => {
+ current.value.key = false;
+ localStorage.removeItem("deviceKey");
+ };
+ const serverGetRemotes = async (remoteUuid) => {
+ axios.post(appUrl() + "/device/list", { uuid: remoteUuid }).then((data) => {
+ if (data.data.devices) remote.value = data.data.devices;
+ });
+ };
+ const serverStartLink = async (deviceUuid) => {
+ const request = await axios.post(appUrl() + "/device/link/start", { uuid: deviceUuid });
+ return request.data;
+ };
+ const remoteCheckServerAccess = async () => {
+ const check = await axios.post(appUrl() + "/device/access/check", { uuid: uuid() });
+ server.value.access = check.data;
+ return check.data;
+ };
+ const remoteRequestServerAccess = async (deviceName, deviceType) => {
+ const request = await axios.post(appUrl() + "/device/access/request", {
+ uuid: uuid(),
+ name: deviceName,
+ type: deviceType
+ });
+ return request;
+ };
+ const remotePingLink = async (cb) => {
+ const pingInterval = setInterval(() => {
+ axios.post(appUrl() + "/device/link/ping", { uuid: uuid() }).then((data) => {
+ if (data.data) {
+ clearInterval(pingInterval);
+ cb(data.data);
+ }
+ });
+ }, 1e3);
+ };
+ const remoteHandshake = async (key2) => {
+ const handshake = await axios.post(appUrl() + "/device/handshake", {
+ uuid: uuid(),
+ shake: encryptAES(key2, getDateStr())
+ });
+ console.log(handshake);
+ return handshake.data;
+ };
+ return {
+ remote,
+ server,
+ uuid,
+ setDeviceId,
+ key,
+ setDeviceKey,
+ removeDeviceKey,
+ serverGetRemotes,
+ serverStartLink,
+ remoteCheckServerAccess,
+ remoteRequestServerAccess,
+ remotePingLink,
+ remoteHandshake
+ };
+});
+const _export_sfc = (sfc, props) => {
+ const target = sfc.__vccOpts || sfc;
+ for (const [key, val] of props) {
+ target[key] = val;
+ }
+ return target;
+};
+const _sfc_main$1 = {
+ __name: "App",
+ setup(__props) {
+ const device = useDeviceStore();
+ onMounted(() => {
+ device.uuid();
+ });
+ return (_ctx, _cache) => {
+ return openBlock(), createElementBlock(Fragment, null, [
+ _cache[0] || (_cache[0] = createBaseVNode("div", { class: "app-background" }, [
+ createBaseVNode("img", {
+ src: _imports_0$1,
+ "aria-hidden": "true"
+ }),
+ createBaseVNode("img", {
+ src: _imports_1,
+ class: "logo",
+ "aria-hidden": "true"
+ })
+ ], -1)),
+ createVNode(_sfc_main$2),
+ createVNode(unref(RouterView))
+ ], 64);
+ };
+ }
+};
+const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-bf34f349"]]);
+const scriptRel = "modulepreload";
+const assetsURL = function(dep) {
+ return "/" + dep;
+};
+const seen = {};
+const __vitePreload = function preload(baseModule, deps, importerUrl) {
+ let promise = Promise.resolve();
+ if (deps && deps.length > 0) {
+ document.getElementsByTagName("link");
+ const cspNonceMeta = document.querySelector(
+ "meta[property=csp-nonce]"
+ );
+ const cspNonce = (cspNonceMeta == null ? void 0 : cspNonceMeta.nonce) || (cspNonceMeta == null ? void 0 : cspNonceMeta.getAttribute("nonce"));
+ promise = Promise.allSettled(
+ deps.map((dep) => {
+ dep = assetsURL(dep);
+ if (dep in seen) return;
+ seen[dep] = true;
+ const isCss = dep.endsWith(".css");
+ const cssSelector = isCss ? '[rel="stylesheet"]' : "";
+ if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) {
+ return;
+ }
+ const link = document.createElement("link");
+ link.rel = isCss ? "stylesheet" : scriptRel;
+ if (!isCss) {
+ link.as = "script";
+ }
+ link.crossOrigin = "";
+ link.href = dep;
+ if (cspNonce) {
+ link.setAttribute("nonce", cspNonce);
+ }
+ document.head.appendChild(link);
+ if (isCss) {
+ return new Promise((res, rej) => {
+ link.addEventListener("load", res);
+ link.addEventListener(
+ "error",
+ () => rej(new Error(`Unable to preload CSS for ${dep}`))
+ );
+ });
+ }
+ })
+ );
+ }
+ function handlePreloadError(err) {
+ const e = new Event("vite:preloadError", {
+ cancelable: true
+ });
+ e.payload = err;
+ window.dispatchEvent(e);
+ if (!e.defaultPrevented) {
+ throw err;
+ }
+ }
+ return promise.then((res) => {
+ for (const item of res || []) {
+ if (item.status !== "rejected") continue;
+ handlePreloadError(item.reason);
+ }
+ return baseModule().catch(handlePreloadError);
+ });
+};
+const _sfc_main = {};
+const _hoisted_1 = { id: "dashboard" };
+function _sfc_render(_ctx, _cache) {
+ return openBlock(), createElementBlock("div", _hoisted_1);
+}
+const HomeView = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
+const router = createRouter({
+ history: createWebHistory("/"),
+ routes: [
+ {
+ path: "/",
+ name: "home",
+ component: HomeView
+ },
+ {
+ path: "/panels",
+ name: "panels",
+ component: () => __vitePreload(() => import("./PanelsView-DHxhdGwy.js"), true ? [] : void 0)
+ },
+ {
+ path: "/macros",
+ name: "macros",
+ component: () => __vitePreload(() => import("./MacrosView-Bf1eb3go.js"), true ? __vite__mapDeps([0,1,2,3]) : void 0)
+ },
+ {
+ path: "/devices",
+ name: "devices",
+ component: () => __vitePreload(() => import("./DevicesView-DqasecOn.js"), true ? __vite__mapDeps([4,1,2,5]) : void 0)
+ },
+ {
+ path: "/settings",
+ name: "settings",
+ component: () => __vitePreload(() => import("./SettingsView-CVQl1jsc.js"), true ? [] : void 0)
+ }
+ // {
+ // path: '/about',
+ // name: 'about',
+ // // route level code-splitting
+ // // this generates a separate chunk (About.[hash].js) for this route
+ // // which is lazy-loaded when the route is visited.
+ // component: () => import('../views/AboutView.vue'),
+ // },
+ ]
+});
+const app = createApp(App);
+app.use(createPinia());
+app.use(router);
+app.mount("#app");
+export {
+ AuthCall as A,
+ IconDevices as B,
+ decryptAES as C,
+ computed as D,
+ IconX as E,
+ Fragment as F,
+ IconKeyboard as I,
+ _export_sfc as _,
+ createVueComponent as a,
+ onMounted as b,
+ createElementBlock as c,
+ axios as d,
+ appUrl as e,
+ createBaseVNode as f,
+ renderList as g,
+ createVNode as h,
+ createTextVNode as i,
+ withModifiers as j,
+ isLocal as k,
+ defineStore as l,
+ ref as m,
+ onUpdated as n,
+ openBlock as o,
+ createCommentVNode as p,
+ normalizeClass as q,
+ reactive as r,
+ createBlock as s,
+ toDisplayString as t,
+ unref as u,
+ renderSlot as v,
+ withCtx as w,
+ withDirectives as x,
+ vModelText as y,
+ useDeviceStore as z
+};
diff --git a/public/assets/index-oAtpp-VZ.js b/public/assets/index-oAtpp-VZ.js
deleted file mode 100644
index 46d70d0..0000000
--- a/public/assets/index-oAtpp-VZ.js
+++ /dev/null
@@ -1,110 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PanelsView-Bnnsxhnr.js","assets/AccordionComp-D0eDAM6d.js","assets/AccordionComp-CsKCEntL.css","assets/IconTrash-DtIpQ-M_.js","assets/PanelsView-DtMSunDc.css","assets/MacrosView-CE74eyGa.js","assets/DialogComp-CyRyORDj.js","assets/DialogComp-Dr-kHiJQ.css","assets/MacrosView-B-lS0uCi.css","assets/DevicesView-C9HVDkwf.js","assets/DevicesView-BMkQ6MZ2.css"])))=>i.map(i=>d[i]);
-(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))n(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function r(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(s){if(s.ep)return;s.ep=!0;const o=r(s);fetch(s.href,o)}})();const ol="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20140%2080'%20style='enable-background:new%200%200%20140%2080;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:url(%23SVGID_1_);}%20.st1{fill:url(%23SVGID_2_);}%20.st2{fill:url(%23SVGID_3_);}%20.st3{fill:url(%23SVGID_4_);}%20.st4{fill:url(%23SVGID_5_);}%20.st5{fill:url(%23SVGID_6_);}%20.st6{fill:url(%23SVGID_7_);}%20%3c/style%3e%3clinearGradient%20id='SVGID_1_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28.05'%20x2='140'%20y2='28.05'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st0'%20d='M95.5,18.3l-0.2-0.1C95.2,18.1,95,18,94.8,18c-0.3,0-0.5,0.1-0.7,0.3L82.8,29.6l8.5,8.5l12-12L95.5,18.3z'/%3e%3clinearGradient%20id='SVGID_2_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28'%20x2='140'%20y2='28'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st1'%20d='M57.3,29.5L46,18.3c-0.2-0.2-0.5-0.3-0.7-0.3s-0.4,0-0.5,0.1l-0.2,0.1L36.8,26l12,12L57.3,29.5z'/%3e%3clinearGradient%20id='SVGID_3_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='65.25'%20x2='140'%20y2='65.25'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st2'%20d='M94.7,67l-14-14l-8.5,8.5l11.3,11.3c1,1,2.1,1.8,3.2,2.5c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.7,8.1-2.2L94.7,67%20L94.7,67z'/%3e%3clinearGradient%20id='SVGID_4_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='32.9162'%20x2='140'%20y2='32.9162'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st3'%20d='M114,15.5l-7.8-7.8c-0.2-0.2-0.5-0.5-0.7-0.7c-5.3-4.6-12.8-5.2-18.7-1.8c-1.1,0.7-2.2,1.5-3.2,2.5L72.2,19%20l2.6,2.6l5.9,5.9L92,16.2c0.8-0.8,1.8-1.1,2.8-1.1c0.7,0,1.4,0.2,2,0.5l0.1-0.1l8.5,8.5l13.4,13.4c0.8,0.8,1.1,1.8,1.1,2.8%20s-0.4,2.1-1.1,2.8l-11.3,11.3l5,5l3.5,3.5l11.3-11.3c3.1-3.1,4.7-7.2,4.7-11.3c0-4.1-1.5-8.2-4.6-11.3L114,15.5z'/%3e%3clinearGradient%20id='SVGID_5_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='38.2163'%20x2='140'%20y2='38.2163'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st4'%20d='M105.4,56.5l-3.5-3.5l-4.5-4.5L81.2,32.2l-8.5-8.5l-2.6-2.6L56.6,7.7c-1-1-2.1-1.8-3.2-2.5%20C47.6,1.8,40,2.4,34.8,7c-0.3,0.2-0.5,0.4-0.7,0.7l-7.8,7.8L12.8,28.9C9.7,32,8.1,36.1,8.1,40.2c0,4.1,1.6,8.2,4.7,11.3l11.3,11.3%20l3.5-3.5l5-5L21.3,43c-0.8-0.8-1.1-1.8-1.1-2.8s0.4-2.1,1.1-2.8L34.7,24l8.5-8.5l0.1,0.1c1.5-0.9,3.6-0.7,4.8,0.6l11.3,11.3l2.1,2.1%20l8.5,8.5l2.1,2.1l8.5,8.5l16.2,16.2L97,65l8.4,8.4c0.3-0.2,0.5-0.4,0.7-0.7l7.8-7.8l-3.5-3.4L105.4,56.5z'/%3e%3clinearGradient%20id='SVGID_6_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='59.85'%20x2='140'%20y2='59.85'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st5'%20d='M70.1,42.3l-8.5,8.5L45.4,67l-0.1,0.1L40.4,72l-3.2,3.2c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.8,8.1-2.2%20c1.1-0.7,2.2-1.5,3.2-2.5L70,59.3l8.5-8.5L70.1,42.3z'/%3e%3clinearGradient%20id='SVGID_7_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='52.6'%20x2='140'%20y2='52.6'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st6'%20d='M43.1,65.1l0.1-0.1l16.2-16.2l8.5-8.5l-8.4-8.6L51,40.2L38.2,53l-3.5,3.5l-5,5L26.2,65l7.8,7.8%20c0.2,0.2,0.5,0.5,0.7,0.7l3.5-3.5L43.1,65.1z'/%3e%3c/svg%3e";/**
-* @vue/shared v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function ys(e){const t=Object.create(null);for(const r of e.split(","))t[r]=1;return r=>r in t}const Ae={},c0=[],mt=()=>{},il=()=>!1,nn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Es=e=>e.startsWith("onUpdate:"),je=Object.assign,_s=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},al=Object.prototype.hasOwnProperty,Ce=(e,t)=>al.call(e,t),se=Array.isArray,l0=e=>W0(e)==="[object Map]",sn=e=>W0(e)==="[object Set]",Zs=e=>W0(e)==="[object Date]",ae=e=>typeof e=="function",Re=e=>typeof e=="string",ft=e=>typeof e=="symbol",Fe=e=>e!==null&&typeof e=="object",Gi=e=>(Fe(e)||ae(e))&&ae(e.then)&&ae(e.catch),Ki=Object.prototype.toString,W0=e=>Ki.call(e),cl=e=>W0(e).slice(8,-1),Xi=e=>W0(e)==="[object Object]",Cs=e=>Re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,D0=ys(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),on=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},ll=/-(\w)/g,st=on(e=>e.replace(ll,(t,r)=>r?r.toUpperCase():"")),fl=/\B([A-Z])/g,e0=on(e=>e.replace(fl,"-$1").toLowerCase()),an=on(e=>e.charAt(0).toUpperCase()+e.slice(1)),Sn=on(e=>e?`on${an(e)}`:""),Lt=(e,t)=>!Object.is(e,t),rr=(e,...t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:r})},Vr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Ys;const cn=()=>Ys||(Ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function bs(e){if(se(e)){const t={};for(let r=0;r{if(r){const n=r.split(xl);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function at(e){let t="";if(Re(e))t=e;else if(se(e))for(let r=0;rln(r,t))}const Yi=e=>!!(e&&e.__v_isRef===!0),it=e=>Re(e)?e:e==null?"":se(e)||Fe(e)&&(e.toString===Ki||!ae(e.toString))?Yi(e)?it(e.value):JSON.stringify(e,Ji,2):String(e),Ji=(e,t)=>Yi(t)?Ji(e,t.value):l0(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,s],o)=>(r[Rn(n,o)+" =>"]=s,r),{})}:sn(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Rn(r))}:ft(t)?Rn(t):Fe(t)&&!se(t)&&!Xi(t)?String(t):t,Rn=(e,t="")=>{var r;return ft(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/**
-* @vue/reactivity v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let We;class ea{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=We,!t&&We&&(this.index=(We.scopes||(We.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,r;if(this.scopes)for(t=0,r=this.scopes.length;t0)return;if(S0){let t=S0;for(S0=void 0;t;){const r=t.next;t.next=void 0,t.flags&=-9,t=r}}let e;for(;w0;){let t=w0;for(w0=void 0;t;){const r=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=r}}if(e)throw e}function ia(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function aa(e){let t,r=e.depsTail,n=r;for(;n;){const s=n.prevDep;n.version===-1?(n===r&&(r=s),Fs(n),El(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=s}e.deps=t,e.depsTail=r}function Kn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ca(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ca(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===H0))return;e.globalVersion=H0;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Kn(e)){e.flags&=-3;return}const r=Be,n=lt;Be=e,lt=!0;try{ia(e);const s=e.fn(e._value);(t.version===0||Lt(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Be=r,lt=n,aa(e),e.flags&=-3}}function Fs(e,t=!1){const{dep:r,prevSub:n,nextSub:s}=e;if(n&&(n.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=n,e.nextSub=void 0),r.subs===e&&(r.subs=n,!n&&r.computed)){r.computed.flags&=-5;for(let o=r.computed.deps;o;o=o.nextDep)Fs(o,!0)}!t&&!--r.sc&&r.map&&r.map.delete(r.key)}function El(e){const{prevDep:t,nextDep:r}=e;t&&(t.nextDep=r,e.prevDep=void 0),r&&(r.prevDep=t,e.nextDep=void 0)}let lt=!0;const la=[];function Nt(){la.push(lt),lt=!1}function $t(){const e=la.pop();lt=e===void 0?!0:e}function Js(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const r=Be;Be=void 0;try{t()}finally{Be=r}}}let H0=0;class _l{constructor(t,r){this.sub=t,this.dep=r,this.version=r.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ds{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Be||!lt||Be===this.computed)return;let r=this.activeLink;if(r===void 0||r.sub!==Be)r=this.activeLink=new _l(Be,this),Be.deps?(r.prevDep=Be.depsTail,Be.depsTail.nextDep=r,Be.depsTail=r):Be.deps=Be.depsTail=r,fa(r);else if(r.version===-1&&(r.version=this.version,r.nextDep)){const n=r.nextDep;n.prevDep=r.prevDep,r.prevDep&&(r.prevDep.nextDep=n),r.prevDep=Be.depsTail,r.nextDep=void 0,Be.depsTail.nextDep=r,Be.depsTail=r,Be.deps===r&&(Be.deps=n)}return r}trigger(t){this.version++,H0++,this.notify(t)}notify(t){As();try{for(let r=this.subs;r;r=r.prevSub)r.sub.notify()&&r.sub.dep.notify()}finally{Bs()}}}function fa(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)fa(n)}const r=e.dep.subs;r!==e&&(e.prevSub=r,r&&(r.nextSub=e)),e.dep.subs=e}}const Wr=new WeakMap,Xt=Symbol(""),Xn=Symbol(""),M0=Symbol("");function Ue(e,t,r){if(lt&&Be){let n=Wr.get(e);n||Wr.set(e,n=new Map);let s=n.get(r);s||(n.set(r,s=new Ds),s.map=n,s.key=r),s.track()}}function Bt(e,t,r,n,s,o){const i=Wr.get(e);if(!i){H0++;return}const a=f=>{f&&f.trigger()};if(As(),t==="clear")i.forEach(a);else{const f=se(e),c=f&&Cs(r);if(f&&r==="length"){const l=Number(n);i.forEach((u,x)=>{(x==="length"||x===M0||!ft(x)&&x>=l)&&a(u)})}else switch((r!==void 0||i.has(void 0))&&a(i.get(r)),c&&a(i.get(M0)),t){case"add":f?c&&a(i.get("length")):(a(i.get(Xt)),l0(e)&&a(i.get(Xn)));break;case"delete":f||(a(i.get(Xt)),l0(e)&&a(i.get(Xn)));break;case"set":l0(e)&&a(i.get(Xt));break}}Bs()}function Cl(e,t){const r=Wr.get(e);return r&&r.get(t)}function s0(e){const t=ve(e);return t===e?t:(Ue(t,"iterate",M0),rt(e)?t:t.map(qe))}function fn(e){return Ue(e=ve(e),"iterate",M0),e}const bl={__proto__:null,[Symbol.iterator](){return Pn(this,Symbol.iterator,qe)},concat(...e){return s0(this).concat(...e.map(t=>se(t)?s0(t):t))},entries(){return Pn(this,"entries",e=>(e[1]=qe(e[1]),e))},every(e,t){return Ct(this,"every",e,t,void 0,arguments)},filter(e,t){return Ct(this,"filter",e,t,r=>r.map(qe),arguments)},find(e,t){return Ct(this,"find",e,t,qe,arguments)},findIndex(e,t){return Ct(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ct(this,"findLast",e,t,qe,arguments)},findLastIndex(e,t){return Ct(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ct(this,"forEach",e,t,void 0,arguments)},includes(...e){return On(this,"includes",e)},indexOf(...e){return On(this,"indexOf",e)},join(e){return s0(this).join(e)},lastIndexOf(...e){return On(this,"lastIndexOf",e)},map(e,t){return Ct(this,"map",e,t,void 0,arguments)},pop(){return E0(this,"pop")},push(...e){return E0(this,"push",e)},reduce(e,...t){return eo(this,"reduce",e,t)},reduceRight(e,...t){return eo(this,"reduceRight",e,t)},shift(){return E0(this,"shift")},some(e,t){return Ct(this,"some",e,t,void 0,arguments)},splice(...e){return E0(this,"splice",e)},toReversed(){return s0(this).toReversed()},toSorted(e){return s0(this).toSorted(e)},toSpliced(...e){return s0(this).toSpliced(...e)},unshift(...e){return E0(this,"unshift",e)},values(){return Pn(this,"values",qe)}};function Pn(e,t,r){const n=fn(e),s=n[t]();return n!==e&&!rt(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.value&&(o.value=r(o.value)),o}),s}const Al=Array.prototype;function Ct(e,t,r,n,s,o){const i=fn(e),a=i!==e&&!rt(e),f=i[t];if(f!==Al[t]){const u=f.apply(e,o);return a?qe(u):u}let c=r;i!==e&&(a?c=function(u,x){return r.call(this,qe(u),x,e)}:r.length>2&&(c=function(u,x){return r.call(this,u,x,e)}));const l=f.call(i,c,n);return a&&s?s(l):l}function eo(e,t,r,n){const s=fn(e);let o=r;return s!==e&&(rt(e)?r.length>3&&(o=function(i,a,f){return r.call(this,i,a,f,e)}):o=function(i,a,f){return r.call(this,i,qe(a),f,e)}),s[t](o,...n)}function On(e,t,r){const n=ve(e);Ue(n,"iterate",M0);const s=n[t](...r);return(s===-1||s===!1)&&Rs(r[0])?(r[0]=ve(r[0]),n[t](...r)):s}function E0(e,t,r=[]){Nt(),As();const n=ve(e)[t].apply(e,r);return Bs(),$t(),n}const Bl=ys("__proto__,__v_isRef,__isVue"),ua=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ft));function Fl(e){ft(e)||(e=String(e));const t=ve(this);return Ue(t,"has",e),t.hasOwnProperty(e)}class xa{constructor(t=!1,r=!1){this._isReadonly=t,this._isShallow=r}get(t,r,n){if(r==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(r==="__v_isReactive")return!s;if(r==="__v_isReadonly")return s;if(r==="__v_isShallow")return o;if(r==="__v_raw")return n===(s?o?Ll:va:o?pa:ha).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const i=se(t);if(!s){let f;if(i&&(f=bl[r]))return f;if(r==="hasOwnProperty")return Fl}const a=Reflect.get(t,r,Se(t)?t:n);return(ft(r)?ua.has(r):Bl(r))||(s||Ue(t,"get",r),o)?a:Se(a)?i&&Cs(r)?a:a.value:Fe(a)?s?ma(a):t0(a):a}}class da extends xa{constructor(t=!1){super(!1,t)}set(t,r,n,s){let o=t[r];if(!this._isShallow){const f=Yt(o);if(!rt(n)&&!Yt(n)&&(o=ve(o),n=ve(n)),!se(t)&&Se(o)&&!Se(n))return f?!1:(o.value=n,!0)}const i=se(t)&&Cs(r)?Number(r)e,J0=e=>Reflect.getPrototypeOf(e);function kl(e,t,r){return function(...n){const s=this.__v_raw,o=ve(s),i=l0(o),a=e==="entries"||e===Symbol.iterator&&i,f=e==="keys"&&i,c=s[e](...n),l=r?Qn:t?Zn:qe;return!t&&Ue(o,"iterate",f?Xn:Xt),{next(){const{value:u,done:x}=c.next();return x?{value:u,done:x}:{value:a?[l(u[0]),l(u[1])]:l(u),done:x}},[Symbol.iterator](){return this}}}}function er(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Pl(e,t){const r={get(s){const o=this.__v_raw,i=ve(o),a=ve(s);e||(Lt(s,a)&&Ue(i,"get",s),Ue(i,"get",a));const{has:f}=J0(i),c=t?Qn:e?Zn:qe;if(f.call(i,s))return c(o.get(s));if(f.call(i,a))return c(o.get(a));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Ue(ve(s),"iterate",Xt),Reflect.get(s,"size",s)},has(s){const o=this.__v_raw,i=ve(o),a=ve(s);return e||(Lt(s,a)&&Ue(i,"has",s),Ue(i,"has",a)),s===a?o.has(s):o.has(s)||o.has(a)},forEach(s,o){const i=this,a=i.__v_raw,f=ve(a),c=t?Qn:e?Zn:qe;return!e&&Ue(f,"iterate",Xt),a.forEach((l,u)=>s.call(o,c(l),c(u),i))}};return je(r,e?{add:er("add"),set:er("set"),delete:er("delete"),clear:er("clear")}:{add(s){!t&&!rt(s)&&!Yt(s)&&(s=ve(s));const o=ve(this);return J0(o).has.call(o,s)||(o.add(s),Bt(o,"add",s,s)),this},set(s,o){!t&&!rt(o)&&!Yt(o)&&(o=ve(o));const i=ve(this),{has:a,get:f}=J0(i);let c=a.call(i,s);c||(s=ve(s),c=a.call(i,s));const l=f.call(i,s);return i.set(s,o),c?Lt(o,l)&&Bt(i,"set",s,o):Bt(i,"add",s,o),this},delete(s){const o=ve(this),{has:i,get:a}=J0(o);let f=i.call(o,s);f||(s=ve(s),f=i.call(o,s)),a&&a.call(o,s);const c=o.delete(s);return f&&Bt(o,"delete",s,void 0),c},clear(){const s=ve(this),o=s.size!==0,i=s.clear();return o&&Bt(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{r[s]=kl(s,e,t)}),r}function ws(e,t){const r=Pl(e,t);return(n,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?n:Reflect.get(Ce(r,s)&&s in n?r:n,s,o)}const Ol={get:ws(!1,!1)},Tl={get:ws(!1,!0)},Il={get:ws(!0,!1)};const ha=new WeakMap,pa=new WeakMap,va=new WeakMap,Ll=new WeakMap;function Hl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ml(e){return e.__v_skip||!Object.isExtensible(e)?0:Hl(cl(e))}function t0(e){return Yt(e)?e:Ss(e,!1,wl,Ol,ha)}function ga(e){return Ss(e,!1,Rl,Tl,pa)}function ma(e){return Ss(e,!0,Sl,Il,va)}function Ss(e,t,r,n,s){if(!Fe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=Ml(e);if(i===0)return e;const a=new Proxy(e,i===2?n:r);return s.set(e,a),a}function Ht(e){return Yt(e)?Ht(e.__v_raw):!!(e&&e.__v_isReactive)}function Yt(e){return!!(e&&e.__v_isReadonly)}function rt(e){return!!(e&&e.__v_isShallow)}function Rs(e){return e?!!e.__v_raw:!1}function ve(e){const t=e&&e.__v_raw;return t?ve(t):e}function ks(e){return!Ce(e,"__v_skip")&&Object.isExtensible(e)&&Qi(e,"__v_skip",!0),e}const qe=e=>Fe(e)?t0(e):e,Zn=e=>Fe(e)?ma(e):e;function Se(e){return e?e.__v_isRef===!0:!1}function yt(e){return ya(e,!1)}function Nl(e){return ya(e,!0)}function ya(e,t){return Se(e)?e:new $l(e,t)}class $l{constructor(t,r){this.dep=new Ds,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=r?t:ve(t),this._value=r?t:qe(t),this.__v_isShallow=r}get value(){return this.dep.track(),this._value}set value(t){const r=this._rawValue,n=this.__v_isShallow||rt(t)||Yt(t);t=n?t:ve(t),Lt(t,r)&&(this._rawValue=t,this._value=n?t:qe(t),this.dep.trigger())}}function fe(e){return Se(e)?e.value:e}const Ul={get:(e,t,r)=>t==="__v_raw"?e:fe(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const s=e[t];return Se(s)&&!Se(r)?(s.value=r,!0):Reflect.set(e,t,r,n)}};function Ea(e){return Ht(e)?e:new Proxy(e,Ul)}function ql(e){const t=se(e)?new Array(e.length):{};for(const r in e)t[r]=jl(e,r);return t}class zl{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Cl(ve(this._object),this._key)}}function jl(e,t,r){const n=e[t];return Se(n)?n:new zl(e,t,r)}class Vl{constructor(t,r,n){this.fn=t,this.setter=r,this._value=void 0,this.dep=new Ds(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=H0-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!r,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&Be!==this)return oa(this,!0),!0}get value(){const t=this.dep.track();return ca(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Wl(e,t,r=!1){let n,s;return ae(e)?n=e:(n=e.get,s=e.set),new Vl(n,s,r)}const tr={},Gr=new WeakMap;let Vt;function Gl(e,t=!1,r=Vt){if(r){let n=Gr.get(r);n||Gr.set(r,n=[]),n.push(e)}}function Kl(e,t,r=Ae){const{immediate:n,deep:s,once:o,scheduler:i,augmentJob:a,call:f}=r,c=y=>s?y:rt(y)||s===!1||s===0?Ft(y,1):Ft(y);let l,u,x,d,h=!1,p=!1;if(Se(e)?(u=()=>e.value,h=rt(e)):Ht(e)?(u=()=>c(e),h=!0):se(e)?(p=!0,h=e.some(y=>Ht(y)||rt(y)),u=()=>e.map(y=>{if(Se(y))return y.value;if(Ht(y))return c(y);if(ae(y))return f?f(y,2):y()})):ae(e)?t?u=f?()=>f(e,2):e:u=()=>{if(x){Nt();try{x()}finally{$t()}}const y=Vt;Vt=l;try{return f?f(e,3,[d]):e(d)}finally{Vt=y}}:u=mt,t&&s){const y=u,b=s===!0?1/0:s;u=()=>Ft(y(),b)}const v=ra(),C=()=>{l.stop(),v&&v.active&&_s(v.effects,l)};if(o&&t){const y=t;t=(...b)=>{y(...b),C()}}let g=p?new Array(e.length).fill(tr):tr;const m=y=>{if(!(!(l.flags&1)||!l.dirty&&!y))if(t){const b=l.run();if(s||h||(p?b.some((F,D)=>Lt(F,g[D])):Lt(b,g))){x&&x();const F=Vt;Vt=l;try{const D=[b,g===tr?void 0:p&&g[0]===tr?[]:g,d];f?f(t,3,D):t(...D),g=b}finally{Vt=F}}}else l.run()};return a&&a(m),l=new na(u),l.scheduler=i?()=>i(m,!1):m,d=y=>Gl(y,!1,l),x=l.onStop=()=>{const y=Gr.get(l);if(y){if(f)f(y,4);else for(const b of y)b();Gr.delete(l)}},t?n?m(!0):g=l.run():i?i(m.bind(null,!0),!0):l.run(),C.pause=l.pause.bind(l),C.resume=l.resume.bind(l),C.stop=C,C}function Ft(e,t=1/0,r){if(t<=0||!Fe(e)||e.__v_skip||(r=r||new Set,r.has(e)))return e;if(r.add(e),t--,Se(e))Ft(e.value,t,r);else if(se(e))for(let n=0;n{Ft(n,t,r)});else if(Xi(e)){for(const n in e)Ft(e[n],t,r);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&Ft(e[n],t,r)}return e}/**
-* @vue/runtime-core v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function G0(e,t,r,n){try{return n?e(...n):e()}catch(s){un(s,t,r)}}function Et(e,t,r,n){if(ae(e)){const s=G0(e,t,r,n);return s&&Gi(s)&&s.catch(o=>{un(o,t,r)}),s}if(se(e)){const s=[];for(let o=0;o>>1,s=Ge[n],o=N0(s);o=N0(r)?Ge.push(e):Ge.splice(Ql(t),0,e),e.flags|=1,Ca()}}function Ca(){Kr||(Kr=_a.then(Aa))}function Zl(e){se(e)?f0.push(...e):kt&&e.id===-1?kt.splice(i0+1,0,e):e.flags&1||(f0.push(e),e.flags|=1),Ca()}function to(e,t,r=vt+1){for(;rN0(r)-N0(n));if(f0.length=0,kt){kt.push(...t);return}for(kt=t,i0=0;i0e.id==null?e.flags&2?-1:1/0:e.id;function Aa(e){try{for(vt=0;vt{n._d&&uo(-1);const o=Xr(t);let i;try{i=e(...s)}finally{Xr(o),n._d&&uo(1)}return i};return n._n=!0,n._c=!0,n._d=!0,n}function Ap(e,t){if(Pe===null)return e;const r=gn(Pe),n=e.dirs||(e.dirs=[]);for(let s=0;se.__isTeleport;function Os(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Os(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}/*! #__NO_SIDE_EFFECTS__ */function Fa(e,t){return ae(e)?je({name:e.name},t,{setup:e}):e}function Da(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Qr(e,t,r,n,s=!1){if(se(e)){e.forEach((h,p)=>Qr(h,t&&(se(t)?t[p]:t),r,n,s));return}if(u0(n)&&!s){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Qr(e,t,r,n.component.subTree);return}const o=n.shapeFlag&4?gn(n.component):n.el,i=s?null:o,{i:a,r:f}=e,c=t&&t.r,l=a.refs===Ae?a.refs={}:a.refs,u=a.setupState,x=ve(u),d=u===Ae?()=>!1:h=>Ce(x,h);if(c!=null&&c!==f&&(Re(c)?(l[c]=null,d(c)&&(u[c]=null)):Se(c)&&(c.value=null)),ae(f))G0(f,a,12,[i,l]);else{const h=Re(f),p=Se(f);if(h||p){const v=()=>{if(e.f){const C=h?d(f)?u[f]:l[f]:f.value;s?se(C)&&_s(C,o):se(C)?C.includes(o)||C.push(o):h?(l[f]=[o],d(f)&&(u[f]=l[f])):(f.value=[o],e.k&&(l[e.k]=f.value))}else h?(l[f]=i,d(f)&&(u[f]=i)):p&&(f.value=i,e.k&&(l[e.k]=i))};i?(v.id=-1,Ze(v,r)):v()}}}cn().requestIdleCallback;cn().cancelIdleCallback;const u0=e=>!!e.type.__asyncLoader,wa=e=>e.type.__isKeepAlive;function ef(e,t){Sa(e,"a",t)}function tf(e,t){Sa(e,"da",t)}function Sa(e,t,r=He){const n=e.__wdc||(e.__wdc=()=>{let s=r;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(dn(t,n,r),r){let s=r.parent;for(;s&&s.parent;)wa(s.parent.vnode)&&rf(n,t,r,s),s=s.parent}}function rf(e,t,r,n){const s=dn(t,e,n,!0);Ra(()=>{_s(n[t],s)},r)}function dn(e,t,r=He,n=!1){if(r){const s=r[e]||(r[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Nt();const a=K0(r),f=Et(t,r,e,i);return a(),$t(),f});return n?s.unshift(o):s.push(o),o}}const Dt=e=>(t,r=He)=>{(!q0||e==="sp")&&dn(e,(...n)=>t(...n),r)},nf=Dt("bm"),hn=Dt("m"),sf=Dt("bu"),of=Dt("u"),af=Dt("bum"),Ra=Dt("um"),cf=Dt("sp"),lf=Dt("rtg"),ff=Dt("rtc");function uf(e,t=He){dn("ec",e,t)}const xf="components";function df(e,t){return pf(xf,e,!0,t)||e}const hf=Symbol.for("v-ndc");function pf(e,t,r=!0,n=!1){const s=Pe||He;if(s){const o=s.type;{const a=ru(o,!1);if(a&&(a===t||a===st(t)||a===an(st(t))))return o}const i=ro(s[e]||o[e],t)||ro(s.appContext[e],t);return!i&&n?o:i}}function ro(e,t){return e&&(e[t]||e[st(t)]||e[an(st(t))])}function Bp(e,t,r,n){let s;const o=r,i=se(e);if(i||Re(e)){const a=i&&Ht(e);let f=!1;a&&(f=!rt(e),e=fn(e)),s=new Array(e.length);for(let c=0,l=e.length;ct(a,f,void 0,o));else{const a=Object.keys(e);s=new Array(a.length);for(let f=0,c=a.length;fU0(t)?!(t.type===Mt||t.type===De&&!ka(t.children)):!0)?e:null}const Jn=e=>e?Ya(e)?gn(e):Jn(e.parent):null,R0=je(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Jn(e.parent),$root:e=>Jn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Oa(e),$forceUpdate:e=>e.f||(e.f=()=>{Ps(e.update)}),$nextTick:e=>e.n||(e.n=xn.bind(e.proxy)),$watch:e=>Hf.bind(e)}),Tn=(e,t)=>e!==Ae&&!e.__isScriptSetup&&Ce(e,t),vf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:r,setupState:n,data:s,props:o,accessCache:i,type:a,appContext:f}=e;let c;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return n[t];case 2:return s[t];case 4:return r[t];case 3:return o[t]}else{if(Tn(n,t))return i[t]=1,n[t];if(s!==Ae&&Ce(s,t))return i[t]=2,s[t];if((c=e.propsOptions[0])&&Ce(c,t))return i[t]=3,o[t];if(r!==Ae&&Ce(r,t))return i[t]=4,r[t];es&&(i[t]=0)}}const l=R0[t];let u,x;if(l)return t==="$attrs"&&Ue(e.attrs,"get",""),l(e);if((u=a.__cssModules)&&(u=u[t]))return u;if(r!==Ae&&Ce(r,t))return i[t]=4,r[t];if(x=f.config.globalProperties,Ce(x,t))return x[t]},set({_:e},t,r){const{data:n,setupState:s,ctx:o}=e;return Tn(s,t)?(s[t]=r,!0):n!==Ae&&Ce(n,t)?(n[t]=r,!0):Ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:s,propsOptions:o}},i){let a;return!!r[i]||e!==Ae&&Ce(e,i)||Tn(t,i)||(a=o[0])&&Ce(a,i)||Ce(n,i)||Ce(R0,i)||Ce(s.config.globalProperties,i)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Ce(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function no(e){return se(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let es=!0;function gf(e){const t=Oa(e),r=e.proxy,n=e.ctx;es=!1,t.beforeCreate&&so(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:a,provide:f,inject:c,created:l,beforeMount:u,mounted:x,beforeUpdate:d,updated:h,activated:p,deactivated:v,beforeDestroy:C,beforeUnmount:g,destroyed:m,unmounted:y,render:b,renderTracked:F,renderTriggered:D,errorCaptured:w,serverPrefetch:P,expose:A,inheritAttrs:S,components:L,directives:T,filters:Y}=t;if(c&&mf(c,n,null),i)for(const X in i){const ee=i[X];ae(ee)&&(n[X]=ee.bind(r))}if(s){const X=s.call(r,r);Fe(X)&&(e.data=t0(X))}if(es=!0,o)for(const X in o){const ee=o[X],de=ae(ee)?ee.bind(r,r):ae(ee.get)?ee.get.bind(r,r):mt,xe=!ae(ee)&&ae(ee.set)?ee.set.bind(r):mt,O=Ye({get:de,set:xe});Object.defineProperty(n,X,{enumerable:!0,configurable:!0,get:()=>O.value,set:N=>O.value=N})}if(a)for(const X in a)Pa(a[X],n,r,X);if(f){const X=ae(f)?f.call(r):f;Reflect.ownKeys(X).forEach(ee=>{nr(ee,X[ee])})}l&&so(l,e,"c");function Q(X,ee){se(ee)?ee.forEach(de=>X(de.bind(r))):ee&&X(ee.bind(r))}if(Q(nf,u),Q(hn,x),Q(sf,d),Q(of,h),Q(ef,p),Q(tf,v),Q(uf,w),Q(ff,F),Q(lf,D),Q(af,g),Q(Ra,y),Q(cf,P),se(A))if(A.length){const X=e.exposed||(e.exposed={});A.forEach(ee=>{Object.defineProperty(X,ee,{get:()=>r[ee],set:de=>r[ee]=de})})}else e.exposed||(e.exposed={});b&&e.render===mt&&(e.render=b),S!=null&&(e.inheritAttrs=S),L&&(e.components=L),T&&(e.directives=T),P&&Da(e)}function mf(e,t,r=mt){se(e)&&(e=ts(e));for(const n in e){const s=e[n];let o;Fe(s)?"default"in s?o=nt(s.from||n,s.default,!0):o=nt(s.from||n):o=nt(s),Se(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[n]=o}}function so(e,t,r){Et(se(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function Pa(e,t,r,n){let s=n.includes(".")?Ga(r,n):()=>r[n];if(Re(e)){const o=t[e];ae(o)&&k0(s,o)}else if(ae(e))k0(s,e.bind(r));else if(Fe(e))if(se(e))e.forEach(o=>Pa(o,t,r,n));else{const o=ae(e.handler)?e.handler.bind(r):t[e.handler];ae(o)&&k0(s,o,e)}}function Oa(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let f;return a?f=a:!s.length&&!r&&!n?f=t:(f={},s.length&&s.forEach(c=>Zr(f,c,i,!0)),Zr(f,t,i)),Fe(t)&&o.set(t,f),f}function Zr(e,t,r,n=!1){const{mixins:s,extends:o}=t;o&&Zr(e,o,r,!0),s&&s.forEach(i=>Zr(e,i,r,!0));for(const i in t)if(!(n&&i==="expose")){const a=yf[i]||r&&r[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const yf={data:oo,props:io,emits:io,methods:B0,computed:B0,beforeCreate:Ve,created:Ve,beforeMount:Ve,mounted:Ve,beforeUpdate:Ve,updated:Ve,beforeDestroy:Ve,beforeUnmount:Ve,destroyed:Ve,unmounted:Ve,activated:Ve,deactivated:Ve,errorCaptured:Ve,serverPrefetch:Ve,components:B0,directives:B0,watch:_f,provide:oo,inject:Ef};function oo(e,t){return t?e?function(){return je(ae(e)?e.call(this,this):e,ae(t)?t.call(this,this):t)}:t:e}function Ef(e,t){return B0(ts(e),ts(t))}function ts(e){if(se(e)){const t={};for(let r=0;r1)return r&&ae(t)?t.call(n&&n.proxy):t}}function Af(){return!!(He||Pe||Qt)}const Ia={},La=()=>Object.create(Ia),Ha=e=>Object.getPrototypeOf(e)===Ia;function Bf(e,t,r,n=!1){const s={},o=La();e.propsDefaults=Object.create(null),Ma(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);r?e.props=n?s:ga(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Ff(e,t,r,n){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,a=ve(s),[f]=e.propsOptions;let c=!1;if((n||i>0)&&!(i&16)){if(i&8){const l=e.vnode.dynamicProps;for(let u=0;u{f=!0;const[x,d]=Na(u,t,!0);je(i,x),d&&a.push(...d)};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}if(!o&&!f)return Fe(e)&&n.set(e,c0),c0;if(se(o))for(let l=0;le[0]==="_"||e==="$stable",Ts=e=>se(e)?e.map(gt):[gt(e)],wf=(e,t,r)=>{if(t._n)return t;const n=Ke((...s)=>Ts(t(...s)),r);return n._c=!1,n},Ua=(e,t,r)=>{const n=e._ctx;for(const s in e){if($a(s))continue;const o=e[s];if(ae(o))t[s]=wf(s,o,n);else if(o!=null){const i=Ts(o);t[s]=()=>i}}},qa=(e,t)=>{const r=Ts(t);e.slots.default=()=>r},za=(e,t,r)=>{for(const n in t)(r||n!=="_")&&(e[n]=t[n])},Sf=(e,t,r)=>{const n=e.slots=La();if(e.vnode.shapeFlag&32){const s=t._;s?(za(n,t,r),r&&Qi(n,"_",s,!0)):Ua(t,n)}else t&&qa(e,t)},Rf=(e,t,r)=>{const{vnode:n,slots:s}=e;let o=!0,i=Ae;if(n.shapeFlag&32){const a=t._;a?r&&a===1?o=!1:za(s,t,r):(o=!t.$stable,Ua(t,s)),i=t}else t&&(qa(e,t),i={default:1});if(o)for(const a in s)!$a(a)&&i[a]==null&&delete s[a]},Ze=jf;function kf(e){return Pf(e)}function Pf(e,t){const r=cn();r.__VUE__=!0;const{insert:n,remove:s,patchProp:o,createElement:i,createText:a,createComment:f,setText:c,setElementText:l,parentNode:u,nextSibling:x,setScopeId:d=mt,insertStaticContent:h}=e,p=(E,_,B,I=null,M=null,H=null,W=void 0,V=null,j=!!_.dynamicChildren)=>{if(E===_)return;E&&!_0(E,_)&&(I=k(E),N(E,M,H,!0),E=null),_.patchFlag===-2&&(j=!1,_.dynamicChildren=null);const{type:q,ref:J,shapeFlag:K}=_;switch(q){case vn:v(E,_,B,I);break;case Mt:C(E,_,B,I);break;case Ln:E==null&&g(_,B,I,W);break;case De:L(E,_,B,I,M,H,W,V,j);break;default:K&1?b(E,_,B,I,M,H,W,V,j):K&6?T(E,_,B,I,M,H,W,V,j):(K&64||K&128)&&q.process(E,_,B,I,M,H,W,V,j,Z)}J!=null&&M&&Qr(J,E&&E.ref,H,_||E,!_)},v=(E,_,B,I)=>{if(E==null)n(_.el=a(_.children),B,I);else{const M=_.el=E.el;_.children!==E.children&&c(M,_.children)}},C=(E,_,B,I)=>{E==null?n(_.el=f(_.children||""),B,I):_.el=E.el},g=(E,_,B,I)=>{[E.el,E.anchor]=h(E.children,_,B,I,E.el,E.anchor)},m=({el:E,anchor:_},B,I)=>{let M;for(;E&&E!==_;)M=x(E),n(E,B,I),E=M;n(_,B,I)},y=({el:E,anchor:_})=>{let B;for(;E&&E!==_;)B=x(E),s(E),E=B;s(_)},b=(E,_,B,I,M,H,W,V,j)=>{_.type==="svg"?W="svg":_.type==="math"&&(W="mathml"),E==null?F(_,B,I,M,H,W,V,j):P(E,_,M,H,W,V,j)},F=(E,_,B,I,M,H,W,V)=>{let j,q;const{props:J,shapeFlag:K,transition:re,dirs:oe}=E;if(j=E.el=i(E.type,H,J&&J.is,J),K&8?l(j,E.children):K&16&&w(E.children,j,null,I,M,In(E,H),W,V),oe&&zt(E,null,I,"created"),D(j,E,E.scopeId,W,I),J){for(const pe in J)pe!=="value"&&!D0(pe)&&o(j,pe,null,J[pe],H,I);"value"in J&&o(j,"value",null,J.value,H),(q=J.onVnodeBeforeMount)&&ht(q,I,E)}oe&&zt(E,null,I,"beforeMount");const le=Of(M,re);le&&re.beforeEnter(j),n(j,_,B),((q=J&&J.onVnodeMounted)||le||oe)&&Ze(()=>{q&&ht(q,I,E),le&&re.enter(j),oe&&zt(E,null,I,"mounted")},M)},D=(E,_,B,I,M)=>{if(B&&d(E,B),I)for(let H=0;H{for(let q=j;q{const V=_.el=E.el;let{patchFlag:j,dynamicChildren:q,dirs:J}=_;j|=E.patchFlag&16;const K=E.props||Ae,re=_.props||Ae;let oe;if(B&&jt(B,!1),(oe=re.onVnodeBeforeUpdate)&&ht(oe,B,_,E),J&&zt(_,E,B,"beforeUpdate"),B&&jt(B,!0),(K.innerHTML&&re.innerHTML==null||K.textContent&&re.textContent==null)&&l(V,""),q?A(E.dynamicChildren,q,V,B,I,In(_,M),H):W||ee(E,_,V,null,B,I,In(_,M),H,!1),j>0){if(j&16)S(V,K,re,B,M);else if(j&2&&K.class!==re.class&&o(V,"class",null,re.class,M),j&4&&o(V,"style",K.style,re.style,M),j&8){const le=_.dynamicProps;for(let pe=0;pe{oe&&ht(oe,B,_,E),J&&zt(_,E,B,"updated")},I)},A=(E,_,B,I,M,H,W)=>{for(let V=0;V<_.length;V++){const j=E[V],q=_[V],J=j.el&&(j.type===De||!_0(j,q)||j.shapeFlag&70)?u(j.el):B;p(j,q,J,null,I,M,H,W,!0)}},S=(E,_,B,I,M)=>{if(_!==B){if(_!==Ae)for(const H in _)!D0(H)&&!(H in B)&&o(E,H,_[H],null,M,I);for(const H in B){if(D0(H))continue;const W=B[H],V=_[H];W!==V&&H!=="value"&&o(E,H,V,W,M,I)}"value"in B&&o(E,"value",_.value,B.value,M)}},L=(E,_,B,I,M,H,W,V,j)=>{const q=_.el=E?E.el:a(""),J=_.anchor=E?E.anchor:a("");let{patchFlag:K,dynamicChildren:re,slotScopeIds:oe}=_;oe&&(V=V?V.concat(oe):oe),E==null?(n(q,B,I),n(J,B,I),w(_.children||[],B,J,M,H,W,V,j)):K>0&&K&64&&re&&E.dynamicChildren?(A(E.dynamicChildren,re,B,M,H,W,V),(_.key!=null||M&&_===M.subTree)&&ja(E,_,!0)):ee(E,_,B,J,M,H,W,V,j)},T=(E,_,B,I,M,H,W,V,j)=>{_.slotScopeIds=V,E==null?_.shapeFlag&512?M.ctx.activate(_,B,I,W,j):Y(_,B,I,M,H,W,j):te(E,_,j)},Y=(E,_,B,I,M,H,W)=>{const V=E.component=Zf(E,I,M);if(wa(E)&&(V.ctx.renderer=Z),Yf(V,!1,W),V.asyncDep){if(M&&M.registerDep(V,Q,W),!E.el){const j=V.subTree=ie(Mt);C(null,j,_,B)}}else Q(V,E,_,B,M,H,W)},te=(E,_,B)=>{const I=_.component=E.component;if(qf(E,_,B))if(I.asyncDep&&!I.asyncResolved){X(I,_,B);return}else I.next=_,I.update();else _.el=E.el,I.vnode=_},Q=(E,_,B,I,M,H,W)=>{const V=()=>{if(E.isMounted){let{next:K,bu:re,u:oe,parent:le,vnode:pe}=E;{const Ne=Va(E);if(Ne){K&&(K.el=pe.el,X(E,K,W)),Ne.asyncDep.then(()=>{E.isUnmounted||V()});return}}let ye=K,Me;jt(E,!1),K?(K.el=pe.el,X(E,K,W)):K=pe,re&&rr(re),(Me=K.props&&K.props.onVnodeBeforeUpdate)&&ht(Me,le,K,pe),jt(E,!0);const Te=lo(E),Ie=E.subTree;E.subTree=Te,p(Ie,Te,u(Ie.el),k(Ie),E,M,H),K.el=Te.el,ye===null&&zf(E,Te.el),oe&&Ze(oe,M),(Me=K.props&&K.props.onVnodeUpdated)&&Ze(()=>ht(Me,le,K,pe),M)}else{let K;const{el:re,props:oe}=_,{bm:le,m:pe,parent:ye,root:Me,type:Te}=E,Ie=u0(_);jt(E,!1),le&&rr(le),!Ie&&(K=oe&&oe.onVnodeBeforeMount)&&ht(K,ye,_),jt(E,!0);{Me.ce&&Me.ce._injectChildStyle(Te);const Ne=E.subTree=lo(E);p(null,Ne,B,I,E,M,H),_.el=Ne.el}if(pe&&Ze(pe,M),!Ie&&(K=oe&&oe.onVnodeMounted)){const Ne=_;Ze(()=>ht(K,ye,Ne),M)}(_.shapeFlag&256||ye&&u0(ye.vnode)&&ye.vnode.shapeFlag&256)&&E.a&&Ze(E.a,M),E.isMounted=!0,_=B=I=null}};E.scope.on();const j=E.effect=new na(V);E.scope.off();const q=E.update=j.run.bind(j),J=E.job=j.runIfDirty.bind(j);J.i=E,J.id=E.uid,j.scheduler=()=>Ps(J),jt(E,!0),q()},X=(E,_,B)=>{_.component=E;const I=E.vnode.props;E.vnode=_,E.next=null,Ff(E,_.props,I,B),Rf(E,_.children,B),Nt(),to(E),$t()},ee=(E,_,B,I,M,H,W,V,j=!1)=>{const q=E&&E.children,J=E?E.shapeFlag:0,K=_.children,{patchFlag:re,shapeFlag:oe}=_;if(re>0){if(re&128){xe(q,K,B,I,M,H,W,V,j);return}else if(re&256){de(q,K,B,I,M,H,W,V,j);return}}oe&8?(J&16&&ue(q,M,H),K!==q&&l(B,K)):J&16?oe&16?xe(q,K,B,I,M,H,W,V,j):ue(q,M,H,!0):(J&8&&l(B,""),oe&16&&w(K,B,I,M,H,W,V,j))},de=(E,_,B,I,M,H,W,V,j)=>{E=E||c0,_=_||c0;const q=E.length,J=_.length,K=Math.min(q,J);let re;for(re=0;reJ?ue(E,M,H,!0,!1,K):w(_,B,I,M,H,W,V,j,K)},xe=(E,_,B,I,M,H,W,V,j)=>{let q=0;const J=_.length;let K=E.length-1,re=J-1;for(;q<=K&&q<=re;){const oe=E[q],le=_[q]=j?Pt(_[q]):gt(_[q]);if(_0(oe,le))p(oe,le,B,null,M,H,W,V,j);else break;q++}for(;q<=K&&q<=re;){const oe=E[K],le=_[re]=j?Pt(_[re]):gt(_[re]);if(_0(oe,le))p(oe,le,B,null,M,H,W,V,j);else break;K--,re--}if(q>K){if(q<=re){const oe=re+1,le=oere)for(;q<=K;)N(E[q],M,H,!0),q++;else{const oe=q,le=q,pe=new Map;for(q=le;q<=re;q++){const $e=_[q]=j?Pt(_[q]):gt(_[q]);$e.key!=null&&pe.set($e.key,q)}let ye,Me=0;const Te=re-le+1;let Ie=!1,Ne=0;const qt=new Array(Te);for(q=0;q=Te){N($e,M,H,!0);continue}let tt;if($e.key!=null)tt=pe.get($e.key);else for(ye=le;ye<=re;ye++)if(qt[ye-le]===0&&_0($e,_[ye])){tt=ye;break}tt===void 0?N($e,M,H,!0):(qt[tt-le]=q+1,tt>=Ne?Ne=tt:Ie=!0,p($e,_[tt],B,null,M,H,W,V,j),Me++)}const y0=Ie?Tf(qt):c0;for(ye=y0.length-1,q=Te-1;q>=0;q--){const $e=le+q,tt=_[$e],Y0=$e+1{const{el:H,type:W,transition:V,children:j,shapeFlag:q}=E;if(q&6){O(E.component.subTree,_,B,I);return}if(q&128){E.suspense.move(_,B,I);return}if(q&64){W.move(E,_,B,Z);return}if(W===De){n(H,_,B);for(let K=0;KV.enter(H),M);else{const{leave:K,delayLeave:re,afterLeave:oe}=V,le=()=>n(H,_,B),pe=()=>{K(H,()=>{le(),oe&&oe()})};re?re(H,le,pe):pe()}else n(H,_,B)},N=(E,_,B,I=!1,M=!1)=>{const{type:H,props:W,ref:V,children:j,dynamicChildren:q,shapeFlag:J,patchFlag:K,dirs:re,cacheIndex:oe}=E;if(K===-2&&(M=!1),V!=null&&Qr(V,null,B,E,!0),oe!=null&&(_.renderCache[oe]=void 0),J&256){_.ctx.deactivate(E);return}const le=J&1&&re,pe=!u0(E);let ye;if(pe&&(ye=W&&W.onVnodeBeforeUnmount)&&ht(ye,_,E),J&6)be(E.component,B,I);else{if(J&128){E.suspense.unmount(B,I);return}le&&zt(E,null,_,"beforeUnmount"),J&64?E.type.remove(E,_,B,Z,I):q&&!q.hasOnce&&(H!==De||K>0&&K&64)?ue(q,_,B,!1,!0):(H===De&&K&384||!M&&J&16)&&ue(j,_,B),I&&z(E)}(pe&&(ye=W&&W.onVnodeUnmounted)||le)&&Ze(()=>{ye&&ht(ye,_,E),le&&zt(E,null,_,"unmounted")},B)},z=E=>{const{type:_,el:B,anchor:I,transition:M}=E;if(_===De){$(B,I);return}if(_===Ln){y(E);return}const H=()=>{s(B),M&&!M.persisted&&M.afterLeave&&M.afterLeave()};if(E.shapeFlag&1&&M&&!M.persisted){const{leave:W,delayLeave:V}=M,j=()=>W(B,H);V?V(E.el,H,j):j()}else H()},$=(E,_)=>{let B;for(;E!==_;)B=x(E),s(E),E=B;s(_)},be=(E,_,B)=>{const{bum:I,scope:M,job:H,subTree:W,um:V,m:j,a:q}=E;co(j),co(q),I&&rr(I),M.stop(),H&&(H.flags|=8,N(W,E,_,B)),V&&Ze(V,_),Ze(()=>{E.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&E.asyncDep&&!E.asyncResolved&&E.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},ue=(E,_,B,I=!1,M=!1,H=0)=>{for(let W=H;W{if(E.shapeFlag&6)return k(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const _=x(E.anchor||E.el),B=_&&_[Yl];return B?x(B):_};let U=!1;const G=(E,_,B)=>{E==null?_._vnode&&N(_._vnode,null,null,!0):p(_._vnode||null,E,_,null,null,null,B),_._vnode=E,U||(U=!0,to(),ba(),U=!1)},Z={p,um:N,m:O,r:z,mt:Y,mc:w,pc:ee,pbc:A,n:k,o:e};return{render:G,hydrate:void 0,createApp:bf(G)}}function In({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function jt({effect:e,job:t},r){r?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Of(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ja(e,t,r=!1){const n=e.children,s=t.children;if(se(n)&&se(s))for(let o=0;o>1,e[r[a]]0&&(t[n]=r[o-1]),r[o]=n)}}for(o=r.length,i=r[o-1];o-- >0;)r[o]=i,i=t[i];return r}function Va(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Va(t)}function co(e){if(e)for(let t=0;tnt(If);function k0(e,t,r){return Wa(e,t,r)}function Wa(e,t,r=Ae){const{immediate:n,deep:s,flush:o,once:i}=r,a=je({},r),f=t&&n||!t&&o!=="post";let c;if(q0){if(o==="sync"){const d=Lf();c=d.__watcherHandles||(d.__watcherHandles=[])}else if(!f){const d=()=>{};return d.stop=mt,d.resume=mt,d.pause=mt,d}}const l=He;a.call=(d,h,p)=>Et(d,l,h,p);let u=!1;o==="post"?a.scheduler=d=>{Ze(d,l&&l.suspense)}:o!=="sync"&&(u=!0,a.scheduler=(d,h)=>{h?d():Ps(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,l&&(d.id=l.uid,d.i=l))};const x=Kl(e,t,a);return q0&&(c?c.push(x):f&&x()),x}function Hf(e,t,r){const n=this.proxy,s=Re(e)?e.includes(".")?Ga(n,e):()=>n[e]:e.bind(n,n);let o;ae(t)?o=t:(o=t.handler,r=t);const i=K0(this),a=Wa(s,o.bind(n),r);return i(),a}function Ga(e,t){const r=t.split(".");return()=>{let n=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${st(t)}Modifiers`]||e[`${e0(t)}Modifiers`];function Nf(e,t,...r){if(e.isUnmounted)return;const n=e.vnode.props||Ae;let s=r;const o=t.startsWith("update:"),i=o&&Mf(n,t.slice(7));i&&(i.trim&&(s=r.map(l=>Re(l)?l.trim():l)),i.number&&(s=r.map(Vr)));let a,f=n[a=Sn(t)]||n[a=Sn(st(t))];!f&&o&&(f=n[a=Sn(e0(t))]),f&&Et(f,e,6,s);const c=n[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Et(c,e,6,s)}}function Ka(e,t,r=!1){const n=t.emitsCache,s=n.get(e);if(s!==void 0)return s;const o=e.emits;let i={},a=!1;if(!ae(e)){const f=c=>{const l=Ka(c,t,!0);l&&(a=!0,je(i,l))};!r&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}return!o&&!a?(Fe(e)&&n.set(e,null),null):(se(o)?o.forEach(f=>i[f]=null):je(i,o),Fe(e)&&n.set(e,i),i)}function pn(e,t){return!e||!nn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ce(e,t[0].toLowerCase()+t.slice(1))||Ce(e,e0(t))||Ce(e,t))}function lo(e){const{type:t,vnode:r,proxy:n,withProxy:s,propsOptions:[o],slots:i,attrs:a,emit:f,render:c,renderCache:l,props:u,data:x,setupState:d,ctx:h,inheritAttrs:p}=e,v=Xr(e);let C,g;try{if(r.shapeFlag&4){const y=s||n,b=y;C=gt(c.call(b,y,l,u,d,x,h)),g=a}else{const y=t;C=gt(y.length>1?y(u,{attrs:a,slots:i,emit:f}):y(u,null)),g=t.props?a:$f(a)}}catch(y){P0.length=0,un(y,e,1),C=ie(Mt)}let m=C;if(g&&p!==!1){const y=Object.keys(g),{shapeFlag:b}=m;y.length&&b&7&&(o&&y.some(Es)&&(g=Uf(g,o)),m=h0(m,g,!1,!0))}return r.dirs&&(m=h0(m,null,!1,!0),m.dirs=m.dirs?m.dirs.concat(r.dirs):r.dirs),r.transition&&Os(m,r.transition),C=m,Xr(v),C}const $f=e=>{let t;for(const r in e)(r==="class"||r==="style"||nn(r))&&((t||(t={}))[r]=e[r]);return t},Uf=(e,t)=>{const r={};for(const n in e)(!Es(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function qf(e,t,r){const{props:n,children:s,component:o}=e,{props:i,children:a,patchFlag:f}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&f>=0){if(f&1024)return!0;if(f&16)return n?fo(n,i,c):!!i;if(f&8){const l=t.dynamicProps;for(let u=0;ue.__isSuspense;function jf(e,t){t&&t.pendingBranch?se(e)?t.effects.push(...e):t.effects.push(e):Zl(e)}const De=Symbol.for("v-fgt"),vn=Symbol.for("v-txt"),Mt=Symbol.for("v-cmt"),Ln=Symbol.for("v-stc"),P0=[];let Je=null;function ge(e=!1){P0.push(Je=e?null:[])}function Vf(){P0.pop(),Je=P0[P0.length-1]||null}let $0=1;function uo(e,t=!1){$0+=e,e<0&&Je&&t&&(Je.hasOnce=!0)}function Qa(e){return e.dynamicChildren=$0>0?Je||c0:null,Vf(),$0>0&&Je&&Je.push(e),e}function we(e,t,r,n,s,o){return Qa(ne(e,t,r,n,s,o,!0))}function ct(e,t,r,n,s){return Qa(ie(e,t,r,n,s,!0))}function U0(e){return e?e.__v_isVNode===!0:!1}function _0(e,t){return e.type===t.type&&e.key===t.key}const Za=({key:e})=>e??null,sr=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?Re(e)||Se(e)||ae(e)?{i:Pe,r:e,k:t,f:!!r}:e:null);function ne(e,t=null,r=null,n=0,s=null,o=e===De?0:1,i=!1,a=!1){const f={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Za(t),ref:t&&sr(t),scopeId:Ba,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:n,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Pe};return a?(Is(f,r),o&128&&e.normalize(f)):r&&(f.shapeFlag|=Re(r)?8:16),$0>0&&!i&&Je&&(f.patchFlag>0||o&6)&&f.patchFlag!==32&&Je.push(f),f}const ie=Wf;function Wf(e,t=null,r=null,n=0,s=null,o=!1){if((!e||e===hf)&&(e=Mt),U0(e)){const a=h0(e,t,!0);return r&&Is(a,r),$0>0&&!o&&Je&&(a.shapeFlag&6?Je[Je.indexOf(e)]=a:Je.push(a)),a.patchFlag=-2,a}if(nu(e)&&(e=e.__vccOpts),t){t=Gf(t);let{class:a,style:f}=t;a&&!Re(a)&&(t.class=at(a)),Fe(f)&&(Rs(f)&&!se(f)&&(f=je({},f)),t.style=bs(f))}const i=Re(e)?1:Xa(e)?128:Jl(e)?64:Fe(e)?4:ae(e)?2:0;return ne(e,t,r,n,s,i,o,!0)}function Gf(e){return e?Rs(e)||Ha(e)?je({},e):e:null}function h0(e,t,r=!1,n=!1){const{props:s,ref:o,patchFlag:i,children:a,transition:f}=e,c=t?Kf(s||{},t):s,l={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Za(c),ref:t&&t.ref?r&&o?se(o)?o.concat(sr(t)):[o,sr(t)]:sr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==De?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:f,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&h0(e.ssContent),ssFallback:e.ssFallback&&h0(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return f&&n&&Os(l,f.clone(l)),l}function ke(e=" ",t=0){return ie(vn,null,e,t)}function Gt(e="",t=!1){return t?(ge(),ct(Mt,null,e)):ie(Mt,null,e)}function gt(e){return e==null||typeof e=="boolean"?ie(Mt):se(e)?ie(De,null,e.slice()):U0(e)?Pt(e):ie(vn,null,String(e))}function Pt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:h0(e)}function Is(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(se(t))r=16;else if(typeof t=="object")if(n&65){const s=t.default;s&&(s._c&&(s._d=!1),Is(e,s()),s._c&&(s._d=!0));return}else{r=32;const s=t._;!s&&!Ha(t)?t._ctx=Pe:s===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ae(t)?(t={default:t,_ctx:Pe},r=32):(t=String(t),n&64?(r=16,t=[ke(t)]):r=8);e.children=t,e.shapeFlag|=r}function Kf(...e){const t={};for(let r=0;r{let s;return(s=e[r])||(s=e[r]=[]),s.push(n),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Yr=t("__VUE_INSTANCE_SETTERS__",r=>He=r),ns=t("__VUE_SSR_SETTERS__",r=>q0=r)}const K0=e=>{const t=He;return Yr(e),e.scope.on(),()=>{e.scope.off(),Yr(t)}},xo=()=>{He&&He.scope.off(),Yr(null)};function Ya(e){return e.vnode.shapeFlag&4}let q0=!1;function Yf(e,t=!1,r=!1){t&&ns(t);const{props:n,children:s}=e.vnode,o=Ya(e);Bf(e,n,o,t),Sf(e,s,r);const i=o?Jf(e,t):void 0;return t&&ns(!1),i}function Jf(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,vf);const{setup:n}=r;if(n){Nt();const s=e.setupContext=n.length>1?tu(e):null,o=K0(e),i=G0(n,e,0,[e.props,s]),a=Gi(i);if($t(),o(),(a||e.sp)&&!u0(e)&&Da(e),a){if(i.then(xo,xo),t)return i.then(f=>{ho(e,f)}).catch(f=>{un(f,e,0)});e.asyncDep=i}else ho(e,i)}else Ja(e)}function ho(e,t,r){ae(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Fe(t)&&(e.setupState=Ea(t)),Ja(e)}function Ja(e,t,r){const n=e.type;e.render||(e.render=n.render||mt);{const s=K0(e);Nt();try{gf(e)}finally{$t(),s()}}}const eu={get(e,t){return Ue(e,"get",""),e[t]}};function tu(e){const t=r=>{e.exposed=r||{}};return{attrs:new Proxy(e.attrs,eu),slots:e.slots,emit:e.emit,expose:t}}function gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ea(ks(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in R0)return R0[r](e)},has(t,r){return r in t||r in R0}})):e.proxy}function ru(e,t=!0){return ae(e)?e.displayName||e.name:e.name||t&&e.__name}function nu(e){return ae(e)&&"__vccOpts"in e}const Ye=(e,t)=>Wl(e,t,q0);function O0(e,t,r){const n=arguments.length;return n===2?Fe(t)&&!se(t)?U0(t)?ie(e,null,[t]):ie(e,t):ie(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&U0(r)&&(r=[r]),ie(e,t,r))}const su="3.5.13";/**
-* @vue/runtime-dom v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let ss;const po=typeof window<"u"&&window.trustedTypes;if(po)try{ss=po.createPolicy("vue",{createHTML:e=>e})}catch{}const ec=ss?e=>ss.createHTML(e):e=>e,ou="http://www.w3.org/2000/svg",iu="http://www.w3.org/1998/Math/MathML",At=typeof document<"u"?document:null,vo=At&&At.createElement("template"),au={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const s=t==="svg"?At.createElementNS(ou,e):t==="mathml"?At.createElementNS(iu,e):r?At.createElement(e,{is:r}):At.createElement(e);return e==="select"&&n&&n.multiple!=null&&s.setAttribute("multiple",n.multiple),s},createText:e=>At.createTextNode(e),createComment:e=>At.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>At.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,s,o){const i=r?r.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),r),!(s===o||!(s=s.nextSibling)););else{vo.innerHTML=ec(n==="svg"?`${e} `:n==="mathml"?`${e} `:e);const a=vo.content;if(n==="svg"||n==="mathml"){const f=a.firstChild;for(;f.firstChild;)a.appendChild(f.firstChild);a.removeChild(f)}t.insertBefore(a,r)}return[i?i.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},cu=Symbol("_vtc");function lu(e,t,r){const n=e[cu];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const go=Symbol("_vod"),fu=Symbol("_vsh"),uu=Symbol(""),xu=/(^|;)\s*display\s*:/;function du(e,t,r){const n=e.style,s=Re(r);let o=!1;if(r&&!s){if(t)if(Re(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();r[a]==null&&or(n,a,"")}else for(const i in t)r[i]==null&&or(n,i,"");for(const i in r)i==="display"&&(o=!0),or(n,i,r[i])}else if(s){if(t!==r){const i=n[uu];i&&(r+=";"+i),n.cssText=r,o=xu.test(r)}}else t&&e.removeAttribute("style");go in e&&(e[go]=o?n.display:"",e[fu]&&(n.display="none"))}const mo=/\s*!important$/;function or(e,t,r){if(se(r))r.forEach(n=>or(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=hu(e,t);mo.test(r)?e.setProperty(e0(n),r.replace(mo,""),"important"):e[n]=r}}const yo=["Webkit","Moz","ms"],Hn={};function hu(e,t){const r=Hn[t];if(r)return r;let n=st(t);if(n!=="filter"&&n in e)return Hn[t]=n;n=an(n);for(let s=0;sMn||(mu.then(()=>Mn=0),Mn=Date.now());function Eu(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;Et(_u(n,r.value),t,5,[n])};return r.value=e,r.attached=yu(),r}function _u(e,t){if(se(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>s=>!s._stopped&&n&&n(s))}else return t}const Bo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Cu=(e,t,r,n,s,o)=>{const i=s==="svg";t==="class"?lu(e,n,i):t==="style"?du(e,r,n):nn(t)?Es(t)||vu(e,t,r,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):bu(e,t,n,i))?(Co(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&_o(e,t,n,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Re(n))?Co(e,st(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),_o(e,t,n,i))};function bu(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Bo(t)&&ae(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Bo(t)&&Re(r)?!1:t in e}const Jr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return se(t)?r=>rr(t,r):t};function Au(e){e.target.composing=!0}function Fo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const x0=Symbol("_assign"),Fp={created(e,{modifiers:{lazy:t,trim:r,number:n}},s){e[x0]=Jr(s);const o=n||s.props&&s.props.type==="number";Wt(e,t?"change":"input",i=>{if(i.target.composing)return;let a=e.value;r&&(a=a.trim()),o&&(a=Vr(a)),e[x0](a)}),r&&Wt(e,"change",()=>{e.value=e.value.trim()}),t||(Wt(e,"compositionstart",Au),Wt(e,"compositionend",Fo),Wt(e,"change",Fo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:r,modifiers:{lazy:n,trim:s,number:o}},i){if(e[x0]=Jr(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?Vr(e.value):e.value,f=t??"";a!==f&&(document.activeElement===e&&e.type!=="range"&&(n&&t===r||s&&e.value.trim()===f)||(e.value=f))}},Dp={deep:!0,created(e,{value:t,modifiers:{number:r}},n){const s=sn(t);Wt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>r?Vr(en(i)):en(i));e[x0](e.multiple?s?new Set(o):o:o[0]),e._assigning=!0,xn(()=>{e._assigning=!1})}),e[x0]=Jr(n)},mounted(e,{value:t}){Do(e,t)},beforeUpdate(e,t,r){e[x0]=Jr(r)},updated(e,{value:t}){e._assigning||Do(e,t)}};function Do(e,t){const r=e.multiple,n=se(t);if(!(r&&!n&&!sn(t))){for(let s=0,o=e.options.length;sString(c)===String(a)):i.selected=ml(t,a)>-1}else i.selected=t.has(a);else if(ln(en(i),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!r&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function en(e){return"_value"in e?e._value:e.value}const Bu=["ctrl","shift","alt","meta"],Fu={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Bu.some(r=>e[`${r}Key`]&&!t.includes(r))},wp=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(".");return r[n]||(r[n]=(s,...o)=>{for(let i=0;i{const t=wu().createApp(...e),{mount:r}=t;return t.mount=n=>{const s=ku(n);if(!s)return;const o=t._component;!ae(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=r(s,!1,Ru(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Ru(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ku(e){return Re(e)?document.querySelector(e):e}/*!
- * pinia v3.0.1
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */let tc;const mn=e=>tc=e,rc=Symbol();function os(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var T0;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(T0||(T0={}));function Pu(){const e=ta(!0),t=e.run(()=>yt({}));let r=[],n=[];const s=ks({install(o){mn(s),s._a=o,o.provide(rc,s),o.config.globalProperties.$pinia=s,n.forEach(i=>r.push(i)),n=[]},use(o){return this._a?r.push(o):n.push(o),this},_p:r,_a:null,_e:e,_s:new Map,state:t});return s}const nc=()=>{};function So(e,t,r,n=nc){e.push(t);const s=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),n())};return!r&&ra()&&yl(s),s}function o0(e,...t){e.slice().forEach(r=>{r(...t)})}const Ou=e=>e(),Ro=Symbol(),Nn=Symbol();function is(e,t){e instanceof Map&&t instanceof Map?t.forEach((r,n)=>e.set(n,r)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const r in t){if(!t.hasOwnProperty(r))continue;const n=t[r],s=e[r];os(s)&&os(n)&&e.hasOwnProperty(r)&&!Se(n)&&!Ht(n)?e[r]=is(s,n):e[r]=n}return e}const Tu=Symbol();function Iu(e){return!os(e)||!e.hasOwnProperty(Tu)}const{assign:Rt}=Object;function Lu(e){return!!(Se(e)&&e.effect)}function Hu(e,t,r,n){const{state:s,actions:o,getters:i}=t,a=r.state.value[e];let f;function c(){a||(r.state.value[e]=s?s():{});const l=ql(r.state.value[e]);return Rt(l,o,Object.keys(i||{}).reduce((u,x)=>(u[x]=ks(Ye(()=>{mn(r);const d=r._s.get(e);return i[x].call(d,d)})),u),{}))}return f=sc(e,c,t,r,n,!0),f}function sc(e,t,r={},n,s,o){let i;const a=Rt({actions:{}},r),f={deep:!0};let c,l,u=[],x=[],d;const h=n.state.value[e];!o&&!h&&(n.state.value[e]={}),yt({});let p;function v(w){let P;c=l=!1,typeof w=="function"?(w(n.state.value[e]),P={type:T0.patchFunction,storeId:e,events:d}):(is(n.state.value[e],w),P={type:T0.patchObject,payload:w,storeId:e,events:d});const A=p=Symbol();xn().then(()=>{p===A&&(c=!0)}),l=!0,o0(u,P,n.state.value[e])}const C=o?function(){const{state:P}=r,A=P?P():{};this.$patch(S=>{Rt(S,A)})}:nc;function g(){i.stop(),u=[],x=[],n._s.delete(e)}const m=(w,P="")=>{if(Ro in w)return w[Nn]=P,w;const A=function(){mn(n);const S=Array.from(arguments),L=[],T=[];function Y(X){L.push(X)}function te(X){T.push(X)}o0(x,{args:S,name:A[Nn],store:b,after:Y,onError:te});let Q;try{Q=w.apply(this&&this.$id===e?this:b,S)}catch(X){throw o0(T,X),X}return Q instanceof Promise?Q.then(X=>(o0(L,X),X)).catch(X=>(o0(T,X),Promise.reject(X))):(o0(L,Q),Q)};return A[Ro]=!0,A[Nn]=P,A},y={_p:n,$id:e,$onAction:So.bind(null,x),$patch:v,$reset:C,$subscribe(w,P={}){const A=So(u,w,P.detached,()=>S()),S=i.run(()=>k0(()=>n.state.value[e],L=>{(P.flush==="sync"?l:c)&&w({storeId:e,type:T0.direct,events:d},L)},Rt({},f,P)));return A},$dispose:g},b=t0(y);n._s.set(e,b);const D=(n._a&&n._a.runWithContext||Ou)(()=>n._e.run(()=>(i=ta()).run(()=>t({action:m}))));for(const w in D){const P=D[w];if(Se(P)&&!Lu(P)||Ht(P))o||(h&&Iu(P)&&(Se(P)?P.value=h[w]:is(P,h[w])),n.state.value[e][w]=P);else if(typeof P=="function"){const A=m(P,w);D[w]=A,a.actions[w]=P}}return Rt(b,D),Rt(ve(b),D),Object.defineProperty(b,"$state",{get:()=>n.state.value[e],set:w=>{v(P=>{Rt(P,w)})}}),n._p.forEach(w=>{Rt(b,i.run(()=>w({store:b,app:n._a,pinia:n,options:a})))}),h&&o&&r.hydrate&&r.hydrate(b.$state,h),c=!0,l=!0,b}/*! #__NO_SIDE_EFFECTS__ */function oc(e,t,r){let n;const s=typeof t=="function";n=s?r:t;function o(i,a){const f=Af();return i=i||(f?nt(rc,null):null),i&&mn(i),i=tc,i._s.has(e)||(s?sc(e,t,n,i):Hu(e,n,i)),i._s.get(e)}return o.$id=e,o}const Mu="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2024.2.3,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%202560%201440'%20style='enable-background:new%200%200%202560%201440;'%20xml:space='preserve'%3e%3crect%20style='fill:%23020618;'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_1_'%20cx='1280'%20cy='720'%20r='507.7116'%20fx='1274.7371'%20fy='1155.8185'%20gradientTransform='matrix(1%200%200%202.2985%200%20-934.9553)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='opacity:0.55;fill:url(%23SVGID_1_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_2_'%20cx='1352.0476'%20cy='1354.1904'%20r='1334.0841'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='opacity:0.55;fill:url(%23SVGID_2_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_3_'%20cx='1292.0344'%20cy='1255.0016'%20r='2246.7517'%20gradientTransform='matrix(-0.7144%20-0.6998%200.1899%20-0.1939%201976.6873%202402.437)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3cpolygon%20style='opacity:0.55;fill:url(%23SVGID_3_);'%20points='2560,1440%200,1440%200,-7%202560,0%20'/%3e%3cradialGradient%20id='SVGID_4_'%20cx='1292.0344'%20cy='1255.8966'%20r='2246.5256'%20fx='334.4712'%20fy='1265.3895'%20gradientTransform='matrix(0.7144%20-0.6998%20-0.1899%20-0.1939%20583.4827%202403.5054)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%2300BCFF;stop-opacity:0.5'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF;stop-opacity:0'/%3e%3c/radialGradient%3e%3cpolygon%20style='opacity:0.55;fill:url(%23SVGID_4_);'%20points='0,1440%202560,1440%202560,0%200,0%20'/%3e%3cradialGradient%20id='SVGID_5_'%20cx='1239.8966'%20cy='1737.5518'%20r='877.3733'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_5_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_6_'%20cx='1287.069'%20cy='950.5172'%20r='845.7465'%20fx='1276.8361'%20fy='325.8423'%20gradientTransform='matrix(-1%203.730347e-03%20-1.479320e-03%20-0.3966%202575.5352%201322.6541)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900;stop-opacity:0.3'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_6_);'%20width='2560'%20height='1440'/%3e%3cradialGradient%20id='SVGID_7_'%20cx='1316.8621'%20cy='1417.2759'%20r='1888.6272'%20gradientTransform='matrix(0.6652%20-0.7467%200.1801%200.1604%20185.7137%202173.2124)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900;stop-opacity:0.38'/%3e%3cstop%20offset='1'%20style='stop-color:%23FFB900;stop-opacity:0'/%3e%3c/radialGradient%3e%3crect%20style='fill:url(%23SVGID_7_);'%20width='2560'%20height='1440'/%3e%3c/svg%3e",Nu="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20140%2080'%20style='enable-background:new%200%200%20140%2080;'%20xml:space='preserve'%3e%3cpath%20style='fill:%23fff'%20d='M95.5,18.3l-0.2-0.1C95.2,18.1,95,18,94.8,18c-0.3,0-0.5,0.1-0.7,0.3L82.8,29.6l8.5,8.5l12-12L95.5,18.3z'/%3e%3cpath%20style='fill:%23fff'%20d='M57.3,29.5L46,18.3c-0.2-0.2-0.5-0.3-0.7-0.3s-0.4,0-0.5,0.1l-0.2,0.1L36.8,26l12,12L57.3,29.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M94.7,67l-14-14l-8.5,8.5l11.3,11.3c1,1,2.1,1.8,3.2,2.5c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.7,8.1-2.2L94.7,67%20L94.7,67z'/%3e%3cpath%20style='fill:%23fff'%20d='M114,15.5l-7.8-7.8c-0.2-0.2-0.5-0.5-0.7-0.7c-5.3-4.6-12.8-5.2-18.7-1.8c-1.1,0.7-2.2,1.5-3.2,2.5L72.2,19%20l2.6,2.6l5.9,5.9L92,16.2c0.8-0.8,1.8-1.1,2.8-1.1c0.7,0,1.4,0.2,2,0.5l0.1-0.1l8.5,8.5l13.4,13.4c0.8,0.8,1.1,1.8,1.1,2.8%20s-0.4,2.1-1.1,2.8l-11.3,11.3l5,5l3.5,3.5l11.3-11.3c3.1-3.1,4.7-7.2,4.7-11.3c0-4.1-1.5-8.2-4.6-11.3L114,15.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M105.4,56.5l-3.5-3.5l-4.5-4.5L81.2,32.2l-8.5-8.5l-2.6-2.6L56.6,7.7c-1-1-2.1-1.8-3.2-2.5%20C47.6,1.8,40,2.4,34.8,7c-0.3,0.2-0.5,0.4-0.7,0.7l-7.8,7.8L12.8,28.9C9.7,32,8.1,36.1,8.1,40.2c0,4.1,1.6,8.2,4.7,11.3l11.3,11.3%20l3.5-3.5l5-5L21.3,43c-0.8-0.8-1.1-1.8-1.1-2.8s0.4-2.1,1.1-2.8L34.7,24l8.5-8.5l0.1,0.1c1.5-0.9,3.6-0.7,4.8,0.6l11.3,11.3l2.1,2.1%20l8.5,8.5l2.1,2.1l8.5,8.5l16.2,16.2L97,65l8.4,8.4c0.3-0.2,0.5-0.4,0.7-0.7l7.8-7.8l-3.5-3.4L105.4,56.5z'/%3e%3cpath%20style='fill:%23fff'%20d='M70.1,42.3l-8.5,8.5L45.4,67l-0.1,0.1L40.4,72l-3.2,3.2c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.8,8.1-2.2%20c1.1-0.7,2.2-1.5,3.2-2.5L70,59.3l8.5-8.5L70.1,42.3z'/%3e%3cpath%20style='fill:%23fff'%20d='M43.1,65.1l0.1-0.1l16.2-16.2l8.5-8.5l-8.4-8.6L51,40.2L38.2,53l-3.5,3.5l-5,5L26.2,65l7.8,7.8%20c0.2,0.2,0.5,0.5,0.7,0.7l3.5-3.5L43.1,65.1z'/%3e%3c/svg%3e";/*!
- * vue-router v4.5.0
- * (c) 2024 Eduardo San Martin Morote
- * @license MIT
- */const a0=typeof document<"u";function ic(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function $u(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ic(e.default)}const _e=Object.assign;function $n(e,t){const r={};for(const n in t){const s=t[n];r[n]=ut(s)?s.map(e):e(s)}return r}const I0=()=>{},ut=Array.isArray,ac=/#/g,Uu=/&/g,qu=/\//g,zu=/=/g,ju=/\?/g,cc=/\+/g,Vu=/%5B/g,Wu=/%5D/g,lc=/%5E/g,Gu=/%60/g,fc=/%7B/g,Ku=/%7C/g,uc=/%7D/g,Xu=/%20/g;function Ls(e){return encodeURI(""+e).replace(Ku,"|").replace(Vu,"[").replace(Wu,"]")}function Qu(e){return Ls(e).replace(fc,"{").replace(uc,"}").replace(lc,"^")}function as(e){return Ls(e).replace(cc,"%2B").replace(Xu,"+").replace(ac,"%23").replace(Uu,"%26").replace(Gu,"`").replace(fc,"{").replace(uc,"}").replace(lc,"^")}function Zu(e){return as(e).replace(zu,"%3D")}function Yu(e){return Ls(e).replace(ac,"%23").replace(ju,"%3F")}function Ju(e){return e==null?"":Yu(e).replace(qu,"%2F")}function z0(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const ex=/\/$/,tx=e=>e.replace(ex,"");function Un(e,t,r="/"){let n,s={},o="",i="";const a=t.indexOf("#");let f=t.indexOf("?");return a=0&&(f=-1),f>-1&&(n=t.slice(0,f),o=t.slice(f+1,a>-1?a:t.length),s=e(o)),a>-1&&(n=n||t.slice(0,a),i=t.slice(a,t.length)),n=ox(n??t,r),{fullPath:n+(o&&"?")+o+i,path:n,query:s,hash:z0(i)}}function rx(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function ko(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function nx(e,t,r){const n=t.matched.length-1,s=r.matched.length-1;return n>-1&&n===s&&p0(t.matched[n],r.matched[s])&&xc(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function p0(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function xc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!sx(e[r],t[r]))return!1;return!0}function sx(e,t){return ut(e)?Po(e,t):ut(t)?Po(t,e):e===t}function Po(e,t){return ut(t)?e.length===t.length&&e.every((r,n)=>r===t[n]):e.length===1&&e[0]===t}function ox(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),n=e.split("/"),s=n[n.length-1];(s===".."||s===".")&&n.push("");let o=r.length-1,i,a;for(i=0;i1&&o--;else break;return r.slice(0,o).join("/")+"/"+n.slice(i).join("/")}const St={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var j0;(function(e){e.pop="pop",e.push="push"})(j0||(j0={}));var L0;(function(e){e.back="back",e.forward="forward",e.unknown=""})(L0||(L0={}));function ix(e){if(!e)if(a0){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),tx(e)}const ax=/^[^#]+#/;function cx(e,t){return e.replace(ax,"#")+t}function lx(e,t){const r=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-r.left-(t.left||0),top:n.top-r.top-(t.top||0)}}const yn=()=>({left:window.scrollX,top:window.scrollY});function fx(e){let t;if("el"in e){const r=e.el,n=typeof r=="string"&&r.startsWith("#"),s=typeof r=="string"?n?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!s)return;t=lx(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Oo(e,t){return(history.state?history.state.position-t:-1)+e}const cs=new Map;function ux(e,t){cs.set(e,t)}function xx(e){const t=cs.get(e);return cs.delete(e),t}let dx=()=>location.protocol+"//"+location.host;function dc(e,t){const{pathname:r,search:n,hash:s}=t,o=e.indexOf("#");if(o>-1){let a=s.includes(e.slice(o))?e.slice(o).length:1,f=s.slice(a);return f[0]!=="/"&&(f="/"+f),ko(f,"")}return ko(r,e)+n+s}function hx(e,t,r,n){let s=[],o=[],i=null;const a=({state:x})=>{const d=dc(e,location),h=r.value,p=t.value;let v=0;if(x){if(r.value=d,t.value=x,i&&i===h){i=null;return}v=p?x.position-p.position:0}else n(d);s.forEach(C=>{C(r.value,h,{delta:v,type:j0.pop,direction:v?v>0?L0.forward:L0.back:L0.unknown})})};function f(){i=r.value}function c(x){s.push(x);const d=()=>{const h=s.indexOf(x);h>-1&&s.splice(h,1)};return o.push(d),d}function l(){const{history:x}=window;x.state&&x.replaceState(_e({},x.state,{scroll:yn()}),"")}function u(){for(const x of o)x();o=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",l)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",l,{passive:!0}),{pauseListeners:f,listen:c,destroy:u}}function To(e,t,r,n=!1,s=!1){return{back:e,current:t,forward:r,replaced:n,position:window.history.length,scroll:s?yn():null}}function px(e){const{history:t,location:r}=window,n={value:dc(e,r)},s={value:t.state};s.value||o(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(f,c,l){const u=e.indexOf("#"),x=u>-1?(r.host&&document.querySelector("base")?e:e.slice(u))+f:dx()+e+f;try{t[l?"replaceState":"pushState"](c,"",x),s.value=c}catch(d){console.error(d),r[l?"replace":"assign"](x)}}function i(f,c){const l=_e({},t.state,To(s.value.back,f,s.value.forward,!0),c,{position:s.value.position});o(f,l,!0),n.value=f}function a(f,c){const l=_e({},s.value,t.state,{forward:f,scroll:yn()});o(l.current,l,!0);const u=_e({},To(n.value,f,null),{position:l.position+1},c);o(f,u,!1),n.value=f}return{location:n,state:s,push:a,replace:i}}function vx(e){e=ix(e);const t=px(e),r=hx(e,t.state,t.location,t.replace);function n(o,i=!0){i||r.pauseListeners(),history.go(o)}const s=_e({location:"",base:e,go:n,createHref:cx.bind(null,e)},t,r);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}function gx(e){return typeof e=="string"||e&&typeof e=="object"}function hc(e){return typeof e=="string"||typeof e=="symbol"}const pc=Symbol("");var Io;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Io||(Io={}));function v0(e,t){return _e(new Error,{type:e,[pc]:!0},t)}function bt(e,t){return e instanceof Error&&pc in e&&(t==null||!!(e.type&t))}const Lo="[^/]+?",mx={sensitive:!1,strict:!1,start:!0,end:!0},yx=/[.+*?^${}()[\]/\\]/g;function Ex(e,t){const r=_e({},mx,t),n=[];let s=r.start?"^":"";const o=[];for(const c of e){const l=c.length?[]:[90];r.strict&&!c.length&&(s+="/");for(let u=0;ut.length?t.length===1&&t[0]===80?1:-1:0}function vc(e,t){let r=0;const n=e.score,s=t.score;for(;r0&&t[t.length-1]<0}const Cx={type:0,value:""},bx=/[a-zA-Z0-9_]/;function Ax(e){if(!e)return[[]];if(e==="/")return[[Cx]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${r})/"${c}": ${d}`)}let r=0,n=r;const s=[];let o;function i(){o&&s.push(o),o=[]}let a=0,f,c="",l="";function u(){c&&(r===0?o.push({type:0,value:c}):r===1||r===2||r===3?(o.length>1&&(f==="*"||f==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:c,regexp:l,repeatable:f==="*"||f==="+",optional:f==="*"||f==="?"})):t("Invalid state to consume buffer"),c="")}function x(){c+=f}for(;a{i(m)}:I0}function i(u){if(hc(u)){const x=n.get(u);x&&(n.delete(u),r.splice(r.indexOf(x),1),x.children.forEach(i),x.alias.forEach(i))}else{const x=r.indexOf(u);x>-1&&(r.splice(x,1),u.record.name&&n.delete(u.record.name),u.children.forEach(i),u.alias.forEach(i))}}function a(){return r}function f(u){const x=Sx(u,r);r.splice(x,0,u),u.record.name&&!$o(u)&&n.set(u.record.name,u)}function c(u,x){let d,h={},p,v;if("name"in u&&u.name){if(d=n.get(u.name),!d)throw v0(1,{location:u});v=d.record.name,h=_e(Mo(x.params,d.keys.filter(m=>!m.optional).concat(d.parent?d.parent.keys.filter(m=>m.optional):[]).map(m=>m.name)),u.params&&Mo(u.params,d.keys.map(m=>m.name))),p=d.stringify(h)}else if(u.path!=null)p=u.path,d=r.find(m=>m.re.test(p)),d&&(h=d.parse(p),v=d.record.name);else{if(d=x.name?n.get(x.name):r.find(m=>m.re.test(x.path)),!d)throw v0(1,{location:u,currentLocation:x});v=d.record.name,h=_e({},x.params,u.params),p=d.stringify(h)}const C=[];let g=d;for(;g;)C.unshift(g.record),g=g.parent;return{name:v,path:p,params:h,matched:C,meta:wx(C)}}e.forEach(u=>o(u));function l(){r.length=0,n.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:l,getRoutes:a,getRecordMatcher:s}}function Mo(e,t){const r={};for(const n of t)n in e&&(r[n]=e[n]);return r}function No(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Dx(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Dx(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const n in e.components)t[n]=typeof r=="object"?r[n]:r;return t}function $o(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function wx(e){return e.reduce((t,r)=>_e(t,r.meta),{})}function Uo(e,t){const r={};for(const n in e)r[n]=n in t?t[n]:e[n];return r}function Sx(e,t){let r=0,n=t.length;for(;r!==n;){const o=r+n>>1;vc(e,t[o])<0?n=o:r=o+1}const s=Rx(e);return s&&(n=t.lastIndexOf(s,n-1)),n}function Rx(e){let t=e;for(;t=t.parent;)if(gc(t)&&vc(e,t)===0)return t}function gc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function kx(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&as(o)):[n&&as(n)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+r,o!=null&&(t+="="+o))})}return t}function Px(e){const t={};for(const r in e){const n=e[r];n!==void 0&&(t[r]=ut(n)?n.map(s=>s==null?null:""+s):n==null?n:""+n)}return t}const Ox=Symbol(""),zo=Symbol(""),En=Symbol(""),Hs=Symbol(""),ls=Symbol("");function C0(){let e=[];function t(n){return e.push(n),()=>{const s=e.indexOf(n);s>-1&&e.splice(s,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Ot(e,t,r,n,s,o=i=>i()){const i=n&&(n.enterCallbacks[s]=n.enterCallbacks[s]||[]);return()=>new Promise((a,f)=>{const c=x=>{x===!1?f(v0(4,{from:r,to:t})):x instanceof Error?f(x):gx(x)?f(v0(2,{from:t,to:x})):(i&&n.enterCallbacks[s]===i&&typeof x=="function"&&i.push(x),a())},l=o(()=>e.call(n&&n.instances[s],t,r,c));let u=Promise.resolve(l);e.length<3&&(u=u.then(c)),u.catch(x=>f(x))})}function qn(e,t,r,n,s=o=>o()){const o=[];for(const i of e)for(const a in i.components){let f=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(ic(f)){const l=(f.__vccOpts||f)[t];l&&o.push(Ot(l,r,n,i,a,s))}else{let c=f();o.push(()=>c.then(l=>{if(!l)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const u=$u(l)?l.default:l;i.mods[a]=l,i.components[a]=u;const d=(u.__vccOpts||u)[t];return d&&Ot(d,r,n,i,a,s)()}))}}return o}function jo(e){const t=nt(En),r=nt(Hs),n=Ye(()=>{const f=fe(e.to);return t.resolve(f)}),s=Ye(()=>{const{matched:f}=n.value,{length:c}=f,l=f[c-1],u=r.matched;if(!l||!u.length)return-1;const x=u.findIndex(p0.bind(null,l));if(x>-1)return x;const d=Vo(f[c-2]);return c>1&&Vo(l)===d&&u[u.length-1].path!==d?u.findIndex(p0.bind(null,f[c-2])):x}),o=Ye(()=>s.value>-1&&Hx(r.params,n.value.params)),i=Ye(()=>s.value>-1&&s.value===r.matched.length-1&&xc(r.params,n.value.params));function a(f={}){if(Lx(f)){const c=t[fe(e.replace)?"replace":"push"](fe(e.to)).catch(I0);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:n,href:Ye(()=>n.value.href),isActive:o,isExactActive:i,navigate:a}}function Tx(e){return e.length===1?e[0]:e}const Ix=Fa({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:jo,setup(e,{slots:t}){const r=t0(jo(e)),{options:n}=nt(En),s=Ye(()=>({[Wo(e.activeClass,n.linkActiveClass,"router-link-active")]:r.isActive,[Wo(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const o=t.default&&Tx(t.default(r));return e.custom?o:O0("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:s.value},o)}}}),F0=Ix;function Lx(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Hx(e,t){for(const r in t){const n=t[r],s=e[r];if(typeof n=="string"){if(n!==s)return!1}else if(!ut(s)||s.length!==n.length||n.some((o,i)=>o!==s[i]))return!1}return!0}function Vo(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Wo=(e,t,r)=>e??t??r,Mx=Fa({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const n=nt(ls),s=Ye(()=>e.route||n.value),o=nt(zo,0),i=Ye(()=>{let c=fe(o);const{matched:l}=s.value;let u;for(;(u=l[c])&&!u.components;)c++;return c}),a=Ye(()=>s.value.matched[i.value]);nr(zo,Ye(()=>i.value+1)),nr(Ox,a),nr(ls,s);const f=yt();return k0(()=>[f.value,a.value,e.name],([c,l,u],[x,d,h])=>{l&&(l.instances[u]=c,d&&d!==l&&c&&c===x&&(l.leaveGuards.size||(l.leaveGuards=d.leaveGuards),l.updateGuards.size||(l.updateGuards=d.updateGuards))),c&&l&&(!d||!p0(l,d)||!x)&&(l.enterCallbacks[u]||[]).forEach(p=>p(c))},{flush:"post"}),()=>{const c=s.value,l=e.name,u=a.value,x=u&&u.components[l];if(!x)return Go(r.default,{Component:x,route:c});const d=u.props[l],h=d?d===!0?c.params:typeof d=="function"?d(c):d:null,v=O0(x,_e({},h,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(u.instances[l]=null)},ref:f}));return Go(r.default,{Component:v,route:c})||v}}});function Go(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const mc=Mx;function Nx(e){const t=Fx(e.routes,e),r=e.parseQuery||kx,n=e.stringifyQuery||qo,s=e.history,o=C0(),i=C0(),a=C0(),f=Nl(St);let c=St;a0&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const l=$n.bind(null,k=>""+k),u=$n.bind(null,Ju),x=$n.bind(null,z0);function d(k,U){let G,Z;return hc(k)?(G=t.getRecordMatcher(k),Z=U):Z=k,t.addRoute(Z,G)}function h(k){const U=t.getRecordMatcher(k);U&&t.removeRoute(U)}function p(){return t.getRoutes().map(k=>k.record)}function v(k){return!!t.getRecordMatcher(k)}function C(k,U){if(U=_e({},U||f.value),typeof k=="string"){const B=Un(r,k,U.path),I=t.resolve({path:B.path},U),M=s.createHref(B.fullPath);return _e(B,I,{params:x(I.params),hash:z0(B.hash),redirectedFrom:void 0,href:M})}let G;if(k.path!=null)G=_e({},k,{path:Un(r,k.path,U.path).path});else{const B=_e({},k.params);for(const I in B)B[I]==null&&delete B[I];G=_e({},k,{params:u(B)}),U.params=u(U.params)}const Z=t.resolve(G,U),me=k.hash||"";Z.params=l(x(Z.params));const E=rx(n,_e({},k,{hash:Qu(me),path:Z.path})),_=s.createHref(E);return _e({fullPath:E,hash:me,query:n===qo?Px(k.query):k.query||{}},Z,{redirectedFrom:void 0,href:_})}function g(k){return typeof k=="string"?Un(r,k,f.value.path):_e({},k)}function m(k,U){if(c!==k)return v0(8,{from:U,to:k})}function y(k){return D(k)}function b(k){return y(_e(g(k),{replace:!0}))}function F(k){const U=k.matched[k.matched.length-1];if(U&&U.redirect){const{redirect:G}=U;let Z=typeof G=="function"?G(k):G;return typeof Z=="string"&&(Z=Z.includes("?")||Z.includes("#")?Z=g(Z):{path:Z},Z.params={}),_e({query:k.query,hash:k.hash,params:Z.path!=null?{}:k.params},Z)}}function D(k,U){const G=c=C(k),Z=f.value,me=k.state,E=k.force,_=k.replace===!0,B=F(G);if(B)return D(_e(g(B),{state:typeof B=="object"?_e({},me,B.state):me,force:E,replace:_}),U||G);const I=G;I.redirectedFrom=U;let M;return!E&&nx(n,Z,G)&&(M=v0(16,{to:I,from:Z}),O(Z,Z,!0,!1)),(M?Promise.resolve(M):A(I,Z)).catch(H=>bt(H)?bt(H,2)?H:xe(H):ee(H,I,Z)).then(H=>{if(H){if(bt(H,2))return D(_e({replace:_},g(H.to),{state:typeof H.to=="object"?_e({},me,H.to.state):me,force:E}),U||I)}else H=L(I,Z,!0,_,me);return S(I,Z,H),H})}function w(k,U){const G=m(k,U);return G?Promise.reject(G):Promise.resolve()}function P(k){const U=$.values().next().value;return U&&typeof U.runWithContext=="function"?U.runWithContext(k):k()}function A(k,U){let G;const[Z,me,E]=$x(k,U);G=qn(Z.reverse(),"beforeRouteLeave",k,U);for(const B of Z)B.leaveGuards.forEach(I=>{G.push(Ot(I,k,U))});const _=w.bind(null,k,U);return G.push(_),ue(G).then(()=>{G=[];for(const B of o.list())G.push(Ot(B,k,U));return G.push(_),ue(G)}).then(()=>{G=qn(me,"beforeRouteUpdate",k,U);for(const B of me)B.updateGuards.forEach(I=>{G.push(Ot(I,k,U))});return G.push(_),ue(G)}).then(()=>{G=[];for(const B of E)if(B.beforeEnter)if(ut(B.beforeEnter))for(const I of B.beforeEnter)G.push(Ot(I,k,U));else G.push(Ot(B.beforeEnter,k,U));return G.push(_),ue(G)}).then(()=>(k.matched.forEach(B=>B.enterCallbacks={}),G=qn(E,"beforeRouteEnter",k,U,P),G.push(_),ue(G))).then(()=>{G=[];for(const B of i.list())G.push(Ot(B,k,U));return G.push(_),ue(G)}).catch(B=>bt(B,8)?B:Promise.reject(B))}function S(k,U,G){a.list().forEach(Z=>P(()=>Z(k,U,G)))}function L(k,U,G,Z,me){const E=m(k,U);if(E)return E;const _=U===St,B=a0?history.state:{};G&&(Z||_?s.replace(k.fullPath,_e({scroll:_&&B&&B.scroll},me)):s.push(k.fullPath,me)),f.value=k,O(k,U,G,_),xe()}let T;function Y(){T||(T=s.listen((k,U,G)=>{if(!be.listening)return;const Z=C(k),me=F(Z);if(me){D(_e(me,{replace:!0,force:!0}),Z).catch(I0);return}c=Z;const E=f.value;a0&&ux(Oo(E.fullPath,G.delta),yn()),A(Z,E).catch(_=>bt(_,12)?_:bt(_,2)?(D(_e(g(_.to),{force:!0}),Z).then(B=>{bt(B,20)&&!G.delta&&G.type===j0.pop&&s.go(-1,!1)}).catch(I0),Promise.reject()):(G.delta&&s.go(-G.delta,!1),ee(_,Z,E))).then(_=>{_=_||L(Z,E,!1),_&&(G.delta&&!bt(_,8)?s.go(-G.delta,!1):G.type===j0.pop&&bt(_,20)&&s.go(-1,!1)),S(Z,E,_)}).catch(I0)}))}let te=C0(),Q=C0(),X;function ee(k,U,G){xe(k);const Z=Q.list();return Z.length?Z.forEach(me=>me(k,U,G)):console.error(k),Promise.reject(k)}function de(){return X&&f.value!==St?Promise.resolve():new Promise((k,U)=>{te.add([k,U])})}function xe(k){return X||(X=!k,Y(),te.list().forEach(([U,G])=>k?G(k):U()),te.reset()),k}function O(k,U,G,Z){const{scrollBehavior:me}=e;if(!a0||!me)return Promise.resolve();const E=!G&&xx(Oo(k.fullPath,0))||(Z||!G)&&history.state&&history.state.scroll||null;return xn().then(()=>me(k,U,E)).then(_=>_&&fx(_)).catch(_=>ee(_,k,U))}const N=k=>s.go(k);let z;const $=new Set,be={currentRoute:f,listening:!0,addRoute:d,removeRoute:h,clearRoutes:t.clearRoutes,hasRoute:v,getRoutes:p,resolve:C,options:e,push:y,replace:b,go:N,back:()=>N(-1),forward:()=>N(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:Q.add,isReady:de,install(k){const U=this;k.component("RouterLink",F0),k.component("RouterView",mc),k.config.globalProperties.$router=U,Object.defineProperty(k.config.globalProperties,"$route",{enumerable:!0,get:()=>fe(f)}),a0&&!z&&f.value===St&&(z=!0,y(s.location).catch(me=>{}));const G={};for(const me in St)Object.defineProperty(G,me,{get:()=>f.value[me],enumerable:!0});k.provide(En,U),k.provide(Hs,ga(G)),k.provide(ls,f);const Z=k.unmount;$.add(k),k.unmount=function(){$.delete(k),$.size<1&&(c=St,T&&T(),T=null,f.value=St,z=!1,X=!1),Z()}}};function ue(k){return k.reduce((U,G)=>U.then(()=>P(G)),Promise.resolve())}return be}function $x(e,t){const r=[],n=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;ip0(c,a))?n.push(a):r.push(a));const f=e.matched[i];f&&(t.matched.find(c=>p0(c,f))||s.push(f))}return[r,n,s]}function Ux(){return nt(En)}function qx(e){return nt(Hs)}/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Ko={outline:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},filled:{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"currentColor",stroke:"none"}};/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */const xt=(e,t,r,n)=>({color:s="currentColor",size:o=24,stroke:i=2,title:a,class:f,...c},{attrs:l,slots:u})=>{let x=[...n.map(d=>O0(...d)),...u.default?[u.default()]:[]];return a&&(x=[O0("title",a),...x]),O0("svg",{...Ko[e],width:o,height:o,...l,class:["tabler-icon",`tabler-icon-${t}`],...e==="filled"?{fill:s}:{"stroke-width":i??Ko[e]["stroke-width"],stroke:s},...c},x)};/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var zx=xt("outline","alert-triangle","IconAlertTriangle",[["path",{d:"M12 9v4",key:"svg-0"}],["path",{d:"M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var jx=xt("outline","check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var fs=xt("outline","devices","IconDevices",[["path",{d:"M13 9a1 1 0 0 1 1 -1h6a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-6a1 1 0 0 1 -1 -1v-10z",key:"svg-0"}],["path",{d:"M18 8v-3a1 1 0 0 0 -1 -1h-13a1 1 0 0 0 -1 1v12a1 1 0 0 0 1 1h9",key:"svg-1"}],["path",{d:"M16 9h2",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Vx=xt("outline","exclamation-circle","IconExclamationCircle",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M12 9v4",key:"svg-1"}],["path",{d:"M12 16v.01",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Wx=xt("outline","home","IconHome",[["path",{d:"M5 12l-2 0l9 -9l9 9l-2 0",key:"svg-0"}],["path",{d:"M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7",key:"svg-1"}],["path",{d:"M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Gx=xt("outline","info-circle","IconInfoCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 9h.01",key:"svg-1"}],["path",{d:"M11 12h1v4h1",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var us=xt("outline","keyboard","IconKeyboard",[["path",{d:"M2 6m0 2a2 2 0 0 1 2 -2h16a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-16a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M6 10l0 .01",key:"svg-1"}],["path",{d:"M10 10l0 .01",key:"svg-2"}],["path",{d:"M14 10l0 .01",key:"svg-3"}],["path",{d:"M18 10l0 .01",key:"svg-4"}],["path",{d:"M6 14l0 .01",key:"svg-5"}],["path",{d:"M18 14l0 .01",key:"svg-6"}],["path",{d:"M10 14l4 .01",key:"svg-7"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var d0=xt("outline","layout-grid","IconLayoutGrid",[["path",{d:"M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-0"}],["path",{d:"M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-1"}],["path",{d:"M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-2"}],["path",{d:"M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-3"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var yc=xt("outline","link","IconLink",[["path",{d:"M9 15l6 -6",key:"svg-0"}],["path",{d:"M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464",key:"svg-1"}],["path",{d:"M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463",key:"svg-2"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Xo=xt("outline","server","IconServer",[["path",{d:"M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z",key:"svg-0"}],["path",{d:"M3 12m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z",key:"svg-1"}],["path",{d:"M7 8l0 .01",key:"svg-2"}],["path",{d:"M7 16l0 .01",key:"svg-3"}]]);/**
- * @license @tabler/icons-vue v3.31.0 - MIT
- *
- * This source code is licensed under the MIT license.
- * See the LICENSE file in the root directory of this source tree.
- */var Kx=xt("outline","x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);function Ec(e,t){return function(){return e.apply(t,arguments)}}const{toString:Xx}=Object.prototype,{getPrototypeOf:Ms}=Object,_n=(e=>t=>{const r=Xx.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),dt=e=>(e=e.toLowerCase(),t=>_n(t)===e),Cn=e=>t=>typeof t===e,{isArray:g0}=Array,V0=Cn("undefined");function Qx(e){return e!==null&&!V0(e)&&e.constructor!==null&&!V0(e.constructor)&&et(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const _c=dt("ArrayBuffer");function Zx(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&_c(e.buffer),t}const Yx=Cn("string"),et=Cn("function"),Cc=Cn("number"),bn=e=>e!==null&&typeof e=="object",Jx=e=>e===!0||e===!1,ir=e=>{if(_n(e)!=="object")return!1;const t=Ms(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},e1=dt("Date"),t1=dt("File"),r1=dt("Blob"),n1=dt("FileList"),s1=e=>bn(e)&&et(e.pipe),o1=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||et(e.append)&&((t=_n(e))==="formdata"||t==="object"&&et(e.toString)&&e.toString()==="[object FormData]"))},i1=dt("URLSearchParams"),[a1,c1,l1,f1]=["ReadableStream","Request","Response","Headers"].map(dt),u1=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function X0(e,t,{allOwnKeys:r=!1}={}){if(e===null||typeof e>"u")return;let n,s;if(typeof e!="object"&&(e=[e]),g0(e))for(n=0,s=e.length;n0;)if(s=r[n],t===s.toLowerCase())return s;return null}const Kt=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Ac=e=>!V0(e)&&e!==Kt;function xs(){const{caseless:e}=Ac(this)&&this||{},t={},r=(n,s)=>{const o=e&&bc(t,s)||s;ir(t[o])&&ir(n)?t[o]=xs(t[o],n):ir(n)?t[o]=xs({},n):g0(n)?t[o]=n.slice():t[o]=n};for(let n=0,s=arguments.length;n(X0(t,(s,o)=>{r&&et(s)?e[o]=Ec(s,r):e[o]=s},{allOwnKeys:n}),e),d1=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),h1=(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},p1=(e,t,r,n)=>{let s,o,i;const a={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)i=s[o],(!n||n(i,e,t))&&!a[i]&&(t[i]=e[i],a[i]=!0);e=r!==!1&&Ms(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},v1=(e,t,r)=>{e=String(e),(r===void 0||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return n!==-1&&n===r},g1=e=>{if(!e)return null;if(g0(e))return e;let t=e.length;if(!Cc(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},m1=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&Ms(Uint8Array)),y1=(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=n.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},E1=(e,t)=>{let r;const n=[];for(;(r=e.exec(t))!==null;)n.push(r);return n},_1=dt("HTMLFormElement"),C1=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,s){return n.toUpperCase()+s}),Qo=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),b1=dt("RegExp"),Bc=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};X0(r,(s,o)=>{let i;(i=t(s,o,e))!==!1&&(n[o]=i||s)}),Object.defineProperties(e,n)},A1=e=>{Bc(e,(t,r)=>{if(et(e)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=e[r];if(et(n)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},B1=(e,t)=>{const r={},n=s=>{s.forEach(o=>{r[o]=!0})};return g0(e)?n(e):n(String(e).split(t)),r},F1=()=>{},D1=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function w1(e){return!!(e&&et(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const S1=e=>{const t=new Array(10),r=(n,s)=>{if(bn(n)){if(t.indexOf(n)>=0)return;if(!("toJSON"in n)){t[s]=n;const o=g0(n)?[]:{};return X0(n,(i,a)=>{const f=r(i,s+1);!V0(f)&&(o[a]=f)}),t[s]=void 0,o}}return n};return r(e,0)},R1=dt("AsyncFunction"),k1=e=>e&&(bn(e)||et(e))&&et(e.then)&&et(e.catch),Fc=((e,t)=>e?setImmediate:t?((r,n)=>(Kt.addEventListener("message",({source:s,data:o})=>{s===Kt&&o===r&&n.length&&n.shift()()},!1),s=>{n.push(s),Kt.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",et(Kt.postMessage)),P1=typeof queueMicrotask<"u"?queueMicrotask.bind(Kt):typeof process<"u"&&process.nextTick||Fc,R={isArray:g0,isArrayBuffer:_c,isBuffer:Qx,isFormData:o1,isArrayBufferView:Zx,isString:Yx,isNumber:Cc,isBoolean:Jx,isObject:bn,isPlainObject:ir,isReadableStream:a1,isRequest:c1,isResponse:l1,isHeaders:f1,isUndefined:V0,isDate:e1,isFile:t1,isBlob:r1,isRegExp:b1,isFunction:et,isStream:s1,isURLSearchParams:i1,isTypedArray:m1,isFileList:n1,forEach:X0,merge:xs,extend:x1,trim:u1,stripBOM:d1,inherits:h1,toFlatObject:p1,kindOf:_n,kindOfTest:dt,endsWith:v1,toArray:g1,forEachEntry:y1,matchAll:E1,isHTMLForm:_1,hasOwnProperty:Qo,hasOwnProp:Qo,reduceDescriptors:Bc,freezeMethods:A1,toObjectSet:B1,toCamelCase:C1,noop:F1,toFiniteNumber:D1,findKey:bc,global:Kt,isContextDefined:Ac,isSpecCompliantForm:w1,toJSONObject:S1,isAsyncFn:R1,isThenable:k1,setImmediate:Fc,asap:P1};function ce(e,t,r,n,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),s&&(this.response=s,this.status=s.status?s.status:null)}R.inherits(ce,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:R.toJSONObject(this.config),code:this.code,status:this.status}}});const Dc=ce.prototype,wc={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{wc[e]={value:e}});Object.defineProperties(ce,wc);Object.defineProperty(Dc,"isAxiosError",{value:!0});ce.from=(e,t,r,n,s,o)=>{const i=Object.create(Dc);return R.toFlatObject(e,i,function(f){return f!==Error.prototype},a=>a!=="isAxiosError"),ce.call(i,e.message,t,r,n,s),i.cause=e,i.name=e.name,o&&Object.assign(i,o),i};const O1=null;function ds(e){return R.isPlainObject(e)||R.isArray(e)}function Sc(e){return R.endsWith(e,"[]")?e.slice(0,-2):e}function Zo(e,t,r){return e?e.concat(t).map(function(s,o){return s=Sc(s),!r&&o?"["+s+"]":s}).join(r?".":""):t}function T1(e){return R.isArray(e)&&!e.some(ds)}const I1=R.toFlatObject(R,{},null,function(t){return/^is[A-Z]/.test(t)});function An(e,t,r){if(!R.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,r=R.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(p,v){return!R.isUndefined(v[p])});const n=r.metaTokens,s=r.visitor||l,o=r.dots,i=r.indexes,f=(r.Blob||typeof Blob<"u"&&Blob)&&R.isSpecCompliantForm(t);if(!R.isFunction(s))throw new TypeError("visitor must be a function");function c(h){if(h===null)return"";if(R.isDate(h))return h.toISOString();if(!f&&R.isBlob(h))throw new ce("Blob is not supported. Use a Buffer instead.");return R.isArrayBuffer(h)||R.isTypedArray(h)?f&&typeof Blob=="function"?new Blob([h]):Buffer.from(h):h}function l(h,p,v){let C=h;if(h&&!v&&typeof h=="object"){if(R.endsWith(p,"{}"))p=n?p:p.slice(0,-2),h=JSON.stringify(h);else if(R.isArray(h)&&T1(h)||(R.isFileList(h)||R.endsWith(p,"[]"))&&(C=R.toArray(h)))return p=Sc(p),C.forEach(function(m,y){!(R.isUndefined(m)||m===null)&&t.append(i===!0?Zo([p],y,o):i===null?p:p+"[]",c(m))}),!1}return ds(h)?!0:(t.append(Zo(v,p,o),c(h)),!1)}const u=[],x=Object.assign(I1,{defaultVisitor:l,convertValue:c,isVisitable:ds});function d(h,p){if(!R.isUndefined(h)){if(u.indexOf(h)!==-1)throw Error("Circular reference detected in "+p.join("."));u.push(h),R.forEach(h,function(C,g){(!(R.isUndefined(C)||C===null)&&s.call(t,C,R.isString(g)?g.trim():g,p,x))===!0&&d(C,p?p.concat(g):[g])}),u.pop()}}if(!R.isObject(e))throw new TypeError("data must be an object");return d(e),t}function Yo(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(n){return t[n]})}function Ns(e,t){this._pairs=[],e&&An(e,this,t)}const Rc=Ns.prototype;Rc.append=function(t,r){this._pairs.push([t,r])};Rc.toString=function(t){const r=t?function(n){return t.call(this,n,Yo)}:Yo;return this._pairs.map(function(s){return r(s[0])+"="+r(s[1])},"").join("&")};function L1(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function kc(e,t,r){if(!t)return e;const n=r&&r.encode||L1;R.isFunction(r)&&(r={serialize:r});const s=r&&r.serialize;let o;if(s?o=s(t,r):o=R.isURLSearchParams(t)?t.toString():new Ns(t,r).toString(n),o){const i=e.indexOf("#");i!==-1&&(e=e.slice(0,i)),e+=(e.indexOf("?")===-1?"?":"&")+o}return e}class Jo{constructor(){this.handlers=[]}use(t,r,n){return this.handlers.push({fulfilled:t,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){R.forEach(this.handlers,function(n){n!==null&&t(n)})}}const Pc={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},H1=typeof URLSearchParams<"u"?URLSearchParams:Ns,M1=typeof FormData<"u"?FormData:null,N1=typeof Blob<"u"?Blob:null,$1={isBrowser:!0,classes:{URLSearchParams:H1,FormData:M1,Blob:N1},protocols:["http","https","file","blob","url","data"]},$s=typeof window<"u"&&typeof document<"u",hs=typeof navigator=="object"&&navigator||void 0,U1=$s&&(!hs||["ReactNative","NativeScript","NS"].indexOf(hs.product)<0),q1=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",z1=$s&&window.location.href||"http://localhost",j1=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:$s,hasStandardBrowserEnv:U1,hasStandardBrowserWebWorkerEnv:q1,navigator:hs,origin:z1},Symbol.toStringTag,{value:"Module"})),ze={...j1,...$1};function V1(e,t){return An(e,new ze.classes.URLSearchParams,Object.assign({visitor:function(r,n,s,o){return ze.isNode&&R.isBuffer(r)?(this.append(n,r.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function W1(e){return R.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function G1(e){const t={},r=Object.keys(e);let n;const s=r.length;let o;for(n=0;n=r.length;return i=!i&&R.isArray(s)?s.length:i,f?(R.hasOwnProp(s,i)?s[i]=[s[i],n]:s[i]=n,!a):((!s[i]||!R.isObject(s[i]))&&(s[i]=[]),t(r,n,s[i],o)&&R.isArray(s[i])&&(s[i]=G1(s[i])),!a)}if(R.isFormData(e)&&R.isFunction(e.entries)){const r={};return R.forEachEntry(e,(n,s)=>{t(W1(n),s,r,0)}),r}return null}function K1(e,t,r){if(R.isString(e))try{return(t||JSON.parse)(e),R.trim(e)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(e)}const Q0={transitional:Pc,adapter:["xhr","http","fetch"],transformRequest:[function(t,r){const n=r.getContentType()||"",s=n.indexOf("application/json")>-1,o=R.isObject(t);if(o&&R.isHTMLForm(t)&&(t=new FormData(t)),R.isFormData(t))return s?JSON.stringify(Oc(t)):t;if(R.isArrayBuffer(t)||R.isBuffer(t)||R.isStream(t)||R.isFile(t)||R.isBlob(t)||R.isReadableStream(t))return t;if(R.isArrayBufferView(t))return t.buffer;if(R.isURLSearchParams(t))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return V1(t,this.formSerializer).toString();if((a=R.isFileList(t))||n.indexOf("multipart/form-data")>-1){const f=this.env&&this.env.FormData;return An(a?{"files[]":t}:t,f&&new f,this.formSerializer)}}return o||s?(r.setContentType("application/json",!1),K1(t)):t}],transformResponse:[function(t){const r=this.transitional||Q0.transitional,n=r&&r.forcedJSONParsing,s=this.responseType==="json";if(R.isResponse(t)||R.isReadableStream(t))return t;if(t&&R.isString(t)&&(n&&!this.responseType||s)){const i=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(a){if(i)throw a.name==="SyntaxError"?ce.from(a,ce.ERR_BAD_RESPONSE,this,null,this.response):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ze.classes.FormData,Blob:ze.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};R.forEach(["delete","get","head","post","put","patch"],e=>{Q0.headers[e]={}});const X1=R.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Q1=e=>{const t={};let r,n,s;return e&&e.split(`
-`).forEach(function(i){s=i.indexOf(":"),r=i.substring(0,s).trim().toLowerCase(),n=i.substring(s+1).trim(),!(!r||t[r]&&X1[r])&&(r==="set-cookie"?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)}),t},ei=Symbol("internals");function b0(e){return e&&String(e).trim().toLowerCase()}function ar(e){return e===!1||e==null?e:R.isArray(e)?e.map(ar):String(e)}function Z1(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}const Y1=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function zn(e,t,r,n,s){if(R.isFunction(n))return n.call(this,t,r);if(s&&(t=r),!!R.isString(t)){if(R.isString(n))return t.indexOf(n)!==-1;if(R.isRegExp(n))return n.test(t)}}function J1(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,r,n)=>r.toUpperCase()+n)}function ed(e,t){const r=R.toCamelCase(" "+t);["get","set","has"].forEach(n=>{Object.defineProperty(e,n+r,{value:function(s,o,i){return this[n].call(this,t,s,o,i)},configurable:!0})})}let Xe=class{constructor(t){t&&this.set(t)}set(t,r,n){const s=this;function o(a,f,c){const l=b0(f);if(!l)throw new Error("header name must be a non-empty string");const u=R.findKey(s,l);(!u||s[u]===void 0||c===!0||c===void 0&&s[u]!==!1)&&(s[u||f]=ar(a))}const i=(a,f)=>R.forEach(a,(c,l)=>o(c,l,f));if(R.isPlainObject(t)||t instanceof this.constructor)i(t,r);else if(R.isString(t)&&(t=t.trim())&&!Y1(t))i(Q1(t),r);else if(R.isHeaders(t))for(const[a,f]of t.entries())o(f,a,n);else t!=null&&o(r,t,n);return this}get(t,r){if(t=b0(t),t){const n=R.findKey(this,t);if(n){const s=this[n];if(!r)return s;if(r===!0)return Z1(s);if(R.isFunction(r))return r.call(this,s,n);if(R.isRegExp(r))return r.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,r){if(t=b0(t),t){const n=R.findKey(this,t);return!!(n&&this[n]!==void 0&&(!r||zn(this,this[n],n,r)))}return!1}delete(t,r){const n=this;let s=!1;function o(i){if(i=b0(i),i){const a=R.findKey(n,i);a&&(!r||zn(n,n[a],a,r))&&(delete n[a],s=!0)}}return R.isArray(t)?t.forEach(o):o(t),s}clear(t){const r=Object.keys(this);let n=r.length,s=!1;for(;n--;){const o=r[n];(!t||zn(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const r=this,n={};return R.forEach(this,(s,o)=>{const i=R.findKey(n,o);if(i){r[i]=ar(s),delete r[o];return}const a=t?J1(o):String(o).trim();a!==o&&delete r[o],r[a]=ar(s),n[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const r=Object.create(null);return R.forEach(this,(n,s)=>{n!=null&&n!==!1&&(r[s]=t&&R.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,r])=>t+": "+r).join(`
-`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...r){const n=new this(t);return r.forEach(s=>n.set(s)),n}static accessor(t){const n=(this[ei]=this[ei]={accessors:{}}).accessors,s=this.prototype;function o(i){const a=b0(i);n[a]||(ed(s,i),n[a]=!0)}return R.isArray(t)?t.forEach(o):o(t),this}};Xe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);R.reduceDescriptors(Xe.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(n){this[r]=n}}});R.freezeMethods(Xe);function jn(e,t){const r=this||Q0,n=t||r,s=Xe.from(n.headers);let o=n.data;return R.forEach(e,function(a){o=a.call(r,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Tc(e){return!!(e&&e.__CANCEL__)}function m0(e,t,r){ce.call(this,e??"canceled",ce.ERR_CANCELED,t,r),this.name="CanceledError"}R.inherits(m0,ce,{__CANCEL__:!0});function Ic(e,t,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new ce("Request failed with status code "+r.status,[ce.ERR_BAD_REQUEST,ce.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function td(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function rd(e,t){e=e||10;const r=new Array(e),n=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const c=Date.now(),l=n[o];i||(i=c),r[s]=f,n[s]=c;let u=o,x=0;for(;u!==s;)x+=r[u++],u=u%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-i{r=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,c)};return[(...c)=>{const l=Date.now(),u=l-r;u>=n?i(c,l):(s=c,o||(o=setTimeout(()=>{o=null,i(s)},n-u)))},()=>s&&i(s)]}const tn=(e,t,r=3)=>{let n=0;const s=rd(50,250);return nd(o=>{const i=o.loaded,a=o.lengthComputable?o.total:void 0,f=i-n,c=s(f),l=i<=a;n=i;const u={loaded:i,total:a,progress:a?i/a:void 0,bytes:f,rate:c||void 0,estimated:c&&a&&l?(a-i)/c:void 0,event:o,lengthComputable:a!=null,[t?"download":"upload"]:!0};e(u)},r)},ti=(e,t)=>{const r=e!=null;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},ri=e=>(...t)=>R.asap(()=>e(...t)),sd=ze.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,ze.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(ze.origin),ze.navigator&&/(msie|trident)/i.test(ze.navigator.userAgent)):()=>!0,od=ze.hasStandardBrowserEnv?{write(e,t,r,n,s,o){const i=[e+"="+encodeURIComponent(t)];R.isNumber(r)&&i.push("expires="+new Date(r).toGMTString()),R.isString(n)&&i.push("path="+n),R.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function id(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function ad(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Lc(e,t,r){let n=!id(t);return e&&(n||r==!1)?ad(e,t):t}const ni=e=>e instanceof Xe?{...e}:e;function Jt(e,t){t=t||{};const r={};function n(c,l,u,x){return R.isPlainObject(c)&&R.isPlainObject(l)?R.merge.call({caseless:x},c,l):R.isPlainObject(l)?R.merge({},l):R.isArray(l)?l.slice():l}function s(c,l,u,x){if(R.isUndefined(l)){if(!R.isUndefined(c))return n(void 0,c,u,x)}else return n(c,l,u,x)}function o(c,l){if(!R.isUndefined(l))return n(void 0,l)}function i(c,l){if(R.isUndefined(l)){if(!R.isUndefined(c))return n(void 0,c)}else return n(void 0,l)}function a(c,l,u){if(u in t)return n(c,l);if(u in e)return n(void 0,c)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(c,l,u)=>s(ni(c),ni(l),u,!0)};return R.forEach(Object.keys(Object.assign({},e,t)),function(l){const u=f[l]||s,x=u(e[l],t[l],l);R.isUndefined(x)&&u!==a||(r[l]=x)}),r}const Hc=e=>{const t=Jt({},e);let{data:r,withXSRFToken:n,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:a}=t;t.headers=i=Xe.from(i),t.url=kc(Lc(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let f;if(R.isFormData(r)){if(ze.hasStandardBrowserEnv||ze.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[c,...l]=f?f.split(";").map(u=>u.trim()).filter(Boolean):[];i.setContentType([c||"multipart/form-data",...l].join("; "))}}if(ze.hasStandardBrowserEnv&&(n&&R.isFunction(n)&&(n=n(t)),n||n!==!1&&sd(t.url))){const c=s&&o&&od.read(o);c&&i.set(s,c)}return t},cd=typeof XMLHttpRequest<"u",ld=cd&&function(e){return new Promise(function(r,n){const s=Hc(e);let o=s.data;const i=Xe.from(s.headers).normalize();let{responseType:a,onUploadProgress:f,onDownloadProgress:c}=s,l,u,x,d,h;function p(){d&&d(),h&&h(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let v=new XMLHttpRequest;v.open(s.method.toUpperCase(),s.url,!0),v.timeout=s.timeout;function C(){if(!v)return;const m=Xe.from("getAllResponseHeaders"in v&&v.getAllResponseHeaders()),b={data:!a||a==="text"||a==="json"?v.responseText:v.response,status:v.status,statusText:v.statusText,headers:m,config:e,request:v};Ic(function(D){r(D),p()},function(D){n(D),p()},b),v=null}"onloadend"in v?v.onloadend=C:v.onreadystatechange=function(){!v||v.readyState!==4||v.status===0&&!(v.responseURL&&v.responseURL.indexOf("file:")===0)||setTimeout(C)},v.onabort=function(){v&&(n(new ce("Request aborted",ce.ECONNABORTED,e,v)),v=null)},v.onerror=function(){n(new ce("Network Error",ce.ERR_NETWORK,e,v)),v=null},v.ontimeout=function(){let y=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const b=s.transitional||Pc;s.timeoutErrorMessage&&(y=s.timeoutErrorMessage),n(new ce(y,b.clarifyTimeoutError?ce.ETIMEDOUT:ce.ECONNABORTED,e,v)),v=null},o===void 0&&i.setContentType(null),"setRequestHeader"in v&&R.forEach(i.toJSON(),function(y,b){v.setRequestHeader(b,y)}),R.isUndefined(s.withCredentials)||(v.withCredentials=!!s.withCredentials),a&&a!=="json"&&(v.responseType=s.responseType),c&&([x,h]=tn(c,!0),v.addEventListener("progress",x)),f&&v.upload&&([u,d]=tn(f),v.upload.addEventListener("progress",u),v.upload.addEventListener("loadend",d)),(s.cancelToken||s.signal)&&(l=m=>{v&&(n(!m||m.type?new m0(null,e,v):m),v.abort(),v=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const g=td(s.url);if(g&&ze.protocols.indexOf(g)===-1){n(new ce("Unsupported protocol "+g+":",ce.ERR_BAD_REQUEST,e));return}v.send(o||null)})},fd=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let n=new AbortController,s;const o=function(c){if(!s){s=!0,a();const l=c instanceof Error?c:this.reason;n.abort(l instanceof ce?l:new m0(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new ce(`timeout ${t} of ms exceeded`,ce.ETIMEDOUT))},t);const a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(o):c.removeEventListener("abort",o)}),e=null)};e.forEach(c=>c.addEventListener("abort",o));const{signal:f}=n;return f.unsubscribe=()=>R.asap(a),f}},ud=function*(e,t){let r=e.byteLength;if(r{const s=xd(e,t);let o=0,i,a=f=>{i||(i=!0,n&&n(f))};return new ReadableStream({async pull(f){try{const{done:c,value:l}=await s.next();if(c){a(),f.close();return}let u=l.byteLength;if(r){let x=o+=u;r(x)}f.enqueue(new Uint8Array(l))}catch(c){throw a(c),c}},cancel(f){return a(f),s.return()}},{highWaterMark:2})},Bn=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",Mc=Bn&&typeof ReadableStream=="function",hd=Bn&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Nc=(e,...t)=>{try{return!!e(...t)}catch{return!1}},pd=Mc&&Nc(()=>{let e=!1;const t=new Request(ze.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),oi=64*1024,ps=Mc&&Nc(()=>R.isReadableStream(new Response("").body)),rn={stream:ps&&(e=>e.body)};Bn&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!rn[t]&&(rn[t]=R.isFunction(e[t])?r=>r[t]():(r,n)=>{throw new ce(`Response type '${t}' is not supported`,ce.ERR_NOT_SUPPORT,n)})})})(new Response);const vd=async e=>{if(e==null)return 0;if(R.isBlob(e))return e.size;if(R.isSpecCompliantForm(e))return(await new Request(ze.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(R.isArrayBufferView(e)||R.isArrayBuffer(e))return e.byteLength;if(R.isURLSearchParams(e)&&(e=e+""),R.isString(e))return(await hd(e)).byteLength},gd=async(e,t)=>{const r=R.toFiniteNumber(e.getContentLength());return r??vd(t)},md=Bn&&(async e=>{let{url:t,method:r,data:n,signal:s,cancelToken:o,timeout:i,onDownloadProgress:a,onUploadProgress:f,responseType:c,headers:l,withCredentials:u="same-origin",fetchOptions:x}=Hc(e);c=c?(c+"").toLowerCase():"text";let d=fd([s,o&&o.toAbortSignal()],i),h;const p=d&&d.unsubscribe&&(()=>{d.unsubscribe()});let v;try{if(f&&pd&&r!=="get"&&r!=="head"&&(v=await gd(l,n))!==0){let b=new Request(t,{method:"POST",body:n,duplex:"half"}),F;if(R.isFormData(n)&&(F=b.headers.get("content-type"))&&l.setContentType(F),b.body){const[D,w]=ti(v,tn(ri(f)));n=si(b.body,oi,D,w)}}R.isString(u)||(u=u?"include":"omit");const C="credentials"in Request.prototype;h=new Request(t,{...x,signal:d,method:r.toUpperCase(),headers:l.normalize().toJSON(),body:n,duplex:"half",credentials:C?u:void 0});let g=await fetch(h);const m=ps&&(c==="stream"||c==="response");if(ps&&(a||m&&p)){const b={};["status","statusText","headers"].forEach(P=>{b[P]=g[P]});const F=R.toFiniteNumber(g.headers.get("content-length")),[D,w]=a&&ti(F,tn(ri(a),!0))||[];g=new Response(si(g.body,oi,D,()=>{w&&w(),p&&p()}),b)}c=c||"text";let y=await rn[R.findKey(rn,c)||"text"](g,e);return!m&&p&&p(),await new Promise((b,F)=>{Ic(b,F,{data:y,headers:Xe.from(g.headers),status:g.status,statusText:g.statusText,config:e,request:h})})}catch(C){throw p&&p(),C&&C.name==="TypeError"&&/fetch/i.test(C.message)?Object.assign(new ce("Network Error",ce.ERR_NETWORK,e,h),{cause:C.cause||C}):ce.from(C,C&&C.code,e,h)}}),vs={http:O1,xhr:ld,fetch:md};R.forEach(vs,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const ii=e=>`- ${e}`,yd=e=>R.isFunction(e)||e===null||e===!1,$c={getAdapter:e=>{e=R.isArray(e)?e:[e];const{length:t}=e;let r,n;const s={};for(let o=0;o`adapter ${a} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
-`+o.map(ii).join(`
-`):" "+ii(o[0]):"as no adapter specified";throw new ce("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return n},adapters:vs};function Vn(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new m0(null,e)}function ai(e){return Vn(e),e.headers=Xe.from(e.headers),e.data=jn.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),$c.getAdapter(e.adapter||Q0.adapter)(e).then(function(n){return Vn(e),n.data=jn.call(e,e.transformResponse,n),n.headers=Xe.from(n.headers),n},function(n){return Tc(n)||(Vn(e),n&&n.response&&(n.response.data=jn.call(e,e.transformResponse,n.response),n.response.headers=Xe.from(n.response.headers))),Promise.reject(n)})}const Uc="1.8.4",Fn={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Fn[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const ci={};Fn.transitional=function(t,r,n){function s(o,i){return"[Axios v"+Uc+"] Transitional option '"+o+"'"+i+(n?". "+n:"")}return(o,i,a)=>{if(t===!1)throw new ce(s(i," has been removed"+(r?" in "+r:"")),ce.ERR_DEPRECATED);return r&&!ci[i]&&(ci[i]=!0,console.warn(s(i," has been deprecated since v"+r+" and will be removed in the near future"))),t?t(o,i,a):!0}};Fn.spelling=function(t){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${t}`),!0)};function Ed(e,t,r){if(typeof e!="object")throw new ce("options must be an object",ce.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let s=n.length;for(;s-- >0;){const o=n[s],i=t[o];if(i){const a=e[o],f=a===void 0||i(a,o,e);if(f!==!0)throw new ce("option "+o+" must be "+f,ce.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new ce("Unknown option "+o,ce.ERR_BAD_OPTION)}}const cr={assertOptions:Ed,validators:Fn},pt=cr.validators;let Zt=class{constructor(t){this.defaults=t,this.interceptors={request:new Jo,response:new Jo}}async request(t,r){try{return await this._request(t,r)}catch(n){if(n instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{n.stack?o&&!String(n.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(n.stack+=`
-`+o):n.stack=o}catch{}}throw n}}_request(t,r){typeof t=="string"?(r=r||{},r.url=t):r=t||{},r=Jt(this.defaults,r);const{transitional:n,paramsSerializer:s,headers:o}=r;n!==void 0&&cr.assertOptions(n,{silentJSONParsing:pt.transitional(pt.boolean),forcedJSONParsing:pt.transitional(pt.boolean),clarifyTimeoutError:pt.transitional(pt.boolean)},!1),s!=null&&(R.isFunction(s)?r.paramsSerializer={serialize:s}:cr.assertOptions(s,{encode:pt.function,serialize:pt.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),cr.assertOptions(r,{baseUrl:pt.spelling("baseURL"),withXsrfToken:pt.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let i=o&&R.merge(o.common,o[r.method]);o&&R.forEach(["delete","get","head","post","put","patch","common"],h=>{delete o[h]}),r.headers=Xe.concat(i,o);const a=[];let f=!0;this.interceptors.request.forEach(function(p){typeof p.runWhen=="function"&&p.runWhen(r)===!1||(f=f&&p.synchronous,a.unshift(p.fulfilled,p.rejected))});const c=[];this.interceptors.response.forEach(function(p){c.push(p.fulfilled,p.rejected)});let l,u=0,x;if(!f){const h=[ai.bind(this),void 0];for(h.unshift.apply(h,a),h.push.apply(h,c),x=h.length,l=Promise.resolve(r);u{if(!n._listeners)return;let o=n._listeners.length;for(;o-- >0;)n._listeners[o](s);n._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(a=>{n.subscribe(a),o=a}).then(s);return i.cancel=function(){n.unsubscribe(o)},i},t(function(o,i,a){n.reason||(n.reason=new m0(o,i,a),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const r=this._listeners.indexOf(t);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const t=new AbortController,r=n=>{t.abort(n)};return this.subscribe(r),t.signal.unsubscribe=()=>this.unsubscribe(r),t.signal}static source(){let t;return{token:new qc(function(s){t=s}),cancel:t}}};function Cd(e){return function(r){return e.apply(null,r)}}function bd(e){return R.isObject(e)&&e.isAxiosError===!0}const gs={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(gs).forEach(([e,t])=>{gs[t]=e});function zc(e){const t=new Zt(e),r=Ec(Zt.prototype.request,t);return R.extend(r,Zt.prototype,t,{allOwnKeys:!0}),R.extend(r,t,null,{allOwnKeys:!0}),r.create=function(s){return zc(Jt(e,s))},r}const Ee=zc(Q0);Ee.Axios=Zt;Ee.CanceledError=m0;Ee.CancelToken=_d;Ee.isCancel=Tc;Ee.VERSION=Uc;Ee.toFormData=An;Ee.AxiosError=ce;Ee.Cancel=Ee.CanceledError;Ee.all=function(t){return Promise.all(t)};Ee.spread=Cd;Ee.isAxiosError=bd;Ee.mergeConfig=Jt;Ee.AxiosHeaders=Xe;Ee.formToJSON=e=>Oc(R.isHTMLForm(e)?new FormData(e):e);Ee.getAdapter=$c.getAdapter;Ee.HttpStatusCode=gs;Ee.default=Ee;const{Axios:kp,AxiosError:Pp,CanceledError:Op,isCancel:Tp,CancelToken:Ip,VERSION:Lp,all:Hp,Cancel:Mp,isAxiosError:Np,spread:$p,toFormData:Up,AxiosHeaders:qp,HttpStatusCode:zp,formToJSON:jp,getAdapter:Vp,mergeConfig:Wp}=Ee,Le=[];for(let e=0;e<256;++e)Le.push((e+256).toString(16).slice(1));function Ad(e,t=0){return(Le[e[t+0]]+Le[e[t+1]]+Le[e[t+2]]+Le[e[t+3]]+"-"+Le[e[t+4]]+Le[e[t+5]]+"-"+Le[e[t+6]]+Le[e[t+7]]+"-"+Le[e[t+8]]+Le[e[t+9]]+"-"+Le[e[t+10]]+Le[e[t+11]]+Le[e[t+12]]+Le[e[t+13]]+Le[e[t+14]]+Le[e[t+15]]).toLowerCase()}let Wn;const Bd=new Uint8Array(16);function Fd(){if(!Wn){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Wn=crypto.getRandomValues.bind(crypto)}return Wn(Bd)}const Dd=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),li={randomUUID:Dd};function wd(e,t,r){var s;if(li.randomUUID&&!e)return li.randomUUID();e=e||{};const n=e.random??((s=e.rng)==null?void 0:s.call(e))??Fd();if(n.length<16)throw new Error("Random bytes length must be >= 16");return n[6]=n[6]&15|64,n[8]=n[8]&63|128,Ad(n)}var Gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Gp(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Sd(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var s=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,s.get?s:{enumerable:!0,get:function(){return e[n]}})}),r}var lr={exports:{}};function Rd(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var fr={exports:{}};const kd={},Pd=Object.freeze(Object.defineProperty({__proto__:null,default:kd},Symbol.toStringTag,{value:"Module"})),Od=Sd(Pd);var Td=fr.exports,fi;function he(){return fi||(fi=1,function(e,t){(function(r,n){e.exports=n()})(Td,function(){var r=r||function(n,s){var o;if(typeof window<"u"&&window.crypto&&(o=window.crypto),typeof self<"u"&&self.crypto&&(o=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(o=globalThis.crypto),!o&&typeof window<"u"&&window.msCrypto&&(o=window.msCrypto),!o&&typeof Gn<"u"&&Gn.crypto&&(o=Gn.crypto),!o&&typeof Rd=="function")try{o=Od}catch{}var i=function(){if(o){if(typeof o.getRandomValues=="function")try{return o.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof o.randomBytes=="function")try{return o.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},a=Object.create||function(){function g(){}return function(m){var y;return g.prototype=m,y=new g,g.prototype=null,y}}(),f={},c=f.lib={},l=c.Base=function(){return{extend:function(g){var m=a(this);return g&&m.mixIn(g),(!m.hasOwnProperty("init")||this.init===m.init)&&(m.init=function(){m.$super.init.apply(this,arguments)}),m.init.prototype=m,m.$super=this,m},create:function(){var g=this.extend();return g.init.apply(g,arguments),g},init:function(){},mixIn:function(g){for(var m in g)g.hasOwnProperty(m)&&(this[m]=g[m]);g.hasOwnProperty("toString")&&(this.toString=g.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),u=c.WordArray=l.extend({init:function(g,m){g=this.words=g||[],m!=s?this.sigBytes=m:this.sigBytes=g.length*4},toString:function(g){return(g||d).stringify(this)},concat:function(g){var m=this.words,y=g.words,b=this.sigBytes,F=g.sigBytes;if(this.clamp(),b%4)for(var D=0;D>>2]>>>24-D%4*8&255;m[b+D>>>2]|=w<<24-(b+D)%4*8}else for(var P=0;P>>2]=y[P>>>2];return this.sigBytes+=F,this},clamp:function(){var g=this.words,m=this.sigBytes;g[m>>>2]&=4294967295<<32-m%4*8,g.length=n.ceil(m/4)},clone:function(){var g=l.clone.call(this);return g.words=this.words.slice(0),g},random:function(g){for(var m=[],y=0;y>>2]>>>24-F%4*8&255;b.push((D>>>4).toString(16)),b.push((D&15).toString(16))}return b.join("")},parse:function(g){for(var m=g.length,y=[],b=0;b>>3]|=parseInt(g.substr(b,2),16)<<24-b%8*4;return new u.init(y,m/2)}},h=x.Latin1={stringify:function(g){for(var m=g.words,y=g.sigBytes,b=[],F=0;F>>2]>>>24-F%4*8&255;b.push(String.fromCharCode(D))}return b.join("")},parse:function(g){for(var m=g.length,y=[],b=0;b>>2]|=(g.charCodeAt(b)&255)<<24-b%4*8;return new u.init(y,m)}},p=x.Utf8={stringify:function(g){try{return decodeURIComponent(escape(h.stringify(g)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(g){return h.parse(unescape(encodeURIComponent(g)))}},v=c.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(g){typeof g=="string"&&(g=p.parse(g)),this._data.concat(g),this._nDataBytes+=g.sigBytes},_process:function(g){var m,y=this._data,b=y.words,F=y.sigBytes,D=this.blockSize,w=D*4,P=F/w;g?P=n.ceil(P):P=n.max((P|0)-this._minBufferSize,0);var A=P*D,S=n.min(A*4,F);if(A){for(var L=0;L>>2]|=f[u]<<24-u%4*8;i.call(this,l,c)}else i.apply(this,arguments)};a.prototype=o}}(),r.lib.WordArray})}(xr)),xr.exports}var dr={exports:{}},Md=dr.exports,di;function Nd(){return di||(di=1,function(e,t){(function(r,n){e.exports=n(he())})(Md,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=n.enc;i.Utf16=i.Utf16BE={stringify:function(f){for(var c=f.words,l=f.sigBytes,u=[],x=0;x>>2]>>>16-x%4*8&65535;u.push(String.fromCharCode(d))}return u.join("")},parse:function(f){for(var c=f.length,l=[],u=0;u>>1]|=f.charCodeAt(u)<<16-u%2*16;return o.create(l,c*2)}},i.Utf16LE={stringify:function(f){for(var c=f.words,l=f.sigBytes,u=[],x=0;x>>2]>>>16-x%4*8&65535);u.push(String.fromCharCode(d))}return u.join("")},parse:function(f){for(var c=f.length,l=[],u=0;u>>1]|=a(f.charCodeAt(u)<<16-u%2*16);return o.create(l,c*2)}};function a(f){return f<<8&4278255360|f>>>8&16711935}}(),r.enc.Utf16})}(dr)),dr.exports}var hr={exports:{}},$d=hr.exports,hi;function r0(){return hi||(hi=1,function(e,t){(function(r,n){e.exports=n(he())})($d,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=n.enc;i.Base64={stringify:function(f){var c=f.words,l=f.sigBytes,u=this._map;f.clamp();for(var x=[],d=0;d>>2]>>>24-d%4*8&255,p=c[d+1>>>2]>>>24-(d+1)%4*8&255,v=c[d+2>>>2]>>>24-(d+2)%4*8&255,C=h<<16|p<<8|v,g=0;g<4&&d+g*.75>>6*(3-g)&63));var m=u.charAt(64);if(m)for(;x.length%4;)x.push(m);return x.join("")},parse:function(f){var c=f.length,l=this._map,u=this._reverseMap;if(!u){u=this._reverseMap=[];for(var x=0;x>>6-d%4*2,v=h|p;u[x>>>2]|=v<<24-x%4*8,x++}return o.create(u,x)}}(),r.enc.Base64})}(hr)),hr.exports}var pr={exports:{}},Ud=pr.exports,pi;function qd(){return pi||(pi=1,function(e,t){(function(r,n){e.exports=n(he())})(Ud,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=n.enc;i.Base64url={stringify:function(f,c){c===void 0&&(c=!0);var l=f.words,u=f.sigBytes,x=c?this._safe_map:this._map;f.clamp();for(var d=[],h=0;h>>2]>>>24-h%4*8&255,v=l[h+1>>>2]>>>24-(h+1)%4*8&255,C=l[h+2>>>2]>>>24-(h+2)%4*8&255,g=p<<16|v<<8|C,m=0;m<4&&h+m*.75>>6*(3-m)&63));var y=x.charAt(64);if(y)for(;d.length%4;)d.push(y);return d.join("")},parse:function(f,c){c===void 0&&(c=!0);var l=f.length,u=c?this._safe_map:this._map,x=this._reverseMap;if(!x){x=this._reverseMap=[];for(var d=0;d>>6-d%4*2,v=h|p;u[x>>>2]|=v<<24-x%4*8,x++}return o.create(u,x)}}(),r.enc.Base64url})}(pr)),pr.exports}var vr={exports:{}},zd=vr.exports,vi;function n0(){return vi||(vi=1,function(e,t){(function(r,n){e.exports=n(he())})(zd,function(r){return function(n){var s=r,o=s.lib,i=o.WordArray,a=o.Hasher,f=s.algo,c=[];(function(){for(var p=0;p<64;p++)c[p]=n.abs(n.sin(p+1))*4294967296|0})();var l=f.MD5=a.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,v){for(var C=0;C<16;C++){var g=v+C,m=p[g];p[g]=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360}var y=this._hash.words,b=p[v+0],F=p[v+1],D=p[v+2],w=p[v+3],P=p[v+4],A=p[v+5],S=p[v+6],L=p[v+7],T=p[v+8],Y=p[v+9],te=p[v+10],Q=p[v+11],X=p[v+12],ee=p[v+13],de=p[v+14],xe=p[v+15],O=y[0],N=y[1],z=y[2],$=y[3];O=u(O,N,z,$,b,7,c[0]),$=u($,O,N,z,F,12,c[1]),z=u(z,$,O,N,D,17,c[2]),N=u(N,z,$,O,w,22,c[3]),O=u(O,N,z,$,P,7,c[4]),$=u($,O,N,z,A,12,c[5]),z=u(z,$,O,N,S,17,c[6]),N=u(N,z,$,O,L,22,c[7]),O=u(O,N,z,$,T,7,c[8]),$=u($,O,N,z,Y,12,c[9]),z=u(z,$,O,N,te,17,c[10]),N=u(N,z,$,O,Q,22,c[11]),O=u(O,N,z,$,X,7,c[12]),$=u($,O,N,z,ee,12,c[13]),z=u(z,$,O,N,de,17,c[14]),N=u(N,z,$,O,xe,22,c[15]),O=x(O,N,z,$,F,5,c[16]),$=x($,O,N,z,S,9,c[17]),z=x(z,$,O,N,Q,14,c[18]),N=x(N,z,$,O,b,20,c[19]),O=x(O,N,z,$,A,5,c[20]),$=x($,O,N,z,te,9,c[21]),z=x(z,$,O,N,xe,14,c[22]),N=x(N,z,$,O,P,20,c[23]),O=x(O,N,z,$,Y,5,c[24]),$=x($,O,N,z,de,9,c[25]),z=x(z,$,O,N,w,14,c[26]),N=x(N,z,$,O,T,20,c[27]),O=x(O,N,z,$,ee,5,c[28]),$=x($,O,N,z,D,9,c[29]),z=x(z,$,O,N,L,14,c[30]),N=x(N,z,$,O,X,20,c[31]),O=d(O,N,z,$,A,4,c[32]),$=d($,O,N,z,T,11,c[33]),z=d(z,$,O,N,Q,16,c[34]),N=d(N,z,$,O,de,23,c[35]),O=d(O,N,z,$,F,4,c[36]),$=d($,O,N,z,P,11,c[37]),z=d(z,$,O,N,L,16,c[38]),N=d(N,z,$,O,te,23,c[39]),O=d(O,N,z,$,ee,4,c[40]),$=d($,O,N,z,b,11,c[41]),z=d(z,$,O,N,w,16,c[42]),N=d(N,z,$,O,S,23,c[43]),O=d(O,N,z,$,Y,4,c[44]),$=d($,O,N,z,X,11,c[45]),z=d(z,$,O,N,xe,16,c[46]),N=d(N,z,$,O,D,23,c[47]),O=h(O,N,z,$,b,6,c[48]),$=h($,O,N,z,L,10,c[49]),z=h(z,$,O,N,de,15,c[50]),N=h(N,z,$,O,A,21,c[51]),O=h(O,N,z,$,X,6,c[52]),$=h($,O,N,z,w,10,c[53]),z=h(z,$,O,N,te,15,c[54]),N=h(N,z,$,O,F,21,c[55]),O=h(O,N,z,$,T,6,c[56]),$=h($,O,N,z,xe,10,c[57]),z=h(z,$,O,N,S,15,c[58]),N=h(N,z,$,O,ee,21,c[59]),O=h(O,N,z,$,P,6,c[60]),$=h($,O,N,z,Q,10,c[61]),z=h(z,$,O,N,D,15,c[62]),N=h(N,z,$,O,Y,21,c[63]),y[0]=y[0]+O|0,y[1]=y[1]+N|0,y[2]=y[2]+z|0,y[3]=y[3]+$|0},_doFinalize:function(){var p=this._data,v=p.words,C=this._nDataBytes*8,g=p.sigBytes*8;v[g>>>5]|=128<<24-g%32;var m=n.floor(C/4294967296),y=C;v[(g+64>>>9<<4)+15]=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,v[(g+64>>>9<<4)+14]=(y<<8|y>>>24)&16711935|(y<<24|y>>>8)&4278255360,p.sigBytes=(v.length+1)*4,this._process();for(var b=this._hash,F=b.words,D=0;D<4;D++){var w=F[D];F[D]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360}return b},clone:function(){var p=a.clone.call(this);return p._hash=this._hash.clone(),p}});function u(p,v,C,g,m,y,b){var F=p+(v&C|~v&g)+m+b;return(F<>>32-y)+v}function x(p,v,C,g,m,y,b){var F=p+(v&g|C&~g)+m+b;return(F<>>32-y)+v}function d(p,v,C,g,m,y,b){var F=p+(v^C^g)+m+b;return(F<>>32-y)+v}function h(p,v,C,g,m,y,b){var F=p+(C^(v|~g))+m+b;return(F<>>32-y)+v}s.MD5=a._createHelper(l),s.HmacMD5=a._createHmacHelper(l)}(Math),r.MD5})}(vr)),vr.exports}var gr={exports:{}},jd=gr.exports,gi;function jc(){return gi||(gi=1,function(e,t){(function(r,n){e.exports=n(he())})(jd,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=s.Hasher,a=n.algo,f=[],c=a.SHA1=i.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(l,u){for(var x=this._hash.words,d=x[0],h=x[1],p=x[2],v=x[3],C=x[4],g=0;g<80;g++){if(g<16)f[g]=l[u+g]|0;else{var m=f[g-3]^f[g-8]^f[g-14]^f[g-16];f[g]=m<<1|m>>>31}var y=(d<<5|d>>>27)+C+f[g];g<20?y+=(h&p|~h&v)+1518500249:g<40?y+=(h^p^v)+1859775393:g<60?y+=(h&p|h&v|p&v)-1894007588:y+=(h^p^v)-899497514,C=v,v=p,p=h<<30|h>>>2,h=d,d=y}x[0]=x[0]+d|0,x[1]=x[1]+h|0,x[2]=x[2]+p|0,x[3]=x[3]+v|0,x[4]=x[4]+C|0},_doFinalize:function(){var l=this._data,u=l.words,x=this._nDataBytes*8,d=l.sigBytes*8;return u[d>>>5]|=128<<24-d%32,u[(d+64>>>9<<4)+14]=Math.floor(x/4294967296),u[(d+64>>>9<<4)+15]=x,l.sigBytes=u.length*4,this._process(),this._hash},clone:function(){var l=i.clone.call(this);return l._hash=this._hash.clone(),l}});n.SHA1=i._createHelper(c),n.HmacSHA1=i._createHmacHelper(c)}(),r.SHA1})}(gr)),gr.exports}var mr={exports:{}},Vd=mr.exports,mi;function Us(){return mi||(mi=1,function(e,t){(function(r,n){e.exports=n(he())})(Vd,function(r){return function(n){var s=r,o=s.lib,i=o.WordArray,a=o.Hasher,f=s.algo,c=[],l=[];(function(){function d(C){for(var g=n.sqrt(C),m=2;m<=g;m++)if(!(C%m))return!1;return!0}function h(C){return(C-(C|0))*4294967296|0}for(var p=2,v=0;v<64;)d(p)&&(v<8&&(c[v]=h(n.pow(p,1/2))),l[v]=h(n.pow(p,1/3)),v++),p++})();var u=[],x=f.SHA256=a.extend({_doReset:function(){this._hash=new i.init(c.slice(0))},_doProcessBlock:function(d,h){for(var p=this._hash.words,v=p[0],C=p[1],g=p[2],m=p[3],y=p[4],b=p[5],F=p[6],D=p[7],w=0;w<64;w++){if(w<16)u[w]=d[h+w]|0;else{var P=u[w-15],A=(P<<25|P>>>7)^(P<<14|P>>>18)^P>>>3,S=u[w-2],L=(S<<15|S>>>17)^(S<<13|S>>>19)^S>>>10;u[w]=A+u[w-7]+L+u[w-16]}var T=y&b^~y&F,Y=v&C^v&g^C&g,te=(v<<30|v>>>2)^(v<<19|v>>>13)^(v<<10|v>>>22),Q=(y<<26|y>>>6)^(y<<21|y>>>11)^(y<<7|y>>>25),X=D+Q+T+l[w]+u[w],ee=te+Y;D=F,F=b,b=y,y=m+X|0,m=g,g=C,C=v,v=X+ee|0}p[0]=p[0]+v|0,p[1]=p[1]+C|0,p[2]=p[2]+g|0,p[3]=p[3]+m|0,p[4]=p[4]+y|0,p[5]=p[5]+b|0,p[6]=p[6]+F|0,p[7]=p[7]+D|0},_doFinalize:function(){var d=this._data,h=d.words,p=this._nDataBytes*8,v=d.sigBytes*8;return h[v>>>5]|=128<<24-v%32,h[(v+64>>>9<<4)+14]=n.floor(p/4294967296),h[(v+64>>>9<<4)+15]=p,d.sigBytes=h.length*4,this._process(),this._hash},clone:function(){var d=a.clone.call(this);return d._hash=this._hash.clone(),d}});s.SHA256=a._createHelper(x),s.HmacSHA256=a._createHmacHelper(x)}(Math),r.SHA256})}(mr)),mr.exports}var yr={exports:{}},Wd=yr.exports,yi;function Gd(){return yi||(yi=1,function(e,t){(function(r,n,s){e.exports=n(he(),Us())})(Wd,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=n.algo,a=i.SHA256,f=i.SHA224=a.extend({_doReset:function(){this._hash=new o.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var c=a._doFinalize.call(this);return c.sigBytes-=4,c}});n.SHA224=a._createHelper(f),n.HmacSHA224=a._createHmacHelper(f)}(),r.SHA224})}(yr)),yr.exports}var Er={exports:{}},Kd=Er.exports,Ei;function Vc(){return Ei||(Ei=1,function(e,t){(function(r,n,s){e.exports=n(he(),Dn())})(Kd,function(r){return function(){var n=r,s=n.lib,o=s.Hasher,i=n.x64,a=i.Word,f=i.WordArray,c=n.algo;function l(){return a.create.apply(a,arguments)}var u=[l(1116352408,3609767458),l(1899447441,602891725),l(3049323471,3964484399),l(3921009573,2173295548),l(961987163,4081628472),l(1508970993,3053834265),l(2453635748,2937671579),l(2870763221,3664609560),l(3624381080,2734883394),l(310598401,1164996542),l(607225278,1323610764),l(1426881987,3590304994),l(1925078388,4068182383),l(2162078206,991336113),l(2614888103,633803317),l(3248222580,3479774868),l(3835390401,2666613458),l(4022224774,944711139),l(264347078,2341262773),l(604807628,2007800933),l(770255983,1495990901),l(1249150122,1856431235),l(1555081692,3175218132),l(1996064986,2198950837),l(2554220882,3999719339),l(2821834349,766784016),l(2952996808,2566594879),l(3210313671,3203337956),l(3336571891,1034457026),l(3584528711,2466948901),l(113926993,3758326383),l(338241895,168717936),l(666307205,1188179964),l(773529912,1546045734),l(1294757372,1522805485),l(1396182291,2643833823),l(1695183700,2343527390),l(1986661051,1014477480),l(2177026350,1206759142),l(2456956037,344077627),l(2730485921,1290863460),l(2820302411,3158454273),l(3259730800,3505952657),l(3345764771,106217008),l(3516065817,3606008344),l(3600352804,1432725776),l(4094571909,1467031594),l(275423344,851169720),l(430227734,3100823752),l(506948616,1363258195),l(659060556,3750685593),l(883997877,3785050280),l(958139571,3318307427),l(1322822218,3812723403),l(1537002063,2003034995),l(1747873779,3602036899),l(1955562222,1575990012),l(2024104815,1125592928),l(2227730452,2716904306),l(2361852424,442776044),l(2428436474,593698344),l(2756734187,3733110249),l(3204031479,2999351573),l(3329325298,3815920427),l(3391569614,3928383900),l(3515267271,566280711),l(3940187606,3454069534),l(4118630271,4000239992),l(116418474,1914138554),l(174292421,2731055270),l(289380356,3203993006),l(460393269,320620315),l(685471733,587496836),l(852142971,1086792851),l(1017036298,365543100),l(1126000580,2618297676),l(1288033470,3409855158),l(1501505948,4234509866),l(1607167915,987167468),l(1816402316,1246189591)],x=[];(function(){for(var h=0;h<80;h++)x[h]=l()})();var d=c.SHA512=o.extend({_doReset:function(){this._hash=new f.init([new a.init(1779033703,4089235720),new a.init(3144134277,2227873595),new a.init(1013904242,4271175723),new a.init(2773480762,1595750129),new a.init(1359893119,2917565137),new a.init(2600822924,725511199),new a.init(528734635,4215389547),new a.init(1541459225,327033209)])},_doProcessBlock:function(h,p){for(var v=this._hash.words,C=v[0],g=v[1],m=v[2],y=v[3],b=v[4],F=v[5],D=v[6],w=v[7],P=C.high,A=C.low,S=g.high,L=g.low,T=m.high,Y=m.low,te=y.high,Q=y.low,X=b.high,ee=b.low,de=F.high,xe=F.low,O=D.high,N=D.low,z=w.high,$=w.low,be=P,ue=A,k=S,U=L,G=T,Z=Y,me=te,E=Q,_=X,B=ee,I=de,M=xe,H=O,W=N,V=z,j=$,q=0;q<80;q++){var J,K,re=x[q];if(q<16)K=re.high=h[p+q*2]|0,J=re.low=h[p+q*2+1]|0;else{var oe=x[q-15],le=oe.high,pe=oe.low,ye=(le>>>1|pe<<31)^(le>>>8|pe<<24)^le>>>7,Me=(pe>>>1|le<<31)^(pe>>>8|le<<24)^(pe>>>7|le<<25),Te=x[q-2],Ie=Te.high,Ne=Te.low,qt=(Ie>>>19|Ne<<13)^(Ie<<3|Ne>>>29)^Ie>>>6,y0=(Ne>>>19|Ie<<13)^(Ne<<3|Ie>>>29)^(Ne>>>6|Ie<<26),$e=x[q-7],tt=$e.high,Y0=$e.low,js=x[q-16],Qc=js.high,Vs=js.low;J=Me+Y0,K=ye+tt+(J>>>0>>0?1:0),J=J+y0,K=K+qt+(J>>>0>>0?1:0),J=J+Vs,K=K+Qc+(J>>>0>>0?1:0),re.high=K,re.low=J}var Zc=_&I^~_&H,Ws=B&M^~B&W,Yc=be&k^be&G^k&G,Jc=ue&U^ue&Z^U&Z,el=(be>>>28|ue<<4)^(be<<30|ue>>>2)^(be<<25|ue>>>7),Gs=(ue>>>28|be<<4)^(ue<<30|be>>>2)^(ue<<25|be>>>7),tl=(_>>>14|B<<18)^(_>>>18|B<<14)^(_<<23|B>>>9),rl=(B>>>14|_<<18)^(B>>>18|_<<14)^(B<<23|_>>>9),Ks=u[q],nl=Ks.high,Xs=Ks.low,Qe=j+rl,wt=V+tl+(Qe>>>0>>0?1:0),Qe=Qe+Ws,wt=wt+Zc+(Qe>>>0>>0?1:0),Qe=Qe+Xs,wt=wt+nl+(Qe>>>0>>0?1:0),Qe=Qe+J,wt=wt+K+(Qe>>>0>>0?1:0),Qs=Gs+Jc,sl=el+Yc+(Qs>>>0>>0?1:0);V=H,j=W,H=I,W=M,I=_,M=B,B=E+Qe|0,_=me+wt+(B>>>0>>0?1:0)|0,me=G,E=Z,G=k,Z=U,k=be,U=ue,ue=Qe+Qs|0,be=wt+sl+(ue>>>0>>0?1:0)|0}A=C.low=A+ue,C.high=P+be+(A>>>0>>0?1:0),L=g.low=L+U,g.high=S+k+(L>>>0>>0?1:0),Y=m.low=Y+Z,m.high=T+G+(Y>>>0>>0?1:0),Q=y.low=Q+E,y.high=te+me+(Q>>>0>>0?1:0),ee=b.low=ee+B,b.high=X+_+(ee>>>0>>0?1:0),xe=F.low=xe+M,F.high=de+I+(xe>>>0>>0?1:0),N=D.low=N+W,D.high=O+H+(N>>>0>>0?1:0),$=w.low=$+j,w.high=z+V+($>>>0>>0?1:0)},_doFinalize:function(){var h=this._data,p=h.words,v=this._nDataBytes*8,C=h.sigBytes*8;p[C>>>5]|=128<<24-C%32,p[(C+128>>>10<<5)+30]=Math.floor(v/4294967296),p[(C+128>>>10<<5)+31]=v,h.sigBytes=p.length*4,this._process();var g=this._hash.toX32();return g},clone:function(){var h=o.clone.call(this);return h._hash=this._hash.clone(),h},blockSize:1024/32});n.SHA512=o._createHelper(d),n.HmacSHA512=o._createHmacHelper(d)}(),r.SHA512})}(Er)),Er.exports}var _r={exports:{}},Xd=_r.exports,_i;function Qd(){return _i||(_i=1,function(e,t){(function(r,n,s){e.exports=n(he(),Dn(),Vc())})(Xd,function(r){return function(){var n=r,s=n.x64,o=s.Word,i=s.WordArray,a=n.algo,f=a.SHA512,c=a.SHA384=f.extend({_doReset:function(){this._hash=new i.init([new o.init(3418070365,3238371032),new o.init(1654270250,914150663),new o.init(2438529370,812702999),new o.init(355462360,4144912697),new o.init(1731405415,4290775857),new o.init(2394180231,1750603025),new o.init(3675008525,1694076839),new o.init(1203062813,3204075428)])},_doFinalize:function(){var l=f._doFinalize.call(this);return l.sigBytes-=16,l}});n.SHA384=f._createHelper(c),n.HmacSHA384=f._createHmacHelper(c)}(),r.SHA384})}(_r)),_r.exports}var Cr={exports:{}},Zd=Cr.exports,Ci;function Yd(){return Ci||(Ci=1,function(e,t){(function(r,n,s){e.exports=n(he(),Dn())})(Zd,function(r){return function(n){var s=r,o=s.lib,i=o.WordArray,a=o.Hasher,f=s.x64,c=f.Word,l=s.algo,u=[],x=[],d=[];(function(){for(var v=1,C=0,g=0;g<24;g++){u[v+5*C]=(g+1)*(g+2)/2%64;var m=C%5,y=(2*v+3*C)%5;v=m,C=y}for(var v=0;v<5;v++)for(var C=0;C<5;C++)x[v+5*C]=C+(2*v+3*C)%5*5;for(var b=1,F=0;F<24;F++){for(var D=0,w=0,P=0;P<7;P++){if(b&1){var A=(1<>>24)&16711935|(b<<24|b>>>8)&4278255360,F=(F<<8|F>>>24)&16711935|(F<<24|F>>>8)&4278255360;var D=g[y];D.high^=F,D.low^=b}for(var w=0;w<24;w++){for(var P=0;P<5;P++){for(var A=0,S=0,L=0;L<5;L++){var D=g[P+5*L];A^=D.high,S^=D.low}var T=h[P];T.high=A,T.low=S}for(var P=0;P<5;P++)for(var Y=h[(P+4)%5],te=h[(P+1)%5],Q=te.high,X=te.low,A=Y.high^(Q<<1|X>>>31),S=Y.low^(X<<1|Q>>>31),L=0;L<5;L++){var D=g[P+5*L];D.high^=A,D.low^=S}for(var ee=1;ee<25;ee++){var A,S,D=g[ee],de=D.high,xe=D.low,O=u[ee];O<32?(A=de<>>32-O,S=xe<>>32-O):(A=xe<>>64-O,S=de<>>64-O);var N=h[x[ee]];N.high=A,N.low=S}var z=h[0],$=g[0];z.high=$.high,z.low=$.low;for(var P=0;P<5;P++)for(var L=0;L<5;L++){var ee=P+5*L,D=g[ee],be=h[ee],ue=h[(P+1)%5+5*L],k=h[(P+2)%5+5*L];D.high=be.high^~ue.high&k.high,D.low=be.low^~ue.low&k.low}var D=g[0],U=d[w];D.high^=U.high,D.low^=U.low}},_doFinalize:function(){var v=this._data,C=v.words;this._nDataBytes*8;var g=v.sigBytes*8,m=this.blockSize*32;C[g>>>5]|=1<<24-g%32,C[(n.ceil((g+1)/m)*m>>>5)-1]|=128,v.sigBytes=C.length*4,this._process();for(var y=this._state,b=this.cfg.outputLength/8,F=b/8,D=[],w=0;w>>24)&16711935|(A<<24|A>>>8)&4278255360,S=(S<<8|S>>>24)&16711935|(S<<24|S>>>8)&4278255360,D.push(S),D.push(A)}return new i.init(D,b)},clone:function(){for(var v=a.clone.call(this),C=v._state=this._state.slice(0),g=0;g<25;g++)C[g]=C[g].clone();return v}});s.SHA3=a._createHelper(p),s.HmacSHA3=a._createHmacHelper(p)}(Math),r.SHA3})}(Cr)),Cr.exports}var br={exports:{}},Jd=br.exports,bi;function eh(){return bi||(bi=1,function(e,t){(function(r,n){e.exports=n(he())})(Jd,function(r){/** @preserve
- (c) 2012 by Cédric Mesnil. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */return function(n){var s=r,o=s.lib,i=o.WordArray,a=o.Hasher,f=s.algo,c=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),u=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),x=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),d=i.create([0,1518500249,1859775393,2400959708,2840853838]),h=i.create([1352829926,1548603684,1836072691,2053994217,0]),p=f.RIPEMD160=a.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(F,D){for(var w=0;w<16;w++){var P=D+w,A=F[P];F[P]=(A<<8|A>>>24)&16711935|(A<<24|A>>>8)&4278255360}var S=this._hash.words,L=d.words,T=h.words,Y=c.words,te=l.words,Q=u.words,X=x.words,ee,de,xe,O,N,z,$,be,ue,k;z=ee=S[0],$=de=S[1],be=xe=S[2],ue=O=S[3],k=N=S[4];for(var U,w=0;w<80;w+=1)U=ee+F[D+Y[w]]|0,w<16?U+=v(de,xe,O)+L[0]:w<32?U+=C(de,xe,O)+L[1]:w<48?U+=g(de,xe,O)+L[2]:w<64?U+=m(de,xe,O)+L[3]:U+=y(de,xe,O)+L[4],U=U|0,U=b(U,Q[w]),U=U+N|0,ee=N,N=O,O=b(xe,10),xe=de,de=U,U=z+F[D+te[w]]|0,w<16?U+=y($,be,ue)+T[0]:w<32?U+=m($,be,ue)+T[1]:w<48?U+=g($,be,ue)+T[2]:w<64?U+=C($,be,ue)+T[3]:U+=v($,be,ue)+T[4],U=U|0,U=b(U,X[w]),U=U+k|0,z=k,k=ue,ue=b(be,10),be=$,$=U;U=S[1]+xe+ue|0,S[1]=S[2]+O+k|0,S[2]=S[3]+N+z|0,S[3]=S[4]+ee+$|0,S[4]=S[0]+de+be|0,S[0]=U},_doFinalize:function(){var F=this._data,D=F.words,w=this._nDataBytes*8,P=F.sigBytes*8;D[P>>>5]|=128<<24-P%32,D[(P+64>>>9<<4)+14]=(w<<8|w>>>24)&16711935|(w<<24|w>>>8)&4278255360,F.sigBytes=(D.length+1)*4,this._process();for(var A=this._hash,S=A.words,L=0;L<5;L++){var T=S[L];S[L]=(T<<8|T>>>24)&16711935|(T<<24|T>>>8)&4278255360}return A},clone:function(){var F=a.clone.call(this);return F._hash=this._hash.clone(),F}});function v(F,D,w){return F^D^w}function C(F,D,w){return F&D|~F&w}function g(F,D,w){return(F|~D)^w}function m(F,D,w){return F&w|D&~w}function y(F,D,w){return F^(D|~w)}function b(F,D){return F<>>32-D}s.RIPEMD160=a._createHelper(p),s.HmacRIPEMD160=a._createHmacHelper(p)}(),r.RIPEMD160})}(br)),br.exports}var Ar={exports:{}},th=Ar.exports,Ai;function qs(){return Ai||(Ai=1,function(e,t){(function(r,n){e.exports=n(he())})(th,function(r){(function(){var n=r,s=n.lib,o=s.Base,i=n.enc,a=i.Utf8,f=n.algo;f.HMAC=o.extend({init:function(c,l){c=this._hasher=new c.init,typeof l=="string"&&(l=a.parse(l));var u=c.blockSize,x=u*4;l.sigBytes>x&&(l=c.finalize(l)),l.clamp();for(var d=this._oKey=l.clone(),h=this._iKey=l.clone(),p=d.words,v=h.words,C=0;C>>2]&255;A.sigBytes-=S}};o.BlockCipher=d.extend({cfg:d.cfg.extend({mode:v,padding:g}),reset:function(){var A;d.reset.call(this);var S=this.cfg,L=S.iv,T=S.mode;this._xformMode==this._ENC_XFORM_MODE?A=T.createEncryptor:(A=T.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==A?this._mode.init(this,L&&L.words):(this._mode=A.call(T,this,L&&L.words),this._mode.__creator=A)},_doProcessBlock:function(A,S){this._mode.processBlock(A,S)},_doFinalize:function(){var A,S=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(S.pad(this._data,this.blockSize),A=this._process(!0)):(A=this._process(!0),S.unpad(A)),A},blockSize:128/32});var m=o.CipherParams=i.extend({init:function(A){this.mixIn(A)},toString:function(A){return(A||this.formatter).stringify(this)}}),y=s.format={},b=y.OpenSSL={stringify:function(A){var S,L=A.ciphertext,T=A.salt;return T?S=a.create([1398893684,1701076831]).concat(T).concat(L):S=L,S.toString(l)},parse:function(A){var S,L=l.parse(A),T=L.words;return T[0]==1398893684&&T[1]==1701076831&&(S=a.create(T.slice(2,4)),T.splice(0,4),L.sigBytes-=16),m.create({ciphertext:L,salt:S})}},F=o.SerializableCipher=i.extend({cfg:i.extend({format:b}),encrypt:function(A,S,L,T){T=this.cfg.extend(T);var Y=A.createEncryptor(L,T),te=Y.finalize(S),Q=Y.cfg;return m.create({ciphertext:te,key:L,iv:Q.iv,algorithm:A,mode:Q.mode,padding:Q.padding,blockSize:A.blockSize,formatter:T.format})},decrypt:function(A,S,L,T){T=this.cfg.extend(T),S=this._parse(S,T.format);var Y=A.createDecryptor(L,T).finalize(S.ciphertext);return Y},_parse:function(A,S){return typeof A=="string"?S.parse(A,this):A}}),D=s.kdf={},w=D.OpenSSL={execute:function(A,S,L,T,Y){if(T||(T=a.random(64/8)),Y)var te=x.create({keySize:S+L,hasher:Y}).compute(A,T);else var te=x.create({keySize:S+L}).compute(A,T);var Q=a.create(te.words.slice(S),L*4);return te.sigBytes=S*4,m.create({key:te,iv:Q,salt:T})}},P=o.PasswordBasedCipher=F.extend({cfg:F.cfg.extend({kdf:w}),encrypt:function(A,S,L,T){T=this.cfg.extend(T);var Y=T.kdf.execute(L,A.keySize,A.ivSize,T.salt,T.hasher);T.iv=Y.iv;var te=F.encrypt.call(this,A,S,Y.key,T);return te.mixIn(Y),te},decrypt:function(A,S,L,T){T=this.cfg.extend(T),S=this._parse(S,T.format);var Y=T.kdf.execute(L,A.keySize,A.ivSize,S.salt,T.hasher);T.iv=Y.iv;var te=F.decrypt.call(this,A,S,Y.key,T);return te}})}()})}(Dr)),Dr.exports}var wr={exports:{}},ih=wr.exports,wi;function ah(){return wi||(wi=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(ih,function(r){return r.mode.CFB=function(){var n=r.lib.BlockCipherMode.extend();n.Encryptor=n.extend({processBlock:function(o,i){var a=this._cipher,f=a.blockSize;s.call(this,o,i,f,a),this._prevBlock=o.slice(i,i+f)}}),n.Decryptor=n.extend({processBlock:function(o,i){var a=this._cipher,f=a.blockSize,c=o.slice(i,i+f);s.call(this,o,i,f,a),this._prevBlock=c}});function s(o,i,a,f){var c,l=this._iv;l?(c=l.slice(0),this._iv=void 0):c=this._prevBlock,f.encryptBlock(c,0);for(var u=0;u>24&255)===255){var f=a>>16&255,c=a>>8&255,l=a&255;f===255?(f=0,c===255?(c=0,l===255?l=0:++l):++c):++f,a=0,a+=f<<16,a+=c<<8,a+=l}else a+=1<<24;return a}function o(a){return(a[0]=s(a[0]))===0&&(a[1]=s(a[1])),a}var i=n.Encryptor=n.extend({processBlock:function(a,f){var c=this._cipher,l=c.blockSize,u=this._iv,x=this._counter;u&&(x=this._counter=u.slice(0),this._iv=void 0),o(x);var d=x.slice(0);c.encryptBlock(d,0);for(var h=0;h>>2]|=a<<24-f%4*8,n.sigBytes+=a},unpad:function(n){var s=n.words[n.sigBytes-1>>>2]&255;n.sigBytes-=s}},r.pad.Ansix923})}(Or)),Or.exports}var Tr={exports:{}},mh=Tr.exports,Ti;function yh(){return Ti||(Ti=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(mh,function(r){return r.pad.Iso10126={pad:function(n,s){var o=s*4,i=o-n.sigBytes%o;n.concat(r.lib.WordArray.random(i-1)).concat(r.lib.WordArray.create([i<<24],1))},unpad:function(n){var s=n.words[n.sigBytes-1>>>2]&255;n.sigBytes-=s}},r.pad.Iso10126})}(Tr)),Tr.exports}var Ir={exports:{}},Eh=Ir.exports,Ii;function _h(){return Ii||(Ii=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(Eh,function(r){return r.pad.Iso97971={pad:function(n,s){n.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(n,s)},unpad:function(n){r.pad.ZeroPadding.unpad(n),n.sigBytes--}},r.pad.Iso97971})}(Ir)),Ir.exports}var Lr={exports:{}},Ch=Lr.exports,Li;function bh(){return Li||(Li=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(Ch,function(r){return r.pad.ZeroPadding={pad:function(n,s){var o=s*4;n.clamp(),n.sigBytes+=o-(n.sigBytes%o||o)},unpad:function(n){for(var s=n.words,o=n.sigBytes-1,o=n.sigBytes-1;o>=0;o--)if(s[o>>>2]>>>24-o%4*8&255){n.sigBytes=o+1;break}}},r.pad.ZeroPadding})}(Lr)),Lr.exports}var Hr={exports:{}},Ah=Hr.exports,Hi;function Bh(){return Hi||(Hi=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(Ah,function(r){return r.pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding})}(Hr)),Hr.exports}var Mr={exports:{}},Fh=Mr.exports,Mi;function Dh(){return Mi||(Mi=1,function(e,t){(function(r,n,s){e.exports=n(he(),Oe())})(Fh,function(r){return function(n){var s=r,o=s.lib,i=o.CipherParams,a=s.enc,f=a.Hex,c=s.format;c.Hex={stringify:function(l){return l.ciphertext.toString(f)},parse:function(l){var u=f.parse(l);return i.create({ciphertext:u})}}}(),r.format.Hex})}(Mr)),Mr.exports}var Nr={exports:{}},wh=Nr.exports,Ni;function Sh(){return Ni||(Ni=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(wh,function(r){return function(){var n=r,s=n.lib,o=s.BlockCipher,i=n.algo,a=[],f=[],c=[],l=[],u=[],x=[],d=[],h=[],p=[],v=[];(function(){for(var m=[],y=0;y<256;y++)y<128?m[y]=y<<1:m[y]=y<<1^283;for(var b=0,F=0,y=0;y<256;y++){var D=F^F<<1^F<<2^F<<3^F<<4;D=D>>>8^D&255^99,a[b]=D,f[D]=b;var w=m[b],P=m[w],A=m[P],S=m[D]*257^D*16843008;c[b]=S<<24|S>>>8,l[b]=S<<16|S>>>16,u[b]=S<<8|S>>>24,x[b]=S;var S=A*16843009^P*65537^w*257^b*16843008;d[D]=S<<24|S>>>8,h[D]=S<<16|S>>>16,p[D]=S<<8|S>>>24,v[D]=S,b?(b=w^m[m[m[A^w]]],F^=m[m[F]]):b=F=1}})();var C=[0,1,2,4,8,16,32,64,128,27,54],g=i.AES=o.extend({_doReset:function(){var m;if(!(this._nRounds&&this._keyPriorReset===this._key)){for(var y=this._keyPriorReset=this._key,b=y.words,F=y.sigBytes/4,D=this._nRounds=F+6,w=(D+1)*4,P=this._keySchedule=[],A=0;A6&&A%F==4&&(m=a[m>>>24]<<24|a[m>>>16&255]<<16|a[m>>>8&255]<<8|a[m&255]):(m=m<<8|m>>>24,m=a[m>>>24]<<24|a[m>>>16&255]<<16|a[m>>>8&255]<<8|a[m&255],m^=C[A/F|0]<<24),P[A]=P[A-F]^m);for(var S=this._invKeySchedule=[],L=0;L>>24]]^h[a[m>>>16&255]]^p[a[m>>>8&255]]^v[a[m&255]]}}},encryptBlock:function(m,y){this._doCryptBlock(m,y,this._keySchedule,c,l,u,x,a)},decryptBlock:function(m,y){var b=m[y+1];m[y+1]=m[y+3],m[y+3]=b,this._doCryptBlock(m,y,this._invKeySchedule,d,h,p,v,f);var b=m[y+1];m[y+1]=m[y+3],m[y+3]=b},_doCryptBlock:function(m,y,b,F,D,w,P,A){for(var S=this._nRounds,L=m[y]^b[0],T=m[y+1]^b[1],Y=m[y+2]^b[2],te=m[y+3]^b[3],Q=4,X=1;X>>24]^D[T>>>16&255]^w[Y>>>8&255]^P[te&255]^b[Q++],de=F[T>>>24]^D[Y>>>16&255]^w[te>>>8&255]^P[L&255]^b[Q++],xe=F[Y>>>24]^D[te>>>16&255]^w[L>>>8&255]^P[T&255]^b[Q++],O=F[te>>>24]^D[L>>>16&255]^w[T>>>8&255]^P[Y&255]^b[Q++];L=ee,T=de,Y=xe,te=O}var ee=(A[L>>>24]<<24|A[T>>>16&255]<<16|A[Y>>>8&255]<<8|A[te&255])^b[Q++],de=(A[T>>>24]<<24|A[Y>>>16&255]<<16|A[te>>>8&255]<<8|A[L&255])^b[Q++],xe=(A[Y>>>24]<<24|A[te>>>16&255]<<16|A[L>>>8&255]<<8|A[T&255])^b[Q++],O=(A[te>>>24]<<24|A[L>>>16&255]<<16|A[T>>>8&255]<<8|A[Y&255])^b[Q++];m[y]=ee,m[y+1]=de,m[y+2]=xe,m[y+3]=O},keySize:256/32});n.AES=o._createHelper(g)}(),r.AES})}(Nr)),Nr.exports}var $r={exports:{}},Rh=$r.exports,$i;function kh(){return $i||($i=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(Rh,function(r){return function(){var n=r,s=n.lib,o=s.WordArray,i=s.BlockCipher,a=n.algo,f=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],c=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],u=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],x=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],d=a.DES=i.extend({_doReset:function(){for(var C=this._key,g=C.words,m=[],y=0;y<56;y++){var b=f[y]-1;m[y]=g[b>>>5]>>>31-b%32&1}for(var F=this._subKeys=[],D=0;D<16;D++){for(var w=F[D]=[],P=l[D],y=0;y<24;y++)w[y/6|0]|=m[(c[y]-1+P)%28]<<31-y%6,w[4+(y/6|0)]|=m[28+(c[y+24]-1+P)%28]<<31-y%6;w[0]=w[0]<<1|w[0]>>>31;for(var y=1;y<7;y++)w[y]=w[y]>>>(y-1)*4+3;w[7]=w[7]<<5|w[7]>>>27}for(var A=this._invSubKeys=[],y=0;y<16;y++)A[y]=F[15-y]},encryptBlock:function(C,g){this._doCryptBlock(C,g,this._subKeys)},decryptBlock:function(C,g){this._doCryptBlock(C,g,this._invSubKeys)},_doCryptBlock:function(C,g,m){this._lBlock=C[g],this._rBlock=C[g+1],h.call(this,4,252645135),h.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),h.call(this,1,1431655765);for(var y=0;y<16;y++){for(var b=m[y],F=this._lBlock,D=this._rBlock,w=0,P=0;P<8;P++)w|=u[P][((D^b[P])&x[P])>>>0];this._lBlock=D,this._rBlock=F^w}var A=this._lBlock;this._lBlock=this._rBlock,this._rBlock=A,h.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),C[g]=this._lBlock,C[g+1]=this._rBlock},keySize:64/32,ivSize:64/32,blockSize:64/32});function h(C,g){var m=(this._lBlock>>>C^this._rBlock)&g;this._rBlock^=m,this._lBlock^=m<>>C^this._lBlock)&g;this._lBlock^=m,this._rBlock^=m<192.");var m=g.slice(0,2),y=g.length<4?g.slice(0,2):g.slice(2,4),b=g.length<6?g.slice(0,2):g.slice(4,6);this._des1=d.createEncryptor(o.create(m)),this._des2=d.createEncryptor(o.create(y)),this._des3=d.createEncryptor(o.create(b))},encryptBlock:function(C,g){this._des1.encryptBlock(C,g),this._des2.decryptBlock(C,g),this._des3.encryptBlock(C,g)},decryptBlock:function(C,g){this._des3.decryptBlock(C,g),this._des2.encryptBlock(C,g),this._des1.decryptBlock(C,g)},keySize:192/32,ivSize:64/32,blockSize:64/32});n.TripleDES=i._createHelper(v)}(),r.TripleDES})}($r)),$r.exports}var Ur={exports:{}},Ph=Ur.exports,Ui;function Oh(){return Ui||(Ui=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(Ph,function(r){return function(){var n=r,s=n.lib,o=s.StreamCipher,i=n.algo,a=i.RC4=o.extend({_doReset:function(){for(var l=this._key,u=l.words,x=l.sigBytes,d=this._S=[],h=0;h<256;h++)d[h]=h;for(var h=0,p=0;h<256;h++){var v=h%x,C=u[v>>>2]>>>24-v%4*8&255;p=(p+d[h]+C)%256;var g=d[h];d[h]=d[p],d[p]=g}this._i=this._j=0},_doProcessBlock:function(l,u){l[u]^=f.call(this)},keySize:256/32,ivSize:0});function f(){for(var l=this._S,u=this._i,x=this._j,d=0,h=0;h<4;h++){u=(u+1)%256,x=(x+l[u])%256;var p=l[u];l[u]=l[x],l[x]=p,d|=l[(l[u]+l[x])%256]<<24-h*8}return this._i=u,this._j=x,d}n.RC4=o._createHelper(a);var c=i.RC4Drop=a.extend({cfg:a.cfg.extend({drop:192}),_doReset:function(){a._doReset.call(this);for(var l=this.cfg.drop;l>0;l--)f.call(this)}});n.RC4Drop=o._createHelper(c)}(),r.RC4})}(Ur)),Ur.exports}var qr={exports:{}},Th=qr.exports,qi;function Ih(){return qi||(qi=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(Th,function(r){return function(){var n=r,s=n.lib,o=s.StreamCipher,i=n.algo,a=[],f=[],c=[],l=i.Rabbit=o.extend({_doReset:function(){for(var x=this._key.words,d=this.cfg.iv,h=0;h<4;h++)x[h]=(x[h]<<8|x[h]>>>24)&16711935|(x[h]<<24|x[h]>>>8)&4278255360;var p=this._X=[x[0],x[3]<<16|x[2]>>>16,x[1],x[0]<<16|x[3]>>>16,x[2],x[1]<<16|x[0]>>>16,x[3],x[2]<<16|x[1]>>>16],v=this._C=[x[2]<<16|x[2]>>>16,x[0]&4294901760|x[1]&65535,x[3]<<16|x[3]>>>16,x[1]&4294901760|x[2]&65535,x[0]<<16|x[0]>>>16,x[2]&4294901760|x[3]&65535,x[1]<<16|x[1]>>>16,x[3]&4294901760|x[0]&65535];this._b=0;for(var h=0;h<4;h++)u.call(this);for(var h=0;h<8;h++)v[h]^=p[h+4&7];if(d){var C=d.words,g=C[0],m=C[1],y=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360,b=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,F=y>>>16|b&4294901760,D=b<<16|y&65535;v[0]^=y,v[1]^=F,v[2]^=b,v[3]^=D,v[4]^=y,v[5]^=F,v[6]^=b,v[7]^=D;for(var h=0;h<4;h++)u.call(this)}},_doProcessBlock:function(x,d){var h=this._X;u.call(this),a[0]=h[0]^h[5]>>>16^h[3]<<16,a[1]=h[2]^h[7]>>>16^h[5]<<16,a[2]=h[4]^h[1]>>>16^h[7]<<16,a[3]=h[6]^h[3]>>>16^h[1]<<16;for(var p=0;p<4;p++)a[p]=(a[p]<<8|a[p]>>>24)&16711935|(a[p]<<24|a[p]>>>8)&4278255360,x[d+p]^=a[p]},blockSize:128/32,ivSize:64/32});function u(){for(var x=this._X,d=this._C,h=0;h<8;h++)f[h]=d[h];d[0]=d[0]+1295307597+this._b|0,d[1]=d[1]+3545052371+(d[0]>>>0>>0?1:0)|0,d[2]=d[2]+886263092+(d[1]>>>0>>0?1:0)|0,d[3]=d[3]+1295307597+(d[2]>>>0>>0?1:0)|0,d[4]=d[4]+3545052371+(d[3]>>>0>>0?1:0)|0,d[5]=d[5]+886263092+(d[4]>>>0>>0?1:0)|0,d[6]=d[6]+1295307597+(d[5]>>>0>>0?1:0)|0,d[7]=d[7]+3545052371+(d[6]>>>0>>0?1:0)|0,this._b=d[7]>>>0>>0?1:0;for(var h=0;h<8;h++){var p=x[h]+d[h],v=p&65535,C=p>>>16,g=((v*v>>>17)+v*C>>>15)+C*C,m=((p&4294901760)*p|0)+((p&65535)*p|0);c[h]=g^m}x[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,x[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,x[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,x[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,x[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,x[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,x[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,x[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.Rabbit=o._createHelper(l)}(),r.Rabbit})}(qr)),qr.exports}var zr={exports:{}},Lh=zr.exports,zi;function Hh(){return zi||(zi=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(Lh,function(r){return function(){var n=r,s=n.lib,o=s.StreamCipher,i=n.algo,a=[],f=[],c=[],l=i.RabbitLegacy=o.extend({_doReset:function(){var x=this._key.words,d=this.cfg.iv,h=this._X=[x[0],x[3]<<16|x[2]>>>16,x[1],x[0]<<16|x[3]>>>16,x[2],x[1]<<16|x[0]>>>16,x[3],x[2]<<16|x[1]>>>16],p=this._C=[x[2]<<16|x[2]>>>16,x[0]&4294901760|x[1]&65535,x[3]<<16|x[3]>>>16,x[1]&4294901760|x[2]&65535,x[0]<<16|x[0]>>>16,x[2]&4294901760|x[3]&65535,x[1]<<16|x[1]>>>16,x[3]&4294901760|x[0]&65535];this._b=0;for(var v=0;v<4;v++)u.call(this);for(var v=0;v<8;v++)p[v]^=h[v+4&7];if(d){var C=d.words,g=C[0],m=C[1],y=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360,b=(m<<8|m>>>24)&16711935|(m<<24|m>>>8)&4278255360,F=y>>>16|b&4294901760,D=b<<16|y&65535;p[0]^=y,p[1]^=F,p[2]^=b,p[3]^=D,p[4]^=y,p[5]^=F,p[6]^=b,p[7]^=D;for(var v=0;v<4;v++)u.call(this)}},_doProcessBlock:function(x,d){var h=this._X;u.call(this),a[0]=h[0]^h[5]>>>16^h[3]<<16,a[1]=h[2]^h[7]>>>16^h[5]<<16,a[2]=h[4]^h[1]>>>16^h[7]<<16,a[3]=h[6]^h[3]>>>16^h[1]<<16;for(var p=0;p<4;p++)a[p]=(a[p]<<8|a[p]>>>24)&16711935|(a[p]<<24|a[p]>>>8)&4278255360,x[d+p]^=a[p]},blockSize:128/32,ivSize:64/32});function u(){for(var x=this._X,d=this._C,h=0;h<8;h++)f[h]=d[h];d[0]=d[0]+1295307597+this._b|0,d[1]=d[1]+3545052371+(d[0]>>>0>>0?1:0)|0,d[2]=d[2]+886263092+(d[1]>>>0>>0?1:0)|0,d[3]=d[3]+1295307597+(d[2]>>>0>>0?1:0)|0,d[4]=d[4]+3545052371+(d[3]>>>0>>0?1:0)|0,d[5]=d[5]+886263092+(d[4]>>>0>>0?1:0)|0,d[6]=d[6]+1295307597+(d[5]>>>0>>0?1:0)|0,d[7]=d[7]+3545052371+(d[6]>>>0>>0?1:0)|0,this._b=d[7]>>>0>>0?1:0;for(var h=0;h<8;h++){var p=x[h]+d[h],v=p&65535,C=p>>>16,g=((v*v>>>17)+v*C>>>15)+C*C,m=((p&4294901760)*p|0)+((p&65535)*p|0);c[h]=g^m}x[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,x[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,x[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,x[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,x[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,x[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,x[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,x[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}n.RabbitLegacy=o._createHelper(l)}(),r.RabbitLegacy})}(zr)),zr.exports}var jr={exports:{}},Mh=jr.exports,ji;function Nh(){return ji||(ji=1,function(e,t){(function(r,n,s){e.exports=n(he(),r0(),n0(),Ut(),Oe())})(Mh,function(r){return function(){var n=r,s=n.lib,o=s.BlockCipher,i=n.algo;const a=16,f=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],c=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var l={pbox:[],sbox:[]};function u(v,C){let g=C>>24&255,m=C>>16&255,y=C>>8&255,b=C&255,F=v.sbox[0][g]+v.sbox[1][m];return F=F^v.sbox[2][y],F=F+v.sbox[3][b],F}function x(v,C,g){let m=C,y=g,b;for(let F=0;F1;--F)m=m^v.pbox[F],y=u(v,m)^y,b=m,m=y,y=b;return b=m,m=y,y=b,y=y^v.pbox[1],m=m^v.pbox[0],{left:m,right:y}}function h(v,C,g){for(let D=0;D<4;D++){v.sbox[D]=[];for(let w=0;w<256;w++)v.sbox[D][w]=c[D][w]}let m=0;for(let D=0;D =g&&(m=0);let y=0,b=0,F=0;for(let D=0;D {e=Gc(e);let r=It.enc.Utf8.parse(window.__CONFIG__.MCRM__IV);return It.AES.encrypt(t,e,{iv:r,padding:It.pad.Pkcs7}).toString()},Kp=(e,t)=>{e=Gc(e);let r=It.enc.Utf8.parse(window.__CONFIG__.MCRM__IV);return It.AES.decrypt(t.toString(),e,{iv:r,padding:It.pad.Pkcs7}).toString(It.enc.Utf8)},ms=(e=!1)=>{if(_t())return e;e||(e={empty:!0});const t=Z0();return{uuid:t.uuid(),d:Wc(t.key(),JSON.stringify(e))}};function Gc(e){let t=e;return e.length==4&&(t=e+window.__CONFIG__.MCRM__SALT),It.enc.Utf8.parse(t)}const qh=()=>{const e=new Date,t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`${t}${r}${n}`},Z0=oc("device",()=>{const e=yt({uuid:!1,key:!1}),t=yt([]),r=yt({status:!1}),n=()=>(!e.value.uuid&&localStorage.getItem("deviceId")?e.value.uuid=localStorage.getItem("deviceId"):e.value.uuid||(e.value.uuid=s()),e.value.uuid),s=()=>{const p=wd();return localStorage.setItem("deviceId",p),p},o=()=>(!e.value.key&&localStorage.getItem("deviceKey")&&(e.value.key=localStorage.getItem("deviceKey")),e.value.key),i=p=>{e.value.key=p,localStorage.setItem("deviceKey",p)},a=()=>{e.value.key=!1,localStorage.removeItem("deviceKey")};return{remote:t,server:r,uuid:n,setDeviceId:s,key:o,setDeviceKey:i,removeDeviceKey:a,serverGetIP:async()=>`http://${(await Ee.post(ot()+"/device/server/ip")).data}:${window.__CONFIG__.MCRM__PORT}`,serverGetRemotes:async(p=!1)=>{const v=await Ee.post(ot()+"/device/list");return v.data.devices?(t.value=v.data.devices,p?Object.keys(t.value).length:t.value):!1},serverStartLink:async p=>(await Ee.post(ot()+"/device/link/start",{uuid:p})).data,remoteCheckServerAccess:async()=>{const p=await Ee.post(ot()+"/device/access/check",{uuid:n()});return r.value.access=p.data,p.data},remoteRequestServerAccess:async(p,v)=>await Ee.post(ot()+"/device/access/request",{uuid:n(),name:p,type:v}),remotePingLink:async p=>{const v=setInterval(()=>{Ee.post(ot()+"/device/link/ping",{uuid:n()}).then(C=>{C.data&&(clearInterval(v),p(C.data))})},1e3)},remoteHandshake:async(p=!1)=>{if(p||(p=o()),!p)return!1;const v=await Ee.post(ot()+"/device/handshake",{uuid:n(),shake:Wc(p,qh())});return v.data||a(),v.data}}}),ot=()=>{const e=window.location.port==5173?window.__CONFIG__.MCRM__PORT:window.location.port;return`http://${window.location.hostname}:${e}`},_t=()=>window.location.hostname==="127.0.0.1"||window.location.hostname==="localhost",zh=async()=>{const e=Z0();return!!(await e.remoteHandshake()===!0||e.key())},jh={id:"main-menu"},Vh={key:0},Wh={__name:"MainMenu",setup(e){const t=yt(!1);return(r,n)=>(ge(),we("nav",jh,[ne("button",{id:"menu-toggle",class:at(t.value?"open":""),onClick:n[0]||(n[0]=s=>t.value=!t.value)},[ne("img",{class:at(["p-1 logo",{"opacity-0":t.value}]),src:ol,"aria-hidden":"true"},null,2),ie(fe(Kx),{class:at({"opacity-0":!t.value})},null,8,["class"])],2),ne("ul",{class:at(t.value?"open":"")},[ne("li",null,[ie(fe(F0),{onClick:n[1]||(n[1]=s=>t.value=!1),to:"/"},{default:Ke(()=>[ie(fe(Wx)),n[5]||(n[5]=ke("Dashboard "))]),_:1})]),ne("li",null,[ie(fe(F0),{onClick:n[2]||(n[2]=s=>t.value=!1),to:"/panels"},{default:Ke(()=>[ie(fe(d0)),n[6]||(n[6]=ke("Panels "))]),_:1})]),fe(_t)()?(ge(),we("li",Vh,[ie(fe(F0),{onClick:n[3]||(n[3]=s=>t.value=!1),to:"/macros"},{default:Ke(()=>[ie(fe(us)),n[7]||(n[7]=ke("Macros "))]),_:1})])):Gt("",!0),ne("li",null,[ie(fe(F0),{onClick:n[4]||(n[4]=s=>t.value=!1),to:"/devices"},{default:Ke(()=>[ie(fe(fs)),ke(it(fe(_t)()?"Devices":"Server"),1)]),_:1})])],2)]))}},wn=(e,t)=>{const r=e.__vccOpts||e;for(const[n,s]of t)r[n]=s;return r},Gh={class:"alert__content"},Kh={__name:"AlertComp",props:{variant:String,pageWide:Boolean,href:String},setup(e){const t=Ux();return(r,n)=>(ge(),we("div",{class:at(`alert alert__${e.variant} ${e.pageWide?"page-wide":""}`),onClick:n[0]||(n[0]=s=>e.href?fe(t).push(e.href):null)},[e.variant==="info"?(ge(),ct(fe(Gx),{key:0})):Gt("",!0),e.variant==="success"?(ge(),ct(fe(jx),{key:1})):Gt("",!0),e.variant==="warning"?(ge(),ct(fe(Vx),{key:2})):Gt("",!0),e.variant==="error"?(ge(),ct(fe(zx),{key:3})):Gt("",!0),ne("div",Gh,[Yn(r.$slots,"default",{},void 0,!0)])],2))}},Xh=wn(Kh,[["__scopeId","data-v-c788cb13"]]),Qh={__name:"App",setup(e){const t=Z0(),r=qx(),n=yt(!1);hn(()=>{t.uuid(),_t||s(),t.$subscribe(()=>{t.key()&&(n.value=!0)})});async function s(){const o=await t.remoteHandshake();n.value=o}return(o,i)=>(ge(),we(De,null,[i[1]||(i[1]=ne("div",{class:"app-background"},[ne("img",{src:Mu,"aria-hidden":"true"}),ne("img",{src:Nu,class:"logo","aria-hidden":"true"})],-1)),ie(Wh),ie(fe(mc)),!fe(_t)&&!n.value&&fe(r).fullPath!=="/devices"?(ge(),ct(Xh,{key:0,variant:"warning","page-wide":!0,href:"/devices"},{default:Ke(()=>i[0]||(i[0]=[ne("h4",null,"Not authorized!",-1),ne("p",null,'Click here to start authorization and open the "Devices" page on your PC.',-1)])),_:1})):Gt("",!0)],64))}},Zh=wn(Qh,[["__scopeId","data-v-ec0604e4"]]),Yh="modulepreload",Jh=function(e){return"/"+e},Wi={},A0=function(t,r,n){let s=Promise.resolve();if(r&&r.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));s=Promise.allSettled(r.map(f=>{if(f=Jh(f),f in Wi)return;Wi[f]=!0;const c=f.endsWith(".css"),l=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${f}"]${l}`))return;const u=document.createElement("link");if(u.rel=c?"stylesheet":Yh,c||(u.as="script"),u.crossOrigin="",u.href=f,a&&u.setAttribute("nonce",a),document.head.appendChild(u),c)return new Promise((x,d)=>{u.addEventListener("load",x),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return s.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})},Kc=oc("panel",()=>{const e=yt({dir:!1,name:!1,description:!1,aspectRatio:!1,macros:!1,thumb:!1,html:!1,style:!1}),t=yt([]);return{current:e,list:t,get:async s=>{const o=ms({dir:s}),i=await Ee.post(ot()+"/panel/get",o);return!i.data&&!e.value.html?!1:(e.value.name=i.data.name,e.value.description=i.data.description,e.value.aspectRatio=i.data.aspectRatio,e.value.macros=i.data.macros,e.value.thumb=i.data.thumb,e.value.html=i.data.html,e.value.style=i.data.style,e.value)},getList:async(s=!1)=>{if(t.value.length>0&&!s)return t.value;if(t.value.length>0&&s)return t.value.length;const o=ms(),i=await Ee.post(ot()+"/panel/list",o);return t.value=i.data,!i.data&&!s?!1:!i.data&&s?0:s?t.value.length:t.value}}}),Tt={__name:"ButtonComp",props:{href:String,variant:String,size:String},setup(e){const t=e,r=Ye(()=>{let n="btn";return t.variant&&(n+=` btn__${t.variant}`),t.size&&(n+=` btn__${t.size}`),n});return(n,s)=>{const o=df("RouterLink");return e.href?(ge(),ct(o,{key:0,to:e.href,class:at(r.value)},{default:Ke(()=>[Yn(n.$slots,"default")]),_:3},8,["to","class"])):(ge(),we("button",{key:1,class:at(r.value)},[Yn(n.$slots,"default")],2))}}},ep=async(e=!1)=>{const t=await Ee.post(ot()+"/macro/list");return t.data?e?t.data.length:tp(t.data):0},tp=e=>[...e].sort((t,r)=>t.name.localeCompare(r.name)),Xp=async e=>{const t=_t()?{macro:e}:ms({macro:e});return(await Ee.post(ot()+"/macro/play",t)).data},Qp=(e,t)=>e!==JSON.stringify(t),rp={id:"devices",class:"dashboard-block mcrm-block block__light"},np={class:"icon__container"},sp={id:"macros",class:"dashboard-block mcrm-block block__light"},op={class:"icon__container"},ip={id:"panels",class:"dashboard-block mcrm-block block__light"},ap={class:"icon__container"},cp={__name:"ServerView",setup(e){const t=Z0(),r=Kc(),n=t0({ip:"",port:"",fullPath:"",remoteCount:0,macroCount:0,panelCount:0});return hn(async()=>{const s=await t.serverGetIP();n.ip=s;const o=await t.serverGetRemotes(!0);n.remoteCount=o;const i=await ep(!0);n.macroCount=i;const a=await r.getList(!0);n.panelCount=a,console.log(n)}),(s,o)=>(ge(),we("div",{id:"server-dashboard",class:at(`${n.remoteCount==0?"no__devices":"devices__found"} ${n.macroCount==0?"no__macros":"macros__found"}`)},[ne("div",rp,[ne("div",np,[ie(fe(fs))]),ne("h4",null,it(n.remoteCount)+" "+it(n.remoteCount!=1?"Devices":"Device"),1),n.remoteCount==0?(ge(),we(De,{key:0},[o[1]||(o[1]=ne("p",null,[ne("em",null,"No devices found.")],-1)),ie(Tt,{variant:"primary",href:"/devices"},{default:Ke(()=>[ie(fe(yc)),o[0]||(o[0]=ke(" Link a device"))]),_:1})],64)):(ge(),we(De,{key:1},[o[3]||(o[3]=ne("p",null,"Unlink a device or add new devices.",-1)),ie(Tt,{variant:"primary",href:"/devices"},{default:Ke(()=>[ie(fe(fs)),o[2]||(o[2]=ke(" View devices"))]),_:1})],64))]),ne("div",sp,[ne("div",op,[ie(fe(us))]),ne("h4",null,it(n.macroCount)+" "+it(n.macroCount!=1?"Macros":"Macro"),1),n.macroCount==0?(ge(),we(De,{key:0},[o[5]||(o[5]=ne("p",null,[ne("em",null,"No macros found.")],-1)),ie(Tt,{variant:"secondary",href:"/macros"},{default:Ke(()=>[ie(fe(d0)),o[4]||(o[4]=ke(" Create macro"))]),_:1})],64)):(ge(),we(De,{key:1},[o[7]||(o[7]=ne("p",null,"Edit and view your macros.",-1)),ie(Tt,{variant:"secondary",href:"/macros"},{default:Ke(()=>[ie(fe(us)),o[6]||(o[6]=ke(" View macros"))]),_:1})],64))]),ne("div",ip,[ne("div",ap,[ie(fe(d0))]),ne("h4",null,it(n.panelCount)+" "+it(n.panelCount!=1?"Panels":"Panel"),1),n.panelCount==0?(ge(),we(De,{key:0},[o[8]||(o[8]=ne("p",null,[ne("em",null,"No panels found. ")],-1)),o[9]||(o[9]=ne("p",null,[ke("Learn how to create a panel "),ne("a",{href:"#",target:"_blank"},"here"),ke(".")],-1))],64)):(ge(),we(De,{key:1},[o[11]||(o[11]=ne("p",null,"Link macros to panels or view a panel.",-1)),ie(Tt,{variant:"danger",href:"/panels"},{default:Ke(()=>[ie(fe(d0)),o[10]||(o[10]=ke(" View panels "))]),_:1})],64))])],2))}},lp=wn(cp,[["__scopeId","data-v-1ac3bac6"]]),fp={id:"remote-dashboard"},up={key:0,id:"panels",class:"dashboard-block mcrm-block block__light"},xp={class:"icon__container"},dp={id:"server",class:"dashboard-block mcrm-block block__light"},hp={class:"icon__container"},pp={class:"text-center"},vp={__name:"RemoteView",setup(e){const t=Z0(),r=Kc(),n=t0({ip:"",handshake:"",panelCount:0});return hn(async()=>{const s=await t.serverGetIP();n.ip=s,t.key()&&(n.handshake=!0),t.$subscribe(()=>{t.key()&&(n.handshake=!0)});const o=await r.getList(!0);n.panelCount=o}),(s,o)=>(ge(),we("div",fp,[n.handshake?(ge(),we("div",up,[ne("div",xp,[ie(fe(d0))]),ne("h4",null,it(n.panelCount)+" "+it(n.panelCount!=1?"Panels":"Panel"),1),n.panelCount==0?(ge(),we(De,{key:0},[o[0]||(o[0]=ne("p",null,[ne("em",null,"No panels found. ")],-1)),o[1]||(o[1]=ne("p",null,[ke("Learn how to create a panel "),ne("a",{href:"#",target:"_blank"},"here"),ke(".")],-1))],64)):(ge(),we(De,{key:1},[o[3]||(o[3]=ne("p",null,"Start using a panel!",-1)),ie(Tt,{variant:"danger",href:"/panels"},{default:Ke(()=>[ie(fe(d0)),o[2]||(o[2]=ke(" View panels "))]),_:1})],64))])):Gt("",!0),ne("div",dp,[ne("div",hp,[ie(fe(Xo))]),o[8]||(o[8]=ne("h4",null,"Server",-1)),n.handshake?(ge(),we(De,{key:0},[ne("p",null,[o[4]||(o[4]=ke(" Linked with: ")),ne("strong",pp,it(n.ip),1)]),ie(Tt,{variant:"primary",href:"/devices"},{default:Ke(()=>[ie(fe(Xo)),o[5]||(o[5]=ke(" View server"))]),_:1})],64)):(ge(),we(De,{key:1},[o[7]||(o[7]=ne("p",null,[ne("em",null,"Not linked")],-1)),ie(Tt,{variant:"primary",href:"/devices"},{default:Ke(()=>[ie(fe(yc)),o[6]||(o[6]=ke(" Link with server"))]),_:1})],64))])]))}},gp=wn(vp,[["__scopeId","data-v-9e6b5589"]]),mp={id:"dashboard",class:"panel"},yp={class:"panel__title"},Ep={key:0},_p={key:1},Cp={class:"panel__content !h-fit !gap-y-16"},bp={__name:"DashboardView",setup(e){return(t,r)=>(ge(),we("div",mp,[ne("div",yp,[r[0]||(r[0]=ne("h1",null,"Dashboard",-1)),ne("div",null,[fe(_t)()?(ge(),we("em",Ep,"This is the server dashboard.")):(ge(),we("em",_p,"This is the remote dashboard."))])]),ne("div",Cp,[fe(_t)()?(ge(),ct(lp,{key:0})):(ge(),ct(gp,{key:1})),r[1]||(r[1]=ne("div",{class:"grid gap-2 text-slate-300"},[ne("h3",null,"About Macrame"),ne("p",null," Macrame is an open-source application designed to turn any device into a customizable button panel. Whether you're optimizing your workflow or enhancing your gaming experience, Macrame makes it simple to create and link macros to your button panels. "),ne("p",null,[ke(" For more information, including details on licensing, visit "),ne("a",{href:"https://macrame.github.io",target:"_blank"},"https://macrame.github.io")])],-1))])]))}},Xc=Nx({history:vx("/"),routes:[{path:"/",name:"dashboard",component:bp},{path:"/panels",name:"panels",component:()=>A0(()=>import("./PanelsView-Bnnsxhnr.js"),__vite__mapDeps([0,1,2,3,4])),meta:{requiresAuth:!0}},{path:"/panel/edit/:dirname",name:"panel-edit",component:()=>A0(()=>import("./PanelsView-Bnnsxhnr.js"),__vite__mapDeps([0,1,2,3,4])),meta:{requiresAuth:!0}},{path:"/panel/view/:dirname",name:"panel-view",component:()=>A0(()=>import("./PanelsView-Bnnsxhnr.js"),__vite__mapDeps([0,1,2,3,4])),meta:{requiresAuth:!0}},{path:"/macros",name:"macros",component:()=>A0(()=>import("./MacrosView-CE74eyGa.js"),__vite__mapDeps([5,3,6,7,8])),meta:{localOnly:!0}},{path:"/devices",name:"devices",component:()=>A0(()=>import("./DevicesView-C9HVDkwf.js"),__vite__mapDeps([9,6,7,1,2,10]))}]});Xc.beforeEach(async(e,t,r)=>{const n=await zh();e.meta.requiresAuth&&!n&&!_t()?r("/devices"):e.meta.localOnly&&!_t()?r("/"):r()});const zs=Su(Zh);zs.use(Pu());zs.use(Xc);zs.mount("#app");export{Xh as A,_t as B,Qp as C,qx as D,at as E,De as F,ep as G,oc as H,yc as I,us as J,wp as K,Yn as L,Ye as M,Gp as N,Z0 as O,fs as P,Xo as Q,Xp as R,ms as S,Kp as T,Kx as U,wn as _,yt as a,of as b,xt as c,we as d,ge as e,Gt as f,ne as g,ct as h,Bp as i,Ke as j,ie as k,Tt as l,Dp as m,Kc as n,hn as o,Ra as p,ke as q,t0 as r,Ee as s,it as t,fe as u,Fp as v,Ap as w,ot as x,Ux as y,d0 as z};
-//# sourceMappingURL=index-oAtpp-VZ.js.map
diff --git a/public/assets/index-oAtpp-VZ.js.map b/public/assets/index-oAtpp-VZ.js.map
deleted file mode 100644
index c902b14..0000000
--- a/public/assets/index-oAtpp-VZ.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"mappings":"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EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,UAAY,SAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,UAAY,UAAU,EAC7EA,EAAe,UAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,SAAU,EAC7EA,EAAe,WAAY,SAAU,EAAGA,EAAe,WAAY,UAAU,EAC7EA,EAAe,WAAY,UAAU,EAAGA,EAAe,WAAY,UAAU,EAC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CV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,KACd,EACD,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,OACb,EACD,CACI,EAAK,IACL,KAAQ,SACR,KAAQ,OACR,MAAQ,UACR,MAAQ,UACR,MAAQ,SACR,MAAQ,UACR,MAAQ,OACR,MAAQ,SACR,MAAQ,UACR,MAAQ,UA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C,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,WAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UAAc,EACtD,CAAI,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,UACpC,UAAY,SAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,QAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UAAa,EACrD,CAAI,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,SACpC,WAAY,SAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,SAAY,SACpC,WAAY,WAAY,WAAY,WACpC,UAAY,UAAY,WAAY,UACpC,WAAY,WAAY,SAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,SACpC,UAAY,WAAY,UAAY,WACpC,WAAY,UAAY,SAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,SAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,UAAY,WACpC,WAAY,UAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,SAAY,SAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SAAU,CACrD,EAED,IAAIC,EAAe,CACf,KAAM,CAAE,EACR,KAAM,EACf,EAEK,SAASjb,EAAEl7C,EAAK5L,EAAE,CACd,IAAI1G,EAAK0G,GAAK,GAAM,IAChBzG,EAAKyG,GAAK,GAAM,IAChB5I,EAAK4I,GAAK,EAAK,IACfotD,EAAIptD,EAAI,IAERq0D,EAAIzoD,EAAI,KAAK,CAAC,EAAEtS,CAAC,EAAIsS,EAAI,KAAK,CAAC,EAAErS,CAAC,EACtC,OAAA86D,EAAIA,EAAIzoD,EAAI,KAAK,CAAC,EAAExU,CAAC,EACrBi9D,EAAIA,EAAIzoD,EAAI,KAAK,CAAC,EAAEwhD,CAAC,EAEdiH,CAChB,CAEK,SAAS2N,EAAiBp2D,EAAKq2D,EAAMC,EAAM,CACvC,IAAIC,EAAKF,EACLG,EAAKF,EACLG,EAEJ,QAAQ1sE,EAAI,EAAGA,EAAIisE,EAAG,EAAEjsE,EACpBwsE,EAAKA,EAAKv2D,EAAI,KAAKjW,CAAC,EACpBysE,EAAKtb,EAAEl7C,EAAKu2D,CAAE,EAAIC,EAElBC,EAAOF,EACPA,EAAKC,EACLA,EAAKC,EAGT,OAAAA,EAAOF,EACPA,EAAKC,EACLA,EAAKC,EAELD,EAAKA,EAAKx2D,EAAI,KAAKg2D,CAAC,EACpBO,EAAKA,EAAKv2D,EAAI,KAAKg2D,EAAI,CAAC,EAEjB,CAAC,KAAMO,EAAI,MAAOC,CAAE,CACpC,CAEK,SAASE,EAAiB12D,EAAKq2D,EAAMC,EAAM,CACvC,IAAIC,EAAKF,EACLG,EAAKF,EACLG,EAEJ,QAAQ1sE,EAAIisE,EAAI,EAAGjsE,EAAI,EAAG,EAAEA,EACxBwsE,EAAKA,EAAKv2D,EAAI,KAAKjW,CAAC,EACpBysE,EAAKtb,EAAEl7C,EAAKu2D,CAAE,EAAIC,EAElBC,EAAOF,EACPA,EAAKC,EACLA,EAAKC,EAGT,OAAAA,EAAOF,EACPA,EAAKC,EACLA,EAAKC,EAELD,EAAKA,EAAKx2D,EAAI,KAAK,CAAC,EACpBu2D,EAAKA,EAAKv2D,EAAI,KAAK,CAAC,EAEb,CAAC,KAAMu2D,EAAI,MAAOC,CAAE,CACpC,CAaK,SAASG,EAAa32D,EAAK7W,EAAKytE,EAChC,CACI,QAAQC,EAAM,EAAGA,EAAM,EAAGA,IAC1B,CACI72D,EAAI,KAAK62D,CAAG,EAAI,CAAE,EAClB,QAAQC,EAAM,EAAGA,EAAM,IAAKA,IAExB92D,EAAI,KAAK62D,CAAG,EAAEC,CAAG,EAAIZ,EAAOW,CAAG,EAAEC,CAAG,CAErD,CAES,IAAIC,EAAW,EACf,QAAQxhE,EAAQ,EAAGA,EAAQygE,EAAI,EAAGzgE,IAE9ByK,EAAI,KAAKzK,CAAK,EAAI0gE,EAAO1gE,CAAK,EAAIpM,EAAI4tE,CAAQ,EAC9CA,IACGA,GAAYH,IAEXG,EAAW,GAInB,IAAIC,EAAQ,EACRC,EAAQ,EACRvqE,EAAM,EACV,QAAQ3C,EAAI,EAAGA,EAAIisE,EAAI,EAAGjsE,GAAK,EAE3B2C,EAAM0pE,EAAiBp2D,EAAKg3D,EAAOC,CAAK,EACxCD,EAAQtqE,EAAI,KACZuqE,EAAQvqE,EAAI,MACZsT,EAAI,KAAKjW,CAAC,EAAIitE,EACdh3D,EAAI,KAAKjW,EAAI,CAAC,EAAIktE,EAGtB,QAAQltE,EAAI,EAAGA,EAAI,EAAGA,IAElB,QAAQ8tB,EAAI,EAAGA,EAAI,IAAKA,GAAK,EAEzBnrB,EAAM0pE,EAAiBp2D,EAAKg3D,EAAOC,CAAK,EACxCD,EAAQtqE,EAAI,KACZuqE,EAAQvqE,EAAI,MACZsT,EAAI,KAAKjW,CAAC,EAAE8tB,CAAC,EAAIm/C,EACjBh3D,EAAI,KAAKjW,CAAC,EAAE8tB,EAAI,CAAC,EAAIo/C,EAI7B,MAAO,EAChB,CAKK,IAAIC,EAAWpZ,EAAO,SAAWuT,EAAY,OAAO,CAChD,SAAU,UAAY,CAElB,GAAI,KAAK,iBAAmB,KAAK,KAKjC,KAAIloE,EAAM,KAAK,eAAiB,KAAK,KACjCopE,EAAWppE,EAAI,MACfikE,EAAUjkE,EAAI,SAAW,EAG7BwtE,EAAaR,EAAc5D,EAAUnF,CAAO,EAC/C,EAED,aAAc,SAAUhN,EAAGxxB,EAAQ,CAC/B,IAAIliC,EAAM0pE,EAAiBD,EAAc/V,EAAExxB,CAAM,EAAGwxB,EAAExxB,EAAS,CAAC,CAAC,EACjEwxB,EAAExxB,CAAM,EAAIliC,EAAI,KAChB0zD,EAAExxB,EAAS,CAAC,EAAIliC,EAAI,KACvB,EAED,aAAc,SAAU0zD,EAAGxxB,EAAQ,CAC/B,IAAIliC,EAAMgqE,EAAiBP,EAAc/V,EAAExxB,CAAM,EAAGwxB,EAAExxB,EAAS,CAAC,CAAC,EACjEwxB,EAAExxB,CAAM,EAAIliC,EAAI,KAChB0zD,EAAExxB,EAAS,CAAC,EAAIliC,EAAI,KACvB,EAED,UAAW,GAAG,GAEd,QAAS,IAAI,GAEb,OAAQ,GAAG,EACpB,CAAM,EAUD0uD,EAAE,SAAWiW,EAAY,cAAc6F,CAAQ,CACpD,EAAI,EAGIzc,EAAS,QAEjB,CAAC,sFCtdC,SAAUnkC,EAAMgkC,EAASiJ,EAAO,CAGhChJ,EAAiB,QAAUD,EAAQS,GAAiB,EAAEyI,GAAqB,EAAE4E,GAA4B,EAAE+I,GAAA,EAAwBC,KAAyB+F,GAA0B,EAAEC,GAAgB,EAAEC,KAAmBC,GAAmB,EAAEC,GAAmB,EAAEC,GAAmB,EAAEC,KAAqBC,GAAiB,EAAEC,GAAA,EAAwBC,GAAiB,EAAEC,GAAmB,EAAEC,KAAqBC,GAAwB,EAAEC,GAAqB,EAAEC,KAAuBC,GAA6B,EAAEC,GAAqB,EAAEC,GAAqB,EAAEC,KAA2BC,GAAyB,EAAEC,GAAA,EAA2BC,GAAA,EAA8BC,GAA0B,EAAEC,GAAuB,EAAEC,KAAkBC,KAAwBC,GAAgB,EAAEC,GAAmB,EAAEC,GAA0B,EAAEC,IAAqB,CAUt1B,GAAExe,GAAM,SAAUC,EAAU,CAE3B,OAAOA,CAER,CAAC,+BCQM,MAAMwe,GAAa,CAAC9vE,EAAKF,IAAQ,CACtCE,EAAM+vE,GAAO/vE,CAAG,EAEhB,IAAIslE,EAAK0K,OAAI,KAAK,MAAM,OAAO,WAAW,QAAQ,EAKlD,OAJgB7G,GAAG,IAAC,QAAQrpE,EAAKE,EAAK,CACpC,GAAIslE,EACJ,QAAS2K,GAAG,IAAC,KACd,GACgB,SAAQ,CAC3B,EAEaC,GAAa,CAAClwE,EAAKF,IAAQ,CACtCE,EAAM+vE,GAAO/vE,CAAG,EAEhB,IAAIslE,EAAK0K,OAAI,KAAK,MAAM,OAAO,WAAW,QAAQ,EAKlD,OAJgB7G,OAAI,QAAQrpE,EAAI,SAAU,EAAEE,EAAK,CAC/C,GAAIslE,EACJ,QAAS2K,GAAG,IAAC,KACd,GACgB,SAASD,OAAI,IAAI,CACpC,EAEaG,GAAW,CAACvyD,EAAO,KAAU,CACxC,GAAIwyD,GAAS,EAAE,OAAOxyD,EAEjBA,IAAMA,EAAO,CAAC,MAAO,EAAI,GAE9B,MAAMyyD,EAASC,GAAc,EAE7B,MAAO,CACL,KAAMD,EAAO,KAAM,EACnB,EAAGP,GAAWO,EAAO,IAAK,EAAE,KAAK,UAAUzyD,CAAI,CAAC,CACpD,CACA,EAEA,SAASmyD,GAAO/vE,EAAK,CACnB,IAAIuwE,EAAYvwE,EAEhB,OAAIA,EAAI,QAAU,IAChBuwE,EAAYvwE,EAAM,OAAO,WAAW,YAG/BgwE,GAAG,IAAC,KAAK,MAAMO,CAAS,CACjC,CAEO,MAAMC,GAAa,IAAM,CAC9B,MAAMC,EAAO,IAAI,KACXC,EAAOD,EAAK,YAAW,EACvBE,EAAQ,OAAOF,EAAK,SAAU,EAAG,CAAC,EAAE,SAAS,EAAG,GAAG,EACnDG,EAAM,OAAOH,EAAK,QAAO,CAAE,EAAE,SAAS,EAAG,GAAG,EAClD,MAAO,GAAGC,CAAI,GAAGC,CAAK,GAAGC,CAAG,EAC9B,EChDaN,GAAiBpvC,GAAY,SAAU,IAAM,CAExD,MAAMtnB,EAAUxJ,GAAI,CAClB,KAAM,GACN,IAAK,EACN,GAEKygE,EAASzgE,GAAI,CAAE,GACf0gE,EAAS1gE,GAAI,CACjB,OAAQ,EACT,GAGK2gE,EAAO,KACP,CAACn3D,EAAQ,MAAM,MAAQ,aAAa,QAAQ,UAAU,EACxDA,EAAQ,MAAM,KAAO,aAAa,QAAQ,UAAU,EAC1CA,EAAQ,MAAM,OACxBA,EAAQ,MAAM,KAAOo3D,EAAW,GAE3Bp3D,EAAQ,MAAM,MAGjBo3D,EAAc,IAAM,CACxB,MAAMD,EAAOE,GAAM,EACnB,oBAAa,QAAQ,WAAYF,CAAI,EAC9BA,CACX,EAEQ/wE,EAAM,KACN,CAAC4Z,EAAQ,MAAM,KAAO,aAAa,QAAQ,WAAW,IACxDA,EAAQ,MAAM,IAAM,aAAa,QAAQ,WAAW,GAE/CA,EAAQ,MAAM,KAGjBs3D,EAAgBlxE,GAAQ,CAC5B4Z,EAAQ,MAAM,IAAM5Z,EACpB,aAAa,QAAQ,YAAaA,CAAG,CACzC,EAEQmxE,EAAkB,IAAM,CAC5Bv3D,EAAQ,MAAM,IAAM,GACpB,aAAa,WAAW,WAAW,CACvC,EAiEE,MAAO,CACL,OAAAi3D,EACA,OAAAC,EACA,KAAAC,EACA,YAAAC,EACA,IAAAhxE,EACA,aAAAkxE,EACA,gBAAAC,EACA,YAvEkB,SAEX,WADS,MAAMjhB,GAAM,KAAKkhB,GAAQ,EAAG,mBAAmB,GACtC,IAAI,IAAI,OAAO,WAAW,UAAU,GAsE7D,iBAlEuB,MAAOC,EAAQ,KAAU,CAChD,MAAM1zB,EAAU,MAAMuS,GAAM,KAAKkhB,GAAQ,EAAG,cAAc,EAE1D,OAAKzzB,EAAQ,KAAK,SAElBkzB,EAAO,MAAQlzB,EAAQ,KAAK,QAEvB0zB,EACO,OAAO,KAAKR,EAAO,KAAK,EAAE,OADnBA,EAAO,OAJQ,EAMtC,EA0DI,gBAxDsB,MAAOS,IACb,MAAMphB,GAAM,KAAKkhB,GAAM,EAAK,qBAAsB,CAAE,KAAME,CAAY,IACvE,KAuDf,wBAnD8B,SAAY,CAC1C,MAAMC,EAAQ,MAAMrhB,GAAM,KAAKkhB,GAAQ,EAAG,uBAAwB,CAAE,KAAML,GAAQ,GAClF,OAAAD,EAAO,MAAM,OAASS,EAAM,KACrBA,EAAM,IACjB,EAgDI,0BA9CgC,MAAOC,EAAYC,IACnC,MAAMvhB,GAAM,KAAKkhB,GAAM,EAAK,yBAA0B,CACpE,KAAML,EAAM,EACZ,KAAMS,EACN,KAAMC,CACP,GA0CD,eAvCqB,MAAOp/D,GAAO,CACnC,MAAMq/D,EAAe,YAAY,IAAM,CACrCxhB,GAAM,KAAKkhB,GAAQ,EAAG,oBAAqB,CAAE,KAAML,GAAQ,GAAE,KAAMnzD,GAAS,CACtEA,EAAK,OACP,cAAc8zD,CAAY,EAC1Br/D,EAAGuL,EAAK,IAAI,EAEf,EACP,EAAO,GAAI,CACX,EA+BI,gBA7BsB,MAAO+zD,EAAS,KAAU,CAGhD,GAFKA,IAAQA,EAAS3xE,EAAG,GAErB,CAAC2xE,EAAQ,MAAO,GAEpB,MAAMC,EAAY,MAAM1hB,GAAM,KAAKkhB,GAAM,EAAK,oBAAqB,CACjE,KAAML,EAAM,EACZ,MAAOjB,GAAW6B,EAAQnB,IAAY,CACvC,GAED,OAAKoB,EAAU,MAAMT,EAAe,EAE7BS,EAAU,IACrB,CAiBA,CACA,CAAC,EChIYR,GAAS,IAAM,CAC1B,MAAMS,EAAO,OAAO,SAAS,MAAQ,KAAO,OAAO,WAAW,WAAa,OAAO,SAAS,KAE3F,MAAO,UAAU,OAAO,SAAS,QAAQ,IAAIA,CAAI,EACnD,EAEazB,GAAU,IACd,OAAO,SAAS,WAAa,aAAe,OAAO,SAAS,WAAa,YAarE0B,GAAY,SAAY,CACnC,MAAMzB,EAASC,GAAc,EAM7B,MAFI,GAFc,MAAMD,EAAO,gBAAe,IAE5B,IAEdA,EAAO,IAAG,EAGhB,gECeA,MAAM0B,EAAW3hE,GAAI,EAAK,ylCClB1B,MAAMggC,EAAS2G,GAAS,8fCJxB,MAAMs5B,EAASC,GAAc,EAEvBxnC,EAAQkO,GAAQ,EAChB46B,EAAYxhE,GAAI,EAAK,EAE3BqK,GAAU,IAAM,CAGd41D,EAAO,KAAI,EAEND,IAAS4B,EAAY,EAE1B3B,EAAO,WAAW,IAAM,CAClBA,EAAO,QAAOuB,EAAU,MAAQ,GACrC,EACH,CAAC,EAED,eAAeI,GAAe,CAC5B,MAAMC,EAAQ,MAAM5B,EAAO,gBAAe,EAC1CuB,EAAU,MAAQK,CACpB,ugDCxCaC,GAAgBhxC,GAAY,QAAS,IAAM,CACtD,MAAMtnB,EAAUxJ,GAAI,CAClB,IAAK,GACL,KAAM,GACN,YAAa,GACb,YAAa,GACb,OAAQ,GACR,MAAO,GACP,KAAM,GACN,MAAO,EACR,GAEKkmC,EAAOlmC,GAAI,CAAE,GAoCnB,MAAO,CACL,QAAAwJ,EACA,KAAA08B,EACA,IArCU,MAAO/+B,GAAQ,CACzB,MAAMqG,EAAOuyD,GAAS,CAAE,IAAK54D,CAAK,GAE5B46D,EAAO,MAAMjiB,GAAM,KAAKkhB,GAAM,EAAK,aAAcxzD,CAAI,EAE3D,MAAI,CAACu0D,EAAK,MAAQ,CAACv4D,EAAQ,MAAM,KAAa,IAE9CA,EAAQ,MAAM,KAAOu4D,EAAK,KAAK,KAC/Bv4D,EAAQ,MAAM,YAAcu4D,EAAK,KAAK,YACtCv4D,EAAQ,MAAM,YAAcu4D,EAAK,KAAK,YACtCv4D,EAAQ,MAAM,OAASu4D,EAAK,KAAK,OACjCv4D,EAAQ,MAAM,MAAQu4D,EAAK,KAAK,MAChCv4D,EAAQ,MAAM,KAAOu4D,EAAK,KAAK,KAC/Bv4D,EAAQ,MAAM,MAAQu4D,EAAK,KAAK,MAEzBv4D,EAAQ,MACnB,EAsBI,QApBc,MAAOy3D,EAAQ,KAAU,CACvC,GAAI/6B,EAAK,MAAM,OAAS,GAAK,CAAC+6B,EAAO,OAAO/6B,EAAK,MAC5C,GAAIA,EAAK,MAAM,OAAS,GAAK+6B,EAAO,OAAO/6B,EAAK,MAAM,OAE3D,MAAM14B,EAAOuyD,GAAQ,EAEfgC,EAAO,MAAMjiB,GAAM,KAAKkhB,GAAM,EAAK,cAAexzD,CAAI,EAG5D,OAFA04B,EAAK,MAAQ67B,EAAK,KAEd,CAACA,EAAK,MAAQ,CAACd,EAAc,GACxB,CAACc,EAAK,MAAQd,EAAc,EAEhCA,EACO/6B,EAAK,MAAM,OADJA,EAAK,KAE5B,CAOA,CACA,CAAC,kFC5CD,MAAMl6B,EAAQg2D,EAMRC,EAAclqE,GAAS,IAAM,CACjC,IAAIwvC,EAAU,MACd,OAAIv7B,EAAM,UAASu7B,GAAW,SAASv7B,EAAM,OAAO,IAChDA,EAAM,OAAMu7B,GAAW,SAASv7B,EAAM,IAAI,IAEvCu7B,CACT,CAAC,oPCxBY26B,GAAe,MAAOjB,EAAQ,KAAU,CACnD,MAAM1zB,EAAU,MAAMuS,GAAM,KAAKkhB,GAAQ,EAAG,aAAa,EAEzD,OAAKzzB,EAAQ,KAER0zB,EACO1zB,EAAQ,KAAK,OADN40B,GAAc50B,EAAQ,IAAI,EAFnB,CAI5B,EAEM40B,GAAiBj8B,GACd,CAAC,GAAGA,CAAI,EAAE,KAAK,CAAC/xC,EAAGC,IAAMD,EAAE,KAAK,cAAcC,EAAE,IAAI,CAAC,EAGjDguE,GAAW,MAAOC,GAAU,CACvC,MAAM70D,EAAOwyD,GAAS,EAAG,CAAE,MAAOqC,CAAK,EAAKtC,GAAS,CAAE,MAAOsC,CAAO,GAErE,OADgB,MAAMviB,GAAM,KAAKkhB,GAAM,EAAK,cAAexzD,CAAI,GAChD,IACjB,EAEa80D,GAAuB,CAACC,EAASC,IACrCD,IAAY,KAAK,UAAUC,CAAO,8TCmC3C,MAAMvC,EAASC,GAAc,EACvBuC,EAAQX,GAAa,EAErBpB,EAAS1jE,GAAS,CACtB,GAAI,GACJ,KAAM,GACN,SAAU,GACV,YAAa,EACb,WAAY,EACZ,WAAY,CACd,CAAC,EAED,OAAAqN,GAAU,SAAY,CACpB,MAAMq4D,EAAW,MAAMzC,EAAO,YAAW,EACzCS,EAAO,GAAKgC,EAIZ,MAAMC,EAAc,MAAM1C,EAAO,iBAAiB,EAAI,EACtDS,EAAO,YAAciC,EAErB,MAAMC,EAAa,MAAMV,GAAa,EAAI,EAC1CxB,EAAO,WAAakC,EAEpB,MAAMC,EAAa,MAAMJ,EAAM,QAAQ,EAAI,EAC3C/B,EAAO,WAAamC,EAEpB,QAAQ,IAAInC,CAAM,CACpB,CAAC,kkECzCD,MAAMT,EAASC,GAAc,EACvBuC,EAAQX,GAAa,EAErBpB,EAAS1jE,GAAS,CACtB,GAAI,GACJ,UAAW,GACX,WAAY,CACd,CAAC,EAED,OAAAqN,GAAU,SAAY,CACpB,MAAMy4D,EAAW,MAAM7C,EAAO,YAAW,EACzCS,EAAO,GAAKoC,EAER7C,EAAO,QAAOS,EAAO,UAAY,IAErCT,EAAO,WAAW,IAAM,CAClBA,EAAO,QAAOS,EAAO,UAAY,GACtC,GAED,MAAMmC,EAAa,MAAMJ,EAAM,QAAQ,EAAI,EAC3C/B,EAAO,WAAamC,CACtB,CAAC,0kEC/DK7iC,GAASyC,GAAa,CAC1B,QAAStK,GAAiB,GAAwB,EAClD,OAAQ,CACN,CACE,KAAM,IACN,KAAM,YACN,UAAW4qC,EACb,EACA,CACE,KAAM,UACN,KAAM,SACN,UAAW,WAAM,OAAO,0BAAyB,gCACjD,KAAM,CAAE,aAAc,EAAK,CAC7B,EACA,CACE,KAAM,uBACN,KAAM,aACN,UAAW,WAAM,OAAO,0BAAyB,gCACjD,KAAM,CAAE,aAAc,EAAK,CAC7B,EACA,CACE,KAAM,uBACN,KAAM,aACN,UAAW,WAAM,OAAO,0BAAyB,gCACjD,KAAM,CAAE,aAAc,EAAK,CAC7B,EACA,CACE,KAAM,UACN,KAAM,SACN,UAAW,WAAM,OAAO,0BAAyB,gCACjD,KAAM,CAAE,UAAW,EAAK,CAC1B,EACA,CACE,KAAM,WACN,KAAM,UACN,UAAW,IAAMC,GAAA,WAAO,2BAA0B,mCACpD,CAeJ,CAAC,EAEDhjC,GAAO,WAAW,MAAOvuB,EAAIC,EAAMna,IAAS,CACpC,MAAAihD,EAAO,MAAMkpB,GAAU,EAEzBjwD,EAAG,KAAK,cAAgB,CAAC+mC,GAAQ,CAACwnB,GAAA,EAAWzoE,EAAK,UAAU,EACvDka,EAAG,KAAK,WAAa,CAACuuD,GAAQ,IAAQ,GAAG,EACxCzoE,EAAA,CACZ,CAAC,ECrDD,MAAMyb,GAAM2Z,GAAUs2C,EAAG,EAEzBjwD,GAAI,IAAIqa,GAAa,GACrBra,GAAI,IAAIgtB,EAAM,EAEdhtB,GAAI,MAAM,MAAM","names":["_imports_0$1","makeMap","str","map","key","val","EMPTY_OBJ","EMPTY_ARR","NOOP","NO","isOn","isModelListener","extend","remove","arr","el","i","hasOwnProperty","hasOwn","isArray","isMap","toTypeString","isSet","isDate","isFunction","isString","isSymbol","isObject","isPromise","objectToString","value","toRawType","isPlainObject","isIntegerKey","isReservedProp","cacheStringFunction","fn","cache","camelizeRE","camelize","_","c","hyphenateRE","hyphenate","capitalize","toHandlerKey","hasChanged","oldValue","invokeArrayFns","fns","arg","def","obj","writable","looseToNumber","n","_globalThis","getGlobalThis","normalizeStyle","res","item","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","ret","tmp","normalizeClass","name","specialBooleanAttrs","isSpecialBooleanAttr","includeBooleanAttr","looseCompareArrays","a","b","equal","looseEqual","aValidType","bValidType","aKeysCount","bKeysCount","aHasKey","bHasKey","looseIndexOf","isRef","toDisplayString","replacer","_key","entries","val2","stringifySymbol","v","_a","activeEffectScope","EffectScope","detached","l","currentEffectScope","fromParent","last","effectScope","getCurrentScope","onScopeDispose","failSilently","activeSub","pausedQueueEffects","ReactiveEffect","batch","cleanupEffect","prepareDeps","prevEffect","prevShouldTrack","shouldTrack","cleanupDeps","link","removeSub","isDirty","batchDepth","batchedSub","batchedComputed","sub","isComputed","startBatch","endBatch","e","next","error","err","head","tail","prev","removeDep","refreshComputed","computed","globalVersion","dep","prevSub","soft","nextSub","prevDep","nextDep","trackStack","pauseTracking","resetTracking","cleanup","Link","Dep","debugInfo","addSub","currentTail","targetMap","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ARRAY_ITERATE_KEY","track","target","type","depsMap","trigger","newValue","oldTarget","run","targetIsArray","isArrayIndex","newLength","key2","getDepFromReactive","object","depMap","reactiveReadArray","array","raw","toRaw","isShallow","toReactive","shallowReadArray","arrayInstrumentations","iterator","args","x","thisArg","apply","searchProxy","separator","noTracking","reduce","comparer","self","method","wrapValue","iter","result","arrayProto","wrappedRetFn","needsWrap","methodFn","result2","wrappedFn","index","acc","isProxy","isNonTrackableKeys","builtInSymbols","BaseReactiveHandler","_isReadonly","_isShallow","receiver","isReadonly2","isShallow2","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","readonly","reactive","MutableReactiveHandler","isOldValueReadonly","isReadonly","hadKey","ReadonlyReactiveHandler","mutableHandlers","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","createIterableMethod","rawTarget","targetIsMap","isPair","isKeyOnly","innerIterator","wrap","toReadonly","done","createReadonlyMethod","createInstrumentations","shallow","instrumentations","rawKey","has","callback","observed","get","hadItems","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","targetTypeMap","rawType","getTargetType","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","proxy","isReactive","markRaw","r","ref","createRef","shallowRef","rawValue","RefImpl","useDirectValue","unref","ref2","shallowUnwrapHandlers","proxyRefs","objectWithRefs","toRefs","propertyToRef","ObjectRefImpl","_object","_defaultValue","newVal","source","defaultValue","ComputedRefImpl","setter","isSSR","getterOrOptions","debugOptions","getter","INITIAL_WATCHER_VALUE","cleanupMap","activeWatcher","onWatcherCleanup","cleanupFn","owner","cleanups","watch","cb","options","immediate","deep","once","scheduler","augmentJob","call","reactiveGetter","source2","traverse","effect","boundCleanup","forceTrigger","isMultiSource","s","currentEffect","baseGetter","depth","scope","watchHandle","_cb","job","immediateFirstRun","currentWatcher","cleanup2","seen","callWithErrorHandling","instance","handleError","callWithAsyncErrorHandling","values","throwInDev","contextVNode","errorHandler","throwUnhandledErrorInProduction","cur","exposedInstance","errorInfo","errorCapturedHooks","logError","throwInProd","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","p","findInsertionIndex","id","start","end","middle","middleJob","middleJobId","getId","queueJob","jobId","lastJob","queueFlush","flushJobs","queuePostFlushCb","flushPreFlushCbs","flushPostFlushCbs","deduped","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","withDirectives","vnode","directives","getComponentPublicInstance","bindings","dir","modifiers","invokeDirectiveHook","prevVNode","oldBindings","binding","hook","TeleportEndKey","isTeleport","setTransitionHooks","hooks","defineComponent","extraOptions","markAsyncBoundary","setRef","rawRef","oldRawRef","parentSuspense","isUnmount","isAsyncWrapper","refValue","oldRef","refs","setupState","rawSetupState","canSetSetupRef","_isString","_isRef","doSet","existing","queuePostRenderEffect","isKeepAlive","onActivated","registerKeepAliveHook","onDeactivated","currentInstance","wrappedHook","current","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","reset","setCurrentInstance","createHook","lifecycle","isInSSRComponentSetup","onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","warnMissing","Component","selfName","getComponentName","resolve","registry","renderList","renderItem","cached","sourceIsArray","sourceIsReactiveArray","keys","renderSlot","slots","props","fallback","noSlotted","openBlock","createBlock","Fragment","createVNode","slot","validSlotContent","ensureValidVNode","slotKey","rendered","vnodes","child","isVNode","Comment","getPublicInstance","isStatefulComponent","publicPropertiesMap","resolveMergedOptions","instanceWatch","hasSetupBinding","state","PublicInstanceProxyHandlers","data","accessCache","appContext","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","propsOptions","descriptor","normalizePropsOrEmits","applyOptions","publicThis","callHook","dataOptions","computedOptions","methods","watchOptions","provideOptions","injectOptions","created","beforeMount","mounted","beforeUpdate","updated","activated","deactivated","beforeDestroy","beforeUnmount","destroyed","unmounted","render","renderTracked","renderTriggered","errorCaptured","serverPrefetch","expose","inheritAttrs","components","filters","resolveInjections","methodHandler","opt","set","createWatcher","provides","provide","registerLifecycleHook","register","_hook","exposed","checkDuplicateProperties","normalizeInject","inject","h","createPathGetter","handler","base","mixins","extendsOptions","globalMixins","optionMergeStrategies","resolved","m","mergeOptions","to","from","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeEmitsOrPropsOptions","mergeObjectOptions","mergeAsArray","mergeWatchOptions","mergeInject","merged","createAppContext","uid$1","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","pluginCleanupFns","isMounted","app","version","plugin","mixin","component","directive","rootContainer","isHydrate","namespace","lastApp","currentApp","parentProvides","treatDefaultAsFactory","hasInjectionContext","internalObjectProto","createInternalObject","isInternalObject","initProps","rawProps","isStateful","attrs","setFullProps","updateProps","rawPrevProps","optimized","patchFlag","rawCurrentProps","hasAttrsChanged","propsToUpdate","isEmitListener","camelizedKey","resolvePropValue","kebabKey","needCastKeys","rawCastValues","camelKey","castValues","isAbsent","hasDefault","propsDefaults","mixinPropsCache","normalizePropsOptions","comp","hasExtends","extendProps","raw2","normalizedKey","validatePropName","prop","propType","shouldCast","shouldCastTrue","typeName","isInternalKey","normalizeSlotValue","normalizeVNode","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","normalizeVNodeSlots","children","assignSlots","initSlots","updateSlots","needDeletionCheck","deletionComparisonTarget","queueEffectWithSuspense","createRenderer","baseCreateRenderer","createHydrationFns","hostInsert","hostRemove","hostPatchProp","hostCreateElement","hostCreateText","hostCreateComment","hostSetText","hostSetElementText","hostParentNode","hostNextSibling","hostSetScopeId","hostInsertStaticContent","patch","n1","n2","container","anchor","parentComponent","slotScopeIds","isSameVNodeType","getNextHostNode","unmount","shapeFlag","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","moveStaticNode","nextSibling","removeStaticNode","mountElement","patchElement","vnodeHook","transition","dirs","mountChildren","resolveChildrenNamespace","setScopeId","invokeVNodeHook","needCallTransitionHooks","needTransition","scopeId","subTree","isSuspense","parentVNode","cloneIfMounted","dynamicChildren","oldProps","newProps","toggleRecurse","patchBlockChildren","patchChildren","patchProps","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","createComponentInstance","setupComponent","setupRenderEffect","placeholder","shouldUpdateComponent","updateComponentPreRender","componentUpdateFn","bu","u","parent","nonHydratedAsyncRoot","locateNonHydratedAsyncRoot","originNext","nextTree","renderComponentRoot","prevTree","updateHOCHostEl","bm","root","isAsyncWrapperVNode","scopedInitialVNode","update","nextVNode","prevProps","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","unmountChildren","oldLength","commonLength","nextChild","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","getSequence","nextIndex","move","moveType","leave","delayLeave","afterLeave","remove2","performLeave","doRemove","cacheIndex","shouldInvokeDirs","shouldInvokeVnodeHook","unmountComponent","removeFragment","performRemove","bum","um","invalidateMount","teleportEnd","isFlushing","currentNamespace","allowed","ch1","ch2","len","arrI","subComponent","ssrContextKey","useSSRContext","doWatch","flush","baseWatchOptions","runsImmediately","ssrCleanup","watchStopHandle","isPre","isFirstRun","watch$1","path","segments","getModelModifiers","modelName","emit","event","rawArgs","handlerName","onceHandler","normalizeEmitsOptions","extendEmits","normalizedFromExtend","withProxy","renderCache","fallthroughAttrs","proxyToUse","thisProxy","render2","getFunctionalFallthrough","blockStack","filterModelListeners","cloneVNode","prevChildren","nextProps","nextChildren","emits","hasPropsChanged","dynamicProps","emitsOptions","nextKeys","suspense","currentBlock","disableTracking","closeBlock","isBlockTreeEnabled","inVOnce","setupBlock","createElementBlock","createBaseVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","normalizeChildren","_createVNode","cloned","isClassComponent","guardReactiveProps","klass","style","extraProps","mergeRef","cloneTransition","mergedProps","mergeProps","createTextVNode","text","flag","createCommentVNode","asBlock","slotFlag","toMerge","incoming","emptyAppContext","uid","internalSetCurrentInstance","setInSSRSetupState","g","registerGlobalSetter","setters","unsetCurrentInstance","setupResult","setupStatefulComponent","setup","setupContext","createSetupContext","isAsyncSetup","resolvedResult","handleSetupResult","finishComponentSetup","skipOptions","attrsProxyHandlers","includeInferred","computed$1","propsOrChildren","policy","tt","unsafeToTrustedHTML","svgNS","mathmlNS","doc","templateContainer","nodeOps","tag","is","node","selector","content","before","template","wrapper","vtcKey","patchClass","isSVG","transitionClasses","vShowOriginalDisplay","vShowHidden","CSS_VAR_TEXT","displayRE","patchStyle","isCssString","hasControlledDisplay","prevStyle","setStyle","cssVarText","importantRE","prefixed","autoPrefix","prefixes","prefixCache","rawName","xlinkNS","patchAttr","isBoolean","patchDOMProp","attrName","needRemove","addEventListener","removeEventListener","veiKey","patchEvent","prevValue","nextValue","invokers","existingInvoker","parseName","invoker","createInvoker","optionsModifierRE","cachedNow","getNow","initialValue","patchStopImmediatePropagation","originalStop","isNativeOn","patchProp","shouldSetAsProp","camelize$1","getModelAssigner","onCompositionStart","onCompositionEnd","assignKey","vModelText","lazy","trim","number","castToNumber","domValue","elValue","vModelSelect","isSetModel","selectedVal","o","getValue","setSelected","_binding","isMultiple","isArrayValue","option","optionValue","optionType","systemModifiers","modifierGuards","withModifiers","cacheKey","guard","rendererOptions","renderer","ensureRenderer","createApp","mount","containerOrSelector","normalizeContainer","resolveRootNamespace","activePinia","setActivePinia","pinia","piniaSymbol","MutationType","createPinia","_p","toBeInstalled","noop","addSubscription","subscriptions","onCleanup","removeSubscription","idx","triggerSubscriptions","fallbackRunWithContext","ACTION_MARKER","ACTION_NAME","mergeReactiveObjects","patchToApply","subPatch","targetValue","skipHydrateSymbol","shouldHydrate","assign","createOptionsStore","hot","actions","getters","initialState","store","localState","computedGetters","createSetupStore","$id","isOptionsStore","optionsForPlugin","$subscribeOptions","isListening","isSyncListening","actionSubscriptions","debuggerEvents","activeListener","$patch","partialStateOrMutator","subscriptionMutation","myListenerId","$reset","newState","$state","$dispose","action","wrappedAction","afterCallbackList","onErrorCallbackList","after","onError","partialStore","stopWatcher","setupStore","actionValue","extender","defineStore","setupOptions","isSetupStore","useStore","hasContext","_imports_0","_imports_1","isBrowser","isRouteComponent","isESModule","applyToParams","params","newParams","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeHash","encodeQueryValue","encodeQueryKey","encodePath","encodeParam","decode","TRAILING_SLASH_RE","removeTrailingSlash","parseURL","parseQuery","location","currentLocation","query","searchString","hash","hashPos","searchPos","resolveRelativePath","stringifyURL","stringifyQuery","stripBase","pathname","isSameRouteLocation","aLastIndex","bLastIndex","isSameRouteRecord","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","fromSegments","toSegments","lastToSegment","position","toPosition","segment","START_LOCATION_NORMALIZED","NavigationType","NavigationDirection","normalizeBase","baseEl","BEFORE_HASH_RE","createHref","getElementPosition","offset","docRect","elRect","computeScrollPosition","scrollToPosition","scrollToOptions","positionEl","isIdSelector","getScrollKey","delta","scrollPositions","saveScrollPosition","scrollPosition","getSavedScrollPosition","scroll","createBaseLocation","createCurrentLocation","search","slicePos","pathFromHash","useHistoryListeners","historyState","replace","listeners","teardowns","pauseState","popStateHandler","fromState","listener","pauseListeners","listen","teardown","beforeUnloadListener","history","destroy","buildState","back","forward","replaced","computeScroll","useHistoryStateNavigation","changeLocation","hashIndex","url","push","currentState","createWebHistory","historyNavigation","historyListeners","go","triggerListeners","routerHistory","isRouteLocation","route","isRouteName","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","REGEX_CHARS_RE","tokensToParser","score","pattern","segmentScores","tokenIndex","token","subSegmentScore","repeatable","optional","regexp","re","subPattern","parse","match","stringify","avoidDuplicatedSlash","param","compareScoreArray","diff","comparePathParserScore","aScore","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","tokenizePath","crash","message","buffer","previousState","tokens","finalizeSegment","char","customRe","consumeBuffer","addCharToBuffer","createRouteRecordMatcher","record","parser","matcher","createRouterMatcher","routes","globalOptions","matchers","matcherMap","getRecordMatcher","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","normalizeRouteRecord","normalizedRecords","aliases","alias","originalMatcher","normalizedRecord","parentPath","connectingSlash","isAliasRecord","removeRoute","isMatchable","insertMatcher","matcherRef","getRoutes","paramsFromLocation","k","matched","parentMatcher","mergeMetaFields","clearRoutes","normalizeRecordProps","propsObject","meta","defaults","partialOptions","lower","upper","mid","insertionAncestor","getInsertionAncestor","ancestor","searchParams","searchParam","eqPos","currentValue","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","handlers","add","guardToPromiseFn","runWithContext","enterCallbackArray","reject","valid","guardReturn","guardCall","extractComponentsGuards","guardType","guards","rawComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","length","routeMatched","currentMatched","parentRecordPath","getOriginalPath","isActive","includesParams","isExactActive","navigate","guardEvent","preferSingleVNode","RouterLinkImpl","elClass","getLinkClass","RouterLink","outer","inner","innerValue","outerValue","propClass","globalClass","defaultClass","RouterViewImpl","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","currentName","ViewComponent","routePropsOption","routeProps","slotContent","RouterView","createRouter","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","normalizeParams","paramValue","encodeParams","decodeParams","parentOrRoute","recordMatcher","routeMatcher","hasRoute","rawLocation","locationNormalized","href","matcherLocation","targetParams","fullPath","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","redirect","newTargetLocation","redirectedFrom","targetLocation","force","shouldRedirect","toLocation","failure","handleScroll","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","installedApps","leavingRecords","updatingRecords","enteringRecords","extractChangingRecords","canceledNavigationCheck","runGuardQueue","beforeEnter","isPush","isFirstNavigation","removeHistoryListener","setupListeners","_from","info","readyHandlers","errorListeners","ready","list","isReady","scrollBehavior","started","reactiveRoute","unmountApp","promise","recordFrom","recordTo","useRouter","useRoute","_name","defaultAttributes","createVueComponent","iconName","iconNamePascal","iconNode","color","size","stroke","title","classes","rest","IconAlertTriangle","IconCheck","IconDevices","IconExclamationCircle","IconHome","IconInfoCircle","IconKeyboard","IconLayoutGrid","IconLink","IconServer","IconX","bind","toString","getPrototypeOf","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isBuffer","isArrayBuffer","isArrayBufferView","isNumber","prototype","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","forEach","allOwnKeys","findKey","_global","isContextDefined","merge","caseless","assignValue","targetKey","stripBOM","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","endsWith","lastIndex","toArray","isTypedArray","TypedArray","forEachEntry","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","p1","p2","isRegExp","reduceDescriptors","reducer","reducedDescriptors","freezeMethods","toObjectSet","arrayOrString","delimiter","define","toFiniteNumber","isSpecCompliantForm","toJSONObject","stack","visit","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","asap","utils$1","AxiosError","code","config","request","response","utils","customProps","axiosError","httpAdapter","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFormData","formData","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","URLSearchParams","FormData","Blob","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders$1","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","deleted","deleteHeader","format","targets","asStrings","first","accessors","defineAccessor","AxiosHeaders","mapped","headerValue","transformData","isCancel","CanceledError","settle","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","xsrfValue","isXHRAdapterSupported","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","responseHeaders","timeoutErrorMessage","cancel","protocol","composeSignals","signals","timeout","controller","aborted","onabort","reason","unsubscribe","signal","streamChunk","chunk","chunkSize","pos","readBytes","iterable","readStream","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","isFetchSupported","isReadableStreamSupported","encodeText","test","supportsRequestStream","duplexAccessed","hasContentType","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","getBodyLength","body","resolveBodyLength","fetchAdapter","cancelToken","withCredentials","fetchOptions","composedSignal","requestContentLength","_request","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","Axios","generateHTTPMethod","isForm","CancelToken$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","spread","isAxiosError","payload","HttpStatusCode","createInstance","defaultConfig","axios","promises","all","Cancel","formToJSON","getAdapter","byteToHex","unsafeStringify","getRandomValues","rnds8","rng","randomUUID","native","v4","buf","rnds","__viteBrowserExternal","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","subtype","C","C_lib","Base","overrides","properties","propertyName","WordArray","words","sigBytes","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","cfg","messageUpdate","hasher","C_algo","X32WordArray","C_x64","high","low","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","superInit","subInit","typedArray","typedArrayByteLength","utf16Chars","codePoint","utf16Str","utf16StrLength","swapEndian","word","base64Chars","byte1","byte2","byte3","triplet","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","bits1","bits2","bitsCombined","urlSafe","Hasher","T","MD5","M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","d","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","nBitsTotalL","H_i","t","W","SHA1","K","isPrime","sqrtN","factor","getFractionalBits","nPrime","SHA256","f","gamma0x","gamma0","gamma1x","gamma1","ch","maj","sigma0","sigma1","t1","t2","undef","require$$1","SHA224","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","cl","dh","dl","eh","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1l","t1h","t2l","t2h","require$$2","SHA384","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","y","newX","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","nBlockSizeLanes","M2i","M2i1","lane","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","hr","zl","zr","sl","sr","ar","br","cr","dr","er","f1","f2","f3","f4","f5","rotl","z","hasherBlockSize","hasherBlockSizeBytes","oKey","iKey","oKeyWords","iKeyWords","innerHash","hmac","HMAC","PBKDF2","password","salt","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","keySize","iterations","block","blockWords","blockWordsLength","intermediate","intermediateWords","EvpKDF","Base64","Cipher","xformMode","dataUpdate","finalProcessedData","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","finalProcessedBlocks","C_mode","BlockCipherMode","iv","CBC","xorBlock","thisBlock","C_pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","modeCreator","mode","CipherParams","cipherParams","formatter","C_format","OpenSSLFormatter","openSSLStr","ciphertextWords","encryptor","cipherCfg","plaintext","C_kdf","OpenSSLKdf","ivSize","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","Encryptor","counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","ECB","lastBytePos","input","require$$3","require$$4","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","keyWords","nRounds","ksRows","keySchedule","ksRow","invKeySchedule","invKsRow","s0","s3","t0","t3","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyBits","keyBitPos","subKeys","nSubKey","subKey","bitShift","invSubKeys","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key3","StreamCipher","RC4","keySigBytes","S","keyByteIndex","keyByte","generateKeystreamWord","keystreamWord","RC4Drop","C_","G","Rabbit","X","nextState","IV","IV_0","IV_1","i0","i2","i1","i3","gx","ga","gb","RabbitLegacy","N","ORIG_P","ORIG_S","BLOWFISH_CTX","BlowFish_Encrypt","left","right","Xl","Xr","temp","BlowFish_Decrypt","BlowFishInit","keysize","Row","Col","keyIndex","Data1","Data2","Blowfish","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","encryptAES","keyPad","enc","pad","decryptAES","AuthCall","isLocal","device","useDeviceStore","returnKey","getDateStr","date","year","month","day","remote","server","uuid","setDeviceId","uuidv4","setDeviceKey","removeDeviceKey","appUrl","count","deviceUuid","check","deviceName","deviceType","pingInterval","keyStr","handshake","port","checkAuth","menuOpen","appHandshake","hsReq","usePanelStore","resp","__props","classString","GetMacroList","sortMacroList","RunMacro","macro","CheckMacroListChange","oldList","newList","panel","serverIP","remoteCount","macroCount","panelCount","serverIp","DashboardView","__vitePreload","App"],"ignoreList":[1,2,3,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],"sources":["../../ui/src/assets/img/Macrame-Logo-gradient.svg","../../ui/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../ui/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../ui/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../ui/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../ui/node_modules/pinia/dist/pinia.mjs","../../ui/src/assets/img/bg-gradient.svg","../../ui/src/assets/img/Macrame-Logo-white.svg","../../ui/node_modules/vue-router/dist/vue-router.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/defaultAttributes.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/createVueComponent.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconAlertTriangle.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconCheck.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconDevices.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconExclamationCircle.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconHome.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconInfoCircle.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconKeyboard.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconLayoutGrid.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconLink.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconServer.mjs","../../ui/node_modules/@tabler/icons-vue/dist/esm/icons/IconX.mjs","../../ui/node_modules/axios/lib/helpers/bind.js","../../ui/node_modules/axios/lib/utils.js","../../ui/node_modules/axios/lib/core/AxiosError.js","../../ui/node_modules/axios/lib/helpers/null.js","../../ui/node_modules/axios/lib/helpers/toFormData.js","../../ui/node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../../ui/node_modules/axios/lib/helpers/buildURL.js","../../ui/node_modules/axios/lib/core/InterceptorManager.js","../../ui/node_modules/axios/lib/defaults/transitional.js","../../ui/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../../ui/node_modules/axios/lib/platform/browser/classes/FormData.js","../../ui/node_modules/axios/lib/platform/browser/classes/Blob.js","../../ui/node_modules/axios/lib/platform/browser/index.js","../../ui/node_modules/axios/lib/platform/common/utils.js","../../ui/node_modules/axios/lib/platform/index.js","../../ui/node_modules/axios/lib/helpers/toURLEncodedForm.js","../../ui/node_modules/axios/lib/helpers/formDataToJSON.js","../../ui/node_modules/axios/lib/defaults/index.js","../../ui/node_modules/axios/lib/helpers/parseHeaders.js","../../ui/node_modules/axios/lib/core/AxiosHeaders.js","../../ui/node_modules/axios/lib/core/transformData.js","../../ui/node_modules/axios/lib/cancel/isCancel.js","../../ui/node_modules/axios/lib/cancel/CanceledError.js","../../ui/node_modules/axios/lib/core/settle.js","../../ui/node_modules/axios/lib/helpers/parseProtocol.js","../../ui/node_modules/axios/lib/helpers/speedometer.js","../../ui/node_modules/axios/lib/helpers/throttle.js","../../ui/node_modules/axios/lib/helpers/progressEventReducer.js","../../ui/node_modules/axios/lib/helpers/isURLSameOrigin.js","../../ui/node_modules/axios/lib/helpers/cookies.js","../../ui/node_modules/axios/lib/helpers/isAbsoluteURL.js","../../ui/node_modules/axios/lib/helpers/combineURLs.js","../../ui/node_modules/axios/lib/core/buildFullPath.js","../../ui/node_modules/axios/lib/core/mergeConfig.js","../../ui/node_modules/axios/lib/helpers/resolveConfig.js","../../ui/node_modules/axios/lib/adapters/xhr.js","../../ui/node_modules/axios/lib/helpers/composeSignals.js","../../ui/node_modules/axios/lib/helpers/trackStream.js","../../ui/node_modules/axios/lib/adapters/fetch.js","../../ui/node_modules/axios/lib/adapters/adapters.js","../../ui/node_modules/axios/lib/core/dispatchRequest.js","../../ui/node_modules/axios/lib/env/data.js","../../ui/node_modules/axios/lib/helpers/validator.js","../../ui/node_modules/axios/lib/core/Axios.js","../../ui/node_modules/axios/lib/cancel/CancelToken.js","../../ui/node_modules/axios/lib/helpers/spread.js","../../ui/node_modules/axios/lib/helpers/isAxiosError.js","../../ui/node_modules/axios/lib/helpers/HttpStatusCode.js","../../ui/node_modules/axios/lib/axios.js","../../ui/node_modules/axios/index.js","../../ui/node_modules/uuid/dist/esm-browser/stringify.js","../../ui/node_modules/uuid/dist/esm-browser/rng.js","../../ui/node_modules/uuid/dist/esm-browser/native.js","../../ui/node_modules/uuid/dist/esm-browser/v4.js","../../ui/__vite-browser-external","../../ui/node_modules/crypto-js/core.js","../../ui/node_modules/crypto-js/x64-core.js","../../ui/node_modules/crypto-js/lib-typedarrays.js","../../ui/node_modules/crypto-js/enc-utf16.js","../../ui/node_modules/crypto-js/enc-base64.js","../../ui/node_modules/crypto-js/enc-base64url.js","../../ui/node_modules/crypto-js/md5.js","../../ui/node_modules/crypto-js/sha1.js","../../ui/node_modules/crypto-js/sha256.js","../../ui/node_modules/crypto-js/sha224.js","../../ui/node_modules/crypto-js/sha512.js","../../ui/node_modules/crypto-js/sha384.js","../../ui/node_modules/crypto-js/sha3.js","../../ui/node_modules/crypto-js/ripemd160.js","../../ui/node_modules/crypto-js/hmac.js","../../ui/node_modules/crypto-js/pbkdf2.js","../../ui/node_modules/crypto-js/evpkdf.js","../../ui/node_modules/crypto-js/cipher-core.js","../../ui/node_modules/crypto-js/mode-cfb.js","../../ui/node_modules/crypto-js/mode-ctr.js","../../ui/node_modules/crypto-js/mode-ctr-gladman.js","../../ui/node_modules/crypto-js/mode-ofb.js","../../ui/node_modules/crypto-js/mode-ecb.js","../../ui/node_modules/crypto-js/pad-ansix923.js","../../ui/node_modules/crypto-js/pad-iso10126.js","../../ui/node_modules/crypto-js/pad-iso97971.js","../../ui/node_modules/crypto-js/pad-zeropadding.js","../../ui/node_modules/crypto-js/pad-nopadding.js","../../ui/node_modules/crypto-js/format-hex.js","../../ui/node_modules/crypto-js/aes.js","../../ui/node_modules/crypto-js/tripledes.js","../../ui/node_modules/crypto-js/rc4.js","../../ui/node_modules/crypto-js/rabbit.js","../../ui/node_modules/crypto-js/rabbit-legacy.js","../../ui/node_modules/crypto-js/blowfish.js","../../ui/node_modules/crypto-js/index.js","../../ui/src/services/EncryptService.js","../../ui/src/stores/device.js","../../ui/src/services/ApiService.js","../../ui/src/components/base/MainMenu.vue","../../ui/src/components/base/AlertComp.vue","../../ui/src/App.vue","../../ui/src/stores/panel.js","../../ui/src/components/base/ButtonComp.vue","../../ui/src/services/MacroService.js","../../ui/src/components/dashboard/ServerView.vue","../../ui/src/components/dashboard/RemoteView.vue","../../ui/src/router/index.js","../../ui/src/main.js"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20140%2080'%20style='enable-background:new%200%200%20140%2080;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:url(%23SVGID_1_);}%20.st1{fill:url(%23SVGID_2_);}%20.st2{fill:url(%23SVGID_3_);}%20.st3{fill:url(%23SVGID_4_);}%20.st4{fill:url(%23SVGID_5_);}%20.st5{fill:url(%23SVGID_6_);}%20.st6{fill:url(%23SVGID_7_);}%20%3c/style%3e%3clinearGradient%20id='SVGID_1_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28.05'%20x2='140'%20y2='28.05'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st0'%20d='M95.5,18.3l-0.2-0.1C95.2,18.1,95,18,94.8,18c-0.3,0-0.5,0.1-0.7,0.3L82.8,29.6l8.5,8.5l12-12L95.5,18.3z'/%3e%3clinearGradient%20id='SVGID_2_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='28'%20x2='140'%20y2='28'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st1'%20d='M57.3,29.5L46,18.3c-0.2-0.2-0.5-0.3-0.7-0.3s-0.4,0-0.5,0.1l-0.2,0.1L36.8,26l12,12L57.3,29.5z'/%3e%3clinearGradient%20id='SVGID_3_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='65.25'%20x2='140'%20y2='65.25'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st2'%20d='M94.7,67l-14-14l-8.5,8.5l11.3,11.3c1,1,2.1,1.8,3.2,2.5c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.7,8.1-2.2L94.7,67%20L94.7,67z'/%3e%3clinearGradient%20id='SVGID_4_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='32.9162'%20x2='140'%20y2='32.9162'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st3'%20d='M114,15.5l-7.8-7.8c-0.2-0.2-0.5-0.5-0.7-0.7c-5.3-4.6-12.8-5.2-18.7-1.8c-1.1,0.7-2.2,1.5-3.2,2.5L72.2,19%20l2.6,2.6l5.9,5.9L92,16.2c0.8-0.8,1.8-1.1,2.8-1.1c0.7,0,1.4,0.2,2,0.5l0.1-0.1l8.5,8.5l13.4,13.4c0.8,0.8,1.1,1.8,1.1,2.8%20s-0.4,2.1-1.1,2.8l-11.3,11.3l5,5l3.5,3.5l11.3-11.3c3.1-3.1,4.7-7.2,4.7-11.3c0-4.1-1.5-8.2-4.6-11.3L114,15.5z'/%3e%3clinearGradient%20id='SVGID_5_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='38.2163'%20x2='140'%20y2='38.2163'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st4'%20d='M105.4,56.5l-3.5-3.5l-4.5-4.5L81.2,32.2l-8.5-8.5l-2.6-2.6L56.6,7.7c-1-1-2.1-1.8-3.2-2.5%20C47.6,1.8,40,2.4,34.8,7c-0.3,0.2-0.5,0.4-0.7,0.7l-7.8,7.8L12.8,28.9C9.7,32,8.1,36.1,8.1,40.2c0,4.1,1.6,8.2,4.7,11.3l11.3,11.3%20l3.5-3.5l5-5L21.3,43c-0.8-0.8-1.1-1.8-1.1-2.8s0.4-2.1,1.1-2.8L34.7,24l8.5-8.5l0.1,0.1c1.5-0.9,3.6-0.7,4.8,0.6l11.3,11.3l2.1,2.1%20l8.5,8.5l2.1,2.1l8.5,8.5l16.2,16.2L97,65l8.4,8.4c0.3-0.2,0.5-0.4,0.7-0.7l7.8-7.8l-3.5-3.4L105.4,56.5z'/%3e%3clinearGradient%20id='SVGID_6_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='59.85'%20x2='140'%20y2='59.85'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st5'%20d='M70.1,42.3l-8.5,8.5L45.4,67l-0.1,0.1L40.4,72l-3.2,3.2c2.5,1.5,5.3,2.2,8.1,2.2s5.6-0.8,8.1-2.2%20c1.1-0.7,2.2-1.5,3.2-2.5L70,59.3l8.5-8.5L70.1,42.3z'/%3e%3clinearGradient%20id='SVGID_7_'%20gradientUnits='userSpaceOnUse'%20x1='-9.094947e-13'%20y1='52.6'%20x2='140'%20y2='52.6'%3e%3cstop%20offset='0'%20style='stop-color:%23FFB900'/%3e%3cstop%20offset='1'%20style='stop-color:%2300BCFF'/%3e%3c/linearGradient%3e%3cpath%20class='st6'%20d='M43.1,65.1l0.1-0.1l16.2-16.2l8.5-8.5l-8.4-8.6L51,40.2L38.2,53l-3.5,3.5l-5,5L26.2,65l7.8,7.8%20c0.2,0.2,0.5,0.5,0.7,0.7l3.5-3.5L43.1,65.1z'/%3e%3c/svg%3e\"","/**\n* @vue/shared v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str) {\n const map = /* @__PURE__ */ Object.create(null);\n for (const key of str.split(\",\")) map[key] = 1;\n return (val) => val in map;\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction(\n (str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n }\n);\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction(\n (str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n }\n);\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, ...arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](...arg);\n }\n};\nconst def = (obj, key, value, writable = false) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n writable,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\nfunction genCacheKey(source, options) {\n return source + JSON.stringify(\n options,\n (_, val) => typeof val === \"function\" ? val.toString() : val\n );\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"CACHED\": -1,\n \"-1\": \"CACHED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n start = Math.max(0, Math.min(start, source.length));\n end = Math.max(0, Math.min(end, source.length));\n if (start > end) return \"\";\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n if (!styles) return \"\";\n if (isString(styles)) return styles;\n let ret = \"\";\n for (const key in styles) {\n const value = styles[key];\n if (isString(value) || typeof value === \"number\") {\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props) return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nconst isKnownMathMLAttr = /* @__PURE__ */ makeMap(\n `accent,accentunder,actiontype,align,alignmentscope,altimg,altimg-height,altimg-valign,altimg-width,alttext,bevelled,close,columnsalign,columnlines,columnspan,denomalign,depth,dir,display,displaystyle,encoding,equalcolumns,equalrows,fence,fontstyle,fontweight,form,frame,framespacing,groupalign,height,href,id,indentalign,indentalignfirst,indentalignlast,indentshift,indentshiftfirst,indentshiftlast,indextype,justify,largetop,largeop,lquote,lspace,mathbackground,mathcolor,mathsize,mathvariant,maxsize,minlabelspacing,mode,other,overflow,position,rowalign,rowlines,rowspan,rquote,rspace,scriptlevel,scriptminsize,scriptsizemultiplier,selection,separator,separators,shift,side,src,stackalign,stretchy,subscriptshift,superscriptshift,symmetric,voffset,width,widths,xlink:href,xlink:show,xlink:type,xmlns`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>|?@[\\\\\\]^`{|}~]/g;\nfunction getEscapedCssVarName(key, doubleEscape) {\n return key.replace(\n cssVarNameEscapeSymbolsRE,\n (s) => doubleEscape ? s === '\"' ? '\\\\\\\\\\\\\"' : `\\\\\\\\${s}` : `\\\\${s}`\n );\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length) return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b) return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex((item) => looseEqual(item, val));\n}\n\nconst isRef = (val) => {\n return !!(val && val[\"__v_isRef\"] === true);\n};\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? isRef(val) ? toDisplayString(val.value) : JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (isRef(val)) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, cssVarNameEscapeSymbolsRE, def, escapeHtml, escapeHtmlComment, extend, genCacheKey, genPropsAccessExp, generateCodeFrame, getEscapedCssVarName, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownMathMLAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { hasChanged, extend, isArray, isIntegerKey, isSymbol, isMap, hasOwn, isObject, makeMap, toRawType, capitalize, def, isFunction, EMPTY_OBJ, isSet, isPlainObject, NOOP, remove } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this._isPaused = false;\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n pause() {\n if (this._active) {\n this._isPaused = true;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].pause();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].pause();\n }\n }\n }\n /**\n * Resumes the effect scope, including all child scopes and effects.\n */\n resume() {\n if (this._active) {\n if (this._isPaused) {\n this._isPaused = false;\n let i, l;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].resume();\n }\n }\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].resume();\n }\n }\n }\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n this._active = false;\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n this.effects.length = 0;\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n this.cleanups.length = 0;\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n this.scopes.length = 0;\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn, failSilently = false) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeSub;\nconst EffectFlags = {\n \"ACTIVE\": 1,\n \"1\": \"ACTIVE\",\n \"RUNNING\": 2,\n \"2\": \"RUNNING\",\n \"TRACKING\": 4,\n \"4\": \"TRACKING\",\n \"NOTIFIED\": 8,\n \"8\": \"NOTIFIED\",\n \"DIRTY\": 16,\n \"16\": \"DIRTY\",\n \"ALLOW_RECURSE\": 32,\n \"32\": \"ALLOW_RECURSE\",\n \"PAUSED\": 64,\n \"64\": \"PAUSED\"\n};\nconst pausedQueueEffects = /* @__PURE__ */ new WeakSet();\nclass ReactiveEffect {\n constructor(fn) {\n this.fn = fn;\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 1 | 4;\n /**\n * @internal\n */\n this.next = void 0;\n /**\n * @internal\n */\n this.cleanup = void 0;\n this.scheduler = void 0;\n if (activeEffectScope && activeEffectScope.active) {\n activeEffectScope.effects.push(this);\n }\n }\n pause() {\n this.flags |= 64;\n }\n resume() {\n if (this.flags & 64) {\n this.flags &= ~64;\n if (pausedQueueEffects.has(this)) {\n pausedQueueEffects.delete(this);\n this.trigger();\n }\n }\n }\n /**\n * @internal\n */\n notify() {\n if (this.flags & 2 && !(this.flags & 32)) {\n return;\n }\n if (!(this.flags & 8)) {\n batch(this);\n }\n }\n run() {\n if (!(this.flags & 1)) {\n return this.fn();\n }\n this.flags |= 2;\n cleanupEffect(this);\n prepareDeps(this);\n const prevEffect = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = this;\n shouldTrack = true;\n try {\n return this.fn();\n } finally {\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub !== this) {\n warn(\n \"Active effect was not restored correctly - this is likely a Vue internal bug.\"\n );\n }\n cleanupDeps(this);\n activeSub = prevEffect;\n shouldTrack = prevShouldTrack;\n this.flags &= ~2;\n }\n }\n stop() {\n if (this.flags & 1) {\n for (let link = this.deps; link; link = link.nextDep) {\n removeSub(link);\n }\n this.deps = this.depsTail = void 0;\n cleanupEffect(this);\n this.onStop && this.onStop();\n this.flags &= ~1;\n }\n }\n trigger() {\n if (this.flags & 64) {\n pausedQueueEffects.add(this);\n } else if (this.scheduler) {\n this.scheduler();\n } else {\n this.runIfDirty();\n }\n }\n /**\n * @internal\n */\n runIfDirty() {\n if (isDirty(this)) {\n this.run();\n }\n }\n get dirty() {\n return isDirty(this);\n }\n}\nlet batchDepth = 0;\nlet batchedSub;\nlet batchedComputed;\nfunction batch(sub, isComputed = false) {\n sub.flags |= 8;\n if (isComputed) {\n sub.next = batchedComputed;\n batchedComputed = sub;\n return;\n }\n sub.next = batchedSub;\n batchedSub = sub;\n}\nfunction startBatch() {\n batchDepth++;\n}\nfunction endBatch() {\n if (--batchDepth > 0) {\n return;\n }\n if (batchedComputed) {\n let e = batchedComputed;\n batchedComputed = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= ~8;\n e = next;\n }\n }\n let error;\n while (batchedSub) {\n let e = batchedSub;\n batchedSub = void 0;\n while (e) {\n const next = e.next;\n e.next = void 0;\n e.flags &= ~8;\n if (e.flags & 1) {\n try {\n ;\n e.trigger();\n } catch (err) {\n if (!error) error = err;\n }\n }\n e = next;\n }\n }\n if (error) throw error;\n}\nfunction prepareDeps(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n link.version = -1;\n link.prevActiveLink = link.dep.activeLink;\n link.dep.activeLink = link;\n }\n}\nfunction cleanupDeps(sub) {\n let head;\n let tail = sub.depsTail;\n let link = tail;\n while (link) {\n const prev = link.prevDep;\n if (link.version === -1) {\n if (link === tail) tail = prev;\n removeSub(link);\n removeDep(link);\n } else {\n head = link;\n }\n link.dep.activeLink = link.prevActiveLink;\n link.prevActiveLink = void 0;\n link = prev;\n }\n sub.deps = head;\n sub.depsTail = tail;\n}\nfunction isDirty(sub) {\n for (let link = sub.deps; link; link = link.nextDep) {\n if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {\n return true;\n }\n }\n if (sub._dirty) {\n return true;\n }\n return false;\n}\nfunction refreshComputed(computed) {\n if (computed.flags & 4 && !(computed.flags & 16)) {\n return;\n }\n computed.flags &= ~16;\n if (computed.globalVersion === globalVersion) {\n return;\n }\n computed.globalVersion = globalVersion;\n const dep = computed.dep;\n computed.flags |= 2;\n if (dep.version > 0 && !computed.isSSR && computed.deps && !isDirty(computed)) {\n computed.flags &= ~2;\n return;\n }\n const prevSub = activeSub;\n const prevShouldTrack = shouldTrack;\n activeSub = computed;\n shouldTrack = true;\n try {\n prepareDeps(computed);\n const value = computed.fn(computed._value);\n if (dep.version === 0 || hasChanged(value, computed._value)) {\n computed._value = value;\n dep.version++;\n }\n } catch (err) {\n dep.version++;\n throw err;\n } finally {\n activeSub = prevSub;\n shouldTrack = prevShouldTrack;\n cleanupDeps(computed);\n computed.flags &= ~2;\n }\n}\nfunction removeSub(link, soft = false) {\n const { dep, prevSub, nextSub } = link;\n if (prevSub) {\n prevSub.nextSub = nextSub;\n link.prevSub = void 0;\n }\n if (nextSub) {\n nextSub.prevSub = prevSub;\n link.nextSub = void 0;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && dep.subsHead === link) {\n dep.subsHead = nextSub;\n }\n if (dep.subs === link) {\n dep.subs = prevSub;\n if (!prevSub && dep.computed) {\n dep.computed.flags &= ~4;\n for (let l = dep.computed.deps; l; l = l.nextDep) {\n removeSub(l, true);\n }\n }\n }\n if (!soft && !--dep.sc && dep.map) {\n dep.map.delete(dep.key);\n }\n}\nfunction removeDep(link) {\n const { prevDep, nextDep } = link;\n if (prevDep) {\n prevDep.nextDep = nextDep;\n link.prevDep = void 0;\n }\n if (nextDep) {\n nextDep.prevDep = prevDep;\n link.nextDep = void 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const e = new ReactiveEffect(fn);\n if (options) {\n extend(e, options);\n }\n try {\n e.run();\n } catch (err) {\n e.stop();\n throw err;\n }\n const runner = e.run.bind(e);\n runner.effect = e;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction onEffectCleanup(fn, failSilently = false) {\n if (activeSub instanceof ReactiveEffect) {\n activeSub.cleanup = fn;\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onEffectCleanup() was called when there was no active effect to associate with.`\n );\n }\n}\nfunction cleanupEffect(e) {\n const { cleanup } = e;\n e.cleanup = void 0;\n if (cleanup) {\n const prevSub = activeSub;\n activeSub = void 0;\n try {\n cleanup();\n } finally {\n activeSub = prevSub;\n }\n }\n}\n\nlet globalVersion = 0;\nclass Link {\n constructor(sub, dep) {\n this.sub = sub;\n this.dep = dep;\n this.version = dep.version;\n this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;\n }\n}\nclass Dep {\n constructor(computed) {\n this.computed = computed;\n this.version = 0;\n /**\n * Link between this dep and the current active effect\n */\n this.activeLink = void 0;\n /**\n * Doubly linked list representing the subscribing effects (tail)\n */\n this.subs = void 0;\n /**\n * For object property deps cleanup\n */\n this.map = void 0;\n this.key = void 0;\n /**\n * Subscriber counter\n */\n this.sc = 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.subsHead = void 0;\n }\n }\n track(debugInfo) {\n if (!activeSub || !shouldTrack || activeSub === this.computed) {\n return;\n }\n let link = this.activeLink;\n if (link === void 0 || link.sub !== activeSub) {\n link = this.activeLink = new Link(activeSub, this);\n if (!activeSub.deps) {\n activeSub.deps = activeSub.depsTail = link;\n } else {\n link.prevDep = activeSub.depsTail;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n }\n addSub(link);\n } else if (link.version === -1) {\n link.version = this.version;\n if (link.nextDep) {\n const next = link.nextDep;\n next.prevDep = link.prevDep;\n if (link.prevDep) {\n link.prevDep.nextDep = next;\n }\n link.prevDep = activeSub.depsTail;\n link.nextDep = void 0;\n activeSub.depsTail.nextDep = link;\n activeSub.depsTail = link;\n if (activeSub.deps === link) {\n activeSub.deps = next;\n }\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") && activeSub.onTrack) {\n activeSub.onTrack(\n extend(\n {\n effect: activeSub\n },\n debugInfo\n )\n );\n }\n return link;\n }\n trigger(debugInfo) {\n this.version++;\n globalVersion++;\n this.notify(debugInfo);\n }\n notify(debugInfo) {\n startBatch();\n try {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n for (let head = this.subsHead; head; head = head.nextSub) {\n if (head.sub.onTrigger && !(head.sub.flags & 8)) {\n head.sub.onTrigger(\n extend(\n {\n effect: head.sub\n },\n debugInfo\n )\n );\n }\n }\n }\n for (let link = this.subs; link; link = link.prevSub) {\n if (link.sub.notify()) {\n ;\n link.sub.dep.notify();\n }\n }\n } finally {\n endBatch();\n }\n }\n}\nfunction addSub(link) {\n link.dep.sc++;\n if (link.sub.flags & 4) {\n const computed = link.dep.computed;\n if (computed && !link.dep.subs) {\n computed.flags |= 4 | 16;\n for (let l = computed.deps; l; l = l.nextDep) {\n addSub(l);\n }\n }\n const currentTail = link.dep.subs;\n if (currentTail !== link) {\n link.prevSub = currentTail;\n if (currentTail) currentTail.nextSub = link;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && link.dep.subsHead === void 0) {\n link.dep.subsHead = link;\n }\n link.dep.subs = link;\n }\n}\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Object iterate\" : \"\"\n);\nconst MAP_KEY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Map keys iterate\" : \"\"\n);\nconst ARRAY_ITERATE_KEY = Symbol(\n !!(process.env.NODE_ENV !== \"production\") ? \"Array iterate\" : \"\"\n);\nfunction track(target, type, key) {\n if (shouldTrack && activeSub) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = new Dep());\n dep.map = depsMap;\n dep.key = key;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.track({\n target,\n type,\n key\n });\n } else {\n dep.track();\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n globalVersion++;\n return;\n }\n const run = (dep) => {\n if (dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n dep.trigger({\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n });\n } else {\n dep.trigger();\n }\n }\n };\n startBatch();\n if (type === \"clear\") {\n depsMap.forEach(run);\n } else {\n const targetIsArray = isArray(target);\n const isArrayIndex = targetIsArray && isIntegerKey(key);\n if (targetIsArray && key === \"length\") {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || key2 === ARRAY_ITERATE_KEY || !isSymbol(key2) && key2 >= newLength) {\n run(dep);\n }\n });\n } else {\n if (key !== void 0 || depsMap.has(void 0)) {\n run(depsMap.get(key));\n }\n if (isArrayIndex) {\n run(depsMap.get(ARRAY_ITERATE_KEY));\n }\n switch (type) {\n case \"add\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isArrayIndex) {\n run(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!targetIsArray) {\n run(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n run(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n run(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n }\n endBatch();\n}\nfunction getDepFromReactive(object, key) {\n const depMap = targetMap.get(object);\n return depMap && depMap.get(key);\n}\n\nfunction reactiveReadArray(array) {\n const raw = toRaw(array);\n if (raw === array) return raw;\n track(raw, \"iterate\", ARRAY_ITERATE_KEY);\n return isShallow(array) ? raw : raw.map(toReactive);\n}\nfunction shallowReadArray(arr) {\n track(arr = toRaw(arr), \"iterate\", ARRAY_ITERATE_KEY);\n return arr;\n}\nconst arrayInstrumentations = {\n __proto__: null,\n [Symbol.iterator]() {\n return iterator(this, Symbol.iterator, toReactive);\n },\n concat(...args) {\n return reactiveReadArray(this).concat(\n ...args.map((x) => isArray(x) ? reactiveReadArray(x) : x)\n );\n },\n entries() {\n return iterator(this, \"entries\", (value) => {\n value[1] = toReactive(value[1]);\n return value;\n });\n },\n every(fn, thisArg) {\n return apply(this, \"every\", fn, thisArg, void 0, arguments);\n },\n filter(fn, thisArg) {\n return apply(this, \"filter\", fn, thisArg, (v) => v.map(toReactive), arguments);\n },\n find(fn, thisArg) {\n return apply(this, \"find\", fn, thisArg, toReactive, arguments);\n },\n findIndex(fn, thisArg) {\n return apply(this, \"findIndex\", fn, thisArg, void 0, arguments);\n },\n findLast(fn, thisArg) {\n return apply(this, \"findLast\", fn, thisArg, toReactive, arguments);\n },\n findLastIndex(fn, thisArg) {\n return apply(this, \"findLastIndex\", fn, thisArg, void 0, arguments);\n },\n // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement\n forEach(fn, thisArg) {\n return apply(this, \"forEach\", fn, thisArg, void 0, arguments);\n },\n includes(...args) {\n return searchProxy(this, \"includes\", args);\n },\n indexOf(...args) {\n return searchProxy(this, \"indexOf\", args);\n },\n join(separator) {\n return reactiveReadArray(this).join(separator);\n },\n // keys() iterator only reads `length`, no optimisation required\n lastIndexOf(...args) {\n return searchProxy(this, \"lastIndexOf\", args);\n },\n map(fn, thisArg) {\n return apply(this, \"map\", fn, thisArg, void 0, arguments);\n },\n pop() {\n return noTracking(this, \"pop\");\n },\n push(...args) {\n return noTracking(this, \"push\", args);\n },\n reduce(fn, ...args) {\n return reduce(this, \"reduce\", fn, args);\n },\n reduceRight(fn, ...args) {\n return reduce(this, \"reduceRight\", fn, args);\n },\n shift() {\n return noTracking(this, \"shift\");\n },\n // slice could use ARRAY_ITERATE but also seems to beg for range tracking\n some(fn, thisArg) {\n return apply(this, \"some\", fn, thisArg, void 0, arguments);\n },\n splice(...args) {\n return noTracking(this, \"splice\", args);\n },\n toReversed() {\n return reactiveReadArray(this).toReversed();\n },\n toSorted(comparer) {\n return reactiveReadArray(this).toSorted(comparer);\n },\n toSpliced(...args) {\n return reactiveReadArray(this).toSpliced(...args);\n },\n unshift(...args) {\n return noTracking(this, \"unshift\", args);\n },\n values() {\n return iterator(this, \"values\", toReactive);\n }\n};\nfunction iterator(self, method, wrapValue) {\n const arr = shallowReadArray(self);\n const iter = arr[method]();\n if (arr !== self && !isShallow(self)) {\n iter._next = iter.next;\n iter.next = () => {\n const result = iter._next();\n if (result.value) {\n result.value = wrapValue(result.value);\n }\n return result;\n };\n }\n return iter;\n}\nconst arrayProto = Array.prototype;\nfunction apply(self, method, fn, thisArg, wrappedRetFn, args) {\n const arr = shallowReadArray(self);\n const needsWrap = arr !== self && !isShallow(self);\n const methodFn = arr[method];\n if (methodFn !== arrayProto[method]) {\n const result2 = methodFn.apply(self, args);\n return needsWrap ? toReactive(result2) : result2;\n }\n let wrappedFn = fn;\n if (arr !== self) {\n if (needsWrap) {\n wrappedFn = function(item, index) {\n return fn.call(this, toReactive(item), index, self);\n };\n } else if (fn.length > 2) {\n wrappedFn = function(item, index) {\n return fn.call(this, item, index, self);\n };\n }\n }\n const result = methodFn.call(arr, wrappedFn, thisArg);\n return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;\n}\nfunction reduce(self, method, fn, args) {\n const arr = shallowReadArray(self);\n let wrappedFn = fn;\n if (arr !== self) {\n if (!isShallow(self)) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, toReactive(item), index, self);\n };\n } else if (fn.length > 3) {\n wrappedFn = function(acc, item, index) {\n return fn.call(this, acc, item, index, self);\n };\n }\n }\n return arr[method](wrappedFn, ...args);\n}\nfunction searchProxy(self, method, args) {\n const arr = toRaw(self);\n track(arr, \"iterate\", ARRAY_ITERATE_KEY);\n const res = arr[method](...args);\n if ((res === -1 || res === false) && isProxy(args[0])) {\n args[0] = toRaw(args[0]);\n return arr[method](...args);\n }\n return res;\n}\nfunction noTracking(self, method, args = []) {\n pauseTracking();\n startBatch();\n const res = toRaw(self)[method].apply(self, args);\n endBatch();\n resetTracking();\n return res;\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nfunction hasOwnProperty(key) {\n if (!isSymbol(key)) key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n if (key === \"__v_skip\") return target[\"__v_skip\"];\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the receiver is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n let fn;\n if (targetIsArray && (fn = arrayInstrumentations[key])) {\n return fn;\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(\n target,\n key,\n // if this is a proxy wrapping a ref, return methods using the raw ref\n // as receiver so that we don't have to call `toRaw` on the ref in all\n // its class methods\n isRef(target) ? target : receiver\n );\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(\n target,\n key,\n value,\n isRef(target) ? target : receiver\n );\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction createIterableMethod(method, isReadonly2, isShallow2) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;\n !isReadonly2 && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations(readonly, shallow) {\n const instrumentations = {\n get(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n },\n get size() {\n const target = this[\"__v_raw\"];\n !readonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n },\n has(key) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!readonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n },\n forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = shallow ? toShallow : readonly ? toReadonly : toReactive;\n !readonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n }\n };\n extend(\n instrumentations,\n readonly ? {\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\")\n } : {\n add(value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n },\n set(key, value) {\n if (!shallow && !isShallow(value) && !isReadonly(value)) {\n value = toRaw(value);\n }\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n },\n delete(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n },\n clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(\n target,\n \"clear\",\n void 0,\n void 0,\n oldTarget\n );\n }\n return result;\n }\n }\n );\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n instrumentations[method] = createIterableMethod(method, readonly, shallow);\n });\n return instrumentations;\n}\nfunction createInstrumentationGetter(isReadonly2, shallow) {\n const instrumentations = createInstrumentations(isReadonly2, shallow);\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `value cannot be made ${isReadonly2 ? \"readonly\" : \"reactive\"}: ${String(\n target\n )}`\n );\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (!hasOwn(value, \"__v_skip\") && Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction isRef(r) {\n return r ? r[\"__v_isRef\"] === true : false;\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, isShallow2) {\n this.dep = new Dep();\n this[\"__v_isRef\"] = true;\n this[\"__v_isShallow\"] = false;\n this._rawValue = isShallow2 ? value : toRaw(value);\n this._value = isShallow2 ? value : toReactive(value);\n this[\"__v_isShallow\"] = isShallow2;\n }\n get value() {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n });\n } else {\n this.dep.track();\n }\n return this._value;\n }\n set value(newValue) {\n const oldValue = this._rawValue;\n const useDirectValue = this[\"__v_isShallow\"] || isShallow(newValue) || isReadonly(newValue);\n newValue = useDirectValue ? newValue : toRaw(newValue);\n if (hasChanged(newValue, oldValue)) {\n this._rawValue = newValue;\n this._value = useDirectValue ? newValue : toReactive(newValue);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n this.dep.trigger({\n target: this,\n type: \"set\",\n key: \"value\",\n newValue,\n oldValue\n });\n } else {\n this.dep.trigger();\n }\n }\n }\n}\nfunction triggerRef(ref2) {\n if (ref2.dep) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n ref2.dep.trigger({\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: ref2._value\n });\n } else {\n ref2.dep.trigger();\n }\n }\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => key === \"__v_raw\" ? target : unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n const dep = this.dep = new Dep();\n const { get, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._value = this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this[\"__v_isRef\"] = true;\n this._value = void 0;\n }\n get value() {\n const val = this._object[this._key];\n return this._value = val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this[\"__v_isRef\"] = true;\n this[\"__v_isReadonly\"] = true;\n this._value = void 0;\n }\n get value() {\n return this._value = this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nclass ComputedRefImpl {\n constructor(fn, setter, isSSR) {\n this.fn = fn;\n this.setter = setter;\n /**\n * @internal\n */\n this._value = void 0;\n /**\n * @internal\n */\n this.dep = new Dep(this);\n /**\n * @internal\n */\n this.__v_isRef = true;\n // TODO isolatedDeclarations \"__v_isReadonly\"\n // A computed is also a subscriber that tracks other deps\n /**\n * @internal\n */\n this.deps = void 0;\n /**\n * @internal\n */\n this.depsTail = void 0;\n /**\n * @internal\n */\n this.flags = 16;\n /**\n * @internal\n */\n this.globalVersion = globalVersion - 1;\n /**\n * @internal\n */\n this.next = void 0;\n // for backwards compat\n this.effect = this;\n this[\"__v_isReadonly\"] = !setter;\n this.isSSR = isSSR;\n }\n /**\n * @internal\n */\n notify() {\n this.flags |= 16;\n if (!(this.flags & 8) && // avoid infinite self recursion\n activeSub !== this) {\n batch(this, true);\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\")) ;\n }\n get value() {\n const link = !!(process.env.NODE_ENV !== \"production\") ? this.dep.track({\n target: this,\n type: \"get\",\n key: \"value\"\n }) : this.dep.track();\n refreshComputed(this);\n if (link) {\n link.version = this.dep.version;\n }\n return this._value;\n }\n set value(newValue) {\n if (this.setter) {\n this.setter(newValue);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\"Write operation failed: computed value is readonly\");\n }\n }\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n if (isFunction(getterOrOptions)) {\n getter = getterOrOptions;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.onTrack = debugOptions.onTrack;\n cRef.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\",\n \"IS_REF\": \"__v_isRef\"\n};\n\nconst WatchErrorCodes = {\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\"\n};\nconst INITIAL_WATCHER_VALUE = {};\nconst cleanupMap = /* @__PURE__ */ new WeakMap();\nlet activeWatcher = void 0;\nfunction getCurrentWatcher() {\n return activeWatcher;\n}\nfunction onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {\n if (owner) {\n let cleanups = cleanupMap.get(owner);\n if (!cleanups) cleanupMap.set(owner, cleanups = []);\n cleanups.push(cleanupFn);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !failSilently) {\n warn(\n `onWatcherCleanup() was called when there was no active watcher to associate with.`\n );\n }\n}\nfunction watch(source, cb, options = EMPTY_OBJ) {\n const { immediate, deep, once, scheduler, augmentJob, call } = options;\n const warnInvalidSource = (s) => {\n (options.onWarn || warn)(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const reactiveGetter = (source2) => {\n if (deep) return source2;\n if (isShallow(source2) || deep === false || deep === 0)\n return traverse(source2, 1);\n return traverse(source2);\n };\n let effect;\n let getter;\n let cleanup;\n let boundCleanup;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return call ? call(s, 2) : s();\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = call ? () => call(source, 2) : source;\n } else {\n getter = () => {\n if (cleanup) {\n pauseTracking();\n try {\n cleanup();\n } finally {\n resetTracking();\n }\n }\n const currentEffect = activeWatcher;\n activeWatcher = effect;\n try {\n return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);\n } finally {\n activeWatcher = currentEffect;\n }\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n const depth = deep === true ? Infinity : deep;\n getter = () => traverse(baseGetter(), depth);\n }\n const scope = getCurrentScope();\n const watchHandle = () => {\n effect.stop();\n if (scope && scope.active) {\n remove(scope.effects, effect);\n }\n };\n if (once && cb) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n watchHandle();\n };\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = (immediateFirstRun) => {\n if (!(effect.flags & 1) || !effect.dirty && !immediateFirstRun) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {\n if (cleanup) {\n cleanup();\n }\n const currentWatcher = activeWatcher;\n activeWatcher = effect;\n try {\n const args = [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n boundCleanup\n ];\n call ? call(cb, 3, args) : (\n // @ts-expect-error\n cb(...args)\n );\n oldValue = newValue;\n } finally {\n activeWatcher = currentWatcher;\n }\n }\n } else {\n effect.run();\n }\n };\n if (augmentJob) {\n augmentJob(job);\n }\n effect = new ReactiveEffect(getter);\n effect.scheduler = scheduler ? () => scheduler(job, false) : job;\n boundCleanup = (fn) => onWatcherCleanup(fn, false, effect);\n cleanup = effect.onStop = () => {\n const cleanups = cleanupMap.get(effect);\n if (cleanups) {\n if (call) {\n call(cleanups, 4);\n } else {\n for (const cleanup2 of cleanups) cleanup2();\n }\n cleanupMap.delete(effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = options.onTrack;\n effect.onTrigger = options.onTrigger;\n }\n if (cb) {\n if (immediate) {\n job(true);\n } else {\n oldValue = effect.run();\n }\n } else if (scheduler) {\n scheduler(job.bind(null, true), true);\n } else {\n effect.run();\n }\n watchHandle.pause = effect.pause.bind(effect);\n watchHandle.resume = effect.resume.bind(effect);\n watchHandle.stop = watchHandle;\n return watchHandle;\n}\nfunction traverse(value, depth = Infinity, seen) {\n if (depth <= 0 || !isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n depth--;\n if (isRef(value)) {\n traverse(value.value, depth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, seen);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n if (Object.prototype.propertyIsEnumerable.call(value, key)) {\n traverse(value[key], depth, seen);\n }\n }\n }\n return value;\n}\n\nexport { ARRAY_ITERATE_KEY, EffectFlags, EffectScope, ITERATE_KEY, MAP_KEY_ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, WatchErrorCodes, computed, customRef, effect, effectScope, enableTracking, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onEffectCleanup, onScopeDispose, onWatcherCleanup, pauseTracking, proxyRefs, reactive, reactiveReadArray, readonly, ref, resetTracking, shallowReactive, shallowReadArray, shallowReadonly, shallowRef, stop, toRaw, toReactive, toReadonly, toRef, toRefs, toValue, track, traverse, trigger, triggerRef, unref, watch };\n","/**\n* @vue/runtime-core v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, traverse, shallowRef, readonly, isReactive, ref, isShallow, shallowReadArray, toReactive, shallowReadonly, track, reactive, shallowReactive, trigger, ReactiveEffect, watch as watch$1, customRef, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, getCurrentWatcher, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, onWatcherCleanup, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, EMPTY_OBJ, NOOP, getGlobalThis, extend, isBuiltInDirective, hasOwn, remove, def, isOn, isReservedProp, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue, getEscapedCssVarName, isObject, isRegExp, invokeArrayFns, toHandlerKey, capitalize, camelize, isSymbol, isGloballyAllowed, NO, hyphenate, EMPTY_ARR, toRawType, makeMap, hasChanged, looseToNumber, isModelListener, toNumber } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nlet isWarning = false;\nfunction warn$1(msg, ...args) {\n if (isWarning) return;\n isWarning = true;\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n // eslint-disable-next-line no-restricted-syntax\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n isWarning = false;\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\")) return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\",\n \"COMPONENT_UPDATE\": 15,\n \"15\": \"COMPONENT_UPDATE\",\n \"APP_UNMOUNT_CLEANUP\": 16,\n \"16\": \"APP_UNMOUNT_CLEANUP\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush\",\n [15]: \"component update\",\n [16]: \"app unmount cleanup function\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n if (errorHandler) {\n pauseTracking();\n callWithErrorHandling(errorHandler, null, 10, [\n err,\n exposedInstance,\n errorInfo\n ]);\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);\n}\nfunction logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else if (throwInProd) {\n throw err;\n } else {\n console.error(err);\n }\n}\n\nconst queue = [];\nlet flushIndex = -1;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!(job.flags & 1)) {\n const jobId = getId(job);\n const lastJob = queue[queue.length - 1];\n if (!lastJob || // fast path when the job id is larger than the tail\n !(job.flags & 2) && jobId >= getId(lastJob)) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(jobId), 0, job);\n }\n job.flags |= 1;\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!currentFlushPromise) {\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (activePostFlushCbs && cb.id === -1) {\n activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);\n } else if (!(cb.flags & 1)) {\n pendingPostFlushCbs.push(cb);\n cb.flags |= 1;\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = flushIndex + 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.flags & 2) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n if (cb.flags & 4) {\n cb.flags &= ~1;\n }\n cb();\n if (!(cb.flags & 4)) {\n cb.flags &= ~1;\n }\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n const cb = activePostFlushCbs[postFlushIndex];\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n if (cb.flags & 4) {\n cb.flags &= ~1;\n }\n if (!(cb.flags & 8)) cb();\n cb.flags &= ~1;\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;\nfunction flushJobs(seen) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && !(job.flags & 8)) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n if (job.flags & 4) {\n job.flags &= ~1;\n }\n callWithErrorHandling(\n job,\n job.i,\n job.i ? 15 : 14\n );\n if (!(job.flags & 4)) {\n job.flags &= ~1;\n }\n }\n }\n } finally {\n for (; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job) {\n job.flags &= ~1;\n }\n }\n flushIndex = -1;\n queue.length = 0;\n flushPostFlushCbs(seen);\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n const count = seen.get(fn) || 0;\n if (count > RECURSION_LIMIT) {\n const instance = fn.i;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n }\n seen.set(fn, count + 1);\n return false;\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Map();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record) return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (let i = 0; i < instances.length; i++) {\n const instance = instances[i];\n const oldComp = normalizeClassComponent(instance.type);\n let dirtyInstances = hmrDirtyComponents.get(oldComp);\n if (!dirtyInstances) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.set(oldComp, dirtyInstances = /* @__PURE__ */ new Set());\n }\n dirtyInstances.add(instance);\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n dirtyInstances.add(instance);\n instance.ceReload(newComp.styles);\n dirtyInstances.delete(instance);\n } else if (instance.parent) {\n queueJob(() => {\n isHmrUpdating = true;\n instance.parent.update();\n isHmrUpdating = false;\n dirtyInstances.delete(instance);\n });\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n if (instance.root.ce && instance !== instance.root) {\n instance.root.ce._removeChildStyle(oldComp);\n }\n }\n queuePostFlushCb(() => {\n hmrDirtyComponents.clear();\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n // eslint-disable-next-line no-restricted-syntax\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\"component:added\" /* COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:start\" /* PERFORMANCE_START */);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\"perf:end\" /* PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx) return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getComponentPublicInstance(currentRenderingInstance);\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst TeleportEndKey = Symbol(\"_vte\");\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === \"\");\nconst isTeleportDeferred = (props) => props && (props.defer || props.defer === \"\");\nconst isTargetSVG = (target) => typeof SVGElement !== \"undefined\" && target instanceof SVGElement;\nconst isTargetMathML = (target) => typeof MathMLElement === \"function\" && target instanceof MathMLElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Current renderer does not support string target for Teleports. (missing querySelector renderer option)`\n );\n return null;\n } else {\n const target = select(targetSelector);\n if (!!(process.env.NODE_ENV !== \"production\") && !target && !isTeleportDisabled(props)) {\n warn$1(\n `Failed to locate Teleport target with selector \"${targetSelector}\". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`\n );\n }\n return target;\n }\n } else {\n if (!!(process.env.NODE_ENV !== \"production\") && !targetSelector && !isTeleportDisabled(props)) {\n warn$1(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n name: \"Teleport\",\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {\n const {\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n o: { insert, querySelector, createText, createComment }\n } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n if (!!(process.env.NODE_ENV !== \"production\") && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n const placeholder = n2.el = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport start\") : createText(\"\");\n const mainAnchor = n2.anchor = !!(process.env.NODE_ENV !== \"production\") ? createComment(\"teleport end\") : createText(\"\");\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const mount = (container2, anchor2) => {\n if (shapeFlag & 16) {\n if (parentComponent && parentComponent.isCE) {\n parentComponent.ce._teleportTarget = container2;\n }\n mountChildren(\n children,\n container2,\n anchor2,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized\n );\n }\n };\n const mountToTarget = () => {\n const target = n2.target = resolveTarget(n2.props, querySelector);\n const targetAnchor = prepareAnchor(target, n2, createText, insert);\n if (target) {\n if (namespace !== \"svg\" && isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace !== \"mathml\" && isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (!disabled) {\n mount(target, targetAnchor);\n updateCssVars(n2, false);\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && !disabled) {\n warn$1(\n \"Invalid Teleport target on mount:\",\n target,\n `(${typeof target})`\n );\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n updateCssVars(n2, true);\n }\n if (isTeleportDeferred(n2.props)) {\n queuePostRenderEffect(() => {\n mountToTarget();\n n2.el.__isMounted = true;\n }, parentSuspense);\n } else {\n mountToTarget();\n }\n } else {\n if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {\n queuePostRenderEffect(() => {\n TeleportImpl.process(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n internals\n );\n delete n1.el.__isMounted;\n }, parentSuspense);\n return;\n }\n n2.el = n1.el;\n n2.targetStart = n1.targetStart;\n const mainAnchor = n2.anchor = n1.anchor;\n const target = n2.target = n1.target;\n const targetAnchor = n2.targetAnchor = n1.targetAnchor;\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n if (namespace === \"svg\" || isTargetSVG(target)) {\n namespace = \"svg\";\n } else if (namespace === \"mathml\" || isTargetMathML(target)) {\n namespace = \"mathml\";\n }\n if (dynamicChildren) {\n patchBlockChildren(\n n1.dynamicChildren,\n dynamicChildren,\n currentContainer,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds\n );\n traverseStaticChildren(n1, n2, true);\n } else if (!optimized) {\n patchChildren(\n n1,\n n2,\n currentContainer,\n currentAnchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n false\n );\n }\n if (disabled) {\n if (!wasDisabled) {\n moveTeleport(\n n2,\n container,\n mainAnchor,\n internals,\n 1\n );\n } else {\n if (n2.props && n1.props && n2.props.to !== n1.props.to) {\n n2.props.to = n1.props.to;\n }\n }\n } else {\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = n2.target = resolveTarget(\n n2.props,\n querySelector\n );\n if (nextTarget) {\n moveTeleport(\n n2,\n nextTarget,\n null,\n internals,\n 0\n );\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n \"Invalid Teleport target on update:\",\n target,\n `(${typeof target})`\n );\n }\n } else if (wasDisabled) {\n moveTeleport(\n n2,\n target,\n targetAnchor,\n internals,\n 1\n );\n }\n }\n updateCssVars(n2, disabled);\n }\n },\n remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const {\n shapeFlag,\n children,\n anchor,\n targetStart,\n targetAnchor,\n target,\n props\n } = vnode;\n if (target) {\n hostRemove(targetStart);\n hostRemove(targetAnchor);\n }\n doRemove && hostRemove(anchor);\n if (shapeFlag & 16) {\n const shouldRemove = doRemove || !isTeleportDisabled(props);\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(\n child,\n parentComponent,\n parentSuspense,\n shouldRemove,\n !!child.dynamicChildren\n );\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {\n if (moveType === 0) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2;\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n if (!isReorder || isTeleportDisabled(props)) {\n if (shapeFlag & 16) {\n for (let i = 0; i < children.length; i++) {\n move(\n children[i],\n container,\n parentAnchor,\n 2\n );\n }\n }\n }\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {\n o: { nextSibling, parentNode, querySelector, insert, createText }\n}, hydrateChildren) {\n const target = vnode.target = resolveTarget(\n vnode.props,\n querySelector\n );\n if (target) {\n const disabled = isTeleportDisabled(vnode.props);\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16) {\n if (disabled) {\n vnode.anchor = hydrateChildren(\n nextSibling(node),\n vnode,\n parentNode(node),\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n vnode.targetStart = targetNode;\n vnode.targetAnchor = targetNode && nextSibling(targetNode);\n } else {\n vnode.anchor = nextSibling(node);\n let targetAnchor = targetNode;\n while (targetAnchor) {\n if (targetAnchor && targetAnchor.nodeType === 8) {\n if (targetAnchor.data === \"teleport start anchor\") {\n vnode.targetStart = targetAnchor;\n } else if (targetAnchor.data === \"teleport anchor\") {\n vnode.targetAnchor = targetAnchor;\n target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n targetAnchor = nextSibling(targetAnchor);\n }\n if (!vnode.targetAnchor) {\n prepareAnchor(target, vnode, createText, insert);\n }\n hydrateChildren(\n targetNode && nextSibling(targetNode),\n vnode,\n target,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n }\n updateCssVars(vnode, disabled);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode, isDisabled) {\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node, anchor;\n if (isDisabled) {\n node = vnode.el;\n anchor = vnode.anchor;\n } else {\n node = vnode.targetStart;\n anchor = vnode.targetAnchor;\n }\n while (node && node !== anchor) {\n if (node.nodeType === 1) node.setAttribute(\"data-v-owner\", ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\nfunction prepareAnchor(target, vnode, createText, insert) {\n const targetStart = vnode.targetStart = createText(\"\");\n const targetAnchor = vnode.targetAnchor = createText(\"\");\n targetStart[TeleportEndKey] = targetAnchor;\n if (target) {\n insert(targetStart, target);\n insert(targetAnchor, target);\n }\n return targetAnchor;\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst recursiveGetSubtree = (instance) => {\n const subTree = instance.subTree;\n return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n const child = findNonCommentChild(children);\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getInnerChild$1(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n let enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance,\n // #11061, ensure enterHooks is fresh after clone\n (hooks) => enterHooks = hooks\n );\n if (innerChild.type !== Comment) {\n setTransitionHooks(innerChild, enterHooks);\n }\n let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {\n let leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\" && innerChild.type !== Comment) {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (!(instance.job.flags & 8)) {\n instance.update();\n }\n delete leavingHooks.afterLeave;\n oldInnerChild = void 0;\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n enterHooks.delayedLeave = () => {\n delayedLeave();\n delete enterHooks.delayedLeave;\n oldInnerChild = void 0;\n };\n };\n } else {\n oldInnerChild = void 0;\n }\n } else if (oldInnerChild) {\n oldInnerChild = void 0;\n }\n return child;\n };\n }\n};\nfunction findNonCommentChild(children) {\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\")) break;\n }\n }\n }\n return child;\n}\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance, postClone) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1)) done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called) return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n const hooks2 = resolveTransitionHooks(\n vnode2,\n props,\n state,\n instance,\n postClone\n );\n if (postClone) postClone(hooks2);\n return hooks2;\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getInnerChild$1(vnode) {\n if (!isKeepAlive(vnode)) {\n if (isTeleport(vnode.type) && vnode.children) {\n return findNonCommentChild(vnode.children);\n }\n return vnode;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && vnode.component) {\n return vnode.component.subTree;\n }\n const { shapeFlag, children } = vnode;\n if (children) {\n if (shapeFlag & 16) {\n return children[0];\n }\n if (shapeFlag & 32 && isFunction(children.default)) {\n return children.default();\n }\n }\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n vnode.transition = hooks;\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128) keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8236: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nfunction useId() {\n const i = getCurrentInstance();\n if (i) {\n return (i.appContext.config.idPrefix || \"v\") + \"-\" + i.ids[0] + i.ids[1]++;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useId() is called when there is no active component instance to be associated with.`\n );\n }\n return \"\";\n}\nfunction markAsyncBoundary(instance) {\n instance.ids = [instance.ids[0] + instance.ids[2]++ + \"-\", 0, 0];\n}\n\nconst knownTemplateRefs = /* @__PURE__ */ new WeakSet();\nfunction useTemplateRef(key) {\n const i = getCurrentInstance();\n const r = shallowRef(null);\n if (i) {\n const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;\n let desc;\n if (!!(process.env.NODE_ENV !== \"production\") && (desc = Object.getOwnPropertyDescriptor(refs, key)) && !desc.configurable) {\n warn$1(`useTemplateRef('${key}') already exists.`);\n } else {\n Object.defineProperty(refs, key, {\n enumerable: true,\n get: () => r.value,\n set: (val) => r.value = val\n });\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `useTemplateRef() is called when there is no active component instance to be associated with.`\n );\n }\n const ret = !!(process.env.NODE_ENV !== \"production\") ? readonly(r) : r;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n knownTemplateRefs.add(ret);\n }\n return ret;\n}\n\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach(\n (r, i) => setRef(\n r,\n oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef),\n parentSuspense,\n vnode,\n isUnmount\n )\n );\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {\n setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);\n }\n return;\n }\n const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if (!!(process.env.NODE_ENV !== \"production\") && !owner) {\n warn$1(\n `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.`\n );\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;\n const setupState = owner.setupState;\n const rawSetupState = toRaw(setupState);\n const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (hasOwn(rawSetupState, key) && !isRef(rawSetupState[key])) {\n warn$1(\n `Template ref \"${key}\" used on a non-ref value. It will not work in the production build.`\n );\n }\n if (knownTemplateRefs.has(rawSetupState[key])) {\n return false;\n }\n }\n return hasOwn(rawSetupState, key);\n };\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (canSetSetupRef(oldRef)) {\n setupState[oldRef] = null;\n }\n } else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12, [value, refs]);\n } else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString ? canSetSetupRef(ref) ? setupState[ref] : refs[ref] : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n } else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (canSetSetupRef(ref)) {\n setupState[ref] = refs[ref];\n }\n } else {\n ref.value = [refValue];\n if (rawRef.k) refs[rawRef.k] = ref.value;\n }\n } else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n } else if (_isString) {\n refs[ref] = value;\n if (canSetSetupRef(ref)) {\n setupState[ref] = value;\n }\n } else if (_isRef) {\n ref.value = value;\n if (rawRef.k) refs[rawRef.k] = value;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n } else {\n doSet();\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\"Invalid template ref type:\", ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasLoggedMismatchError = false;\nconst logMismatchError = () => {\n if (hasLoggedMismatchError) {\n return;\n }\n console.error(\"Hydration completed but contains mismatches.\");\n hasLoggedMismatchError = true;\n};\nconst isSVGContainer = (container) => container.namespaceURI.includes(\"svg\") && container.tagName !== \"foreignObject\";\nconst isMathMLContainer = (container) => container.namespaceURI.includes(\"MathML\");\nconst getContainerType = (container) => {\n if (container.nodeType !== 1) return void 0;\n if (isSVGContainer(container)) return \"svg\";\n if (isMathMLContainer(container)) return \"mathml\";\n return void 0;\n};\nconst isComment = (node) => node.nodeType === 8;\nfunction createHydrationFunctions(rendererInternals) {\n const {\n mt: mountComponent,\n p: patch,\n o: {\n patchProp,\n createText,\n nextSibling,\n parentNode,\n remove,\n insert,\n createComment\n }\n } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Attempting to hydrate existing markup but container is empty. Performing full mount instead.`\n );\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const isFragmentStart = isComment(node) && node.data === \"[\";\n const onMismatch = () => handleMismatch(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n isFragmentStart\n );\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n def(node, \"__vnode\", vnode, true);\n def(node, \"__vueParentComponent\", parentComponent, true);\n }\n if (patchFlag === -2) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3) {\n if (vnode.children === \"\") {\n insert(vnode.el = createText(\"\"), parentNode(node), node);\n nextNode = node;\n } else {\n nextNode = onMismatch();\n }\n } else {\n if (node.data !== vnode.children) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text mismatch in`,\n node.parentNode,\n `\n - rendered on server: ${JSON.stringify(\n node.data\n )}\n - expected on client: ${JSON.stringify(vnode.children)}`\n );\n logMismatchError();\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (isTemplateNode(node)) {\n nextNode = nextSibling(node);\n replaceNode(\n vnode.el = node.content.firstChild,\n node,\n parentComponent\n );\n } else if (domType !== 8 || isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 || domType === 3) {\n nextNode = node;\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n } else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateFragment(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n break;\n default:\n if (shapeFlag & 1) {\n if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) {\n nextNode = onMismatch();\n } else {\n nextNode = hydrateElement(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n }\n } else if (shapeFlag & 6) {\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n if (isFragmentStart) {\n nextNode = locateClosingAnchor(node);\n } else if (isComment(node) && node.data === \"teleport start\") {\n nextNode = locateClosingAnchor(node, node.data, \"teleport end\");\n } else {\n nextNode = nextSibling(node);\n }\n mountComponent(\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n optimized\n );\n if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;\n } else {\n subTree = node.nodeType === 3 ? createTextVNode(\"\") : createVNode(\"div\");\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n } else if (shapeFlag & 64) {\n if (domType !== 8) {\n nextNode = onMismatch();\n } else {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateChildren\n );\n }\n } else if (shapeFlag & 128) {\n nextNode = vnode.type.hydrate(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n getContainerType(parentNode(node)),\n slotScopeIds,\n optimized,\n rendererInternals,\n hydrateNode\n );\n } else if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) {\n warn$1(\"Invalid HostVNode type:\", type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode;\n const forcePatch = type === \"input\" || type === \"option\";\n if (!!(process.env.NODE_ENV !== \"production\") || forcePatch || patchFlag !== -1) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"created\");\n }\n let needCallTransitionHooks = false;\n if (isTemplateNode(el)) {\n needCallTransitionHooks = needTransition(\n null,\n // no need check parentSuspense in hydration\n transition\n ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;\n const content = el.content.firstChild;\n if (needCallTransitionHooks) {\n transition.beforeEnter(content);\n }\n replaceNode(content, el, parentComponent);\n vnode.el = el = content;\n }\n if (shapeFlag & 16 && // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(\n el.firstChild,\n vnode,\n el,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n let hasWarned = false;\n while (next) {\n if (!isMismatchAllowed(el, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n el,\n `\nServer rendered element contains more child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n } else if (shapeFlag & 8) {\n let clientText = vnode.children;\n if (clientText[0] === \"\\n\" && (el.tagName === \"PRE\" || el.tagName === \"TEXTAREA\")) {\n clientText = clientText.slice(1);\n }\n if (el.textContent !== clientText) {\n if (!isMismatchAllowed(el, 0 /* TEXT */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration text content mismatch on`,\n el,\n `\n - rendered on server: ${el.textContent}\n - expected on client: ${vnode.children}`\n );\n logMismatchError();\n }\n el.textContent = vnode.children;\n }\n }\n if (props) {\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__ || forcePatch || !optimized || patchFlag & (16 | 32)) {\n const isCustomElement = el.tagName.includes(\"-\");\n for (const key in props) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && // #11189 skip if this node has directives that have created hooks\n // as it could have mutated the DOM in any possible way\n !(dirs && dirs.some((d) => d.dir.created)) && propHasMismatch(el, key, props[key], vnode, parentComponent)) {\n logMismatchError();\n }\n if (forcePatch && (key.endsWith(\"value\") || key === \"indeterminate\") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers\n key[0] === \".\" || isCustomElement) {\n patchProp(el, key, null, props[key], void 0, parentComponent);\n }\n }\n } else if (props.onClick) {\n patchProp(\n el,\n \"onClick\",\n null,\n props.onClick,\n void 0,\n parentComponent\n );\n } else if (patchFlag & 4 && isReactive(props.style)) {\n for (const key in props.style) props.style[key];\n }\n }\n let vnodeHooks;\n if (vnodeHooks = props && props.onVnodeBeforeMount) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, \"beforeMount\");\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, \"mounted\");\n }, parentSuspense);\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);\n const isText = vnode.type === Text;\n if (node) {\n if (isText && !optimized) {\n if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {\n insert(\n createText(\n node.data.slice(vnode.children.length)\n ),\n container,\n nextSibling(node)\n );\n node.data = vnode.children;\n }\n }\n node = hydrateNode(\n node,\n vnode,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n } else if (isText && !vnode.children) {\n insert(vnode.el = createText(\"\"), container);\n } else {\n if (!isMismatchAllowed(container, 1 /* CHILDREN */)) {\n if ((!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && !hasWarned) {\n warn$1(\n `Hydration children mismatch on`,\n container,\n `\nServer rendered element contains fewer child nodes than client vdom.`\n );\n hasWarned = true;\n }\n logMismatchError();\n }\n patch(\n null,\n vnode,\n container,\n null,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(\n nextSibling(node),\n vnode,\n container,\n parentComponent,\n parentSuspense,\n slotScopeIds,\n optimized\n );\n if (next && isComment(next) && next.data === \"]\") {\n return nextSibling(vnode.anchor = next);\n } else {\n logMismatchError();\n insert(vnode.anchor = createComment(`]`), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n if (!isMismatchAllowed(node.parentElement, 1 /* CHILDREN */)) {\n (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_HYDRATION_MISMATCH_DETAILS__) && warn$1(\n `Hydration node mismatch:\n- rendered on server:`,\n node,\n node.nodeType === 3 ? `(text)` : isComment(node) && node.data === \"[\" ? `(start of fragment)` : ``,\n `\n- expected on client:`,\n vnode.type\n );\n logMismatchError();\n }\n vnode.el = null;\n if (isFragment) {\n const end = locateClosingAnchor(node);\n while (true) {\n const next2 = nextSibling(node);\n if (next2 && next2 !== end) {\n remove(next2);\n } else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(\n null,\n vnode,\n container,\n next,\n parentComponent,\n parentSuspense,\n getContainerType(container),\n slotScopeIds\n );\n if (parentComponent) {\n parentComponent.vnode.el = vnode.el;\n updateHOCHostEl(parentComponent, vnode.el);\n }\n return next;\n };\n const locateClosingAnchor = (node, open = \"[\", close = \"]\") => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === open) match++;\n if (node.data === close) {\n if (match === 0) {\n return nextSibling(node);\n } else {\n match--;\n }\n }\n }\n }\n return node;\n };\n const replaceNode = (newNode, oldNode, parentComponent) => {\n const parentNode2 = oldNode.parentNode;\n if (parentNode2) {\n parentNode2.replaceChild(newNode, oldNode);\n }\n let parent = parentComponent;\n while (parent) {\n if (parent.vnode.el === oldNode) {\n parent.vnode.el = parent.subTree.el = newNode;\n }\n parent = parent.parent;\n }\n };\n const isTemplateNode = (node) => {\n return node.nodeType === 1 && node.tagName === \"TEMPLATE\";\n };\n return [hydrate, hydrateNode];\n}\nfunction propHasMismatch(el, key, clientValue, vnode, instance) {\n let mismatchType;\n let mismatchKey;\n let actual;\n let expected;\n if (key === \"class\") {\n actual = el.getAttribute(\"class\");\n expected = normalizeClass(clientValue);\n if (!isSetEqual(toClassSet(actual || \"\"), toClassSet(expected))) {\n mismatchType = 2 /* CLASS */;\n mismatchKey = `class`;\n }\n } else if (key === \"style\") {\n actual = el.getAttribute(\"style\") || \"\";\n expected = isString(clientValue) ? clientValue : stringifyStyle(normalizeStyle(clientValue));\n const actualMap = toStyleMap(actual);\n const expectedMap = toStyleMap(expected);\n if (vnode.dirs) {\n for (const { dir, value } of vnode.dirs) {\n if (dir.name === \"show\" && !value) {\n expectedMap.set(\"display\", \"none\");\n }\n }\n }\n if (instance) {\n resolveCssVars(instance, vnode, expectedMap);\n }\n if (!isMapEqual(actualMap, expectedMap)) {\n mismatchType = 3 /* STYLE */;\n mismatchKey = \"style\";\n }\n } else if (el instanceof SVGElement && isKnownSvgAttr(key) || el instanceof HTMLElement && (isBooleanAttr(key) || isKnownHtmlAttr(key))) {\n if (isBooleanAttr(key)) {\n actual = el.hasAttribute(key);\n expected = includeBooleanAttr(clientValue);\n } else if (clientValue == null) {\n actual = el.hasAttribute(key);\n expected = false;\n } else {\n if (el.hasAttribute(key)) {\n actual = el.getAttribute(key);\n } else if (key === \"value\" && el.tagName === \"TEXTAREA\") {\n actual = el.value;\n } else {\n actual = false;\n }\n expected = isRenderableAttrValue(clientValue) ? String(clientValue) : false;\n }\n if (actual !== expected) {\n mismatchType = 4 /* ATTRIBUTE */;\n mismatchKey = key;\n }\n }\n if (mismatchType != null && !isMismatchAllowed(el, mismatchType)) {\n const format = (v) => v === false ? `(not rendered)` : `${mismatchKey}=\"${v}\"`;\n const preSegment = `Hydration ${MismatchTypeString[mismatchType]} mismatch on`;\n const postSegment = `\n - rendered on server: ${format(actual)}\n - expected on client: ${format(expected)}\n Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.\n You should fix the source of the mismatch.`;\n {\n warn$1(preSegment, el, postSegment);\n }\n return true;\n }\n return false;\n}\nfunction toClassSet(str) {\n return new Set(str.trim().split(/\\s+/));\n}\nfunction isSetEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const s of a) {\n if (!b.has(s)) {\n return false;\n }\n }\n return true;\n}\nfunction toStyleMap(str) {\n const styleMap = /* @__PURE__ */ new Map();\n for (const item of str.split(\";\")) {\n let [key, value] = item.split(\":\");\n key = key.trim();\n value = value && value.trim();\n if (key && value) {\n styleMap.set(key, value);\n }\n }\n return styleMap;\n}\nfunction isMapEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value] of a) {\n if (value !== b.get(key)) {\n return false;\n }\n }\n return true;\n}\nfunction resolveCssVars(instance, vnode, expectedMap) {\n const root = instance.subTree;\n if (instance.getCssVars && (vnode === root || root && root.type === Fragment && root.children.includes(vnode))) {\n const cssVars = instance.getCssVars();\n for (const key in cssVars) {\n expectedMap.set(\n `--${getEscapedCssVarName(key, false)}`,\n String(cssVars[key])\n );\n }\n }\n if (vnode === root && instance.parent) {\n resolveCssVars(instance.parent, instance.vnode, expectedMap);\n }\n}\nconst allowMismatchAttr = \"data-allow-mismatch\";\nconst MismatchTypeString = {\n [0 /* TEXT */]: \"text\",\n [1 /* CHILDREN */]: \"children\",\n [2 /* CLASS */]: \"class\",\n [3 /* STYLE */]: \"style\",\n [4 /* ATTRIBUTE */]: \"attribute\"\n};\nfunction isMismatchAllowed(el, allowedType) {\n if (allowedType === 0 /* TEXT */ || allowedType === 1 /* CHILDREN */) {\n while (el && !el.hasAttribute(allowMismatchAttr)) {\n el = el.parentElement;\n }\n }\n const allowedAttr = el && el.getAttribute(allowMismatchAttr);\n if (allowedAttr == null) {\n return false;\n } else if (allowedAttr === \"\") {\n return true;\n } else {\n const list = allowedAttr.split(\",\");\n if (allowedType === 0 /* TEXT */ && list.includes(\"children\")) {\n return true;\n }\n return allowedAttr.split(\",\").includes(MismatchTypeString[allowedType]);\n }\n}\n\nconst requestIdleCallback = getGlobalThis().requestIdleCallback || ((cb) => setTimeout(cb, 1));\nconst cancelIdleCallback = getGlobalThis().cancelIdleCallback || ((id) => clearTimeout(id));\nconst hydrateOnIdle = (timeout = 1e4) => (hydrate) => {\n const id = requestIdleCallback(hydrate, { timeout });\n return () => cancelIdleCallback(id);\n};\nfunction elementIsVisibleInViewport(el) {\n const { top, left, bottom, right } = el.getBoundingClientRect();\n const { innerHeight, innerWidth } = window;\n return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);\n}\nconst hydrateOnVisible = (opts) => (hydrate, forEach) => {\n const ob = new IntersectionObserver((entries) => {\n for (const e of entries) {\n if (!e.isIntersecting) continue;\n ob.disconnect();\n hydrate();\n break;\n }\n }, opts);\n forEach((el) => {\n if (!(el instanceof Element)) return;\n if (elementIsVisibleInViewport(el)) {\n hydrate();\n ob.disconnect();\n return false;\n }\n ob.observe(el);\n });\n return () => ob.disconnect();\n};\nconst hydrateOnMediaQuery = (query) => (hydrate) => {\n if (query) {\n const mql = matchMedia(query);\n if (mql.matches) {\n hydrate();\n } else {\n mql.addEventListener(\"change\", hydrate, { once: true });\n return () => mql.removeEventListener(\"change\", hydrate);\n }\n }\n};\nconst hydrateOnInteraction = (interactions = []) => (hydrate, forEach) => {\n if (isString(interactions)) interactions = [interactions];\n let hasHydrated = false;\n const doHydrate = (e) => {\n if (!hasHydrated) {\n hasHydrated = true;\n teardown();\n hydrate();\n e.target.dispatchEvent(new e.constructor(e.type, e));\n }\n };\n const teardown = () => {\n forEach((el) => {\n for (const i of interactions) {\n el.removeEventListener(i, doHydrate);\n }\n });\n };\n forEach((el) => {\n for (const i of interactions) {\n el.addEventListener(i, doHydrate, { once: true });\n }\n });\n return teardown;\n};\nfunction forEachElement(node, cb) {\n if (isComment(node) && node.data === \"[\") {\n let depth = 1;\n let next = node.nextSibling;\n while (next) {\n if (next.nodeType === 1) {\n const result = cb(next);\n if (result === false) {\n break;\n }\n } else if (isComment(next)) {\n if (next.data === \"]\") {\n if (--depth === 0) break;\n } else if (next.data === \"[\") {\n depth++;\n }\n }\n next = next.nextSibling;\n }\n } else {\n cb(node);\n }\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n hydrate: hydrateStrategy,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n __asyncHydrate(el, instance, hydrate) {\n const doHydrate = hydrateStrategy ? () => {\n const teardown = hydrateStrategy(\n hydrate,\n (cb) => forEachElement(el, cb)\n );\n if (teardown) {\n (instance.bum || (instance.bum = [])).push(teardown);\n }\n } : hydrate;\n if (resolvedComp) {\n doHydrate();\n } else {\n load().then(() => !instance.isUnmounted && doHydrate());\n }\n },\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n markAsyncBoundary(instance);\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.update();\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n invalidateMount(instance2.m);\n invalidateMount(instance2.a);\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && !filter(name)) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (cached && (!current || !isSameVNodeType(cached, current))) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n if (isSuspense(instance.subTree.type)) {\n queuePostRenderEffect(() => {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }, instance.subTree.suspense);\n } else {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n if (vnode.type === Comment) {\n current = null;\n return vnode;\n }\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n vnode.shapeFlag &= ~256;\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n pattern.lastIndex = 0;\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => {\n if (!isInSSRComponentSetup || lifecycle === \"sp\") {\n injectHook(lifecycle, (...args) => hook(...args), target);\n }\n};\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\n \"bu\"\n);\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\n \"bum\"\n);\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\n \"sp\"\n);\nconst onRenderTriggered = createHook(\"rtg\");\nconst onRenderTracked = createHook(\"rtc\");\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n const sourceIsArray = isArray(source);\n if (sourceIsArray || isString(source)) {\n const sourceIsReactiveArray = sourceIsArray && isReactive(source);\n let needsWrap = false;\n if (sourceIsReactiveArray) {\n needsWrap = !isShallow(source);\n source = shallowReadArray(source);\n }\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(\n needsWrap ? toReactive(source[i]) : source[i],\n i,\n void 0,\n cached && cached[i]\n );\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res) res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {\n if (name !== \"default\") props.name = name;\n return openBlock(), createBlock(\n Fragment,\n null,\n [createVNode(\"slot\", props, fallback && fallback())],\n 64\n );\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const slotKey = props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key;\n const rendered = createBlock(\n Fragment,\n {\n key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content\n (!validSlotContent && fallback ? \"_fb\" : \"\")\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child)) return true;\n if (child.type === Comment) return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i) return null;\n if (isStatefulComponent(i)) return getComponentPublicInstance(i);\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $host: (i) => i.ce,\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n\n\n","\n\n\n \n \n\n\n\n\n","\n\n\n \n
\n
\n
\n \n \n \n Not authorized! \n Click here to start authorization and open the \"Devices\" page on your PC.
\n \n \n\n\n\n\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nimport { appUrl } from '@/services/ApiService'\nimport { AuthCall } from '@/services/EncryptService'\nimport axios from 'axios'\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue'\n\nexport const usePanelStore = defineStore('panel', () => {\n const current = ref({\n dir: false,\n name: false,\n description: false,\n aspectRatio: false,\n macros: false,\n thumb: false,\n html: false,\n style: false,\n })\n\n const list = ref([])\n\n const get = async (dir) => {\n const data = AuthCall({ dir: dir })\n\n const resp = await axios.post(appUrl() + '/panel/get', data)\n\n if (!resp.data && !current.value.html) return false\n\n current.value.name = resp.data.name\n current.value.description = resp.data.description\n current.value.aspectRatio = resp.data.aspectRatio\n current.value.macros = resp.data.macros\n current.value.thumb = resp.data.thumb\n current.value.html = resp.data.html\n current.value.style = resp.data.style\n\n return current.value\n }\n\n const getList = async (count = false) => {\n if (list.value.length > 0 && !count) return list.value\n else if (list.value.length > 0 && count) return list.value.length\n\n const data = AuthCall()\n\n const resp = await axios.post(appUrl() + '/panel/list', data)\n list.value = resp.data\n\n if (!resp.data && !count) return false\n else if (!resp.data && count) return 0\n\n if (!count) return list.value\n else return list.value.length\n }\n\n return {\n current,\n list,\n get,\n getList,\n }\n})\n","\n\n\n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nimport axios from 'axios'\nimport { appUrl, isLocal } from './ApiService'\nimport { AuthCall } from './EncryptService'\n\nexport const GetMacroList = async (count = false) => {\n const request = await axios.post(appUrl() + '/macro/list')\n \n if (!request.data) return 0\n\n if (!count) return sortMacroList(request.data)\n else return request.data.length\n}\n\nconst sortMacroList = (list) => {\n return [...list].sort((a, b) => a.name.localeCompare(b.name))\n}\n\nexport const RunMacro = async (macro) => {\n const data = isLocal() ? { macro: macro } : AuthCall({ macro: macro })\n const request = await axios.post(appUrl() + '/macro/play', data)\n return request.data\n}\n\nexport const CheckMacroListChange = (oldList, newList) => {\n return oldList !== JSON.stringify(newList)\n}\n","\n\n\n \n
\n
\n \n
\n
{{ server.remoteCount }} {{ server.remoteCount != 1 ? 'Devices' : 'Device' }} \n
\n No devices found.
\n Link a device \n \n
\n Unlink a device or add new devices.
\n View devices \n \n
\n
\n
\n \n
\n
{{ server.macroCount }} {{ server.macroCount != 1 ? 'Macros' : 'Macro' }} \n
\n No macros found.
\n Create macro \n \n
\n Edit and view your macros.
\n View macros \n \n
\n\n
\n
\n \n
\n
{{ server.panelCount }} {{ server.panelCount != 1 ? 'Panels' : 'Panel' }} \n
\n No panels found.
\n Learn how to create a panel here .
\n \n
\n Link macros to panels or view a panel.
\n View panels \n \n
\n
\n \n\n\n\n\n","\n\n\n \n
\n
\n \n
\n
{{ server.panelCount }} {{ server.panelCount != 1 ? 'Panels' : 'Panel' }} \n
\n No panels found.
\n Learn how to create a panel here .
\n \n
\n Start using a panel!
\n View panels \n \n
\n
\n
\n \n
\n
Server \n
\n \n Linked with: {{ server.ip }} \n
\n View server \n \n
\n \n Not linked \n
\n Link with server \n \n
\n
\n \n\n\n\n\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\nimport { createRouter, createWebHistory } from 'vue-router'\nimport DashboardView from '../views/DashboardView.vue'\nimport { checkAuth, isLocal } from '@/services/ApiService'\n\nconst router = createRouter({\n history: createWebHistory(import.meta.env.BASE_URL),\n routes: [\n {\n path: '/',\n name: 'dashboard',\n component: DashboardView,\n },\n {\n path: '/panels',\n name: 'panels',\n component: () => import('../views/PanelsView.vue'),\n meta: { requiresAuth: true },\n },\n {\n path: '/panel/edit/:dirname',\n name: 'panel-edit',\n component: () => import('../views/PanelsView.vue'),\n meta: { requiresAuth: true },\n },\n {\n path: '/panel/view/:dirname',\n name: 'panel-view',\n component: () => import('../views/PanelsView.vue'),\n meta: { requiresAuth: true },\n },\n {\n path: '/macros',\n name: 'macros',\n component: () => import('../views/MacrosView.vue'),\n meta: { localOnly: true },\n },\n {\n path: '/devices',\n name: 'devices',\n component: () => import('../views/DevicesView.vue'),\n },\n // {\n // path: '/settings',\n // name: 'settings',\n // component: () => import('../views/SettingsView.vue'),\n // },\n // {\n // path: '/about',\n // name: 'about',\n // // route level code-splitting\n // // this generates a separate chunk (About.[hash].js) for this route\n // // which is lazy-loaded when the route is visited.\n // component: () => import('../views/AboutView.vue'),\n // },\n ],\n})\n\nrouter.beforeEach(async (to, from, next) => {\n const auth = await checkAuth()\n\n if (to.meta.requiresAuth && !auth && !isLocal()) next('/devices')\n else if (to.meta.localOnly && !isLocal()) next('/')\n else next()\n})\n\nexport default router\n","/*\nMacrame is a program that enables the user to create keyboard macros and button panels. \nThe macros are saved as simple JSON files and can be linked to the button panels. The panels can \nbe created with HTML and CSS.\n\nCopyright (C) 2025 Jesse Malotaux\n\nThis program is free software: you can redistribute it and/or modify \nit under the terms of the GNU General Public License as published by \nthe Free Software Foundation, either version 3 of the License, or \n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, \nbut WITHOUT ANY WARRANTY; without even the implied warranty of \nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License \nalong with this program. If not, see .\n*/\n\n// import './assets/jemx.scss'\nimport '@/assets/main.css'\nimport '@/assets/img/Macrame-Logo-gradient.svg'\n\nimport { createApp } from 'vue'\nimport { createPinia } from 'pinia'\n\nimport App from '@/App.vue'\nimport router from '@/router'\n\nconst app = createApp(App)\n\napp.use(createPinia())\napp.use(router)\n\napp.mount('#app')\n"],"file":"assets/index-oAtpp-VZ.js"}
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index f2f93e3..1caa951 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2,18 +2,16 @@
-
+
-
- Macrame
-
-
-
+ Vite + Vue
+
+
diff --git a/tmp/build-errors.log b/tmp/build-errors.log
new file mode 100644
index 0000000..05e5985
--- /dev/null
+++ b/tmp/build-errors.log
@@ -0,0 +1 @@
+exit status 1
\ No newline at end of file