From b022bca4490bdb2ba5dbc00b258708eb4ccee564 Mon Sep 17 00:00:00 2001 From: Cameron Redmore Date: Mon, 19 May 2025 11:40:56 +0100 Subject: [PATCH] Initial commit. --- .github/copilot-instructions.md | 29 + .gitignore | 4 + .vscode/tasks.json | 18 + assets/SampleAppx.150x150.png | Bin 0 -> 11110 bytes assets/SampleAppx.310x150.png | Bin 0 -> 11633 bytes assets/SampleAppx.44x44.png | Bin 0 -> 2263 bytes assets/SampleAppx.50x50.png | Bin 0 -> 2652 bytes assets/icon.ico | Bin 0 -> 184958 bytes assets/icon.png | Bin 0 -> 16697 bytes changeVersion.js | 48 + firstrun.html | 122 + forge.config.js | 38 + index.html | 17 + main.js | 334 ++ package-lock.json | 6500 +++++++++++++++++++++++++++++++ package.json | 35 + preload.js | 16 + src/settingsManager.js | 67 + src/squirrelEvents.js | 54 + src/windowManager.js | 123 + 20 files changed, 7405 insertions(+) create mode 100644 .github/copilot-instructions.md create mode 100644 .gitignore create mode 100644 .vscode/tasks.json create mode 100644 assets/SampleAppx.150x150.png create mode 100644 assets/SampleAppx.310x150.png create mode 100644 assets/SampleAppx.44x44.png create mode 100644 assets/SampleAppx.50x50.png create mode 100644 assets/icon.ico create mode 100644 assets/icon.png create mode 100644 changeVersion.js create mode 100644 firstrun.html create mode 100644 forge.config.js create mode 100644 index.html create mode 100644 main.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 preload.js create mode 100644 src/settingsManager.js create mode 100644 src/squirrelEvents.js create mode 100644 src/windowManager.js diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..edba031 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,29 @@ +## Project Overview + +This is an Electron application designed to open Google Gemini + +Key features: +- Opens google.com on launch. +- Registers a global keyboard shortcut (WIN+SHIFT+G) to show/focus the application window. +- Minimizes to the system tray when the window is "closed" instead of quitting. Clicking the tray icon restores the window. + +## Tech Stack + +- Electron +- Node.js +- HTML/CSS/JavaScript (though primarily interacting with an external site) + +## Development Environment + +- Package Manager: pnpm +- Main process logic: `main.js` +- Preload script: `preload.js` (if needed for future enhancements) +- Initial HTML: `index.html` (serves as a placeholder before loading Google) + +## Important Notes for Copilot + +- When modifying `main.js`, ensure that the tray functionality and global shortcut registration are preserved. +- The application's primary purpose is to display gemini.google.com +- Use `pnpm` for any package management commands. +- The main window should be created with `nodeIntegration: true` and `contextIsolation: false` if direct DOM manipulation of loaded pages is ever required (though not for the current google.com use case). For security, these are typically `false` and `true` respectively. Given we are loading an external site, we should stick to more secure defaults unless a specific feature requires otherwise. +- Ensure that paths in `main.js` (e.g., for `index.html` or icons) are correctly resolved using `path.join(__dirname, ...)`. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb04b5a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +settings.jsonG +out/ +cert/ \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..f6fd0ff --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,18 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "args": [ + "start" + ], + "command": "pnpm", + "group": "build", + "isBackground": true, + "label": "Run Electron App", + "problemMatcher": [ + "$electron" + ], + "type": "shell" + } + ] +} \ No newline at end of file diff --git a/assets/SampleAppx.150x150.png b/assets/SampleAppx.150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c69ae750e215e5e046eff89392c74f0587faa4 GIT binary patch literal 11110 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 YYWHnRBUFp_A6QgbUPG>0#ytFg0FCPGsQ>@~ literal 0 HcmV?d00001 diff --git a/assets/SampleAppx.310x150.png b/assets/SampleAppx.310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..183ab1c7b5546f7c8901265ab0125a0ebd5eee77 GIT binary patch literal 11633 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 literal 0 HcmV?d00001 diff --git a/assets/SampleAppx.50x50.png b/assets/SampleAppx.50x50.png new file mode 100644 index 0000000000000000000000000000000000000000..a93ea46cf4b5a167ac49d8a7971021a1097c302a GIT binary patch literal 2652 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 AbpQYW literal 0 HcmV?d00001 diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb2d323e1d76767d19a566d0a84b19a595bb0ef GIT binary patch literal 16697 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 { + if (err) { + console.error('Error reading package.json:', err); + return; + } + + let packageJson; + try { + packageJson = JSON.parse(data); + } catch (parseError) { + console.error('Error parsing package.json:', parseError); + return; + } + + // Update the version + packageJson.version = newVersion; + + // Write the updated package.json back to file + fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf8', (writeErr) => { + if (writeErr) { + console.error('Error writing package.json:', writeErr); + return; + } + console.log(`Version updated to ${newVersion}`); + }); + } + ); +} + +//Semver based on current date and time +const currentDate = new Date(); +const year = currentDate.getFullYear(); +const month = String(currentDate.getMonth() + 1).padStart(2, '0'); +const day = String(currentDate.getDate()).padStart(2, '0'); +const hours = String(currentDate.getHours()).padStart(2, '0'); +const minutes = String(currentDate.getMinutes()).padStart(2, '0'); +const seconds = String(currentDate.getSeconds()).padStart(2, '0'); + +const newVersion = `1.${year}${month}${day}.${hours}${minutes}${seconds}`; + +changeVersion(newVersion); \ No newline at end of file diff --git a/firstrun.html b/firstrun.html new file mode 100644 index 0000000..17aa60f --- /dev/null +++ b/firstrun.html @@ -0,0 +1,122 @@ + + + + + + Gemini Native + + + +

+ +

Welcome to Gemini Native!

+

Gemini Native has successfully installed and is now running in the system tray.

+

You can quickly access Gemini using these keyboard shortcuts:

+ +

+ Press Super + Shift + G to open and focus the Gemini window. +

+ +

+ Press Super + Ctrl + G to open the app and paste a screenshot of your current screen directly into Gemini. +

+ + + + +
+ + + + \ No newline at end of file diff --git a/forge.config.js b/forge.config.js new file mode 100644 index 0000000..7e8c344 --- /dev/null +++ b/forge.config.js @@ -0,0 +1,38 @@ +const { FusesPlugin } = require('@electron-forge/plugin-fuses'); +const { FuseV1Options, FuseVersion } = require('@electron/fuses'); + +module.exports = { + packagerConfig: { + asar: true, + icon: './assets/icon' + }, + rebuildConfig: {}, + makers: [ + { + name: '@electron-forge/maker-squirrel', + config: { + name: 'GeminiNative', + authors: 'Cameron Redmore', + description: 'A native Gemini client for Windows.', + setupIcon: './assets/icon.ico' + } + } + ], + plugins: [ + { + name: '@electron-forge/plugin-auto-unpack-natives', + config: {}, + }, + // Fuses are used to enable/disable various Electron functionality + // at package time, before code signing the application + new FusesPlugin({ + version: FuseVersion.V1, + [FuseV1Options.RunAsNode]: false, + [FuseV1Options.EnableCookieEncryption]: true, + [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, + [FuseV1Options.EnableNodeCliInspectArguments]: false, + [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, + [FuseV1Options.OnlyLoadAppFromAsar]: true, + }), + ], +}; diff --git a/index.html b/index.html new file mode 100644 index 0000000..cf9e364 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + Gemini Opener + + +

Loading Gemini...

+ +

+ + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..a063ab1 --- /dev/null +++ b/main.js @@ -0,0 +1,334 @@ +if (require('electron-squirrel-startup')) return; + +const { app, BrowserWindow, globalShortcut, Tray, Menu, nativeImage, screen, clipboard, desktopCapturer } = require('electron'); +const path = require('path'); +const settingsManager = require('./src/settingsManager'); +const { handleSquirrelEvent } = require('./src/squirrelEvents'); +const { createWindow, getMainWindow, toggleWindowVisibility, positionWindowAtBottomCenter, createFirstRunWindow } = require('./src/windowManager'); +const fs = require('fs'); // Ensure fs is required + +// Handle Squirrel events for Windows installers +if (handleSquirrelEvent()) { + // Squirrel event handled (e.g., app installed, updated, or uninstalled), quit the app + return; +} + +let tray = null; +let isQuitting = false; // Flag to differentiate between closing the window and quitting the app + +async function captureAndPaste() { + const mainWindow = getMainWindow(); + try { + const cursorPoint = screen.getCursorScreenPoint(); + const display = screen.getDisplayNearestPoint(cursorPoint); + + const sources = await desktopCapturer.getSources({ types: ['screen'], thumbnailSize: display.size }); + const primaryDisplaySource = sources.find(source => source.display_id === display.id.toString()); + + if (primaryDisplaySource) { + const screenshot = primaryDisplaySource.thumbnail; + clipboard.writeImage(screenshot); + } else { + // TODO: Handle case where primary display source is not found + } + } catch (error) { + // TODO: Handle screenshot error + } + + toggleWindowVisibility(); // Show the window after capturing + + if (mainWindow && mainWindow.isVisible()) { + // Optional: Reload the page before pasting if the setting is enabled + if (settingsManager.getSetting('reloadOnPasteEnabled')) { + await mainWindow.webContents.reload(); + await mainWindow.webContents.executeJavaScript('document.readyState === "complete"'); + await new Promise(resolve => setTimeout(resolve, 250)); + } else { + await mainWindow.webContents.executeJavaScript('document.readyState === "complete"'); + await new Promise(resolve => setTimeout(resolve, 100)); + } + } + + if (mainWindow) { + // Simulate a paste action (Ctrl+V or Cmd+V) + mainWindow.webContents.sendInputEvent({ + type: 'keyDown', + keyCode: 'v', + modifiers: process.platform === 'darwin' ? ['meta'] : ['control'] + }); + mainWindow.webContents.sendInputEvent({ + type: 'keyUp', + keyCode: 'v', + modifiers: process.platform === 'darwin' ? ['meta'] : ['control'] + }); + } +} + +function createAppWindow() { + const mainWindow = createWindow( + (event) => { // on-close handler + if (!isQuitting) { + event.preventDefault(); // Prevent the window from actually closing + getMainWindow().hide(); // Hide the window instead + if (!tray) { // Create tray icon if it doesn't exist + createTray(); + } + } + }, + () => { // on-blur handler + const mw = getMainWindow(); + if (mw && mw.isVisible() && !isQuitting && settingsManager.getSetting('autoHideEnabled')) { + mw.hide(); + if (!tray) { + createTray(); + } + } + } + ); + + // Listen for 'before-input-event' to handle Escape key + if (mainWindow && mainWindow.webContents) { + mainWindow.webContents.on('before-input-event', (event, input) => { + if (input.key === 'Escape' && input.type === 'keyDown' && mainWindow.isFocused()) { + mainWindow.hide(); + event.preventDefault(); // Prevent default Escape behavior (like closing modals) + } + }); + } +} + +function createTray() { + let iconPath; + try { + iconPath = path.join(__dirname, 'assets', 'icon.png'); + const image = nativeImage.createFromPath(iconPath); + // Fallback to generic or minimal icon if the custom icon fails to load + if (image.isEmpty() && process.platform === 'win32') { + const genericIcon = nativeImage.createFromNamedImage('application-icon', [32, 32]); + tray = new Tray(genericIcon); + } else if (image.isEmpty()) { + const minimalIcon = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAE0lEQVR42mNkIAAYRxWAAQAG9AAFdG1U2AAAAABJRU5ErkJggg=='); + tray = new Tray(minimalIcon); + } + else { + tray = new Tray(image); + } + } catch (e) { + const fallbackImage = nativeImage.createFromDataURL('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAE0lEQVR42mNkIAAYRxWAAQAG9AAFdG1U2AAAAABJRU5ErkJggg=='); + tray = new Tray(fallbackImage); + } + + // Read package.json to get the version + let buildTime = 'N/A'; + try { + const packageJsonPath = path.join(app.getAppPath(), 'package.json'); + const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8'); + const packageData = JSON.parse(packageJsonContent); + const version = packageData.version; // e.g., "1.20250517.172559" + if (version) { + const parts = version.split('.'); + if (parts.length === 3) { + const datePart = parts[1]; // "YYYYMMDD" + const timePart = parts[2]; // "HHMMSS" + const year = datePart.substring(0, 4); + const month = datePart.substring(4, 6); + const day = datePart.substring(6, 8); + const hour = timePart.substring(0, 2); + const minute = timePart.substring(2, 4); + const second = timePart.substring(4, 6); + buildTime = `Build: ${year}-${month}-${day} ${hour}:${minute}:${second}`; + } + } + } catch (error) { + console.error('Failed to read or parse package.json for build time:', error); + // Keep buildTime as 'N/A' or some other default + } + + const contextMenu = Menu.buildFromTemplate([ + { label: "Toggles", enabled: false }, + { + label: 'Auto-Hide on Focus Loss', + type: 'checkbox', + checked: settingsManager.getSetting('autoHideEnabled'), + click: () => { + const newValue = !settingsManager.getSetting('autoHideEnabled'); + settingsManager.updateSetting('autoHideEnabled', newValue); + }, + }, + { + label: 'Reload on Screenshot', + type: 'checkbox', + checked: settingsManager.getSetting('reloadOnPasteEnabled'), + click: () => { + const newValue = !settingsManager.getSetting('reloadOnPasteEnabled'); + settingsManager.updateSetting('reloadOnPasteEnabled', newValue); + }, + }, + { + label: 'Always on Top', + type: 'checkbox', + checked: settingsManager.getSetting('isAlwaysOnTop'), + click: () => { + const newValue = !settingsManager.getSetting('isAlwaysOnTop'); + settingsManager.updateSetting('isAlwaysOnTop', newValue); + if (mainWindow) { + mainWindow.setAlwaysOnTop(newValue); + } + }, + }, + { + label: 'Title Bar Visible', + type: 'checkbox', + checked: settingsManager.getSetting('isFrameVisible'), + click: () => { + const newValue = !settingsManager.getSetting('isFrameVisible'); + settingsManager.updateSetting('isFrameVisible', newValue); + const mainWindow = getMainWindow(); + if (mainWindow) { + mainWindow.destroy(); + createAppWindow(); + } + }, + }, + { + label: 'Launch on Startup', + type: 'checkbox', + checked: settingsManager.getSetting('launchOnStartup'), + click: () => { + const newValue = !settingsManager.getSetting('launchOnStartup'); + settingsManager.updateSetting('launchOnStartup', newValue); + app.setLoginItemSettings({ + openAtLogin: newValue, + path: app.getPath('exe'), + }); + }, + }, + { type: 'separator' }, // Optional: adds a line before the build time and Quit + { label: buildTime, enabled: false }, + { + label: 'Quit', + click: () => { + isQuitting = true; + app.quit(); + }, + }, + ]); + + tray.setToolTip('Gemini'); + tray.setContextMenu(contextMenu); + + // Handle tray icon click: show/hide window or create if it doesn't exist + tray.on('click', () => { + const mainWindow = getMainWindow(); + if (mainWindow) { + mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show(); + } else { + createAppWindow(); + } + }); +} + +Menu.setApplicationMenu(null) + +app.on('ready', () => { + console.log(process.argv); + + let firstRunWindow = null; + + // Check for Squirrel events (like first run) + if (process.argv.includes('--squirrel-firstrun')) { + firstRunWindow = createFirstRunWindow(app); + } + + createAppWindow(); + + // Register a global shortcut (Super+Shift+G) to toggle window visibility. + // 'Super' is the Windows key or Command key on macOS. + const retShowHide = globalShortcut.register('Super+Shift+G', async () => { + console.log('Toggle window visibility triggered'); + toggleWindowVisibility(); + + if (firstRunWindow) { + firstRunWindow.close(); // Close the first run window if it exists + firstRunWindow = null; // Clear the reference + } + }); + + if (!retShowHide) { + // TODO: Handle failure to register shortcut + } else { + // Successfully registered + } + + // Register a global shortcut (Super+Control+G) to capture screen and paste. + const retCapturePaste = globalShortcut.register('Super+Control+G', () => { + console.log('Capture and paste triggered'); + captureAndPaste(); + + if (firstRunWindow) { + firstRunWindow.close(); // Close the first run window if it exists + firstRunWindow = null; // Clear the reference + } + }); + + if (!retCapturePaste) { + // TODO: Handle failure to register shortcut + } else { + // Successfully registered + } + + // Set login item settings based on user preference (launch on startup) + app.setLoginItemSettings({ + openAtLogin: settingsManager.getSetting('launchOnStartup'), + path: app.getPath('exe'), + }); + + createTray(); +}); + +app.on('will-quit', () => { + // Unregister all global shortcuts when the application is about to quit + globalShortcut.unregisterAll(); +}); + +app.on('window-all-closed', () => { + // Quit the app if isQuitting is true (user explicitly chose to quit) + // Otherwise, the app continues to run in the tray + if (isQuitting) { + app.quit(); + } +}); + +app.on('activate', () => { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + const mainWindow = getMainWindow(); + if (!mainWindow) { + createAppWindow(); + } else { + mainWindow.show(); + } +}); + +app.on('web-contents-created', (event, webContents) => { + webContents.on('will-navigate', (event) => { + // Only allow navigation to `google.com` or subdomains + const url = new URL(webContents.getURL()); + if (url.hostname !== 'google.com' && !url.hostname.endsWith('.google.com')) { + event.preventDefault(); + } + }); +}); + +const assetsDir = path.join(__dirname, 'assets'); +// Ensure assets directory exists +if (!fs.existsSync(assetsDir)) { + fs.mkdirSync(assetsDir); +} +const iconPath = path.join(assetsDir, 'icon.png'); +// Create a default icon if it doesn't exist +if (!fs.existsSync(iconPath)) { + const base64Icon = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='; // 1x1 transparent pixel + const buffer = Buffer.from(base64Icon, 'base64'); + fs.writeFileSync(iconPath, buffer); +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0a57b67 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6500 @@ +{ + "name": "gemini-native", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "gemini-native", + "version": "1.0.0", + "license": "GPL-3.0-only", + "dependencies": { + "electron-squirrel-startup": "^1.0.1" + }, + "devDependencies": { + "@electron-forge/cli": "^7.8.1", + "@electron-forge/maker-appx": "^7.8.1", + "@electron-forge/maker-deb": "7.8.1", + "@electron-forge/maker-rpm": "7.8.1", + "@electron-forge/maker-squirrel": "7.8.1", + "@electron-forge/maker-zip": "7.8.1", + "@electron-forge/plugin-auto-unpack-natives": "7.8.1", + "@electron-forge/plugin-fuses": "7.8.1", + "@electron/fuses": "^1.8.0", + "electron": "^36.2.1", + "nodemon": "^3.1.10" + } + }, + "node_modules/@electron-forge/cli": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/cli/-/cli-7.8.1.tgz", + "integrity": "sha512-QI3EShutfq9Y+2TWWrPjm4JZM3eSAKzoQvRZdVhAfVpUbyJ8K23VqJShg3kGKlPf9BXHAGvE+8LyH5s2yDr1qA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-cli?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core": "7.8.1", + "@electron-forge/core-utils": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "@electron/get": "^3.0.0", + "chalk": "^4.0.0", + "commander": "^11.1.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "listr2": "^7.0.2", + "log-symbols": "^4.0.0", + "semver": "^7.2.1" + }, + "bin": { + "electron-forge": "dist/electron-forge.js", + "electron-forge-vscode-nix": "script/vscode.sh", + "electron-forge-vscode-win": "script/vscode.cmd" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/core": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/core/-/core-7.8.1.tgz", + "integrity": "sha512-jkh0QPW5p0zmruu1E8+2XNufc4UMxy13WLJcm7hn9jbaXKLkMbKuEvhrN1tH/9uGp1mhr/t8sC4N67gP+gS87w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.electron-forge-core?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "7.8.1", + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/plugin-base": "7.8.1", + "@electron-forge/publisher-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "@electron-forge/template-base": "7.8.1", + "@electron-forge/template-vite": "7.8.1", + "@electron-forge/template-vite-typescript": "7.8.1", + "@electron-forge/template-webpack": "7.8.1", + "@electron-forge/template-webpack-typescript": "7.8.1", + "@electron-forge/tracer": "7.8.1", + "@electron/get": "^3.0.0", + "@electron/packager": "^18.3.5", + "@electron/rebuild": "^3.7.0", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "fast-glob": "^3.2.7", + "filenamify": "^4.1.0", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "global-dirs": "^3.0.0", + "got": "^11.8.5", + "interpret": "^3.1.1", + "jiti": "^2.4.2", + "listr2": "^7.0.2", + "lodash": "^4.17.20", + "log-symbols": "^4.0.0", + "node-fetch": "^2.6.7", + "rechoir": "^0.8.0", + "semver": "^7.2.1", + "source-map-support": "^0.5.13", + "sudo-prompt": "^9.1.1", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/core-utils": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/core-utils/-/core-utils-7.8.1.tgz", + "integrity": "sha512-mRoPLDNZgmjyOURE/K0D3Op53XGFmFRgfIvFC7c9S/BqsRpovVblrqI4XxPRdNmH9dvhd8On9gGz+XIYAKD3aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "@electron/rebuild": "^3.7.0", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.3.1", + "find-up": "^5.0.0", + "fs-extra": "^10.0.0", + "log-symbols": "^4.0.0", + "semver": "^7.2.1" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/maker-appx": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-appx/-/maker-appx-7.8.1.tgz", + "integrity": "sha512-4cuwvOI+5d3FpG9GSVL3CGxY137Fp8j9c0veIwNiNBxey6W9o0udwXeFTmJe3IPjOm5XKX5CUzxOs8LfCQo6Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "cross-spawn": "^7.0.3", + "fs-extra": "^10.0.0", + "parse-author": "^2.0.0" + }, + "engines": { + "node": ">= 16.4.0" + }, + "optionalDependencies": { + "electron-windows-store": "^2.1.0" + } + }, + "node_modules/@electron-forge/maker-base": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-base/-/maker-base-7.8.1.tgz", + "integrity": "sha512-GUZqschGuEBzSzE0bMeDip65IDds48DZXzldlRwQ+85SYVA6RMU2AwDDqx3YiYsvP2OuxKruuqIJZtOF5ps4FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "fs-extra": "^10.0.0", + "which": "^2.0.2" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/maker-deb": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-deb/-/maker-deb-7.8.1.tgz", + "integrity": "sha512-tjjeesQtCP5Xht1X7gl4+K9bwoETPmQfBkOVAY/FZIxPj40uQh/hOUtLX2tYENNGNVZ1ryDYRs8TuPi+I41Vfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + }, + "optionalDependencies": { + "electron-installer-debian": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-rpm": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-rpm/-/maker-rpm-7.8.1.tgz", + "integrity": "sha512-TF6wylft3BHkw9zdHcxmjEPBZYgTIc0jE31skFnMEQ/aExbNRiNaCZvsXy+7ptTWZxhxUKRc9KHhLFRMCmOK8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + }, + "optionalDependencies": { + "electron-installer-redhat": "^3.2.0" + } + }, + "node_modules/@electron-forge/maker-squirrel": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-squirrel/-/maker-squirrel-7.8.1.tgz", + "integrity": "sha512-qT1PMvT7ALF0ONOkxlA0oc0PiFuKCAKgoMPoxYo9gGOqFvnAb+TBcnLxflQ4ashE/ZkrHpykr4LcDJxqythQTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + }, + "optionalDependencies": { + "electron-winstaller": "^5.3.0" + } + }, + "node_modules/@electron-forge/maker-zip": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/maker-zip/-/maker-zip-7.8.1.tgz", + "integrity": "sha512-unIxEoV1lnK4BLVqCy3L2y897fTyg8nKY1WT4rrpv0MUKnQG4qmigDfST5zZNNHHaulEn/ElAic2GEiP7d6bhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/maker-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "cross-zip": "^4.0.0", + "fs-extra": "^10.0.0", + "got": "^11.8.5" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/plugin-auto-unpack-natives": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-auto-unpack-natives/-/plugin-auto-unpack-natives-7.8.1.tgz", + "integrity": "sha512-4URAgWX9qqqKe6Bfad0VmpFRrwINYMODfKGd2nFQrfHxmBtdpXnsWlLwVGE/wGssIQaTMI5bWQ6F2RNeXTgnhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/plugin-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/plugin-base": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-base/-/plugin-base-7.8.1.tgz", + "integrity": "sha512-iCZC2d7CbsZ9l6j5d+KPIiyQx0U1QBfWAbKnnQhWCSizjcrZ7A9V4sMFZeTO6+PVm48b/r9GFPm+slpgZtYQLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/plugin-fuses": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/plugin-fuses/-/plugin-fuses-7.8.1.tgz", + "integrity": "sha512-dYTwvbV1HcDOIQ0wTybpdtPq6YoBYXIWBTb7DJuvFu/c/thj1eoEdnbwr8mT9hEivjlu5p4ls46n16P5EtZ0oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/plugin-base": "7.8.1", + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + }, + "peerDependencies": { + "@electron/fuses": ">=1.0.0" + } + }, + "node_modules/@electron-forge/publisher-base": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/publisher-base/-/publisher-base-7.8.1.tgz", + "integrity": "sha512-z2C+C4pcFxyCXIFwXGDcxhU8qtVUPZa3sPL6tH5RuMxJi77768chLw2quDWk2/dfupcSELXcOMYCs7aLysCzeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/shared-types": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/shared-types/-/shared-types-7.8.1.tgz", + "integrity": "sha512-guLyGjIISKQQRWHX+ugmcjIOjn2q/BEzCo3ioJXFowxiFwmZw/oCZ2KlPig/t6dMqgUrHTH5W/F0WKu0EY4M+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/tracer": "7.8.1", + "@electron/packager": "^18.3.5", + "@electron/rebuild": "^3.7.0", + "listr2": "^7.0.2" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-base": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-base/-/template-base-7.8.1.tgz", + "integrity": "sha512-k8jEUr0zWFWb16ZGho+Es2OFeKkcbTgbC6mcH4eNyF/sumh/4XZMcwRtX1i7EiZAYiL9sVxyI6KVwGu254g+0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/core-utils": "7.8.1", + "@electron-forge/shared-types": "7.8.1", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "fs-extra": "^10.0.0", + "username": "^5.1.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-vite": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite/-/template-vite-7.8.1.tgz", + "integrity": "sha512-qzSlJaBYYqQAbBdLk4DqAE3HCNz4yXbpkb+VC74ddL4JGwPdPU57DjCthr6YetKJ2FsOVy9ipovA8HX5UbXpAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "@electron-forge/template-base": "7.8.1", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-vite-typescript": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-vite-typescript/-/template-vite-typescript-7.8.1.tgz", + "integrity": "sha512-CccQhwUjZcc6svzuOi3BtbDal591DzyX2J5GPa6mwVutDP8EMtqJL1VyOHdcWO/7XjI6GNAD0fiXySOJiUAECA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "@electron-forge/template-base": "7.8.1", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-webpack": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack/-/template-webpack-7.8.1.tgz", + "integrity": "sha512-DA77o9kTCHrq+W211pyNP49DyAt0d1mzMp2gisyNz7a+iKvlv2DsMAeRieLoCQ44akb/z8ZsL0YLteSjKLy4AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "@electron-forge/template-base": "7.8.1", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/template-webpack-typescript": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/template-webpack-typescript/-/template-webpack-typescript-7.8.1.tgz", + "integrity": "sha512-h922E+6zWwym1RT6WKD79BLTc4H8YxEMJ7wPWkBX59kw/exsTB/KFdiJq6r82ON5jSJ+Q8sDGqSmDWdyCfo+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-forge/shared-types": "7.8.1", + "@electron-forge/template-base": "7.8.1", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">= 16.4.0" + } + }, + "node_modules/@electron-forge/tracer": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@electron-forge/tracer/-/tracer-7.8.1.tgz", + "integrity": "sha512-r2i7aHVp2fylGQSPDw3aTcdNfVX9cpL1iL2MKHrCRNwgrfR+nryGYg434T745GGm1rNQIv5Egdkh5G9xf00oWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chrome-trace-event": "^1.0.3" + }, + "engines": { + "node": ">= 14.17.5" + } + }, + "node_modules/@electron/asar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron/fuses": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", + "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.1", + "fs-extra": "^9.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "electron-fuses": "dist/bin.js" + } + }, + "node_modules/@electron/fuses/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", + "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/get/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/get/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/get/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@electron/node-gyp": { + "version": "10.2.0-electron.1", + "resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", + "integrity": "sha512-4MSBTT8y07YUDqf69/vSh80Hh791epYqGtWHO3zSKhYFwQg+gx9wi1PqbqP6YqC4WMsNxZ5l9oDmnWdK5pfCKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^8.1.0", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.2.1", + "nopt": "^6.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/node-gyp/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/node-gyp/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/notarize": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", + "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/packager": { + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@electron/packager/-/packager-18.3.6.tgz", + "integrity": "sha512-1eXHB5t+SQKvUiDpWGpvr90ZSSbXj+isrh3YbjCTjKT4bE4SQrKSBfukEAaBvp67+GXHFtCHjQgN9qSTFIge+Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@electron/asar": "^3.2.13", + "@electron/get": "^3.0.0", + "@electron/notarize": "^2.1.0", + "@electron/osx-sign": "^1.0.5", + "@electron/universal": "^2.0.1", + "@electron/windows-sign": "^1.0.0", + "debug": "^4.0.1", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^11.1.0", + "galactus": "^1.0.0", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "resedit": "^2.0.0", + "resolve": "^1.1.6", + "semver": "^7.1.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "electron-packager": "bin/electron-packager.js" + }, + "engines": { + "node": ">= 16.13.0" + }, + "funding": { + "url": "https://github.com/electron/packager?sponsor=1" + } + }, + "node_modules/@electron/packager/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, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/rebuild": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.2.tgz", + "integrity": "sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2", + "@malept/cross-spawn-promise": "^2.0.0", + "chalk": "^4.0.0", + "debug": "^4.1.1", + "detect-libc": "^2.0.1", + "fs-extra": "^10.0.0", + "got": "^11.7.0", + "node-abi": "^3.45.0", + "node-api-version": "^0.2.0", + "ora": "^5.1.0", + "read-binary-file-arch": "^1.0.6", + "semver": "^7.3.5", + "tar": "^6.0.5", + "yargs": "^17.0.1" + }, + "bin": { + "electron-rebuild": "lib/cli.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/@electron/universal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", + "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.3.1", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/universal/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, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/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, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.15.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.18.tgz", + "integrity": "sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "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, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": 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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "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/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT" + }, + "node_modules/cliui/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-zip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.1.tgz", + "integrity": "sha512-n63i0lZ0rvQ6FXiGQ+/JFCKAUyPFhLQYJIqKaa+tSJtfKeULF/IDNDAbdnSIxgS4NTuw2b0+lj8LzfITuq+ZxQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.10" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron": { + "version": "36.2.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-36.2.1.tgz", + "integrity": "sha512-mm1Y+Ms46xcOTA69h8hpqfX392HfV4lga9aEkYkd/Syx1JBStvcACOIouCgGrnZpxNZPVS1jM8NTcMkNjuK6BQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^22.7.7", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/electron-installer-common": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.10.4.tgz", + "integrity": "sha512-8gMNPXfAqUE5CfXg8RL0vXpLE9HAaPkgLXVoHE3BMUzogMWenf4LmwQ27BdCUrEhkjrKl+igs2IHJibclR3z3Q==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@electron/asar": "^3.2.5", + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "glob": "^7.1.4", + "lodash": "^4.17.15", + "parse-author": "^2.0.0", + "semver": "^7.1.1", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "url": "https://github.com/electron-userland/electron-installer-common?sponsor=1" + }, + "optionalDependencies": { + "@types/fs-extra": "^9.0.1" + } + }, + "node_modules/electron-installer-common/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-common/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-3.2.0.tgz", + "integrity": "sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "get-folder-size": "^2.0.1", + "lodash": "^4.17.4", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-debian": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-debian/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-debian/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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-debian/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-installer-debian/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, + "license": "MIT", + "optional": true + }, + "node_modules/electron-installer-debian/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian/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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-debian/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, + "license": "MIT", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-debian/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, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-debian/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/electron-installer-debian/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-debian/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/electron-installer-redhat/-/electron-installer-redhat-3.4.0.tgz", + "integrity": "sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin", + "linux" + ], + "dependencies": { + "@malept/cross-spawn-promise": "^1.0.0", + "debug": "^4.1.1", + "electron-installer-common": "^0.10.2", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "word-wrap": "^1.2.3", + "yargs": "^16.0.2" + }, + "bin": { + "electron-installer-redhat": "src/cli.js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-installer-redhat/node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-installer-redhat/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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-redhat/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-installer-redhat/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, + "license": "MIT", + "optional": true + }, + "node_modules/electron-installer-redhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat/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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-redhat/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, + "license": "MIT", + "optional": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-redhat/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, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-installer-redhat/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/electron-installer-redhat/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-installer-redhat/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-squirrel-startup": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/electron-squirrel-startup/-/electron-squirrel-startup-1.0.1.tgz", + "integrity": "sha512-sTfFIHGku+7PsHLJ7v0dRcZNkALrV+YEozINTW8X1nM//e5O3L+rfYuvSW00lmGHnYmUjARZulD8F2V8ISI9RA==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^2.2.0" + } + }, + "node_modules/electron-squirrel-startup/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/electron-squirrel-startup/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/electron-windows-store": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/electron-windows-store/-/electron-windows-store-2.1.0.tgz", + "integrity": "sha512-+kBL20yeY2ahJxvZ6dDtE3gPqWLZI5Glnx7VBLA1cGXagS82PZTFueuvDyLGLcKtI48lhPhW9QmdZ9omh+yKTA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chalk": "^2.4.1", + "commander": "^2.19.0", + "debug": "^4.1.0", + "fs-extra": "^7.0.0", + "inquirer": "^6.2.0", + "lodash.defaults": "^4.2.0", + "lodash.merge": "^4.6.1", + "multiline": "^2.0.0", + "path-exists": "^3.0.0" + }, + "bin": { + "electron-windows-store": "bin/windowsstore.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-windows-store/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-windows-store/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-windows-store/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/electron-windows-store/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/electron-windows-store/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/electron-windows-store/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-windows-store/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-windows-store/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-windows-store/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-windows-store/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-winstaller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-winstaller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/electron/node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/electron/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/electron/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "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, + "license": "MIT", + "optional": 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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/flora-colossus": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-2.0.0.tgz", + "integrity": "sha512-dz4HxH6pOvbUzZpZ/yXhafjbR2I8cenK5xL0KtBFb7U2ADsR+OwXifnxZjij/pZWF775uSCMzWVd+jDik2H2IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "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, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/galactus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-1.0.0.tgz", + "integrity": "sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "flora-colossus": "^2.0.0", + "fs-extra": "^10.1.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/gar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", + "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "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, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-folder-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", + "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + }, + "bin": { + "get-folder-size": "bin/get-folder-size" + } + }, + "node_modules/get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/get-package-info/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/get-package-info/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "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, + "license": "ISC" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "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, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true, + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "optional": true + }, + "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, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/listr2": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz", + "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "optional": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^1.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "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, + "license": "MIT" + }, + "node_modules/multiline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/multiline/-/multiline-2.0.0.tgz", + "integrity": "sha512-+HpXaUcV8PIGNNmuhtlaVmw4NH0W30/A5WP+rq6pxZYBjDslX/sXkFgL3Mgk1cSGGIICjWu4gNStkJXL6ZM2DQ==", + "deprecated": "This was a fun hack, but now we have template literals, so use that instead.", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.75.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz", + "integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-api-version": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz", + "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "author-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pe-library": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-1.0.1.tgz", + "integrity": "sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-binary-file-arch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", + "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "bin": { + "read-binary-file-arch": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resedit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-2.0.3.tgz", + "integrity": "sha512-oTeemxwoMuxxTYxXUwjkrOPfngTQehlv0/HoYFNkB4uzsP1Un1A9nI8JQKGOFkxpqkC7qkMs0lUsGrvUlbLNUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^1.0.1" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/tiny-each-async": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", + "integrity": "sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmp-promise/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14.14" + } + }, + "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, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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, + "license": "MIT" + }, + "node_modules/yargs/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..fa3efba --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "name": "gemini-native", + "version": "1.20250517.174518", + "description": "A native Electron application for Google Gemini.", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "electron-forge start", + "watch": "nodemon --watch . --exec \"electron .\"", + "changeVersion": "node changeversion.js", + "make": "npm run changeVersion && npm run make-internal", + "make-internal": "electron-forge make", + "firstrun": "nodemon --watch . --exec \"electron .\" --squirrel-firstrun" + }, + "keywords": [], + "author": "Cameron Redmore", + "productName": "Gemini", + "license": "GPL-3.0-only", + "devDependencies": { + "@electron-forge/cli": "^7.8.1", + "@electron-forge/maker-appx": "^7.8.1", + "@electron-forge/maker-deb": "7.8.1", + "@electron-forge/maker-rpm": "7.8.1", + "@electron-forge/maker-squirrel": "7.8.1", + "@electron-forge/maker-zip": "7.8.1", + "@electron-forge/plugin-auto-unpack-natives": "7.8.1", + "@electron-forge/plugin-fuses": "7.8.1", + "@electron/fuses": "^1.8.0", + "electron": "^36.2.1", + "nodemon": "^3.1.10" + }, + "dependencies": { + "electron-squirrel-startup": "^1.0.1" + } +} \ No newline at end of file diff --git a/preload.js b/preload.js new file mode 100644 index 0000000..8d01408 --- /dev/null +++ b/preload.js @@ -0,0 +1,16 @@ +// Preload (Isolated World) +const { contextBridge, ipcRenderer } = require('electron'); + +// We are not exposing anything to the renderer process for this simple app. +// If we needed to, it would look something like this: +/* +contextBridge.exposeInMainWorld('electronAPI', { + // Example: expose a function to send a message to the main process + // sendMessage: (message) => ipcRenderer.send('some-channel', message), + + // Example: expose a function to receive messages from the main process + // onMessage: (callback) => ipcRenderer.on('other-channel', (_event, ...args) => callback(...args)), +}); +*/ + +console.log('Preload script loaded. Context isolation is on.'); diff --git a/src/settingsManager.js b/src/settingsManager.js new file mode 100644 index 0000000..f64e62d --- /dev/null +++ b/src/settingsManager.js @@ -0,0 +1,67 @@ +const fs = require('fs'); +const path = require('path'); + +const settingsFilePath = path.join(process.env.APPDATA || (process.platform === 'darwin' ? process.env.HOME + '/Library/Application Support' : process.env.HOME + "/.config"), 'GeminiNative', 'settings.json'); +const settingsDirPath = path.dirname(settingsFilePath); + +const defaultSettings = { + autoHideEnabled: true, + reloadOnPasteEnabled: true, + isAlwaysOnTop: true, + isFrameVisible: false, + launchOnStartup: false, // Added: Setting for launch on startup +}; + +let currentSettings = { ...defaultSettings }; + +function ensureSettingsDirExists() { + if (!fs.existsSync(settingsDirPath)) { + fs.mkdirSync(settingsDirPath, { recursive: true }); + } +} + +function loadSettings() { + ensureSettingsDirExists(); + try { + if (fs.existsSync(settingsFilePath)) { + const data = fs.readFileSync(settingsFilePath, 'utf-8'); + const loadedSettings = JSON.parse(data); + currentSettings = { ...defaultSettings, ...loadedSettings }; + } else { + // Save default settings if file doesn't exist + saveSettings(); + } + } catch (error) { + console.error('Error loading settings, using defaults:', error); + currentSettings = { ...defaultSettings }; + } + return currentSettings; +} + +function saveSettings() { + ensureSettingsDirExists(); + try { + const data = JSON.stringify(currentSettings, null, 2); + fs.writeFileSync(settingsFilePath, data, 'utf-8'); + } catch (error) { + console.error('Error saving settings:', error); + } +} + +// Initialize settings on load +loadSettings(); + +module.exports = { + getSetting: (key) => { + return currentSettings[key]; + }, + updateSetting: (key, value) => { + if (currentSettings[key] !== value) { + currentSettings[key] = value; + saveSettings(); + } + }, + getAllSettings: () => { + return { ...currentSettings }; + } +}; diff --git a/src/squirrelEvents.js b/src/squirrelEvents.js new file mode 100644 index 0000000..57f044d --- /dev/null +++ b/src/squirrelEvents.js @@ -0,0 +1,54 @@ +const { app } = require('electron'); +const ChildProcess = require('child_process'); +const path = require('path'); +const fs = require('fs'); + +function handleSquirrelEvent() { + if (process.argv.length === 1) { + return false; + } + + const appFolder = path.resolve(process.execPath, '..'); + const rootAtomFolder = path.resolve(appFolder, '..'); + const updateDotExe = path.resolve(path.join(rootAtomFolder, 'Update.exe')); + const exeName = path.basename(process.execPath); + + const spawn = function (command, args) { + let spawnedProcess; + try { + spawnedProcess = ChildProcess.spawn(command, args, { detached: true }); + } catch (error) { + // Log error or handle appropriately + } + return spawnedProcess; + }; + + const spawnUpdate = function (args) { + return spawn(updateDotExe, args); + }; + + const squirrelEvent = process.argv[1]; + switch (squirrelEvent) { + case '--squirrel-install': + case '--squirrel-updated': + spawnUpdate(['--createShortcut', exeName]); + const desktopShortcutPath = path.join(app.getPath('desktop'), `${exeName}.lnk`); + if (fs.existsSync(desktopShortcutPath)) { + fs.unlinkSync(desktopShortcutPath); + } + setTimeout(app.quit, 1000); + return true; + + case '--squirrel-uninstall': + spawnUpdate(['--removeShortcut', exeName]); + setTimeout(app.quit, 1000); + return true; + + case '--squirrel-obsolete': + app.quit(); + return true; + } + return false; // Ensure a boolean is always returned +} + +module.exports = { handleSquirrelEvent }; diff --git a/src/windowManager.js b/src/windowManager.js new file mode 100644 index 0000000..d6ad25f --- /dev/null +++ b/src/windowManager.js @@ -0,0 +1,123 @@ +const { BrowserWindow, screen } = require('electron'); +const path = require('path'); +const settingsManager = require('./settingsManager'); + +let mainWindow; +let firstRunWindow; + +function positionWindowAtBottomCenter(window) { + const cursorPoint = screen.getCursorScreenPoint(); + const display = screen.getDisplayNearestPoint(cursorPoint); + const { workArea } = display; + + const [windowWidth, windowHeight] = window.getSize(); + + const x = Math.round(workArea.x + (workArea.width - windowWidth) / 2); + const y = Math.round(workArea.y + workArea.height - windowHeight - 8); + + window.setPosition(x, y); +} + +function createWindow(onCloseCallback, onBlurCallback) { + const initialWidth = 800; + const initialHeight = 900; + + mainWindow = new BrowserWindow({ + width: initialWidth, + height: initialHeight, + frame: settingsManager.getSetting('isFrameVisible'), + resizable: false, + alwaysOnTop: settingsManager.getSetting('isAlwaysOnTop'), + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + }, + title: 'Gemini', + icon: path.join(__dirname, 'assets', 'icon.png'), + skipTaskbar: true, + show: false + }); + + positionWindowAtBottomCenter(mainWindow); + mainWindow.loadURL('https://gemini.google.com'); + mainWindow.setMenuBarVisibility(false); + + mainWindow.on('close', onCloseCallback); + mainWindow.on('closed', () => { + mainWindow = null; + }); + mainWindow.on('blur', onBlurCallback); + + return mainWindow; +} + +function createFirstRunWindow(appInstance) { + firstRunWindow = new BrowserWindow({ + width: 800, + height: 800, + frame: true, + resizable: false, + alwaysOnTop: true, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + sandbox: true, + }, + show: false, + skipTaskbar: false, + autoHideMenuBar: true, + frame: false, + icon: path.join(__dirname, '..', 'assets', 'icon.png'), // Adjusted path for assets + }); + + firstRunWindow.loadFile(path.join(__dirname, '..', 'firstrun.html')); // Adjusted path for firstrun.html + + firstRunWindow.once('ready-to-show', () => { + positionWindowAtBottomCenter(firstRunWindow); + firstRunWindow.show(); + }); + + firstRunWindow.on('closed', () => { + firstRunWindow = null; + }); + return firstRunWindow; +} + +function getMainWindow() { + return mainWindow; +} + +function toggleWindowVisibility() { + if (mainWindow) { + const cursorPoint = screen.getCursorScreenPoint(); + const cursorDisplay = screen.getDisplayNearestPoint(cursorPoint); + const windowBounds = mainWindow.getBounds(); + const windowDisplay = screen.getDisplayMatching(windowBounds); + + if (mainWindow.isVisible() && mainWindow.isFocused() && windowDisplay.id === cursorDisplay.id) { + console.log("Hiding main window"); + mainWindow.hide(); + } else { + console.log("Showing main window"); + if (mainWindow.isMinimized()) { + mainWindow.restore(); + } + mainWindow.show(); + mainWindow.focus(); + positionWindowAtBottomCenter(mainWindow); + } + } else { + // This case should ideally be handled by the caller, + // perhaps by calling createWindow if mainWindow is null. + // For now, let's log or decide on a consistent behavior. + console.log("Tried to toggle visibility but mainWindow is not defined."); + } +} + +module.exports = { + createWindow, + getMainWindow, + toggleWindowVisibility, + positionWindowAtBottomCenter, + createFirstRunWindow +};