diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 3dce414..0000000 --- a/.editorconfig +++ /dev/null @@ -1,9 +0,0 @@ -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index 96ee5c4..4677461 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,12 +1,10 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution') - module.exports = { - extends: ['@electron-toolkit', '@viarotel-org'], + extends: ['@viarotel-org'], rules: { 'no-unused-vars': 'off', 'eqeqeq': 'off', 'prefer-promise-reject-errors': 'off', 'antfu/top-level-function': 'off', + 'import/default': 'off', }, } diff --git a/.github/workflows/release-assets.yml b/.github/workflows/release-assets.yml index 058dc55..c104be6 100644 --- a/.github/workflows/release-assets.yml +++ b/.github/workflows/release-assets.yml @@ -48,16 +48,17 @@ jobs: uses: softprops/action-gh-release@v1 with: draft: true + prerelease: true files: | - dist/*.exe - dist/*.zip - dist/*.dmg - dist/*.AppImage - dist/*.snap - dist/*.deb - dist/*.rpm - dist/*.tar.gz - dist/*.yml - dist/*.blockmap + dist-release/*.exe + dist-release/*.zip + dist-release/*.dmg + dist-release/*.AppImage + dist-release/*.snap + dist-release/*.deb + dist-release/*.rpm + dist-release/*.tar.gz + dist-release/*.yml + dist-release/*.blockmap env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index e7c3088..cf5a008 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + node_modules dist -out -*.log* +dist-ssr +dist-electron +dist-release +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.npmrc b/.npmrc index c697635..6227981 100644 --- a/.npmrc +++ b/.npmrc @@ -1,4 +1,4 @@ registry=https://registry.npmmirror.com/ ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/ -shamefully-hoist=true +shamefully-hoist=true \ No newline at end of file diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 1383d67..0000000 --- a/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -out -dist -pnpm-lock.yaml -LICENSE.md -jsconfig.json -jsconfig.*.json diff --git a/.prettierrc.yaml b/.prettierrc.yaml deleted file mode 100644 index 35893b3..0000000 --- a/.prettierrc.yaml +++ /dev/null @@ -1,4 +0,0 @@ -singleQuote: true -semi: false -printWidth: 100 -trailingComma: none diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 940260d..c0a6e5a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["dbaeumer.vscode-eslint"] + "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] } diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 0b6b9a6..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Debug Main Process", - "type": "node", - "request": "launch", - "cwd": "${workspaceRoot}", - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite", - "windows": { - "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite.cmd" - }, - "runtimeArgs": ["--sourcemap"], - "env": { - "REMOTE_DEBUGGING_PORT": "9222" - } - }, - { - "name": "Debug Renderer Process", - "port": 9222, - "request": "attach", - "type": "chrome", - "webRoot": "${workspaceFolder}/src/renderer", - "timeout": 60000, - "presentation": { - "hidden": true - } - } - ], - "compounds": [ - { - "name": "Debug All", - "configurations": ["Debug Main Process", "Debug Renderer Process"], - "presentation": { - "order": 1 - } - } - ] -} diff --git a/README.md b/README.md index 998ad7d..272cbf2 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ 📱 使用图形界面的 Scrcpy 显示和控制您的 Android 设备,由 Electron 驱动 -📱 Use Scrcpy with a graphical interface to display and control your Android device, driven by Electron -
viarotel-escrcpy
@@ -15,7 +13,7 @@ - ⚡️ 性能:30~120 帧每秒,取决于设备 - 🌟 质量:1920×1080 或更高 - 🕒 低延迟:35~70 毫秒 -- 🚀 快速启动:显示第一张图片仅需约1秒钟 +- 🚀 快速启动:显示第一张图片仅需约 1 秒钟 - 🙅‍♂️ 非侵入性:不会在安卓设备上留下任何安装文件 - 🤩 用户收益:无需账户、无广告、无需互联网连接 - 🗽 自由:免费且开源软件 @@ -39,7 +37,7 @@ > 注意:如果首次无线连接失败,你可能需要无线配对请参阅 [常见问题](#常见问题) > -> 注意:需同时开启无线调试功能,并在无线调试页面中获取你的当前设备的无线地址(通常为你连接WIFI时分配的IP地址)及端口号(默认为 5555) +> 注意:需同时开启无线调试功能,并在无线调试页面中获取你的当前设备的无线地址(通常为你连接 WIFI 时分配的 IP 地址)及端口号(默认为 5555) 1. 同 USB 连接中的 1-2 步骤 2. 将获取到的设备 IP 地址及端口号填写到 Escrcpy 中,然后点击连接设备 @@ -54,29 +52,43 @@ > 持续完善中 目前支持 Scrcpy 中以下常用配置 -### 显示配置 +### 视频控制 - 分辨率 - 比特率 - 刷新率 -- 屏幕旋转 - 视频解码器 - 视频编码器 +- 屏幕旋转 +- 屏幕裁剪 +- 多显示器 +- 视频缓冲 +- 音频缓冲 +- 接收器(v4l2)缓冲 +- 禁用视频 ### 设备控制 -- 保持设备清醒 -- 连接设备后自动关闭屏幕 - -### 音频控制 - -- 镜像时禁用音频 +- 展示触摸点 +- 保持清醒 +- 控制时关闭屏幕 +- 控制结束关闭屏幕 +- 控制时停止充电 ### 窗口控制 - 无边框模式 - 全屏幕模式 +### 音视频录制 + +- 文件保存路径 +- 录制视频格式 + +### 音频控制 + +- 禁用音频 + ## 下一步做什么? > 优先级从高到低 @@ -85,10 +97,11 @@ 2. 内置的软件更新功能 ✅ 3. 录制和保存音视频 ✅ 4. 添加设备快捷交互控制栏 ✅ -5. 支持自定义 Adb 及 Scrcpy 依赖,并支持生成精简版本和完整版本以满足不同用户需求 -6. 添加 macOS 及 linux 操作系统的支持 🚧 -7. 支持语言国际化功能 🚧 -8. 添加对游戏的增强功能,如游戏键位映射 🚧 +5. 支持自定义 Adb 及 Scrcpy 依赖,并支持生成精简版本和完整版本以满足不同用户需求 🚧 +6. 支持自定义设备名称,以及用户配置的导出及导入 🚧 +7. 添加 macOS 及 linux 操作系统的支持 🚧 +8. 支持语言国际化功能 🚧 +9. 添加对游戏的增强功能,如游戏键位映射 🚧 ## 常见问题 @@ -102,7 +115,7 @@ 该问题是已知的, Scrcpy 似乎并未直接对中文输入进行测试和支持 需要在手机端安装第三方输入法 以下输入法经测试可以很好支持 - 搜狗输入法 -- QQ输入法 +- QQ 输入法 - 谷歌拼音输入法 - Gboard @@ -115,7 +128,7 @@ ### 无线连接提示: 目标计算机积极拒绝访问 -第一次无线连接可能需要配对 或 插入USB 以保证与电脑建立连接即授权成功后方可使用 +第一次无线连接可能需要配对 或 插入 USB 以保证与电脑建立连接即授权成功后方可使用 ### 通过数据线连接后点击无线模式没有反应 @@ -148,6 +161,8 @@ > 如果该项目帮到你的话,可以请我吃包辣条,可以使我更有动力完善该项目 +> 注意:非 BUG 或计划外的需求,有偿处理;至于金额,根据问题难易程度,你觉得帮助了多少,看着给吧(维护这些项目已经耗费了大量精力,还要免费花时间解答问题就说不过去了吧...所以白嫖的一律不通过。) +
viarotel-wepay viarotel-alipay diff --git a/dev-app-update.yml b/dev-publish.yml similarity index 100% rename from dev-app-update.yml rename to dev-publish.yml diff --git a/electron-builder.json b/electron-builder.json new file mode 100644 index 0000000..0ce07f4 --- /dev/null +++ b/electron-builder.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/master/packages/app-builder-lib/scheme.json", + "appId": "org.viarotel.escrcpy", + "asar": true, + "productName": "Escrcpy", + "directories": { + "output": "dist-release/${version}", + "buildResources": "electron/resources/build" + }, + "files": ["dist", "dist-electron"], + "extraResources": ["electron/resources/extra"], + "publish": { + "provider": "github", + "owner": "viarotel-org", + "repo": "escrcpy", + "updaterCacheDirName": "escrcpy-updater" + }, + "mac": { + "icon": "logo.icns", + "target": ["dmg"], + "artifactName": "${productName}-${version}-mac-installer.${ext}", + "entitlementsInherit": "electron/resources/build/entitlements.mac.plist", + "extendInfo": { + "NSCameraUsageDescription": "Application requests access to the device's camera.", + "NSMicrophoneUsageDescription": "Application requests access to the device's microphone.", + "NSDocumentsFolderUsageDescription": "Application requests access to the user's Documents folder.", + "NSDownloadsFolderUsageDescription": "Application requests access to the user's Downloads folder." + }, + "notarize": false + }, + "win": { + "icon": "logo.ico", + "target": [ + { + "target": "nsis", + "arch": ["x64"] + }, + { + "target": "zip" + }, + { + "target": "portable" + } + ] + }, + "nsis": { + "artifactName": "${productName}-${version}-win-setup.${ext}", + "oneClick": false, + "perMachine": false, + "allowToChangeInstallationDirectory": true, + "deleteAppDataOnUninstall": false + }, + "portable": { + "artifactName": "${productName}-${version}-win-portable.${ext}", + "requestExecutionLevel": "user" + }, + "linux": { + "icon": "logo.png", + "target": ["AppImage"], + "artifactName": "${productName}-${version}-linux.${ext}" + }, + "npmRebuild": false +} diff --git a/electron-builder.yml b/electron-builder.yml deleted file mode 100644 index 93829df..0000000 --- a/electron-builder.yml +++ /dev/null @@ -1,51 +0,0 @@ -appId: com.electron.app -productName: escrcpy -directories: - buildResources: build -files: - - '!**/.vscode/*' - - '!src/*' - - '!electron.vite.config.{js,ts,mjs,cjs}' - - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' - - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' -asarUnpack: - - resources/** -win: - executableName: escrcpy - target: - - nsis - - zip - - portable -nsis: - artifactName: ${productName}-${version}-setup.${ext} - shortcutName: ${productName} - uninstallDisplayName: ${productName} - createDesktopShortcut: always -portable: - artifactName: '${productName}-${version}-portable.${ext}' - requestExecutionLevel: user -mac: - entitlementsInherit: build/entitlements.mac.plist - extendInfo: - - NSCameraUsageDescription: Application requests access to the device's camera. - - NSMicrophoneUsageDescription: Application requests access to the device's microphone. - - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. - - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. - notarize: false -dmg: - artifactName: ${name}-${version}.${ext} -linux: - target: - - AppImage - - snap - - deb - maintainer: electronjs.org - category: Utility -appImage: - artifactName: ${name}-${version}.${ext} -npmRebuild: false -publish: - provider: github - owner: viarotel-org - repo: escrcpy - updaterCacheDirName: escrcpy-updater diff --git a/electron.vite.config.js b/electron.vite.config.js deleted file mode 100644 index f54c8ca..0000000 --- a/electron.vite.config.js +++ /dev/null @@ -1,37 +0,0 @@ -import { resolve } from 'node:path' -import { defineConfig, externalizeDepsPlugin } from 'electron-vite' -import vue from '@vitejs/plugin-vue' -import useEslint from 'vite-plugin-eslint' -import useUnoCSS from 'unocss/vite' -import postcssConfig from '@viarotel-org/postcss-config' - -export default defineConfig({ - main: { - resolve: { - alias: { - '@root': resolve('./'), - }, - }, - plugins: [externalizeDepsPlugin({ exclude: [] })], - }, - preload: { - resolve: { - alias: { - '@resources': resolve('resources'), - }, - }, - plugins: [externalizeDepsPlugin({ exclude: [] })], - }, - renderer: { - resolve: { - alias: { - '@root': resolve('./'), - '@renderer': resolve('src/renderer/src'), - }, - }, - plugins: [useEslint(), vue(), useUnoCSS()], - css: { - postcss: postcssConfig(), - }, - }, -}) diff --git a/src/main/ipcManage/handles/index.js b/electron/events/handles/index.js similarity index 100% rename from src/main/ipcManage/handles/index.js rename to electron/events/handles/index.js diff --git a/src/main/ipcManage/index.js b/electron/events/index.js similarity index 100% rename from src/main/ipcManage/index.js rename to electron/events/index.js diff --git a/src/main/ipcManage/updater/index.js b/electron/events/updater/index.js similarity index 86% rename from src/main/ipcManage/updater/index.js rename to electron/events/updater/index.js index 4589245..d64d72a 100644 --- a/src/main/ipcManage/updater/index.js +++ b/electron/events/updater/index.js @@ -1,23 +1,21 @@ -import path from 'node:path' import { app, ipcMain } from 'electron' import { is } from '@electron-toolkit/utils' import { autoUpdater } from 'electron-updater' +import devPublishPath from '@root/dev-publish.yml?path' export default (mainWindow) => { // dev-start, 这里是为了在本地做应用升级测试使用,正式环境请务必删除 - if (is.dev && process.env.ELECTRON_RENDERER_URL) { - const updateConfigPath = path.join(process.cwd(), './dev-app-update.yml') - // console.log('updateConfigPath', updateConfigPath) + // if (is.dev && process.env.ELECTRON_RENDERER_URL) { + if (is.dev && process.env.VITE_DEV_SERVER_URL) { + const updateConfigPath = devPublishPath autoUpdater.updateConfigPath = updateConfigPath + Object.defineProperty(app, 'isPackaged', { + get() { + return true + }, + }) } - Object.defineProperty(app, 'isPackaged', { - get() { - return true - }, - }) - // dev-end - // 触发检查更新(此方法用于被渲染线程调用,例如页面点击检查更新按钮来调用此方法) ipcMain.on('check-for-update', () => { console.log('ipcMain:check-for-update') diff --git a/src/preload/plugins/adbkit/index.js b/electron/exposes/adbkit/index.js similarity index 93% rename from src/preload/plugins/adbkit/index.js rename to electron/exposes/adbkit/index.js index 4272724..41780d7 100644 --- a/src/preload/plugins/adbkit/index.js +++ b/electron/exposes/adbkit/index.js @@ -4,7 +4,7 @@ import path from 'node:path' import fs from 'node:fs' import dayjs from 'dayjs' import { Adb } from '@devicefarmer/adbkit' -import adbPath from '@resources/core/adb.exe?asset&asarUnpack' +import adbPath from '@resources/extra/core/adb.exe?path' const exec = util.promisify(child_process.exec) @@ -18,7 +18,8 @@ window.addEventListener('beforeunload', () => { const shell = async command => exec(`${adbPath} ${command}`) const getDevices = async () => await client.listDevicesWithPaths() -const deviceShell = async (id, command) => await client.getDevice(id).shell(command) +const deviceShell = async (id, command) => + await client.getDevice(id).shell(command) const kill = async (...params) => await client.kill(...params) const connect = async (...params) => await client.connect(...params) const disconnect = async (...params) => await client.disconnect(...params) @@ -97,7 +98,7 @@ const watch = async (callback) => { export default () => { client = Adb.createClient({ bin: adbPath }) - console.log('client', client) + // console.log('client', client) return { shell, diff --git a/src/preload/plugins/electron/index.js b/electron/exposes/electron/index.js similarity index 100% rename from src/preload/plugins/electron/index.js rename to electron/exposes/electron/index.js diff --git a/src/preload/plugins/index.js b/electron/exposes/index.js similarity index 93% rename from src/preload/plugins/index.js rename to electron/exposes/index.js index 89f699a..98f24ba 100644 --- a/src/preload/plugins/index.js +++ b/electron/exposes/index.js @@ -4,9 +4,8 @@ import adbkit from './adbkit/index.js' import scrcpy from './scrcpy/index.js' export default { - install(expose) { + init(expose) { expose('nodePath', path) - expose('electron', electron()) expose('adbkit', adbkit()) expose('scrcpy', scrcpy()) diff --git a/src/preload/plugins/scrcpy/index.js b/electron/exposes/scrcpy/index.js similarity index 66% rename from src/preload/plugins/scrcpy/index.js rename to electron/exposes/scrcpy/index.js index a62d11d..40a253b 100644 --- a/src/preload/plugins/scrcpy/index.js +++ b/electron/exposes/scrcpy/index.js @@ -1,7 +1,7 @@ import util from 'node:util' import child_process from 'node:child_process' -import adbPath from '@resources/core/adb.exe?asset&asarUnpack' -import scrcpyPath from '@resources/core/scrcpy.exe?asset&asarUnpack' +import adbPath from '@resources/extra/core/adb.exe?path' +import scrcpyPath from '@resources/extra/core/scrcpy.exe?path' const exec = util.promisify(child_process.exec) diff --git a/src/preload/helpers/index.js b/electron/helpers/index.js similarity index 100% rename from src/preload/helpers/index.js rename to electron/helpers/index.js diff --git a/electron/loading/index.js b/electron/loading/index.js new file mode 100644 index 0000000..ab7154a --- /dev/null +++ b/electron/loading/index.js @@ -0,0 +1,175 @@ +// --------- Preload scripts loading --------- +function domReady(condition = ['complete', 'interactive']) { + return new Promise((resolve) => { + if (condition.includes(document.readyState)) { + resolve(true) + } + else { + document.addEventListener('readystatechange', () => { + if (condition.includes(document.readyState)) { + resolve(true) + } + }) + } + }) +} + +const safeDOM = { + append(parent, child) { + if (!Array.from(parent.children).find(e => e === child)) { + parent.appendChild(child) + } + }, + remove(parent, child) { + if (Array.from(parent.children).find(e => e === child)) { + parent.removeChild(child) + } + }, +} + +/** + * https://tobiasahlin.com/spinkit + * https://connoratherton.com/loaders + * https://projects.lukehaas.me/css-loaders + * https://matejkustec.github.io/SpinThatShit + */ +function useLoading() { + const className = 'electron-loading' + const loginStyles = ` + .${className}-core { + font-size: 30px; + text-indent: -9999em; + overflow: hidden; + width: 1em; + height: 1em; + border-radius: 50%; + margin: 72px auto; + position: relative; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: electron-loading-dots 1.7s infinite ease, electron-loading-spin 1.7s infinite ease; + animation: electron-loading-dots 1.7s infinite ease, electron-loading-spin 1.7s infinite ease; + } + + @-webkit-keyframes electron-loading-dots { + 0% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + 5%, + 95% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + 10%, + 59% { + box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; + } + 20% { + box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; + } + 38% { + box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; + } + 100% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + } + + @keyframes electron-loading-dots { + 0% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + 5%, + 95% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + 10%, + 59% { + box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em, -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em, -0.297em -0.775em 0 -0.477em; + } + 20% { + box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em, -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em, -0.749em -0.34em 0 -0.477em; + } + 38% { + box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em, -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em, -0.82em -0.09em 0 -0.477em; + } + 100% { + box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em, 0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em; + } + } + + @-webkit-keyframes electron-loading-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @keyframes electron-loading-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + .${className}-wrap { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + z-index: 3000; + background: white; + color: #028D71; + } + + .${className}-text { + margin-top: -45px; + } + ` + + const styleEl = document.createElement('style') + styleEl.id = `${className}-style` + styleEl.innerHTML = loginStyles + + const divEl = document.createElement('div') + divEl.className = `${className}-wrap` + divEl.innerHTML = ` +
+
初始化服务中...
+ ` + + return { + appendLoading() { + safeDOM.append(document.head, styleEl) + safeDOM.append(document.body, divEl) + }, + removeLoading() { + safeDOM.remove(document.head, styleEl) + safeDOM.remove(document.body, divEl) + }, + } +} + +// ---------------------------------------------------------------------- + +const { appendLoading, removeLoading } = useLoading() +domReady().then(appendLoading) + +window.onmessage = (ev) => { + ev.data.payload === 'removeLoading' && removeLoading() +} + +setTimeout(removeLoading, 4999) diff --git a/electron/main.js b/electron/main.js new file mode 100644 index 0000000..2a73012 --- /dev/null +++ b/electron/main.js @@ -0,0 +1,106 @@ +import path from 'node:path' +import { BrowserWindow, app, shell } from 'electron' +import { electronApp, optimizer } from '@electron-toolkit/utils' + +import logoPath from '@resources/build/logo.png?path' +import icoLogoPath from '@resources/build/logo.ico?path' +import icnsLogoPath from '@resources/build/logo.icns?path' + +import events from './events/index.js' + +// The built directory structure +// +// ├─┬─┬ dist +// │ │ └── index.html +// │ │ +// │ ├─┬ dist-electron +// │ │ ├── main.js +// │ │ └── preload.js +// │ + +process.env.DIST = path.join(__dirname, '../dist') + +let mainWindow +// 🚧 Use ['ENV_NAME'] avoid vite:define plugin - Vite@2.x +const VITE_DEV_SERVER_URL = process.env.VITE_DEV_SERVER_URL + +function createWindow() { + let icon = logoPath + + if (process.platform === 'win32') { + icon = icoLogoPath + } + else if (process.platform === 'darwin') { + icon = icnsLogoPath + } + + mainWindow = new BrowserWindow({ + show: false, + icon, + minWidth: 1000, + minHeight: 700, + autoHideMenuBar: true, + webPreferences: { + // nodeIntegration: true, + // contextIsolation: false, + preload: path.join(__dirname, './preload.js'), + sandbox: false, + }, + backgroundColor: 'white', + }) + + mainWindow.on('ready-to-show', () => { + mainWindow.show() + }) + + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url) + return { action: 'deny' } + }) + + // Test active push message to Renderer-process. + mainWindow.webContents.on('did-finish-load', () => { + mainWindow?.webContents.send( + 'main-process-message', + new Date().toLocaleString(), + ) + }) + + if (VITE_DEV_SERVER_URL) { + mainWindow.loadURL(VITE_DEV_SERVER_URL) + } + else { + // win.loadFile('dist/index.html') + mainWindow.loadFile(path.join(process.env.DIST, 'index.html')) + } + + events(mainWindow) +} + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + mainWindow = null + } +}) + +app.on('activate', () => { + // On OS X it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) { + createWindow() + } +}) + +app.whenReady().then(() => { + electronApp.setAppUserModelId('com.viarotel.escrcpy') + + app.on('browser-window-created', (_, window) => { + optimizer.watchWindowShortcuts(window) + }) + + createWindow() +}) diff --git a/electron/preload.js b/electron/preload.js new file mode 100644 index 0000000..6da0ed6 --- /dev/null +++ b/electron/preload.js @@ -0,0 +1,7 @@ +import exposes from './exposes/index.js' +import { exposeContext } from './helpers/index.js' +import './loading/index.js' + +process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = 'true' + +exposes.init(exposeContext) diff --git a/build/entitlements.mac.plist b/electron/resources/build/entitlements.mac.plist similarity index 100% rename from build/entitlements.mac.plist rename to electron/resources/build/entitlements.mac.plist diff --git a/build/icon.icns b/electron/resources/build/logo.icns similarity index 100% rename from build/icon.icns rename to electron/resources/build/logo.icns diff --git a/build/icon.ico b/electron/resources/build/logo.ico similarity index 100% rename from build/icon.ico rename to electron/resources/build/logo.ico diff --git a/build/icon.png b/electron/resources/build/logo.png similarity index 100% rename from build/icon.png rename to electron/resources/build/logo.png diff --git a/resources/core/AdbWinApi.dll b/electron/resources/extra/core/AdbWinApi.dll similarity index 100% rename from resources/core/AdbWinApi.dll rename to electron/resources/extra/core/AdbWinApi.dll diff --git a/resources/core/AdbWinUsbApi.dll b/electron/resources/extra/core/AdbWinUsbApi.dll similarity index 100% rename from resources/core/AdbWinUsbApi.dll rename to electron/resources/extra/core/AdbWinUsbApi.dll diff --git a/resources/core/SDL2.dll b/electron/resources/extra/core/SDL2.dll similarity index 100% rename from resources/core/SDL2.dll rename to electron/resources/extra/core/SDL2.dll diff --git a/resources/core/adb.exe b/electron/resources/extra/core/adb.exe similarity index 100% rename from resources/core/adb.exe rename to electron/resources/extra/core/adb.exe diff --git a/resources/core/avcodec-60.dll b/electron/resources/extra/core/avcodec-60.dll similarity index 100% rename from resources/core/avcodec-60.dll rename to electron/resources/extra/core/avcodec-60.dll diff --git a/resources/core/avformat-60.dll b/electron/resources/extra/core/avformat-60.dll similarity index 100% rename from resources/core/avformat-60.dll rename to electron/resources/extra/core/avformat-60.dll diff --git a/resources/core/avutil-58.dll b/electron/resources/extra/core/avutil-58.dll similarity index 100% rename from resources/core/avutil-58.dll rename to electron/resources/extra/core/avutil-58.dll diff --git a/resources/core/icon.png b/electron/resources/extra/core/icon.png similarity index 100% rename from resources/core/icon.png rename to electron/resources/extra/core/icon.png diff --git a/resources/core/msys-usb-1.0.dll b/electron/resources/extra/core/msys-usb-1.0.dll similarity index 100% rename from resources/core/msys-usb-1.0.dll rename to electron/resources/extra/core/msys-usb-1.0.dll diff --git a/resources/core/open_a_terminal_here.bat b/electron/resources/extra/core/open_a_terminal_here.bat similarity index 100% rename from resources/core/open_a_terminal_here.bat rename to electron/resources/extra/core/open_a_terminal_here.bat diff --git a/resources/core/scrcpy-console.bat b/electron/resources/extra/core/scrcpy-console.bat similarity index 100% rename from resources/core/scrcpy-console.bat rename to electron/resources/extra/core/scrcpy-console.bat diff --git a/resources/core/scrcpy-noconsole.vbs b/electron/resources/extra/core/scrcpy-noconsole.vbs similarity index 100% rename from resources/core/scrcpy-noconsole.vbs rename to electron/resources/extra/core/scrcpy-noconsole.vbs diff --git a/resources/core/scrcpy-server b/electron/resources/extra/core/scrcpy-server similarity index 100% rename from resources/core/scrcpy-server rename to electron/resources/extra/core/scrcpy-server diff --git a/resources/core/scrcpy.exe b/electron/resources/extra/core/scrcpy.exe similarity index 100% rename from resources/core/scrcpy.exe rename to electron/resources/extra/core/scrcpy.exe diff --git a/resources/core/swresample-4.dll b/electron/resources/extra/core/swresample-4.dll similarity index 100% rename from resources/core/swresample-4.dll rename to electron/resources/extra/core/swresample-4.dll diff --git a/index.html b/index.html new file mode 100644 index 0000000..59f8641 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Escrcpy + + +
+ + + \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json index c40130f..5e9c0a5 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,11 +1,12 @@ { - "exclude": ["node_modules", "dist", "out"], - "include": ["src/**/*"], "compilerOptions": { "baseUrl": ".", "paths": { - "@renderer/*": ["src/renderer/src/*"], - "@resources/*": ["resources/*"] + "@/*": ["src/*"], + "@root/*": ["*"], + "@resources/*": ["electron/resources/*"] } - } -} + }, + "exclude": ["node_modules", "dist", "dist-electron", "dist-release"], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.vue", "electron"] +} \ No newline at end of file diff --git a/package.json b/package.json index 1c36c2e..6ac74d8 100644 --- a/package.json +++ b/package.json @@ -1,52 +1,46 @@ { "name": "escrcpy", "version": "1.6.2", + "private": true, "description": "Scrcpy Powered by Electron", "author": "viarotel", "homepage": "https://github.com/viarotel-org/escrcpy", - "main": "./out/main/index.js", + "main": "dist-electron/main.js", "scripts": { - "format": "prettier --write .", + "dev": "vite", + "build": "vite build && electron-builder", + "build:win": "vite build && electron-builder --win", + "build:mac": "vite build && electron-builder --mac", + "build:linux": "vite build && electron-builder --linux", + "preview": "vite preview", "lint": "eslint . --ext .md,.vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .eslintignore --fix", - "start": "electron-vite preview", - "dev": "electron-vite dev", - "build": "electron-vite build", - "postinstall": "electron-builder install-app-deps", - "build:win": "npm run build && electron-builder --win --config", - "build:mac": "npm run build && electron-builder --mac --config", - "build:linux": "npm run build && electron-builder --linux --config" + "postinstall": "electron-builder install-app-deps" }, "dependencies": { - "@devicefarmer/adbkit": "^3.2.5", - "@electron-toolkit/preload": "^2.0.0", - "@electron-toolkit/utils": "^2.0.0", - "@viarotel-org/design": "^0.7.0", - "dayjs": "^1.11.10", - "electron-updater": "^6.1.1", - "element-plus": "^2.3.14", - "fs-extra": "^11.1.1", - "lodash-es": "^4.17.21", - "pinia": "^2.1.6", - "ufo": "^1.3.1" + "vue": "^3.3.4" }, "devDependencies": { - "@electron-toolkit/eslint-config": "^1.0.1", - "@rushstack/eslint-patch": "^1.3.3", + "@devicefarmer/adbkit": "^3.2.5", + "@electron-toolkit/preload": "^2.0.0", + "@electron-toolkit/utils": "^2.0.1", + "@viarotel-org/design": "^0.7.0", "@viarotel-org/eslint-config": "^0.7.0", "@viarotel-org/postcss-config": "^0.7.0", "@viarotel-org/unocss-config": "^0.7.4", - "@vitejs/plugin-vue": "^4.3.1", - "@vue/eslint-config-prettier": "^8.0.0", - "electron": "^25.6.0", + "@viarotel-org/vite-plugin-path": "^0.8.1", + "@vitejs/plugin-vue": "^4.3.4", + "dayjs": "^1.11.10", + "electron": "^26.1.0", "electron-builder": "^24.6.4", - "electron-vite": "^1.0.28", - "eslint": "8.49.0", - "eslint-plugin-vue": "^9.17.0", - "less": "^4.2.0", - "prettier": "^3.0.2", + "electron-updater": "^6.1.4", + "element-plus": "^2.4.0", + "lodash-es": "^4.17.21", + "pinia": "^2.1.7", "typescript": "^5.2.2", "vite": "^4.4.9", + "vite-plugin-electron": "^0.14.0", + "vite-plugin-electron-renderer": "^0.14.5", "vite-plugin-eslint": "^1.8.1", - "vue": "^3.3.4" + "vue-tsc": "^1.8.8" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55ec212..1d06f3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,95 +5,77 @@ settings: excludeLinksFromLockfile: false dependencies: + vue: + specifier: ^3.3.4 + version: 3.3.4 + +devDependencies: '@devicefarmer/adbkit': specifier: ^3.2.5 version: 3.2.5 '@electron-toolkit/preload': specifier: ^2.0.0 - version: 2.0.0(electron@25.8.1) + version: 2.0.0(electron@26.4.0) '@electron-toolkit/utils': - specifier: ^2.0.0 - version: 2.0.1(electron@25.8.1) + specifier: ^2.0.1 + version: 2.0.1(electron@26.4.0) '@viarotel-org/design': specifier: ^0.7.0 version: 0.7.0 + '@viarotel-org/eslint-config': + specifier: ^0.7.0 + version: 0.7.0(eslint@8.51.0)(typescript@5.2.2) + '@viarotel-org/postcss-config': + specifier: ^0.7.0 + version: 0.7.0(postcss@8.4.31) + '@viarotel-org/unocss-config': + specifier: ^0.7.4 + version: 0.7.4(postcss@8.4.31)(vite@4.4.11) + '@viarotel-org/vite-plugin-path': + specifier: ^0.8.1 + version: 0.8.1 + '@vitejs/plugin-vue': + specifier: ^4.3.4 + version: 4.4.0(vite@4.4.11)(vue@3.3.4) dayjs: specifier: ^1.11.10 version: 1.11.10 + electron: + specifier: ^26.1.0 + version: 26.4.0 + electron-builder: + specifier: ^24.6.4 + version: 24.6.4 electron-updater: - specifier: ^6.1.1 + specifier: ^6.1.4 version: 6.1.4 element-plus: - specifier: ^2.3.14 - version: 2.3.14(vue@3.3.4) - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 + specifier: ^2.4.0 + version: 2.4.0(vue@3.3.4) lodash-es: specifier: ^4.17.21 version: 4.17.21 pinia: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.2.2)(vue@3.3.4) - ufo: - specifier: ^1.3.1 - version: 1.3.1 - -devDependencies: - '@electron-toolkit/eslint-config': - specifier: ^1.0.1 - version: 1.0.1(eslint@8.49.0) - '@rushstack/eslint-patch': - specifier: ^1.3.3 - version: 1.4.0 - '@viarotel-org/eslint-config': - specifier: ^0.7.0 - version: 0.7.0(eslint@8.49.0)(typescript@5.2.2) - '@viarotel-org/postcss-config': - specifier: ^0.7.0 - version: 0.7.0(postcss@8.4.29) - '@viarotel-org/unocss-config': - specifier: ^0.7.4 - version: 0.7.4(postcss@8.4.29)(vite@4.4.9) - '@vitejs/plugin-vue': - specifier: ^4.3.1 - version: 4.3.4(vite@4.4.9)(vue@3.3.4) - '@vue/eslint-config-prettier': - specifier: ^8.0.0 - version: 8.0.0(eslint@8.49.0)(prettier@3.0.3) - electron: - specifier: ^25.6.0 - version: 25.8.1 - electron-builder: - specifier: ^24.6.4 - version: 24.6.4 - electron-vite: - specifier: ^1.0.28 - version: 1.0.28(vite@4.4.9) - eslint: - specifier: 8.49.0 - version: 8.49.0 - eslint-plugin-vue: - specifier: ^9.17.0 - version: 9.17.0(eslint@8.49.0) - less: - specifier: ^4.2.0 - version: 4.2.0 - prettier: - specifier: ^3.0.2 - version: 3.0.3 + specifier: ^2.1.7 + version: 2.1.7(typescript@5.2.2)(vue@3.3.4) typescript: specifier: ^5.2.2 version: 5.2.2 vite: specifier: ^4.4.9 - version: 4.4.9(less@4.2.0) + version: 4.4.11 + vite-plugin-electron: + specifier: ^0.14.0 + version: 0.14.1(vite-plugin-electron-renderer@0.14.5) + vite-plugin-electron-renderer: + specifier: ^0.14.5 + version: 0.14.5 vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.49.0)(vite@4.4.9) - vue: - specifier: ^3.3.4 - version: 3.3.4 + version: 1.8.1(eslint@8.51.0)(vite@4.4.11) + vue-tsc: + specifier: ^1.8.8 + version: 1.8.19(typescript@5.2.2) packages: @@ -119,24 +101,24 @@ packages: '@jridgewell/trace-mapping': 0.3.19 dev: true - /@antfu/eslint-config-basic@0.39.8(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): + /@antfu/eslint-config-basic@0.39.8(@typescript-eslint/eslint-plugin@6.7.5)(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-HvxNu11NRpX/DHmcMcA2KenY/IIy3THEn5tpizg6vPIp3ZYSNkW3ov6sK2wxCd1S8Rwl/65566wplJ8xTYe0EA==} peerDependencies: eslint: '>=7.4.0' dependencies: - eslint: 8.49.0 - eslint-plugin-antfu: 0.39.8(eslint@8.49.0)(typescript@5.2.2) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) + eslint: 8.51.0 + eslint-plugin-antfu: 0.39.8(eslint@8.51.0)(typescript@5.2.2) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.0)(eslint@8.49.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.49.0) - eslint-plugin-markdown: 3.0.1(eslint@8.49.0) - eslint-plugin-n: 16.1.0(eslint@8.49.0) + eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) + eslint-plugin-jsonc: 2.10.0(eslint@8.51.0) + eslint-plugin-markdown: 3.0.1(eslint@8.51.0) + eslint-plugin-n: 16.2.0(eslint@8.51.0) eslint-plugin-no-only-tests: 3.1.0 - eslint-plugin-promise: 6.1.1(eslint@8.49.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.49.0) - eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.49.0) - eslint-plugin-yml: 1.9.0(eslint@8.49.0) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) + eslint-plugin-unicorn: 48.0.1(eslint@8.51.0) + eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0) + eslint-plugin-yml: 1.10.0(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 yaml-eslint-parser: 1.2.2 transitivePeerDependencies: @@ -148,17 +130,17 @@ packages: - typescript dev: true - /@antfu/eslint-config-ts@0.39.8(eslint@8.49.0)(typescript@5.2.2): + /@antfu/eslint-config-ts@0.39.8(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-oMkIzxxD+sdHpO7Ctk+ej1SCZAoSbPMGyqjfaGLqpaxh87gP7LSFlm6QpsdIWllnTyYB75Hk8LMqFQWCJU9dxw==} peerDependencies: eslint: '>=7.4.0' typescript: '>=3.9' dependencies: - '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.7.5)(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-plugin-jest: 27.4.2(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -167,15 +149,15 @@ packages: - supports-color dev: true - /@antfu/eslint-config-vue@0.39.8(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): + /@antfu/eslint-config-vue@0.39.8(@typescript-eslint/eslint-plugin@6.7.5)(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-BeBRdI8Bm0d9ppomvmPkrIim4IEW4ZHZHsGw2qSw/mSDZwprLyGi9tgNMnoHbN9OBGQwveuurdKFlJz5SlCjrA==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@antfu/eslint-config-ts': 0.39.8(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 - eslint-plugin-vue: 9.17.0(eslint@8.49.0) + '@antfu/eslint-config-basic': 0.39.8(@typescript-eslint/eslint-plugin@6.7.5)(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@antfu/eslint-config-ts': 0.39.8(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-plugin-vue: 9.17.0(eslint@8.51.0) local-pkg: 0.4.3 transitivePeerDependencies: - '@typescript-eslint/eslint-plugin' @@ -187,24 +169,24 @@ packages: - typescript dev: true - /@antfu/eslint-config@0.39.8(eslint@8.49.0)(typescript@5.2.2): + /@antfu/eslint-config@0.39.8(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-KnDjLw6UEoHdEzB6CzQMm+EkA4ZI94r1Of1rRRw0qxhkFhD/+SQ2BTBgmF5d4wTsU0IT1Dk5JjJ6J/cVFKdXWQ==} peerDependencies: eslint: '>=7.4.0' dependencies: - '@antfu/eslint-config-vue': 0.39.8(@typescript-eslint/eslint-plugin@6.7.0)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 - eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) + '@antfu/eslint-config-vue': 0.39.8(@typescript-eslint/eslint-plugin@6.7.5)(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-plugin-eslint-comments: 3.2.0(eslint@8.51.0) eslint-plugin-html: 7.1.0 - eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.0)(eslint@8.49.0) - eslint-plugin-jsonc: 2.9.0(eslint@8.49.0) - eslint-plugin-n: 16.1.0(eslint@8.49.0) - eslint-plugin-promise: 6.1.1(eslint@8.49.0) - eslint-plugin-unicorn: 48.0.1(eslint@8.49.0) - eslint-plugin-vue: 9.17.0(eslint@8.49.0) - eslint-plugin-yml: 1.9.0(eslint@8.49.0) + eslint-plugin-import: /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) + eslint-plugin-jsonc: 2.10.0(eslint@8.51.0) + eslint-plugin-n: 16.2.0(eslint@8.51.0) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) + eslint-plugin-unicorn: 48.0.1(eslint@8.51.0) + eslint-plugin-vue: 9.17.0(eslint@8.51.0) + eslint-plugin-yml: 1.10.0(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 yaml-eslint-parser: 1.2.2 transitivePeerDependencies: @@ -230,208 +212,46 @@ packages: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 dev: true - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.22.19: - resolution: {integrity: sha512-Q8Yj5X4LHVYTbLCKVz0//2D2aDmHF4xzCdEttYvKOnWvErGsa6geHXD6w46x64n5tP69VfeH+IfSrdyH3MLhwA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.19(@babel/core@7.22.19) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.16 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.19 - '@babel/types': 7.22.19 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.22.15: - resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.19 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.19 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.19 - dev: true - - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.19 - dev: true - - /@babel/helper-module-transforms@7.22.19(@babel/core@7.22.19): - resolution: {integrity: sha512-m6h1cJvn+OJ+R3jOHp30faq5xKJ7VbjwDj5RGgHuRlU9hrMeKsGC+JpihkR5w1g7IfseCPPtZ0r7/hB4UKaYlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.19 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.19 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.19 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.19 - dev: true - /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.19: - resolution: {integrity: sha512-Tinq7ybnEPFFXhlYOYFiSjespWQk0dq2dRNAiMdRTOYQzEGqnnNyrTxPYHP5r6wGjlF1rFgABdDV0g8EwD6Qbg==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.22.15: - resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.19 - '@babel/types': 7.22.19 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.19 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser@7.22.16: - resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + /@babel/parser@7.23.0: + resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.19 + '@babel/types': 7.23.0 - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.19): - resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.19 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 - dev: true - - /@babel/traverse@7.22.19: - resolution: {integrity: sha512-ZCcpVPK64krfdScRbpxF6xA5fz7IOsfMwx1tcACvCzt6JY+0aHkBk7eIU8FRDSZRU5Zei6Z4JfgAxN1bqXGECg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.16 - '@babel/types': 7.22.19 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.22.19: - resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} + /@babel/types@7.23.0: + resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.19 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 /@ctrl/tinycolor@3.6.1: resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} engines: {node: '>=10'} - dev: false + dev: true /@develar/schema-utils@2.6.5: resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} @@ -444,12 +264,12 @@ packages: /@devicefarmer/adbkit-logcat@2.1.3: resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==} engines: {node: '>= 4'} - dev: false + dev: true /@devicefarmer/adbkit-monkey@1.2.1: resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==} engines: {node: '>= 0.10.4'} - dev: false + dev: true /@devicefarmer/adbkit@3.2.5: resolution: {integrity: sha512-+J479WWZW3GU3t40flicDfiDrFz6vpiy2RcBQPEhFcs/3La9pOtr4Bgz2Q02E4luUG2RAL068rqIkKNUTy3tZw==} @@ -465,38 +285,29 @@ packages: split: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - - /@electron-toolkit/eslint-config@1.0.1(eslint@8.49.0): - resolution: {integrity: sha512-fqXviqkUSk6uFkMVhrMBTzFFxwsWQCF4nB+O79zHKSDj7YGFP5bZA1e2T5iK8KeaG1v8og3tKnDU3OSzgypCDQ==} - peerDependencies: - eslint: '>= 8.0.0' - dependencies: - eslint: 8.49.0 dev: true - /@electron-toolkit/preload@2.0.0(electron@25.8.1): + /@electron-toolkit/preload@2.0.0(electron@26.4.0): resolution: {integrity: sha512-zpZDzbqJTZQC5d4LRs2EKruKWnqah+T75s+niBYFemYLtiW5TTZcWi3Q8UxHqnwTudDMuWJb233aaS2yjx3Xiw==} peerDependencies: electron: '>=13.0.0' dependencies: - electron: 25.8.1 - dev: false + electron: 26.4.0 + dev: true - /@electron-toolkit/utils@2.0.1(electron@25.8.1): + /@electron-toolkit/utils@2.0.1(electron@26.4.0): resolution: {integrity: sha512-3nnjd3D1NIjxdzNrvR5fkJ3kbJNbRkpHppv0/pSbMX6I0DaBzpPXeSfDYuJJKzZrAc3CmGcJa0MU4+AjEOlT4g==} peerDependencies: electron: '>=13.0.0' dependencies: - electron: 25.8.1 - dev: false + electron: 26.4.0 + dev: true - /@electron/asar@3.2.4: - resolution: {integrity: sha512-lykfY3TJRRWFeTxccEKdf1I6BLl2Plw81H0bbp4Fc5iEc67foDCa5pjJQULVgo0wF+Dli75f3xVcdb/67FFZ/g==} + /@electron/asar@3.2.7: + resolution: {integrity: sha512-8FaSCAIiZGYFWyjeevPQt+0e9xCK9YmJ2Rjg5SXgdsXon6cRnU0Yxnbe6CvJbQn26baifur2Y2G5EBayRIsjyg==} engines: {node: '>=10.12.0'} hasBin: true dependencies: - chromium-pickle-js: 0.2.0 commander: 5.1.0 glob: 7.2.3 minimatch: 3.1.2 @@ -517,6 +328,7 @@ packages: global-agent: 3.0.0 transitivePeerDependencies: - supports-color + dev: true /@electron/notarize@2.1.0: resolution: {integrity: sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==} @@ -548,7 +360,7 @@ packages: resolution: {integrity: sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==} engines: {node: '>=8.6'} dependencies: - '@electron/asar': 3.2.4 + '@electron/asar': 3.2.7 '@malept/cross-spawn-promise': 1.1.1 debug: 4.3.4 dir-compare: 3.3.0 @@ -565,7 +377,7 @@ packages: vue: ^3.2.0 dependencies: vue: 3.3.4 - dev: false + dev: true /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} @@ -765,18 +577,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.49.0 + eslint: 8.51.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.1: - resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -787,7 +599,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.21.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -797,27 +609,27 @@ packages: - supports-color dev: true - /@eslint/js@8.49.0: - resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@floating-ui/core@1.4.2: - resolution: {integrity: sha512-olUakR5nr9v2ueVr1yomoJnBTkHGqHzL/iK4AhforiJS/wKJgFphAYpZHZzADLv/zNUFuQwqLH3bcoUhFh2E1Q==} + /@floating-ui/core@1.5.0: + resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} dependencies: - '@floating-ui/utils': 0.1.3 - dev: false + '@floating-ui/utils': 0.1.6 + dev: true /@floating-ui/dom@1.5.3: resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} dependencies: - '@floating-ui/core': 1.4.2 - '@floating-ui/utils': 0.1.3 - dev: false + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + dev: true - /@floating-ui/utils@0.1.3: - resolution: {integrity: sha512-uvnFKtPgzLnpzzTRfhDlvXX0kLYi9lDRQbcDmT8iXl71Rx+uwSuaUIQl3DNC7w5OweAQ7XQMDObML+KaYDQfng==} - dev: false + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: true /@humanwhocodes/config-array@0.11.11: resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} @@ -843,8 +655,8 @@ packages: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils@2.1.9: - resolution: {integrity: sha512-mo+A4n3MwLlWlg1SoSO+Dt6pOPWKElk9sSJ6ZpuzbB9OcjxN8RUWxU3ulPwB1nglErWKRam2x4BAohbYF7FiFA==} + /@iconify/utils@2.1.11: + resolution: {integrity: sha512-M/w3PkN8zQYXi8N6qK/KhnYMfEbbb6Sk8RZVn8g+Pmmu5ybw177RpsaGwpziyHeUsu4etrexYSWq3rwnIqzYCg==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.6 @@ -925,18 +737,6 @@ packages: fastq: 1.15.0 dev: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.1 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 - dev: true - /@polka/url@1.0.0-next.23: resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true @@ -949,37 +749,35 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.4: - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@rollup/pluginutils@5.0.5: + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 dev: true - /@rushstack/eslint-patch@1.4.0: - resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} - dev: true - /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} + dev: true /@sxzz/popperjs-es@2.11.7: resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} - dev: false + dev: true /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} dependencies: defer-to-connect: 2.0.1 + dev: true /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} @@ -989,117 +787,126 @@ packages: /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.2 '@types/keyv': 3.1.4 - '@types/node': 20.6.0 - '@types/responselike': 1.0.0 - - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - dependencies: - '@types/ms': 0.7.31 + '@types/node': 18.18.5 + '@types/responselike': 1.0.1 dev: true - /@types/eslint@8.44.2: - resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} + /@types/debug@4.1.9: + resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==} dependencies: - '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 + '@types/ms': 0.7.32 dev: true - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + /@types/eslint@8.44.4: + resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==} + dependencies: + '@types/estree': 1.0.2 + '@types/json-schema': 7.0.13 + dev: true + + /@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} dev: true /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 20.6.0 + '@types/node': 20.8.6 dev: true - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + /@types/http-cache-semantics@4.0.2: + resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} + dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.6.0 + '@types/node': 18.18.5 + dev: true /@types/lodash-es@4.17.9: resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==} dependencies: - '@types/lodash': 4.14.198 - dev: false + '@types/lodash': 4.14.199 + dev: true - /@types/lodash@4.14.198: - resolution: {integrity: sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==} - dev: false + /@types/lodash@4.14.199: + resolution: {integrity: sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==} + dev: true - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + /@types/mdast@3.0.13: + resolution: {integrity: sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg==} dependencies: '@types/unist': 2.0.8 dev: true - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + /@types/ms@0.7.32: + resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} dev: true - /@types/node@18.17.15: - resolution: {integrity: sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==} - - /@types/node@20.6.0: - resolution: {integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==} - - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/node@18.18.5: + resolution: {integrity: sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A==} dev: true - /@types/plist@3.0.2: - resolution: {integrity: sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==} + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 + dev: true + + /@types/normalize-package-data@2.4.2: + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} + dev: true + + /@types/plist@3.0.3: + resolution: {integrity: sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==} requiresBuild: true dependencies: - '@types/node': 20.6.0 + '@types/node': 20.8.6 xmlbuilder: 15.1.1 dev: true optional: true - /@types/responselike@1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + /@types/responselike@1.0.1: + resolution: {integrity: sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==} dependencies: - '@types/node': 20.6.0 + '@types/node': 18.18.5 + dev: true - /@types/semver@7.5.2: - resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true /@types/unist@2.0.8: resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} dev: true - /@types/verror@1.10.6: - resolution: {integrity: sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==} + /@types/verror@1.10.7: + resolution: {integrity: sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==} requiresBuild: true dev: true optional: true /@types/web-bluetooth@0.0.16: resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} - dev: false + dev: true - /@types/yauzl@2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + /@types/yauzl@2.10.1: + resolution: {integrity: sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==} requiresBuild: true dependencies: - '@types/node': 20.6.0 + '@types/node': 18.18.5 + dev: true optional: true - /@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==} + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -1109,14 +916,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.1 - '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/type-utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -1127,8 +934,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} + /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1137,12 +944,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -1156,16 +963,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.7.0: - resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} + /@typescript-eslint/scope-manager@6.7.5: + resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 dev: true - /@typescript-eslint/type-utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==} + /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1174,10 +981,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -1189,8 +996,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.7.0: - resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} + /@typescript-eslint/types@6.7.5: + resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -1215,8 +1022,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2): - resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} + /@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): + resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1224,8 +1031,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1236,19 +1043,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@5.2.2): + /@typescript-eslint/utils@5.62.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.2 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 8.49.0 + eslint: 8.51.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -1256,19 +1063,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==} + /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.2 - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - eslint: 8.49.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1283,11 +1090,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.7.0: - resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} + /@typescript-eslint/visitor-keys@6.7.5: + resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/types': 6.7.5 eslint-visitor-keys: 3.4.3 dev: true @@ -1311,7 +1118,7 @@ packages: resolution: {integrity: sha512-dz4KDgDl9Y4v9b1dKQA8e415HzA6AiXqfnqDhn+0Bq44kNIVEGSPL631xCx3dp+g199apf9guk16FDG5BxVZYQ==} dev: true - /@unocss/astro@0.55.7(vite@4.4.9): + /@unocss/astro@0.55.7(vite@4.4.11): resolution: {integrity: sha512-mw8r14ArxUQBVCCisAJlF/WsZb650iBsduD/lXMk56N/nQ3MMArCcn62kcAxgZSb5tfIOQGQu/tbR8hEcD8y2g==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 @@ -1321,8 +1128,8 @@ packages: dependencies: '@unocss/core': 0.55.7 '@unocss/reset': 0.55.7 - '@unocss/vite': 0.55.7(vite@4.4.9) - vite: 4.4.9(less@4.2.0) + '@unocss/vite': 0.55.7(vite@4.4.11) + vite: 4.4.11 transitivePeerDependencies: - rollup dev: true @@ -1333,7 +1140,7 @@ packages: hasBin: true dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.4 + '@rollup/pluginutils': 5.0.5 '@unocss/config': 0.55.7 '@unocss/core': 0.55.7 '@unocss/preset-uno': 0.55.7 @@ -1342,7 +1149,7 @@ packages: colorette: 2.0.20 consola: 3.2.3 fast-glob: 3.3.1 - magic-string: 0.30.3 + magic-string: 0.30.5 pathe: 1.1.1 perfect-debounce: 1.0.0 transitivePeerDependencies: @@ -1354,7 +1161,7 @@ packages: engines: {node: '>=14'} dependencies: '@unocss/core': 0.55.7 - unconfig: 0.3.10 + unconfig: 0.3.11 dev: true /@unocss/core@0.55.7: @@ -1374,7 +1181,7 @@ packages: sirv: 2.0.3 dev: true - /@unocss/postcss@0.55.7(postcss@8.4.29): + /@unocss/postcss@0.55.7(postcss@8.4.31): resolution: {integrity: sha512-53Z/yv/CNdlTqKZQ9gpYRoLZSuzQ28J0SDrGCdzwjLcvHG/FD7/x1S7yxE7cUp/4sjvLL15HSzkWq8vNy6SkwQ==} engines: {node: '>=14'} peerDependencies: @@ -1384,8 +1191,8 @@ packages: '@unocss/core': 0.55.7 css-tree: 2.3.1 fast-glob: 3.3.1 - magic-string: 0.30.3 - postcss: 8.4.29 + magic-string: 0.30.5 + postcss: 8.4.31 dev: true /@unocss/preset-attributify@0.55.7: @@ -1397,7 +1204,7 @@ packages: /@unocss/preset-icons@0.55.7: resolution: {integrity: sha512-JXLOHkyEKKAjLTqjAxYfhwln05WXilGg3jctkZWKpMNawPaonrGt3kZT12YMuMmOryxk7UcyKB0dtYc+p3QYvw==} dependencies: - '@iconify/utils': 2.1.9 + '@iconify/utils': 2.1.11 '@unocss/core': 0.55.7 ofetch: 1.3.3 transitivePeerDependencies: @@ -1448,6 +1255,7 @@ packages: /@unocss/reset@0.55.7: resolution: {integrity: sha512-yvmLhxqUNgf6wue7IvhV/FdrQW9H9LF1Bmmhwwaiz2aV0E74aN4pbuYPZwNq3YafsQvNQ0UdtuXjddY4QMRCPw==} + dev: true /@unocss/scope@0.55.7: resolution: {integrity: sha512-r0CaS1aSpcC37ztqOJ3qaWIzM6zwdlX8r0rib2vTvWTckw1J0ocVhjNkWRBM9kRWte006JhecdiZzXNHA40akg==} @@ -1484,13 +1292,13 @@ packages: '@unocss/core': 0.55.7 dev: true - /@unocss/vite@0.55.7(vite@4.4.9): + /@unocss/vite@0.55.7(vite@4.4.11): resolution: {integrity: sha512-xmdyDnt9Ag4o7DGl22/P6MaB+HSjWOQw9qYYzIefSv3SVUvn3cEhIX/PCWqFp8Kts2HyvAoJLbZmygSf1XdZNQ==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 dependencies: '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.4 + '@rollup/pluginutils': 5.0.5 '@unocss/config': 0.55.7 '@unocss/core': 0.55.7 '@unocss/inspector': 0.55.7 @@ -1498,8 +1306,8 @@ packages: '@unocss/transformer-directives': 0.55.7 chokidar: 3.5.3 fast-glob: 3.3.1 - magic-string: 0.30.3 - vite: 4.4.9(less@4.2.0) + magic-string: 0.30.5 + vite: 4.4.11 transitivePeerDependencies: - rollup dev: true @@ -1508,12 +1316,12 @@ packages: resolution: {integrity: sha512-811y+hU9hZmdnEVJiaAC+ovcXicIvw4lcEEBBbWNQ6k2dFy/jG2G9wcS/+tl2OwOV7QsPCd75Ir0+O6sSSR47A==} dependencies: '@unocss/reset': 0.55.7 - dev: false + dev: true - /@viarotel-org/eslint-config@0.7.0(eslint@8.49.0)(typescript@5.2.2): + /@viarotel-org/eslint-config@0.7.0(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-PMlMySwXs/9+UNQdJI/Ut++HtB/0DvXsjk5LBD90WuICw0YlHAYNRJhfTC9QsmTzz8mY7pMxc8QQHb4QnpcRNw==} dependencies: - '@antfu/eslint-config': 0.39.8(eslint@8.49.0)(typescript@5.2.2) + '@antfu/eslint-config': 0.39.8(eslint@8.51.0)(typescript@5.2.2) transitivePeerDependencies: - eslint - eslint-import-resolver-typescript @@ -1523,26 +1331,26 @@ packages: - typescript dev: true - /@viarotel-org/postcss-config@0.7.0(postcss@8.4.29): + /@viarotel-org/postcss-config@0.7.0(postcss@8.4.31): resolution: {integrity: sha512-rrxzJcTm+AllwlO3ArwiweWGz2/OiU2ng7r34U8kKE41r6yi1TK5YB8vubgxms1HvEM5Z3VLb4gDvTuymYqRZQ==} dependencies: defu: 6.1.2 - postcss-nested: 6.0.1(postcss@8.4.29) - postcss-remove-inline-comments: 0.0.2(postcss@8.4.29) - postcss-scss: 4.0.8(postcss@8.4.29) + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-remove-inline-comments: 0.0.2(postcss@8.4.31) + postcss-scss: 4.0.9(postcss@8.4.31) transitivePeerDependencies: - postcss dev: true - /@viarotel-org/unocss-config@0.7.4(postcss@8.4.29)(vite@4.4.9): + /@viarotel-org/unocss-config@0.7.4(postcss@8.4.31)(vite@4.4.11): resolution: {integrity: sha512-u+pCXrmIs0Wpw5dL162S+UyTPNqc8GvSiJjWiIIvyqAMoN45sGMh2lPMJ72O90yw6kijYynShwgwzB+0nftj9g==} dependencies: '@unocss/transformer-directives': 0.55.7 - '@viarotel-org/unocss-preset-shades': 0.7.4(postcss@8.4.29)(vite@4.4.9) - daisyui: 3.7.4 - unocss: 0.55.7(postcss@8.4.29)(vite@4.4.9) + '@viarotel-org/unocss-preset-shades': 0.7.4(postcss@8.4.31)(vite@4.4.11) + daisyui: 3.9.2 + unocss: 0.55.7(postcss@8.4.31)(vite@4.4.11) unocss-applet: 0.5.5 - unocss-preset-daisy: 6.0.1(daisyui@3.7.4)(unocss@0.55.7) + unocss-preset-daisy: 6.0.1(daisyui@3.9.2)(unocss@0.55.7) transitivePeerDependencies: - '@unocss/webpack' - postcss @@ -1552,11 +1360,11 @@ packages: - vite dev: true - /@viarotel-org/unocss-preset-shades@0.7.4(postcss@8.4.29)(vite@4.4.9): + /@viarotel-org/unocss-preset-shades@0.7.4(postcss@8.4.31)(vite@4.4.11): resolution: {integrity: sha512-xupVEOulUd5alB93nc2sZeFPa8z+CxuZpfj34D7kXZ0xBzrSRVLWNC72GVYZ8q4l5F1EcF3+cT84w/x+2bVMiw==} dependencies: color: 4.2.3 - unocss: 0.55.7(postcss@8.4.29)(vite@4.4.9) + unocss: 0.55.7(postcss@8.4.31)(vite@4.4.11) transitivePeerDependencies: - '@unocss/webpack' - postcss @@ -1565,21 +1373,53 @@ packages: - vite dev: true - /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): - resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} + /@viarotel-org/vite-plugin-path@0.8.1: + resolution: {integrity: sha512-sS3ovVk5tpS08ShtL9HMJxyWge5Oq0kn610xxxihYj2GrlhOqDeKDD+zp0ebhuO6E8dMmlWQctCfnyOVeBYaUQ==} + dependencies: + vite: 4.4.11 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - terser + dev: true + + /@vitejs/plugin-vue@4.4.0(vite@4.4.11)(vue@3.3.4): + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(less@4.2.0) + vite: 4.4.11 vue: 3.3.4 dev: true + /@volar/language-core@1.10.4: + resolution: {integrity: sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==} + dependencies: + '@volar/source-map': 1.10.4 + dev: true + + /@volar/source-map@1.10.4: + resolution: {integrity: sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.10.4: + resolution: {integrity: sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==} + dependencies: + '@volar/language-core': 1.10.4 + dev: true + /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.22.16 + '@babel/parser': 7.23.0 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 @@ -1593,15 +1433,15 @@ packages: /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.22.16 + '@babel/parser': 7.23.0 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.3 - postcss: 8.4.29 + magic-string: 0.30.5 + postcss: 8.4.31 source-map-js: 1.0.2 /@vue/compiler-ssr@3.3.4: @@ -1612,30 +1452,35 @@ packages: /@vue/devtools-api@6.5.1: resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} - dev: false + dev: true - /@vue/eslint-config-prettier@8.0.0(eslint@8.49.0)(prettier@3.0.3): - resolution: {integrity: sha512-55dPqtC4PM/yBjhAr+yEw6+7KzzdkBuLmnhBrDfp4I48+wy+Giqqj9yUr5T2uD/BkBROjjmqnLZmXRdOx/VtQg==} + /@vue/language-core@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ==} peerDependencies: - eslint: '>= 8.0.0' - prettier: '>= 3.0.0' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - eslint: 8.49.0 - eslint-config-prettier: 8.10.0(eslint@8.49.0) - eslint-plugin-prettier: 5.0.0(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3) - prettier: 3.0.3 - transitivePeerDependencies: - - '@types/eslint' + '@volar/language-core': 1.10.4 + '@volar/source-map': 1.10.4 + '@vue/compiler-dom': 3.3.4 + '@vue/reactivity': 3.3.4 + '@vue/shared': 3.3.4 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.14 dev: true /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.22.16 + '@babel/parser': 7.23.0 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.3 + magic-string: 0.30.5 /@vue/reactivity@3.3.4: resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} @@ -1667,6 +1512,15 @@ packages: /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} + /@vue/typescript@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw==} + dependencies: + '@volar/typescript': 1.10.4 + '@vue/language-core': 1.8.19(typescript@5.2.2) + transitivePeerDependencies: + - typescript + dev: true + /@vueuse/core@9.13.0(vue@3.3.4): resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} dependencies: @@ -1677,11 +1531,11 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false + dev: true /@vueuse/metadata@9.13.0: resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} - dev: false + dev: true /@vueuse/shared@9.13.0(vue@3.3.4): resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} @@ -1690,7 +1544,7 @@ packages: transitivePeerDependencies: - '@vue/composition-api' - vue - dev: false + dev: true /@xmldom/xmldom@0.8.10: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} @@ -1815,6 +1669,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} @@ -1842,7 +1697,7 @@ packages: /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} - dev: false + dev: true /async@3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} @@ -1857,19 +1712,19 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /autoprefixer@10.4.15(postcss@8.4.29): - resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001534 - fraction.js: 4.3.6 + browserslist: 4.22.1 + caniuse-lite: 1.0.30001549 + fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.29 + postcss: 8.4.31 postcss-value-parser: 4.2.0 dev: true @@ -1882,11 +1737,6 @@ packages: requiresBuild: true dev: true - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -1900,6 +1750,7 @@ packages: /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1908,14 +1759,8 @@ packages: /boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} requiresBuild: true - optional: true - - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 dev: true + optional: true /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1937,19 +1782,20 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001534 - electron-to-chromium: 1.4.522 + caniuse-lite: 1.0.30001549 + electron-to-chromium: 1.4.554 node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) + update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true /buffer-equal@1.0.1: resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} @@ -1974,15 +1820,16 @@ packages: engines: {node: '>=12.0.0'} dependencies: debug: 4.3.4 - sax: 1.2.4 + sax: 1.3.0 transitivePeerDependencies: - supports-color + dev: true /builder-util@24.5.0: resolution: {integrity: sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==} dependencies: 7zip-bin: 5.1.1 - '@types/debug': 4.1.8 + '@types/debug': 4.1.9 app-builder-bin: 4.0.0 bluebird-lst: 1.0.9 builder-util-runtime: 9.2.1 @@ -2012,13 +1859,6 @@ packages: semver: 7.5.4 dev: true - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2027,6 +1867,7 @@ packages: /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} + dev: true /cacheable-request@7.0.4: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} @@ -2035,10 +1876,11 @@ packages: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.3 + keyv: 4.5.4 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 + dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2055,8 +1897,8 @@ packages: engines: {node: '>=16'} dev: true - /caniuse-lite@1.0.30001534: - resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} + /caniuse-lite@1.0.30001549: + resolution: {integrity: sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==} dev: true /chalk@2.4.2: @@ -2112,8 +1954,8 @@ packages: resolution: {integrity: sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} dev: true @@ -2147,6 +1989,7 @@ packages: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 + dev: true /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -2212,7 +2055,7 @@ packages: /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - dev: false + dev: true /compare-version@0.1.2: resolution: {integrity: sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==} @@ -2235,16 +2078,6 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /copy-anything@2.0.6: - resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - dependencies: - is-what: 3.14.1 - dev: true - /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} requiresBuild: true @@ -2292,14 +2125,14 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - /daisyui@3.7.4: - resolution: {integrity: sha512-hAgTomIK8RDQ/RLH9Z2NxZiNVAO40w08FlhgYS/8CTFF+wggeHeNJ0qNBHWAJJzhjD8UU2u4PZ4nc4r9rwfTLw==} + /daisyui@3.9.2: + resolution: {integrity: sha512-yJZ1QjHUaL+r9BkquTdzNHb7KIgAJVFh0zbOXql2Wu0r7zx5qZNLxclhjN0WLoIpY+o2h/8lqXg7ijj8oTigOw==} engines: {node: '>=16.9.0'} dependencies: colord: 2.9.3 css-selector-tokenizer: 0.8.0 - postcss: 8.4.29 - postcss-js: 4.0.1(postcss@8.4.29) + postcss: 8.4.31 + postcss-js: 4.0.1(postcss@8.4.31) tailwindcss: 3.3.3 transitivePeerDependencies: - ts-node @@ -2307,7 +2140,11 @@ packages: /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: false + dev: true + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -2330,62 +2167,44 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 + dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} + dev: true - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} requiresBuild: true dependencies: get-intrinsic: 1.2.1 gopd: 1.0.1 has-property-descriptors: 1.0.0 - optional: true - - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} dev: true + optional: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} requiresBuild: true dependencies: - define-data-property: 1.1.0 + define-data-property: 1.1.1 has-property-descriptors: 1.0.0 object-keys: 1.1.1 + dev: true optional: true /defu@6.1.2: @@ -2404,6 +2223,7 @@ packages: /detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} requiresBuild: true + dev: true optional: true /didyoumean@1.2.2: @@ -2450,8 +2270,8 @@ packages: hasBin: true requiresBuild: true dependencies: - '@types/plist': 3.0.2 - '@types/verror': 1.10.6 + '@types/plist': 3.0.3 + '@types/verror': 1.10.7 ajv: 6.12.6 crc: 3.8.0 iconv-corefoundation: 1.1.7 @@ -2557,8 +2377,8 @@ packages: - supports-color dev: true - /electron-to-chromium@1.4.522: - resolution: {integrity: sha512-KGKjcafTpOxda0kqwQ72M0tDmX6RsGhUJTy0Hr7slt0+CgHh9Oex8JdjY9Og68dUkTLUlBOJC0A5W5Mw3QSGCg==} + /electron-to-chromium@1.4.554: + resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} dev: true /electron-updater@6.1.4: @@ -2574,44 +2394,23 @@ packages: tiny-typed-emitter: 2.1.0 transitivePeerDependencies: - supports-color - dev: false - - /electron-vite@1.0.28(vite@4.4.9): - resolution: {integrity: sha512-cp7nBi6do/jn5SHdL2V71WjxqZ+NXitVqn5bW+TsTEYgAfSUuYYp6INJN854kcgoOj4UrjMqA9cGRTSl79xx0Q==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@swc/core': ^1.0.0 - vite: ^3.0.0 || ^4.0.0 - peerDependenciesMeta: - '@swc/core': - optional: true - dependencies: - '@babel/core': 7.22.19 - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.19) - cac: 6.7.14 - esbuild: 0.18.20 - magic-string: 0.30.3 - picocolors: 1.0.0 - vite: 4.4.9(less@4.2.0) - transitivePeerDependencies: - - supports-color dev: true - /electron@25.8.1: - resolution: {integrity: sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==} + /electron@26.4.0: + resolution: {integrity: sha512-FUEFwmIlflLxImRtTmDp8CWpH4KqlyAwga6vauaz6+882SmyC3bJRhgqOIT5s6rMbW25WezNiaqfKqHDJjz3pw==} engines: {node: '>= 12.20.55'} hasBin: true requiresBuild: true dependencies: '@electron/get': 2.0.3 - '@types/node': 18.17.15 + '@types/node': 18.18.5 extract-zip: 2.0.1 transitivePeerDependencies: - supports-color + dev: true - /element-plus@2.3.14(vue@3.3.4): - resolution: {integrity: sha512-9yvxUaU4jXf2ZNPdmIxoj/f8BG8CDcGM6oHa9JIqxLjQlfY4bpzR1E5CjNimnOX3rxO93w1TQ0jTVt0RSxh9kA==} + /element-plus@2.4.0(vue@3.3.4): + resolution: {integrity: sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==} peerDependencies: vue: ^3.2.0 dependencies: @@ -2619,7 +2418,7 @@ packages: '@element-plus/icons-vue': 2.1.0(vue@3.3.4) '@floating-ui/dom': 1.5.3 '@popperjs/core': /@sxzz/popperjs-es@2.11.7 - '@types/lodash': 4.14.198 + '@types/lodash': 4.14.199 '@types/lodash-es': 4.17.9 '@vueuse/core': 9.13.0(vue@3.3.4) async-validator: 4.2.5 @@ -2633,7 +2432,7 @@ packages: vue: 3.3.4 transitivePeerDependencies: - '@vue/composition-api' - dev: false + dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2643,6 +2442,7 @@ packages: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: true /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -2652,20 +2452,12 @@ packages: /env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + dev: true /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} dev: true - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - requiresBuild: true - dependencies: - prr: 1.0.1 - dev: true - optional: true - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -2675,6 +2467,7 @@ packages: /es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} requiresBuild: true + dev: true optional: true /esbuild@0.18.20: @@ -2714,7 +2507,7 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -2724,14 +2517,15 @@ packages: /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + dev: true - /eslint-config-prettier@8.10.0(eslint@8.49.0): - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} - hasBin: true + /eslint-compat-utils@0.1.2(eslint@8.51.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=6.0.0' dependencies: - eslint: 8.49.0 + eslint: 8.51.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -2739,12 +2533,12 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.13.0 - resolve: 1.22.5 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -2765,43 +2559,43 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-antfu@0.39.8(eslint@8.49.0)(typescript@5.2.2): + /eslint-plugin-antfu@0.39.8(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-VsQF1mofv0pg+9rhSohNhrxcufOzSsGyQdKqdyJHPMTT2mMwXAPgKW/v8SC6W7UDk1q/j2EHZ+UUOEAKRnkd7g==} dependencies: - '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) transitivePeerDependencies: - eslint - supports-color - typescript dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.49.0): + /eslint-plugin-es-x@7.2.0(eslint@8.51.0): resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.1 - eslint: 8.49.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + eslint: 8.51.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.49.0): + /eslint-plugin-eslint-comments@3.2.0(eslint@8.51.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.49.0 + eslint: 8.51.0 ignore: 5.2.4 dev: true @@ -2811,7 +2605,7 @@ packages: htmlparser2: 8.0.2 dev: true - /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.0)(eslint@8.49.0): + /eslint-plugin-i@2.27.5-4(@typescript-eslint/parser@6.7.5)(eslint@8.51.0): resolution: {integrity: sha512-X3Z+dp9nZw7d/y41EDO6JyFw4WVMOT91SFuoJvL0C0/4M1l6NxQ5mLTjXHuYhq0AazW75pAmj25yMk5wPMzjsw==} engines: {node: '>=12'} peerDependencies: @@ -2819,13 +2613,13 @@ packages: dependencies: debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.49.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0) - get-tsconfig: 4.7.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + get-tsconfig: 4.7.2 is-glob: 4.0.3 minimatch: 3.1.2 - resolve: 1.22.5 + resolve: 1.22.8 semver: 7.5.4 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -2834,8 +2628,8 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ==} + /eslint-plugin-jest@27.4.2(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.0.0 || ^6.0.0 @@ -2847,53 +2641,54 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsonc@2.9.0(eslint@8.49.0): - resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} + /eslint-plugin-jsonc@2.10.0(eslint@8.51.0): + resolution: {integrity: sha512-9d//o6Jyh4s1RxC9fNSt1+MMaFN2ruFdXPG9XZcb/mR2KkfjADYiNL/hbU6W0Cyxfg3tS/XSFuhl5LgtMD8hmw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - eslint: 8.49.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 + eslint-compat-utils: 0.1.2(eslint@8.51.0) jsonc-eslint-parser: 2.3.0 natural-compare: 1.4.0 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.49.0): + /eslint-plugin-markdown@3.0.1(eslint@8.51.0): resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.49.0 + eslint: 8.51.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-n@16.1.0(eslint@8.49.0): - resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} + /eslint-plugin-n@16.2.0(eslint@8.51.0): + resolution: {integrity: sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) builtins: 5.0.1 - eslint: 8.49.0 - eslint-plugin-es-x: 7.2.0(eslint@8.49.0) - get-tsconfig: 4.7.0 + eslint: 8.51.0 + eslint-plugin-es-x: 7.2.0(eslint@8.51.0) + get-tsconfig: 4.7.2 ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 - resolve: 1.22.5 + resolve: 1.22.8 semver: 7.5.4 dev: true @@ -2902,47 +2697,26 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.49.0 - eslint-config-prettier: 8.10.0(eslint@8.49.0) - prettier: 3.0.3 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.5 - dev: true - - /eslint-plugin-promise@6.1.1(eslint@8.49.0): + /eslint-plugin-promise@6.1.1(eslint@8.51.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.49.0 + eslint: 8.51.0 dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.49.0): + /eslint-plugin-unicorn@48.0.1(eslint@8.51.0): resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: - '@babel/helper-validator-identifier': 7.22.19 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - ci-info: 3.8.0 + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.49.0 + eslint: 8.51.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -2956,7 +2730,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.7.0)(eslint@8.49.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2966,37 +2740,38 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) - eslint: 8.49.0 + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-vue@9.17.0(eslint@8.49.0): + /eslint-plugin-vue@9.17.0(eslint@8.51.0): resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - eslint: 8.49.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.1(eslint@8.49.0) + vue-eslint-parser: 9.3.2(eslint@8.51.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-yml@1.9.0(eslint@8.49.0): - resolution: {integrity: sha512-ayuC57WyVQ5+QZ02y62GiB//5+zsiyzUGxUX/mrhLni+jfsKA4KoITjkbR65iUdjjhWpyTJHPcAIFLKQIOwgsw==} + /eslint-plugin-yml@1.10.0(eslint@8.51.0): + resolution: {integrity: sha512-53SUwuNDna97lVk38hL/5++WXDuugPM9SUQ1T645R0EHMRCdBIIxGye/oOX2qO3FQ7aImxaUZJU/ju+NMUBrLQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 + eslint-compat-utils: 0.1.2(eslint@8.51.0) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.2 @@ -3030,15 +2805,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.49.0: - resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.49.0 + '@eslint/js': 8.51.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3057,7 +2832,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -3132,21 +2907,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -3156,9 +2916,10 @@ packages: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.1 transitivePeerDependencies: - supports-color + dev: true /extsprintf@1.4.1: resolution: {integrity: sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==} @@ -3171,10 +2932,6 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.1: resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} @@ -3188,6 +2945,7 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + requiresBuild: true dev: true /fast-levenshtein@2.0.6: @@ -3208,12 +2966,13 @@ packages: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 + dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 dev: true /filelist@1.0.4: @@ -3245,17 +3004,17 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 - keyv: 4.5.3 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /form-data@4.0.0: @@ -3267,8 +3026,8 @@ packages: mime-types: 2.1.35 dev: true - /fraction.js@4.3.6: - resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true /fs-extra@10.1.0: @@ -3278,15 +3037,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false + dev: true /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} @@ -3295,6 +3046,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true /fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} @@ -3325,13 +3077,11 @@ packages: dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + requiresBuild: true dev: true + optional: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -3342,10 +3092,11 @@ packages: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} requiresBuild: true dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 + has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 + dev: true optional: true /get-stream@5.2.0: @@ -3353,14 +3104,15 @@ packages: engines: {node: '>=8'} dependencies: pump: 3.0.0 + dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-tsconfig@4.7.0: - resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -3412,15 +3164,11 @@ packages: roarr: 2.15.4 semver: 7.5.4 serialize-error: 7.0.1 + dev: true optional: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -3432,6 +3180,7 @@ packages: requiresBuild: true dependencies: define-properties: 1.2.1 + dev: true optional: true /globby@11.1.0: @@ -3451,6 +3200,7 @@ packages: requiresBuild: true dependencies: get-intrinsic: 1.2.1 + dev: true optional: true /got@11.8.6: @@ -3460,7 +3210,7 @@ packages: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 4.0.6 '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.0 + '@types/responselike': 1.0.1 cacheable-lookup: 5.0.4 cacheable-request: 7.0.4 decompress-response: 6.0.0 @@ -3468,9 +3218,11 @@ packages: lowercase-keys: 2.0.0 p-cancelable: 2.1.1 responselike: 2.0.1 + dev: true /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -3498,25 +3250,32 @@ packages: requiresBuild: true dependencies: get-intrinsic: 1.2.1 + dev: true optional: true /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} requiresBuild: true + dev: true optional: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} requiresBuild: true + dev: true optional: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -3540,6 +3299,7 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} @@ -3558,6 +3318,7 @@ packages: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + dev: true /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} @@ -3574,11 +3335,6 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true - /iconv-corefoundation@1.1.7: resolution: {integrity: sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==} engines: {node: ^8.11.2 || >=10} @@ -3608,14 +3364,6 @@ packages: engines: {node: '>= 4'} dev: true - /image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} - engines: {node: '>=0.10.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -3682,31 +3430,19 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 dev: true /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /is-decimal@1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3728,14 +3464,6 @@ packages: resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} dev: true - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3751,22 +3479,6 @@ packages: engines: {node: '>=8'} dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-what@3.14.1: - resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - dev: true - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - /isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -3806,18 +3518,13 @@ packages: hasBin: true dependencies: argparse: 2.0.1 + dev: true /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -3826,6 +3533,7 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -3833,6 +3541,7 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + requiresBuild: true dev: true /json-stable-stringify-without-jsonify@1.0.1: @@ -3842,6 +3551,7 @@ packages: /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} requiresBuild: true + dev: true optional: true /json5@2.2.3: @@ -3868,6 +3578,7 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -3875,11 +3586,13 @@ packages: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 + dev: true - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: true /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -3887,25 +3600,6 @@ packages: /lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} - - /less@4.2.0: - resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} - engines: {node: '>=6'} - hasBin: true - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.6.2 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color dev: true /levn@0.4.1: @@ -3946,7 +3640,7 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false + dev: true /lodash-unified@1.0.3(@types/lodash-es@4.17.9)(lodash-es@4.17.21)(lodash@4.17.21): resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} @@ -3958,15 +3652,15 @@ packages: '@types/lodash-es': 4.17.9 lodash: 4.17.21 lodash-es: 4.17.21 - dev: false + dev: true /lodash.escaperegexp@4.1.2: resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - dev: false + dev: true /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false + dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3974,15 +3668,11 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 dev: true /lru-cache@6.0.0: @@ -3990,35 +3680,27 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - requiresBuild: true - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: true - optional: true - /matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} requiresBuild: true dependencies: escape-string-regexp: 4.0.0 + dev: true optional: true /mdast-util-from-markdown@0.8.5: resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} dependencies: - '@types/mdast': 3.0.12 + '@types/mdast': 3.0.13 mdast-util-to-string: 2.0.0 micromark: 2.11.4 parse-entities: 2.0.0 @@ -4037,7 +3719,7 @@ packages: /memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false + dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4077,14 +3759,6 @@ packages: mime-db: 1.52.0 dev: true - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - requiresBuild: true - dev: true - optional: true - /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} @@ -4096,18 +3770,15 @@ packages: engines: {node: '>=6'} dev: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} + dev: true /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} + dev: true /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -4127,6 +3798,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true @@ -4173,10 +3851,14 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - requiresBuild: true + dev: true + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} dev: true /mz@2.7.0: @@ -4196,20 +3878,6 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /needle@3.2.0: - resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} - engines: {node: '>= 4.4.x'} - hasBin: true - requiresBuild: true - dependencies: - debug: 3.2.7 - iconv-lite: 0.6.3 - sax: 1.2.4 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - /node-addon-api@1.7.2: resolution: {integrity: sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==} requiresBuild: true @@ -4223,7 +3891,7 @@ packages: /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - dev: false + dev: true /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} @@ -4233,7 +3901,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.5 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -4251,10 +3919,11 @@ packages: /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} + dev: true /normalize-wheel-es@1.2.0: resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} - dev: false + dev: true /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -4263,13 +3932,6 @@ packages: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: @@ -4290,6 +3952,7 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} requiresBuild: true + dev: true optional: true /ofetch@1.3.3: @@ -4304,6 +3967,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -4312,23 +3976,6 @@ packages: mimic-fn: 2.1.0 dev: true - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -4344,6 +3991,7 @@ packages: /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} + dev: true /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -4406,11 +4054,6 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - dev: true - /parsel-js@1.1.2: resolution: {integrity: sha512-D66DG2nKx4Yoq66TMEyCUHlR2STGqO7vsBrX7tgyS9cfQyO6XD5JyzOiflwmWN6a4wbUAqpmHqmrxlTQVGZcbA==} dev: true @@ -4430,11 +4073,6 @@ packages: engines: {node: '>=8'} dev: true - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -4450,6 +4088,7 @@ packages: /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true /perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -4468,15 +4107,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - requiresBuild: true - dev: true - optional: true - - /pinia@2.1.6(typescript@5.2.2)(vue@3.3.4): - resolution: {integrity: sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==} + /pinia@2.1.7(typescript@5.2.2)(vue@3.3.4): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' @@ -4491,7 +4123,7 @@ packages: typescript: 5.2.2 vue: 3.3.4 vue-demi: 0.14.6(vue@3.3.4) - dev: false + dev: true /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -4520,29 +4152,29 @@ packages: engines: {node: '>=4'} dev: true - /postcss-import@15.1.0(postcss@8.4.29): + /postcss-import@15.1.0(postcss@8.4.31): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.29 + postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.5 + resolve: 1.22.8 dev: true - /postcss-js@4.0.1(postcss@8.4.29): + /postcss-js@4.0.1(postcss@8.4.31): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.29 + postcss: 8.4.31 dev: true - /postcss-load-config@4.0.1(postcss@8.4.29): + /postcss-load-config@4.0.1(postcss@8.4.31): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -4555,38 +4187,38 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.29 - yaml: 2.3.2 + postcss: 8.4.31 + yaml: 2.3.3 dev: true - /postcss-nested@6.0.1(postcss@8.4.29): + /postcss-nested@6.0.1(postcss@8.4.31): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.29 + postcss: 8.4.31 postcss-selector-parser: 6.0.13 dev: true - /postcss-remove-inline-comments@0.0.2(postcss@8.4.29): + /postcss-remove-inline-comments@0.0.2(postcss@8.4.31): resolution: {integrity: sha512-Ga5qBOZtiZDgzHiCBQf0svU9w5UG6Wf/aE0XDiSNgX1qkWQNWgewLIjFNweuGAc/QcuuAVZBxxIRr78RA3vB0g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4.18 dependencies: - postcss: 8.4.29 + postcss: 8.4.31 optionalDependencies: - postcss-scss: 4.0.8(postcss@8.4.29) + postcss-scss: 4.0.9(postcss@8.4.31) dev: true - /postcss-scss@4.0.8(postcss@8.4.29): - resolution: {integrity: sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==} + /postcss-scss@4.0.9(postcss@8.4.31): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.29 dependencies: - postcss: 8.4.29 + postcss: 8.4.31 dev: true /postcss-selector-parser@6.0.13: @@ -4601,8 +4233,8 @@ packages: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -4614,22 +4246,10 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} - engines: {node: '>=14'} - hasBin: true - dev: true - /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + dev: true /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} @@ -4639,21 +4259,17 @@ packages: retry: 0.12.0 dev: true - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - requiresBuild: true - dev: true - optional: true - /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + requiresBuild: true dev: true /queue-microtask@1.2.3: @@ -4663,6 +4279,7 @@ packages: /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + dev: true /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -4695,7 +4312,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.2 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -4727,6 +4344,7 @@ packages: /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} @@ -4737,8 +4355,8 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.5: - resolution: {integrity: sha512-qWhv7PF1V95QPvRoUGHxOtnAlEvlXBylMZcjUR9pAumMmveFtcHJRXGIr+TkjfNJVQypqv2qcDiiars2y1PsSg==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -4750,6 +4368,7 @@ packages: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: lowercase-keys: 2.0.0 + dev: true /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} @@ -4779,6 +4398,7 @@ packages: json-stringify-safe: 5.0.1 semver-compare: 1.0.0 sprintf-js: 1.1.3 + dev: true optional: true /rollup@2.79.1: @@ -4789,21 +4409,14 @@ packages: fsevents: 2.3.3 dev: true - /rollup@3.29.1: - resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.3 dev: true - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -4820,23 +4433,25 @@ packages: truncate-utf8-bytes: 1.0.2 dev: true - /sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: true /semver-compare@1.0.0: resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} requiresBuild: true + dev: true optional: true /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - requiresBuild: true dev: true /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -4844,6 +4459,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} @@ -4851,6 +4467,7 @@ packages: requiresBuild: true dependencies: type-fest: 0.13.1 + dev: true optional: true /shebang-command@2.0.0: @@ -4934,7 +4551,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -4945,22 +4562,23 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /split@1.0.1: resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} dependencies: through: 2.3.8 - dev: false + dev: true /sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} requiresBuild: true + dev: true optional: true /stat-mode@1.0.0: @@ -4989,11 +4607,6 @@ packages: engines: {node: '>=6'} dev: true - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -5027,6 +4640,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -5047,14 +4661,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.2 - dev: true - /tailwindcss@3.3.3: resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} @@ -5074,13 +4680,13 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.29 - postcss-import: 15.1.0(postcss@8.4.29) - postcss-js: 4.0.1(postcss@8.4.29) - postcss-load-config: 4.0.1(postcss@8.4.29) - postcss-nested: 6.0.1(postcss@8.4.29) + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.1(postcss@8.4.31) + postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 - resolve: 1.22.5 + resolve: 1.22.8 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -5124,15 +4730,10 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false + dev: true /tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} - dev: false - - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} dev: true /tmp-promise@3.0.3: @@ -5187,10 +4788,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true - /tsutils@3.21.0(typescript@5.2.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -5212,6 +4809,7 @@ packages: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} requiresBuild: true + dev: true optional: true /type-fest@0.20.2: @@ -5239,12 +4837,14 @@ packages: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true + dev: true /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + dev: true - /unconfig@0.3.10: - resolution: {integrity: sha512-tj317lhIq2iZF/NXrJnU1t2UaGUKKz1eL1sK2t63Oq66V9BxqvZV12m55fp/fpQJ+DDmVlLgo7cnLVOZkhlO/A==} + /unconfig@0.3.11: + resolution: {integrity: sha512-bV/nqePAKv71v3HdVUn6UefbsDKQWRX+bJIkiSm0+twIds6WiD2bJLWWT3i214+J/B4edufZpG2w7Y63Vbwxow==} dependencies: '@antfu/utils': 0.7.6 defu: 6.1.2 @@ -5252,6 +4852,11 @@ packages: mlly: 1.4.2 dev: true + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + requiresBuild: true + dev: true + /unist-util-stringify-position@2.0.3: resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} dependencies: @@ -5261,10 +4866,12 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + dev: true /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + dev: true /unocss-applet@0.5.5: resolution: {integrity: sha512-o2AXpEYoV9oug0n3CkobrKpd+uxODP424IjegZogTeFr0kur46yIbi5DPnNi5FSz4yprdtvYuKeiKJ6YXHV5FQ==} @@ -5275,22 +4882,22 @@ packages: '@unocss-applet/transformer-attributify': 0.5.5 dev: true - /unocss-preset-daisy@6.0.1(daisyui@3.7.4)(unocss@0.55.7): + /unocss-preset-daisy@6.0.1(daisyui@3.9.2)(unocss@0.55.7): resolution: {integrity: sha512-b58n44hFtbAIW8jtOlfRUermB03h5l48Er6eHCuJL5rEc3/cPJ884+K/8e0/2Xq4chk8RMMt9cEKsfht7N+pXw==} peerDependencies: daisyui: ^3.0.0 unocss: '>0.53.0' dependencies: - autoprefixer: 10.4.15(postcss@8.4.29) + autoprefixer: 10.4.16(postcss@8.4.31) camelcase: 8.0.0 - daisyui: 3.7.4 + daisyui: 3.9.2 parsel-js: 1.1.2 - postcss: 8.4.29 - postcss-js: 4.0.1(postcss@8.4.29) - unocss: 0.55.7(postcss@8.4.29)(vite@4.4.9) + postcss: 8.4.31 + postcss-js: 4.0.1(postcss@8.4.31) + unocss: 0.55.7(postcss@8.4.31)(vite@4.4.11) dev: true - /unocss@0.55.7(postcss@8.4.29)(vite@4.4.9): + /unocss@0.55.7(postcss@8.4.31)(vite@4.4.11): resolution: {integrity: sha512-3W9P7vj2EhSk/4oPCHBS0VgrwSf5zZL6Az1/XARVOpBnRJtCM2szFInYxHkMgt9pkZTsW8SFCuk/g+QIJ6A8tg==} engines: {node: '>=14'} peerDependencies: @@ -5302,11 +4909,11 @@ packages: vite: optional: true dependencies: - '@unocss/astro': 0.55.7(vite@4.4.9) + '@unocss/astro': 0.55.7(vite@4.4.11) '@unocss/cli': 0.55.7 '@unocss/core': 0.55.7 '@unocss/extractor-arbitrary-variants': 0.55.7 - '@unocss/postcss': 0.55.7(postcss@8.4.29) + '@unocss/postcss': 0.55.7(postcss@8.4.31) '@unocss/preset-attributify': 0.55.7 '@unocss/preset-icons': 0.55.7 '@unocss/preset-mini': 0.55.7 @@ -5321,32 +4928,28 @@ packages: '@unocss/transformer-compile-class': 0.55.7 '@unocss/transformer-directives': 0.55.7 '@unocss/transformer-variant-group': 0.55.7 - '@unocss/vite': 0.55.7(vite@4.4.9) - vite: 4.4.9(less@4.2.0) + '@unocss/vite': 0.55.7(vite@4.4.11) + vite: 4.4.11 transitivePeerDependencies: - postcss - rollup - supports-color dev: true - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + requiresBuild: true dependencies: punycode: 2.3.0 dev: true @@ -5377,21 +4980,36 @@ packages: dev: true optional: true - /vite-plugin-eslint@1.8.1(eslint@8.49.0)(vite@4.4.9): + /vite-plugin-electron-renderer@0.14.5: + resolution: {integrity: sha512-EQ7ORuPp8vFPCqfuGnVo7d36fXS0IFH4/RUlKb1drseix3TQEPcgwEuFADdXBxRgqMp70njz/1m0kdf5lEsm8w==} + dev: true + + /vite-plugin-electron@0.14.1(vite-plugin-electron-renderer@0.14.5): + resolution: {integrity: sha512-QGQ2nJ4wjMf1FaDSkdoC/UskQGiYGcAToATJqJXvqrL4Jmt0CFaZqoDjh1xLicUWEo/X7urHYjhKTqwEeP7F7g==} + peerDependencies: + vite-plugin-electron-renderer: '*' + peerDependenciesMeta: + vite-plugin-electron-renderer: + optional: true + dependencies: + vite-plugin-electron-renderer: 0.14.5 + dev: true + + /vite-plugin-eslint@1.8.1(eslint@8.51.0)(vite@4.4.11): resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} peerDependencies: eslint: '>=7' vite: '>=2' dependencies: '@rollup/pluginutils': 4.2.1 - '@types/eslint': 8.44.2 - eslint: 8.49.0 + '@types/eslint': 8.44.4 + eslint: 8.51.0 rollup: 2.79.1 - vite: 4.4.9(less@4.2.0) + vite: 4.4.11 dev: true - /vite@4.4.9(less@4.2.0): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + /vite@4.4.11: + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -5419,9 +5037,8 @@ packages: optional: true dependencies: esbuild: 0.18.20 - less: 4.2.0 - postcss: 8.4.29 - rollup: 3.29.1 + postcss: 8.4.31 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true @@ -5439,16 +5056,16 @@ packages: optional: true dependencies: vue: 3.3.4 - dev: false + dev: true - /vue-eslint-parser@9.3.1(eslint@8.49.0): - resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} + /vue-eslint-parser@9.3.2(eslint@8.51.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.51.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -5459,6 +5076,25 @@ packages: - supports-color dev: true + /vue-template-compiler@2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@vue/language-core': 1.8.19(typescript@5.2.2) + '@vue/typescript': 1.8.19(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + /vue@3.3.4: resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==} dependencies: @@ -5487,6 +5123,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} @@ -5504,12 +5141,9 @@ packages: engines: {node: '>=10'} dev: true - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true /yaml-eslint-parser@1.2.2: resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} @@ -5517,11 +5151,11 @@ packages: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.3.2 + yaml: 2.3.3 dev: true - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} dev: true @@ -5548,6 +5182,7 @@ packages: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + dev: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} diff --git a/resources/icons/icon.ico b/public/logo.ico similarity index 100% rename from resources/icons/icon.ico rename to public/logo.ico diff --git a/resources/screenshot/phone.jpg b/public/screenshot/phone.jpg similarity index 100% rename from resources/screenshot/phone.jpg rename to public/screenshot/phone.jpg diff --git a/resources/icons/icon.icns b/resources/icons/icon.icns deleted file mode 100644 index f6e631f..0000000 --- a/resources/icons/icon.icns +++ /dev/null @@ -1 +0,0 @@ -GpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩tY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mtɬɬɏtY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpL珩tttttttttttttY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLɏtttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtt珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɏY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtɬɬɬɬɬɬɬɬɬɬɬɬɬY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtɏY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mttttttttttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mttttttttttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtɏY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mtY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mt珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬɬY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mtY`mY`mtY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mtGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`m珩Y`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLtY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mttY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mY`mGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpLGpL \ No newline at end of file diff --git a/src/renderer/src/App.vue b/src/App.vue similarity index 92% rename from src/renderer/src/App.vue rename to src/App.vue index f2ef798..5504a05 100644 --- a/src/renderer/src/App.vue +++ b/src/App.vue @@ -8,10 +8,7 @@ :name="item.prop" lazy > - +
diff --git a/resources/icons/icon.png b/src/assets/icon.png similarity index 100% rename from resources/icons/icon.png rename to src/assets/icon.png diff --git a/src/renderer/src/components/AboutUs/index.vue b/src/components/AboutUs/index.vue similarity index 97% rename from src/renderer/src/components/AboutUs/index.vue rename to src/components/AboutUs/index.vue index d01b07d..214a5e4 100644 --- a/src/renderer/src/components/AboutUs/index.vue +++ b/src/components/AboutUs/index.vue @@ -1,7 +1,7 @@ - - diff --git a/src/renderer/src/assets/icon.png b/src/renderer/src/assets/icon.png deleted file mode 100644 index 3398cba..0000000 Binary files a/src/renderer/src/assets/icon.png and /dev/null differ diff --git a/src/renderer/src/store/index.js b/src/store/index.js similarity index 100% rename from src/renderer/src/store/index.js rename to src/store/index.js diff --git a/src/renderer/src/store/scrcpy/index.js b/src/store/scrcpy/index.js similarity index 97% rename from src/renderer/src/store/scrcpy/index.js rename to src/store/scrcpy/index.js index f023597..588c75a 100644 --- a/src/renderer/src/store/scrcpy/index.js +++ b/src/store/scrcpy/index.js @@ -1,7 +1,7 @@ import { defineStore } from 'pinia' -import storage from '@renderer/utils/storages' import { pickBy } from 'lodash-es' import * as scrcpyModel from './model/index.js' +import storage from '@/utils/storages/index.js' /** * 获取 Scrcpy 默认配置 diff --git a/src/renderer/src/store/scrcpy/model/audio/index.js b/src/store/scrcpy/model/audio/index.js similarity index 100% rename from src/renderer/src/store/scrcpy/model/audio/index.js rename to src/store/scrcpy/model/audio/index.js diff --git a/src/renderer/src/store/scrcpy/model/device/index.js b/src/store/scrcpy/model/device/index.js similarity index 100% rename from src/renderer/src/store/scrcpy/model/device/index.js rename to src/store/scrcpy/model/device/index.js diff --git a/src/renderer/src/store/scrcpy/model/index.js b/src/store/scrcpy/model/index.js similarity index 100% rename from src/renderer/src/store/scrcpy/model/index.js rename to src/store/scrcpy/model/index.js diff --git a/src/renderer/src/store/scrcpy/model/record/index.js b/src/store/scrcpy/model/record/index.js similarity index 94% rename from src/renderer/src/store/scrcpy/model/record/index.js rename to src/store/scrcpy/model/record/index.js index d120371..13e1854 100644 --- a/src/renderer/src/store/scrcpy/model/record/index.js +++ b/src/store/scrcpy/model/record/index.js @@ -3,7 +3,7 @@ export default () => { return [ { - label: '文件存储地址', + label: '文件保存路径', type: 'input.directory', field: '--record', value: $path.resolve('../'), diff --git a/src/renderer/src/store/scrcpy/model/video/index.js b/src/store/scrcpy/model/video/index.js similarity index 100% rename from src/renderer/src/store/scrcpy/model/video/index.js rename to src/store/scrcpy/model/video/index.js diff --git a/src/renderer/src/store/scrcpy/model/window/index.js b/src/store/scrcpy/model/window/index.js similarity index 100% rename from src/renderer/src/store/scrcpy/model/window/index.js rename to src/store/scrcpy/model/window/index.js diff --git a/src/renderer/src/styles/css/desktop.css b/src/styles/css/desktop.css similarity index 100% rename from src/renderer/src/styles/css/desktop.css rename to src/styles/css/desktop.css diff --git a/src/renderer/src/styles/css/index.js b/src/styles/css/index.js similarity index 100% rename from src/renderer/src/styles/css/index.js rename to src/styles/css/index.js diff --git a/src/renderer/src/styles/index.js b/src/styles/index.js similarity index 100% rename from src/renderer/src/styles/index.js rename to src/styles/index.js diff --git a/src/renderer/src/utils/index.js b/src/utils/index.js similarity index 100% rename from src/renderer/src/utils/index.js rename to src/utils/index.js diff --git a/src/renderer/src/utils/storages/cookieStorage.js b/src/utils/storages/cookieStorage.js similarity index 100% rename from src/renderer/src/utils/storages/cookieStorage.js rename to src/utils/storages/cookieStorage.js diff --git a/src/renderer/src/utils/storages/index.js b/src/utils/storages/index.js similarity index 100% rename from src/renderer/src/utils/storages/index.js rename to src/utils/storages/index.js diff --git a/src/renderer/src/utils/storages/localStorage.js b/src/utils/storages/localStorage.js similarity index 100% rename from src/renderer/src/utils/storages/localStorage.js rename to src/utils/storages/localStorage.js diff --git a/src/renderer/src/utils/storages/sessionStorage.js b/src/utils/storages/sessionStorage.js similarity index 100% rename from src/renderer/src/utils/storages/sessionStorage.js rename to src/utils/storages/sessionStorage.js diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..213f2a3 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,52 @@ +import { resolve } from 'node:path' +import { defineConfig, mergeConfig } from 'vite' +import useElectron from 'vite-plugin-electron' +import useRenderer from 'vite-plugin-electron-renderer' + +import useVue from '@vitejs/plugin-vue' +import useEslint from 'vite-plugin-eslint' +import useUnoCSS from 'unocss/vite' +import usePath from '@viarotel-org/vite-plugin-path' + +const merge = config => + mergeConfig( + { + resolve: { + alias: { + '@root': resolve('./'), + '@resources': resolve('./electron/resources'), + }, + }, + plugins: [usePath()], + }, + config, + ) + +// https://vitejs.dev/config/ +export default defineConfig({ + assetsInclude: ['**/*.exe'], + resolve: { + alias: { + '@': resolve('./src'), + }, + }, + plugins: [ + useEslint(), + useUnoCSS(), + useVue(), + useElectron([ + { + entry: 'electron/main.js', + vite: merge({}), + }, + { + entry: 'electron/preload.js', + onstart(args) { + args.reload() + }, + vite: merge({}), + }, + ]), + useRenderer(), + ], +})